Firmware Request: LC29HEA Adjustable Update Rate for Ardupilot Utilization

Hi team!

There is some interest in your GNSS modules over at the Ardupilot forums, especially the LC29HEA, since it seems to be a low-price option for RTK GPS. However, having a fixed update rate of 10Hz might be problematic in Ardupilot drones as this is the upper limit that often results in bad data. 5Hz is usually considered the optimum.

Is it possible for you to release a firmware with adjustable (or fixed at 5Hz) update rate? I’m sure this could be linked in the Ardupilot forums or even in the official documentation and might make your LC29HEA module a great low-cost alternative for RTK GPS.

Thanks in advance!
Oli

Hi Oliver, Quectel_LC29H(EA)_RSA_Firmware_Release_Notes_V1103S.pdf says added 1,2 and 5hz.

1 Like

Oh that’s awesome, thanks a ton! I was only going off the official hardware specification docs. Do you know if all LC29HEA modules are shipped with this firmware or above installed, and if not, can you point me to where it can be downloaded? On the official download section I only find flashing tools etc.

Thanks again!

Of course, usually you can make a request on this forum…if They do not respond I will send nevertheless.

1 Like

Thanks again, I’ll open a new post asking specifically for the latest FW :slight_smile:

To operate the reset command (for the fw upgrade) on Mozihao boards, you need to ground pin_8 manually only for few seconds until qgnss_flash_tool_upgrade says ok, as the RST_ttl pin is not connected,I used the probe tester.

I add these useful commands for module debugging:
$PAIR003*39 disable gnss so output in terminal is blanc for read only command response
$PAIR002*38 enable gnss
I use sscom with a partial english translatet gui: 445.5 KB folder on MEGA or http://www.daxia.com/download/sscom.rar
as have difficult to send commands by Qgnss.
Other useful information : Configuring the Quectel LC29HEA receiver for real-time RTK solutions – rtklibexplorer

10 Hz = 100 ms 2 Hz = 500 ms 5 Hz = 200 ms 1 Hz = 1000 ms

$PQTMCFGFIXRATE,W,1000*59
$PQTMCFGFIXRATE,W,200*6A
$PQTMCFGFIXRATE,W,100*69
$PQTMCFGFIXRATE,W,500*6D
$PQTMCFGFIXRATE,R*71     Queries the setting of current FIXRATE
$PAIR513*3D  & $PQTMSAVEPAR*5A  save parameters
$PQTMRESTOREPAR*13  restore default

$PAIR432,1*22 set RTCM3.x output with type MSM7
$PAIR433*3E Queries the setting of rtcm_MSM current ouput
$PAIR051*3E Queries the setting of $PAIR050,<Time>*<<Checksum>
$PAIR864,<Port_Type>,<Port_Index>,<Baudrate>*CS<CR><LF> i.e 115200, 230400, 460800, 921600, 3000000
$PAIR865,0,0*31 Queries the baud of uart_port and response.

2 Likes

Thanks so much, really appreciate all the help! I’ll keep you updated once my module arrives :slight_smile:

1 Like

Has anyone done a test flight with the LC29HEA with Ardupilot?

I have using 5Hz and in Loiter flight mode it was very unstable hard to keep in 2-3 meter area. When i changed to a ublox M9N in Loiter mode was very stable. Not sure why the LC29HEA was this way?? Anyone seen this with Ardupilot?
Thanks
Dennis

The module appears to be drifting.
Even if the Dop values are acceptable, the displacements are accelerated between 0.00 and 0.01 m/s ,this without corrections and without 3axis assistant.I’ll post the rover settings later…

M9N is a good module but doesn’t have a rtk engine even though it supports dgps fixes and that’s what makes it “stable” on the drone; try to do the same with LC29H without rtk fixes but with a good 3axis module…
List some commands, the latest with strong restrictions.

