Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

Features

I’ve tried, it still comes up as a faulty device.
You did this?...

Also for extremely detailed instructions...
Yes! Programming the RP2040 through USB is straightforward, thanks to its USB Mass Storage Mode Bootloader. Here’s how you can do it:


Steps to Program the RP2040 via USB




1. Enter Bootloader Mode


The RP2040 microcontroller has a built-in USB bootloader, allowing it to appear as a mass storage device when connected to a computer. To enter this mode:


  • Hold the BOOTSEL button (or pull the BOOTSEL pin high).
  • Plug in the board via USB to your computer.
  • Release the BOOTSEL button after the USB connection is established.

Your RP2040 board (e.g., Raspberry Pi Pico) should now appear as a USB drive named RPI-RP2.




2. Flashing Firmware


Once the RP2040 appears as a USB drive, you can program it by copying a UF2 firmware file to it.


For MicroPython or CircuitPython:


  1. Download a UF2 file (e.g., MicroPython for RP2040 or CircuitPython for RP2040).
  2. Drag and drop the UF2 file onto the RPI-RP2 drive.
  3. The board will automatically reboot and start running the firmware.

For C/C++ or Rust Development:


If you're working with C/C++ (via the Pico SDK) or Rust, you'll need to:


  1. Compile your code into a UF2 file.
  2. Drag and drop the generated UF2 file onto the RPI-RP2 drive.



3. Programming via USB Serial (Without BOOTSEL)


Once firmware (like MicroPython or a custom USB stack) is flashed, you can upload new code via USB serial instead of entering BOOTSEL mode each time.


For MicroPython / CircuitPython:


  • Use a serial terminal like Thonny (Python IDE) or screen / minicom on Linux to interact with the board over USB.

For Arduino IDE (With RP2040 Boards Support):


  • Install Arduino-Pico core (by Earle Philhower).
  • Select Raspberry Pi Pico in the Arduino IDE.
  • Upload sketches directly through USB without entering BOOTSEL mode.

For C/C++ with UF2 Bootloader:


  • Use picotool to upload binaries directly:
    picotool load my_program.uf2<br>



4. Debugging and Advanced Flashing


For more advanced development, you can:


  • Use SWD Debugging: With an external debug probe like a second RP2040 running PicoProbe.
  • Use picotool for more control over firmware uploads and board information.
  • Flash firmware using a USB-to-Serial adapter (for non-USB firmware).



Summary


  • Hold BOOTSEL, plug in USB → Board appears as RPI-RP2.
  • Drag & drop a UF2 file to program it.
  • Reboot automatically and run the firmware.
  • For USB serial programming, use MicroPython, CircuitPython, or Arduino IDE.
  • For debugging, use picotool or SWD.

Would you like a step-by-step example with code for a specific environment (e.g., Arduino, C++, or MicroPython)?
 
Yup, Hold the boot button plug it in and both my PC and Laptop throw an error saying the USB device malfunctioned. Are you using mac or linux when programing these? I appreciate the detailed response. I'm sure it will help many of us here.
 
Yup, Hold the boot button plug it in and both my PC and Laptop throw an error saying the USB device malfunctioned. Are you using mac or linux when programing these? I appreciate the detailed response. I'm sure it will help many of us here.
I programmed them all with a PC.

NOTE: If you start to upload something and release the button in the middle it can brick the device.

Is the device working as intended currently?
 
I would like the ability to go back and forth between two positions that I choose. I would also like the ability to use it with the Eflite EFLA405 Payload Release
 
Very nice project, and device, congratulations! I pictured myself in the first moments of the video ;-) gathering bits and pieces to go forward.

Would adding a 3S NiMh battery charger (from the USB current source) be a nice option?
This might need to be disable-able in case someone choose Alkaline AA...
Or switch the whole power supply to two 18650 with a Li-Ion charge (still from the USB source).
You could run it off one lithium with a standard boost module output a steady 5v
 
I have a few suggestions. Many inspired by functionality of the toolkit rc mc8 which I would suggest is a near peer based on price and functionality.

  • Add the detected pin out to the current display. As once the tool determines the correct wiring the plug still needs to be inserted correctly into a rx/gyro/flight controller.
  • Add 'bad plug wiring detection' where the positive is on one of the edges and signal or ground is on the center pin. I dont know it needs to work in this condition more than just detect it and suggest a fix eg move positive to middle.
  • Detect PWM, PPM, SBUS and possibly even CRSF. Now it can support rx testing.
  • Support output for the same protocols adding PPM/SBUS/CRSF. That allows you to replace a rx with the tool plug it into a flight controller and be sure what you are feeding into the flight controller.
  • Add support for i2c and standard uart that will allow it to drive a GPS. You have a few options with the display, give a simple lat/long compus pointer, give a google maps link based on that lat or long, output a QR code that has the maps link in it.
  • Support programing servos and ESC's.
  • Add pin headers for a internal lipo option with USB charging circuit.
  • Lipo battery cell voltage. Plugging in a balance lead it should be able to give you the current voltage of each cell. This is good to check if the cells are still balanced but also just a simple field battery tester.
From a hardware perspective I guess really its jog dial with button. internal lipo battery support and expose more pins. After that its just software that can come over time. Why did you choose the RP2040 over the ESP32? I would expect at your volume price doesn't really change that much. And with wifi and bluetooth it opens up a so much more. SpeedyBee has wireless module that just hangs of a usb port to give wireless programming to flight controllers. Going with a esp32 and that becomes a easy software feature to develop. Plug in the usb cable to the flight controller, then connect usb serial data to a tcp port on wifi or the Bluetooth serial profile and you are done. You have a device that that one feature sells for $35 - $50. The wifi alone support can be used to program an ELRS system. Let the rx go into wifi, have the esp32 connect to it passing the configuration.

I can understand wanting to keep things simple but I think that's possible. Just prioritize the 'simple' things. So have the extra pins outs but keep a three pin socket for the servo. Keep the auto features but have extra options tucked away in 'advanced mode'.
 
I have a few suggestions. Many inspired by functionality of the toolkit rc mc8 which I would suggest is a near peer based on price and functionality.

  • Add the detected pin out to the current display. As once the tool determines the correct wiring the plug still needs to be inserted correctly into a rx/gyro/flight controller.
  • Add 'bad plug wiring detection' where the positive is on one of the edges and signal or ground is on the center pin. I dont know it needs to work in this condition more than just detect it and suggest a fix eg move positive to middle.
  • Detect PWM, PPM, SBUS and possibly even CRSF. Now it can support rx testing.
  • Support output for the same protocols adding PPM/SBUS/CRSF. That allows you to replace a rx with the tool plug it into a flight controller and be sure what you are feeding into the flight controller.
  • Add support for i2c and standard uart that will allow it to drive a GPS. You have a few options with the display, give a simple lat/long compus pointer, give a google maps link based on that lat or long, output a QR code that has the maps link in it.
  • Support programing servos and ESC's.
  • Add pin headers for a internal lipo option with USB charging circuit.
  • Lipo battery cell voltage. Plugging in a balance lead it should be able to give you the current voltage of each cell. This is good to check if the cells are still balanced but also just a simple field battery tester.
From a hardware perspective I guess really its jog dial with button. internal lipo battery support and expose more pins. After that its just software that can come over time. Why did you choose the RP2040 over the ESP32? I would expect at your volume price doesn't really change that much. And with wifi and bluetooth it opens up a so much more. SpeedyBee has wireless module that just hangs of a usb port to give wireless programming to flight controllers. Going with a esp32 and that becomes a easy software feature to develop. Plug in the usb cable to the flight controller, then connect usb serial data to a tcp port on wifi or the Bluetooth serial profile and you are done. You have a device that that one feature sells for $35 - $50. The wifi alone support can be used to program an ELRS system. Let the rx go into wifi, have the esp32 connect to it passing the configuration.

I can understand wanting to keep things simple but I think that's possible. Just prioritize the 'simple' things. So have the extra pins outs but keep a three pin socket for the servo. Keep the auto features but have extra options tucked away in 'advanced mode'.
Great feedback, thanks! I like the idea of keeping things simple but allowing advanced features for users who want them. Some of these suggestions align nicely with what others have mentioned, especially the rotary dial and internal LiPo. We'll look closely at these options. Regarding the RP2040 vs. ESP32 choice, I mainly went with RP2040 to keep things streamlined initially, but you're right—ESP32 opens up interesting possibilities. I'll definitely keep your thoughts in mind moving forward.
 
Back
Top