3 min read

Meshtastic DIY ESP32 with the DX-LR30 SX1262 Test

Meshtastic DIY ESP32 with the DX-LR30 SX1262 Test

Meshtastic is an awesome piece of software but if you are like me and want to cheap out on your first node you might want to use an already existing ESP32 and just buy a radio module.

Almost all Meshtastic Nodes use a Microcontroller (for example the ESP32 or nRF52840) in combination with a LORA Radio, which is mostly the Semtech SX1262.

The DX-LR30 is a very cheap development Board for the SX1262 and can be found on Aliexpress. I bought it because of the already installed SMA Connector. The model I have is the 900M22S for the european market.

TLDR: I had a really bad time with this Board and can't recommend it because sending longer messages just wouldn't work for me - but its also possible that I just got a Knock Off Board as there is a Reddit user (Juaneitor5000) that seemingly got it working just fine. So just take this as a careful warning.

Hardware Configuration

I put the LOLIN D32 and the DX-LR30 on a small Perfboard for stable connection (and added an extra BMP280 for environment telemetry data).

I will write an extra post on how to build and modify the meshtastic firmware to use custom Pins but for this post lets just use the default DIY ESP32 firmware from the web flasher.

And small Side note: Don't use the old WeMos Lolin D32 for this. Somehow every time I tried to activate WiFi and access the API it crashed. My guess is that the small Heap just isn't enough for Meshtastic+WiFi+API any more as other Boards like the ESP32 C3 Supermini have no issue whatsoever with the same DIY firmware.

Pin Configuration

DX LR 30 ESP32 GPIO
VCC 3,3V
GND GND
SCK GPIO 5
MISO GPIO 19
MOSI GPIO 27
NSS GPIO 18
NRST GPIO 23
DIO1 GPIO 33
BUSY GPIO 32
TXEN GPIO 13

Small Side note: If you forget to connect TXEN, as popular Chatbots might try to tell you its not important - it is. Without TXEN being pulled high in the right moment, the internal amplifier circuit wont be activated and the signal is only VERY weak. Took me a week to figure this out haha 🤪

You might ask how did I get this pinout - it is in the appropriate variant.h file in the firmware for the diy board. But that's not the topic of this post, I will write a whole how to get started with DIY meshtastic nodes post, so stay tuned :)

Problems appeared

While sending short messages worked just fine, longer ones just didn't get through. Strange Issue I thought and checked power draw, connectors, Voltage on the DX-LR30 while sending, changed to a different ESP32 board etc etc. Nothing worked. I tested it with another very close node and voila, the longer the message the worse the signal. huh?

While the signal power arriving at the antenna stays constant at ~64dBm (RSSI=Received Signal Strength Indicator) the Receiver is having more and more problems decoding the message (dropping SNR =Signal Noise Ratio) and distinguishing it from Background noise.

Possible explanations

Either I messed something up badly or (thanks to everyone in Meshtastic Forums for helping me out here!) it's a not good board or even a Knock off.

LoRa uses spread spectrum modulation - the signal is chirped up and down in a very very precise, timed pattern. The chip needs an accurate clock to generate those chirps correctly and at the right rate. A drifting clock means distorted chirps = undecodable signal.

Cheap modules might not use a good Temperature Compensated Crystal Oscillator (TCXO) and therefore have a higher frequency drift if they heat up. Sending longer messages also means, that the Amplifier might get hotter, heating up the (poorly separated) Crystal Oscillator and causing the frequency to drift as the chip needs to tune to an exact carrier frequency (868 MHz in EU). It does that by taking the reference clock (e.g. 32 MHz) and multiplying it up to the target frequency. If the reference is off, everything downstream is off too.

Conclusion

Personally, i wont take another shot at this Board. Just take a look at the SEEEDSTUDIO Wio SX1262, as it costs the same, has great documentation and I tested it with a ESP32 C3 Super mini, where it works just fine. (not sponsored or anything just a headache saver)

It doesn't mean it has to be this way as there are successful stories out there, but because I wanted to help everyone looking at the possibly same problem (I did not find anything while searching my issue) here we are.

Good luck getting everything working and happy meshing :)