$PAIR513*3D  save file system
$PQTMSAVEPAR*5A   save file system
$PAIR512*3C  clear data
$PAIR830,1*2C PAIR_RAW_ENABLE
$PAIR830,0*2D  PAIR_RAW Disable
$PAIR050,100*22 → Set 10Hz fix rate, and module change to 10Hz immediately
$PAIR050,200*21  → set pos output interval to 200 ms 5 Hz
$PAIR382,1*2E → Test command for lock system sleep enabled   
$PAIR003*39 → power off GNSS system  
$PAIR002*38 → power on GNSS system  
$PQTMGNSSSTART*51  → power on GNSS system
$PQTMGNSSSTOP*09  → power off GNSS system  
$PAIR023*3B   reboot  module
$PQTMCFGSVIN,W,2,0,0,-2404572.0411,5381092.5507,2429899.7105*21  set antenna position in ecef x,y,z
$PQTMRESTOREPAR*13   → Restores all parameters set via $PQTM
$PAIR514*3A  Clear the current configuration and restore the default settings set via $PAIR
$PQTMCFGMSGRATE,W,PQTMEPE,1,2*1D          how accurate is the obtained position
$PAIR864,0,0,115200*1B     set default uart port to 115200 baud
$PAIR865,0,0*31   ask baud for default uart port
$PQTMCFGRCVRMODE,W,2*29 # set receiver to base mode 
$PQTMCFGRCVRMODE,W,0*2B    set receiver to unknown mode 
$PQTMCFGRCVRMODE,W,1*2A  set receiver to rover mode
$PQTMCFGRCVRMODE,R*32  ask result
RTCM: 1005 (019)  2024-05-17 17.21.08 StationID=3335 X=0704503,6070 Y=0298182,6322 Z=4093129,0631
$PQTMCFGSVIN,W,2,0,0,x,y,z*<Checksum>
$PQTMCFGSVIN,W,1,360,1,0,0,0*26    start survey for 360 second
$PQTMCFGSVIN,R*26  get fix position
$PAIR063,-1*0F resp.: $PAIR063,-1,1,1,1,1,1,1*0F  return NMEA output to default settings (all Nmea sentences)
$PAIR062,0,1*3F  only CGA sentence
$PAIR007*3D → Full cold start will performs a cold start and clears system and user configurations,Restores all parameters  to factory settings.
$PQTMCFGMSGRATE,W,PQTMEPE,1,2*1D → enable PQTMEPE output.
$PQTMCFGNMEADP,W,3,8,3,3,3,3*39  -->configure ALL to max decimals
$PQTMCFGMSGRATE,W,PQTMPVT,1,1*1C  $PQTMCFGMSGRATE,R,PQTMPVT,1*04     PQTMPVT  at 1Hz  Outputs the PVT (GNSS only) result
$PAIR862,0,0,37*1E   Set GNSS port data type configuration to nmea+command in & out see last edit
bitmap to config data type  (0x01)(0x04)(0x20)  =   0x25 to decimal is 37
 --> GNSS_IO_FLAG_OUT_NMEA | GNSS_IO_FLAG_OUT_CMD_RSP |GNSS_IO_FLAG_IN_CMD 
$PAIR058,15*1F  snr treshold to 15
$PAIR058,35*1D  snr treshold to 35
$PAIR070,16*16  Sets the static navigation speed threshold to 16 dm/s
$PAIR072,15*17 elev mask to 15°
$PAIR074,1*24 Enable active interference cancellation function
$PAIR080,5*2B      Set navigation mode for drone
$PAIR081*33   ask navigation mode
$PAIR391,1*2C  enable jamming detection message output
DGPS correction data source mode : $PAIR400,1*23   for rtcm corr.  $PAIR400,2*20 for sbas     $PAIR400,0*22 none    
$PQTMCFGMSGRATE,W,PQTMGEOFENCESTATUS,1,1*5C  enable GEOFENCE outputs 
$PAIR104,0*23  dual band disable
$PAIR104,1*22  enable  dual band (default)
$PAIR473,1*27   Enable EPO data aiding & limits saving the flash range to 80K.

yes, Both are just in 3D Fix No RTK… and the LC29HEA is not stable in Loiter flight mode were the M9N is stable?

Dennis

Hi Dennis, I also read the ardupilot forum…
I do not know the source code, it has been implemented specifically for ublox, unicore and septentrio but the “scientists” of quectel have developed their stm32 evalutation board that has compatibility with arduino…I posted here the files sent by mozihao. Developers of ardupilot should review the software and integrate a library for quectel/airoha products even though the NMEA protocol is universal.What you can do for now is to enable all the nmea receiver sentences :in sequence I set the module with the following commands, check that they are received…

