ExpressLRS receiver not working on MAMBA F411 25A AIO
I have recently encountered an issue: my ELRS receiver (FLYWOO TCXO 2.4G ELRS EL24E RECEIVER) appeared to not work when connected to the flight controller. The LED on the receiver stayed on and did not blink like in the documentation or various YouTube videos reviewing it.
This prompted me to do some investigation to identify what could be the potential cause of the problem. One of the first things I tried was to desolder wires of the receiver and connect them to an external UART adapter, everything was fine. I could upgrade firmware, change settings, and bind it to my transmitter. But as soon as I connected it back again to the flight controller, it stopped working again.
This seemed quite odd, as historically I had to deal with quite many serial interfaces and all of them just worked, what was so different about this?
After probing around a bit I noticed that only the RX line on the flight controller behaves strangely, it seems to hold voltage close to the ground, less than 1v.
ExpressLRS page has a nice troubleshooting page, which had my issue mentioned:
I think my Receiver and Transmitter are bound, as the LED on the Receiver is solid. But I do not have stick inputs or RSSI on the radio.
If there's no other UART, wire up a resistor with a value between 300 Ohm to 1k Ohm between a 3.3v pad and the FC's RX pad (where the TX from the receiver connects to).
I have tried this, and the receiver did show signs of life, booted up, connected to the transmitter, and started sending telemetry. However all switches and sticks were still kinda wonky, they jumped around and were unresponsive.
My goal was to remove the circuitry that was responsible for this behavior from the flight controller to avoid any potential issues. The part that I traced on the pad was a tiny SOT323 package marked CHJ
, a friend led me to this datasheet of the TI part, indeed it was a potential inverter. Tracing another leg of the chip, it lead directly PA9 pad on the microprocessor. Looking up the firmware for the flight controller on github, it was indeed a match: UART1_TX_PIN PA9
was one of its pin definitions, which matches the hardware I have.
The next step was micro-soldering... The goal is to remove the inverter chip and 2 resistors that were connected to it.
After a bit of effort, the job was done:
After desoldering these 3 components, the RX pad was no longer connected to ground, which is good.
The next step was to solder a tiny wire to bridge the RX pad directly to the PA9 on the microprocessor, this is how the final result looked like:
Assembled everything back together, soldered the receiver back onto to flight controller and everything worked!
In the end, it was a mistake to purchase this flight controller as it was close to the price of current generation AIOs that fully support ELRS receivers. But leaving this part unused and spending more money on another flight controller was not something I was willing to do.
Hope this helps :)