Experience with LoRa APRS on M5Stack

M5Stack with GPS and 433 Mhz modules running APRSCube firmware
M5Stack with GPS and 433 Mhz modules running APRSCube firmware

There are already a few websites describing APRS over Lora. This article is not intended to be a full « HowTo », just some additional tips and tricks from personal experience.


HB9IAL gave me few month ago some M5stack hardware. Among other modules, two Core devices, one GPS extension, one humidity and temperature sensor and two 433 MHz LoRa Module, I decided to gave them a try on LoRa APRS.


DL3DCW has written a nice piece of software called APRSCube (see link below)

To install this firmware onto the M5stack using a Linux machine, I used the python module esptools. If needed install it:

pip install esptool

To flash the firmware into the M5stack connected to an USB port of the PC, the syntax is the following:

esptool.py --port /dev/ttyACM0 write_flash 0x10000 APRScube.bin

The port /dev/tty* might need adjustment to fit your machine. The memory offset 0x10000 was found in a document from ON5VL.

Then edit the APRScube.ini file to set at least:

  • WLAN SSID and password (if WLAN is wanted)
  • Callsign
  • Default Position (if GPS is not used)
  • aprs2.net Server password (if upload on APRS-IS is wanted. Try callpass on linux terminal or online calculators)
  • Some other parameters (refer to APRScube documentation)

Copy APRScube.ini to a Micro SD card of 16 GB max and insert it in the M5stack Core before power-up.

LoRa transmission parameters

The following parameters are applied (common use within the european amateur radio community in 2023)

TX and RX frequency433.775MHzIARU recommendation
Power20dBmMax value for M5stack without external PA. See below for TX power measurement
Spreading Factor12For best sensitivity
Signal Bandwidth125kHzIARU recommendation
Coding rate4:5To limit transmission time, CR ratio is kept high (lower redundancy)

Remarks and comments

  • Unfortunately the TX and RX frequencies cannot be freely configured in the APRSCube configuration file. In Switzerland at the moment only 433.775 MHz is in use (simplex). Therefore the only usable mode is PEER. (NODE or GATE work in semi-duplex and make use of the other LoRa APRS frequency defined by IARU: 433.900 MHz for TX or RX)
  • Same for other parameters such as spreading factor, bandwidth and coding rate. Fortunately the parameters usedin in the firmware match common usage for LoRa APRS in Europe.
  • The sensitivity of the GPS module is very poor using the internal antenna. It looses the position when the LoRa module sends a frame… It is really recommended to use an external antenna connected through the MCX connector (don’t forget to swap the uFL connector inside the module!)
  • Only the internal M5stack GPS module works with APRScube firmware. The external GPS module (connected through the 4-wires flat ribbon cable) is not recognized.


TX power

The 433 MHz LoRa Module for M5Stack has been measured at +17.4 dBm. (50 mW), pigtail cable MCX-N not taken into accound during the measurement. No additional power amplifier used.

TX Range

Using the (very small) internal antenna of the LoRa Module, some frames were received 27 km away by HB9RD-10 (unknown antenna/hardware conditions). The TX antenna is a meander of about 33x5mm glued insude the M5stack plastic frame. Its gain is probably well below 0 dBi. Not so bad for 50mW! The LoRa sensitivity on RX side compensate the low TX conditions.

RX range

Unfortunately 433.775 MHz is in the ISM part of the amateur 70cm band. At my location the frequency is heavily used by a neighbour’s TV headphone and other telemetry/data systems. Even after several days with the module connected to an external X50 antenna, no frame from another station was ever received. Configuration error or only interferences?


A 55 cm long antenna mounted on a magnetic support was installed on the car. The exact antenna type is unknown but it it claimed to cover the 400 – 435 MHz range. An M5stack setup was used as transmitter.

Profiting from a Week-end on the Mont-Tendre (a local mountain 1679 m ASL) on 16-17 September 2023, the M5Stack transmitter was switched on during the drive. The device transmits the position on regular basis on 433.775 MHz. Some gateways relay the received packets on the APRS-IS feed. The result is visible on www.aprs.fi.

During this test 3 different gateways received packets: HB9RD-10, HB9EVJ-10 and HB9DTX-10. Every red dot on the map corresponds to a location. It is interesting to see how far the low power (50mW) Lora signal can travel!