$PAIR003*39 → power off GNSS system
$PAIR512*3C  clear data
$PQTMRESTOREPAR*13
$PAIR514*3A 
$PAIR513*3D  save file system
$PAIR023*3B   reboot  module
$PAIR007*3D → Full cold start will performs a cold start and clears system and user configurations
$PQTMCFGRCVRMODE,W,0*2B    set receiver to unknown mode
$PAIR062,-1,1*13  (all Nmea sentences)
$PAIR063,-1*0F resp.: $PAIR063,-1,1,1,1,1,1,1*0F  return NMEA output to default settings (all Nmea sentences)
$PAIR050,200*21  → set pos output interval to 200 ms 5 Hz
$PQTMCFGMSGRATE,W,PQTMEPE,1,2*1D          how accurate is the obtained position
$PQTMCFGNMEADP,W,3,8,3,3,3,3*39  -->configure ALL to 3 decimals
$PQTMCFGMSGRATE,W,PQTMPVT,1,1*1C   Outputs the PVT (GNSS only) result
$PAIR862,0,0,37*1E   Set GNSS port data type configuration to nmea+command in & out only
$PAIR058,35*1D  snr treshold to 35 if in open sky or $PAIR058,15*1F  snr treshold to 15 if problem
$PAIR070,1*20    Sets the static navigation speed threshold to 1dm/s = 0.1m/s
$PAIR072,15*17 elev mask to 15°
$PAIR074,1*24 Enable active interference cancellation function
$PAIR080,5*2B      Set navigation mode for drone **not reccomended**
$PAIR391,1*2C  enable jamming detection message output
$PAIR410,1*22  enable sbas satellite
$PAIR400,2*20 for  **sbas**  DGPS correction data source mode
$PQTMCFGMSGRATE,W,PQTMGEOFENCESTATUS,1,1*5C  enable GEOFENCE outputs 
$PAIR473,1*27   Enable EPO data aiding & limits saving the flash range to 80K.
$PAIR092,0*2D  set **non static** mode
$PAIR753,1*26   enhance the PPS output timing accuracy
$PAIR513*3D  save file system
$PQTMSAVEPAR*5A
$PAIR023*3B

I did all of that list of commands to the LC29HEA and did a test flight with no change.

I can post a link to the log file if you would like?

Alos some of the commands Like $PAIR473 and $PAIR862 are not documented in Protocol spec. 1.2 ?
Dennis

I collected many logs with the software and an esp8266 in transparent_mode from stationary on a grounded flat surface, and noticed that the module is very susceptible to noise. Perhaps for the frequency of the chip at max or for a bad shielding, otherwise the position does not undergo significant changes or deviations, this obviously without rtcm corrections.Here AG3335 [$PAIR manual]
Follow @bobzwik’s advice for a stationary log, at least to get suggestions…
Regards,
Marco

I have yet to hear from anyone that has done a flight with the LC29HEA on a Drone running Ardupilot. So, i take it that I am the first? I have ublox M8, M9, F9P on other Drones and this one and have not seen any problems like this with no answers. So, i guess i well not try to use the LC29HEA until i see some that has done a good test flight.
Thanks for the Help
Dennis

I understand your mood, the module firmware is recent but you are not the first… don’t give up, if we don’t try we won’t get results; there is no point in trying to fly now if it is not clear what is happening with the module…your experiments are enough to show that the problem is on the LC29HEA_module…I am getting evidence to say that this chip is not suitable for drones, but I hope I’m wrong, there are many of us who have this module.
Thank You for participating in this discussion, collective participation leads to improvements.
Marco

In looking at the Log file i found the POS.Lng lags GPS.Lng by about 1 Sec?

Dennis

Hi Dennis, I suspect here:


I’m continuing to investigate but the fact that ardupilot takes mixed messages at 5hz and 1hz says a lot.I have the new manual . &
here

Thanks for keeping me updated.
Marco

1 Like

Marco, thanks a ton for your support here! My order has finally arrived and I hope I’ll be able do some tests over the weekend if the weather plays along.

Funnily enough, I can send commands without issue via QGNSS.

It’s this dual module:

I’ll keep you updated :slight_smile: