RAK4631+ RAK12500

We are using RAK12500 on meshtastic. Can the antenna be turned off while the gps module sleeps with proper firmware modifications? For now, when the gps sleeps, the antenna uses about 12mAh (through a thermal camera, she’s the only one glowing like the sun )

Welcome to the forum @Chirita
The antenna is powered together with the UBlox GNSS chip. Only way to shut down the antenna is to shutdown the whole module by switching off GPS_3V3 which is controlled by WB_IO2.

Turning it OFF, will turn off the all the other modules also ? Nothing new in the latest board revisions?

It turns off modules that are using 3V3_S, that are only a few Sensor modules.
Modules like RAK1901, RAK1902, RAk1903, RAK1906 and many more are using 3V3 supply and are not affected.

You should have joined the Meshtastic channel on Discord to help us to not burn our brains out trying to figure up how to put the pieces together :joy:

Thank you!

I’m just going to jump on the end of this thread to share what I’ve learned about powering down the RAK12500 and waking it up again.

Like the OP I wanted to power down the LNA on the GNSS antenna and pulling the 3V3_S rail was the only way to achieve it. The only other card I needed to modify was the EEPROM, which by default uses the switched 3V3_S. Changing it to use the fixed 3V3 is a resistor move, small and fiddly, but simple.

It turns out that I didn’t need to change anything on the RAK12500, because the resistors around NRESET that I thought I was going to remove are already gone! The datasheet is out of date and those resistors are not loaded by default (thanks @beegee for that info)

I wanted to shutdown the GNSS with a bit more care than just pulling the power. I first tried using a “s/w backup” command, with settings so that only NRESET would wake the chip. But since NRESET was already disconnected, the wakeup never came when the power was restored. A full power cycle got me back to the start.

The GNSS might be busy with are the AssistNowAutonomous, so I test for that; it wants to have the RTC calibrated before it sleeps so I test for that. I have never seen either of these cases show up so I can’t be sure how much they really matter, but the ZOE-M8 datasheet mentioned it so the code is in place.

I then found that each time I cycled the power, it woke up chatting away on NMEA with all the default configurations rather than mine, and it woke up “cold” (ie slow to first fix), so clearly I was still missing something.

On page 9 of the protocol spec it says that you need to explicitly save the configuration from the working image to the non-volatile memory (in our case the battery backed RAM powered from the fixed 3V3). This is done with the UBX-CFG-CFG message. I set the mask to 0x1F to save everything in my configuration. Specifically, this keeps the NMEA strings off the UART lines and there are no stray messages during wakeup. This is good, because it means that I don’t have to remove the R56 and R58 resistors to isolate the UART.

I can now turn the GNSS power on and off, including the antenna. For testing I have this rigged up with commands I send over BLE while the GNSS position is reported over the USB virtual serial terminal. Powering on and powering off is essentially immediate. I presume that the ZOE-M8 is using the extended Ephemeris via AssistNow, but I can’t be certain.

I hope this helps someone out there.