Hello!
I've been trying to create a "ground control station" that can send CRSF to a drone. The closest thing I've seen someone do is Method 2 from https://github.com/kaack/elrs-joystick-control (done with a BetaFPV Micro instead).
The Ranger Micro has Backpack default pins at 16/17 (RX/TX), although I've had more apparent success setting CRSF Serial Pins to 3/1 in /hardware.html:
While I haven't gotten the module to acknowledge it's connected, I have seen some errors (from what I assume is the boot log) when running python -m serial.tools.miniterm COM6 115200:
--- Miniterm on COM6 115200,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
[ 943][E][esp32-hal-gpio.c:102] __pinMode(): Invalid pin selected
[ 943][E][esp32-hal-gpio.c:102] __pinMode(): Invalid pin selected
[ 944][E][esp32-hal-gpio.c:102] __pinMode(): Invalid pin selected
I don't see any output at 420000 baud.
The LED continues to blink orange even when I send CRSF packets at 420000 baud.
My current theory is that ESP32 Arduino core's pinMode() rejects GPIO 1 and 3 because they are reserved. The firmware tries to configure CRSF on those pins, the HAL refuses, CRSF UART never comes up, hence the silence and blinking orange. If that's right, this is a platform-level limitation on ESP32 modules that doesn't apply to STM32 modules like the BetaFPV 1W Micro, which would explain why elrs-joystick-control works there but not here.
Questions:
- Is this diagnosis correct, or am I missing something? (my explanation admittedly doesn't feel complete as there are 3 errors when I changed 2 pins)
- Has anyone successfully done CRSF-over-USB on a Ranger Micro (or any ESP32-based ELRS TX)?
- Is there a firmware config flag, or a runtime "passthrough" mode, that properly routes CRSF to UART0 on ESP32 targets without hitting the HAL guard?
- If not: is a custom firmware build the only path, or should I just get a BetaFPV/STM32-based module?
Use USB joysticks to remote control a drone or airplane - kaack/elrs-joystick-control