SOLVED: Bricked throttle controller :-( -- Was using wrong firmware

Before you get too far into this, I’ll just cut to the chase: I finally figured out that I should have been using the “CM0-SP140” version of the firmware as I have the SAMD21 architecture, not the “CRP2040” version.

So I’m able to flash the 5.6 version using the browser-based tool with drag-and-drop. I still don’t know how to get the IDE platform to compile and flash the correct version if I wanted to, for example, compile and use v5.7a1.

Hi all,

I have an SP140, latest batch.

I’m trying to update my firmware (was v5.4) to v5.6 or v5.7a1. I’ve installed the IDE and can compile the firmware.

However, when I click on “Upload” it appears to be copying the “X4” firmware over to the controller:

Environment Status Duration

OpenPPG-CM0-X4 SUCCESS 00:00:10.971
OpenPPG-CM0-SP140 FAILED 00:00:07.532
OpenPPG-CRP2040-SP140 FAILED 00:00:42.863

I believe it should be using (uploading) the “CRP2040-SP140” firmware. Now my controller is bricked. It won’t boot up and the screen is black. It does still appear as an external USB device on my computer, and I can see three files on the “drive”


But they all have the date/timestamp of December 24, 2018, so I don’t think any of them are the new firmware I just compiled.

How do I get the right firmware onto the controller and un-brick it?

I commented out the following lines in platformio.ini

default_envs =
;OpenPPG-C M0-X4

So now it’s only building the OpenPPG-CRP2040-SP140 firmware. But when I try to upload, I get an error:

Looking for upload port...
Auto-detected: /dev/cu.usbmodem1101
Forcing reset using 1200bps open/close on port /dev/cu.usbmodem1101
Uploading .pio/build/OpenPPG-CRP2040-SP140/firmware.elf
rp2040load 1.0.1 - compiled with go1.15.8
*** [upload] Error 1
================================================== [FAILED] Took 16.17 seconds ==================================================

Environment            Status    Duration
---------------------  --------  ------------
OpenPPG-CRP2040-SP140  FAILED    00:00:16.175
============================================= 1 failed, 0 succeeded in 00:00:16.175 =============================================

 *  The terminal process "platformio 'run', '--target', 'upload'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

So I’m not sure what I need to do to get it to talk to the USB device. The device shows up as a USB drive, and in the IDE under devices it’s showing up as

/dev/cu.usbmodem1101 Controller C2 USB VID:PID=239A:0015 SER=6B924E8250593652322E3120FF030B1E LOCATION=1-1

So the IDE can see the device. It’s just not copying the firmware over correctly.

I’ve also tried to use the browser-based tool at The browser can connect to the serial/USB device. But when I click the button to “Reboot in update mode,” nothing appears to happen.

I can drag-and-drop the file “OpenPPG-CRP2040-SP140.uf2” onto the USB device. But nothing happens after that. It doesn’t reboot. Should I rename the file?

I am seeing a tiny flickering blue LED on the main board…

Solved. I should have been using the CM0 firmware. :angry: I can drag-and-drop the (correct) firmware to the USB device.

I still don’t know how to get the IDE to compile and upload the correct version though.

Were you able to figure out how to compile the firmware on your own?
Using platformIO should make it fairly simple once you have VScode and the proper extension downloaded