I thought it should be quite easy to use the new debugging functionality of Arduino 2.0 with the RP2040 using the official RP2040 debug probe in Earle Phil Hower’s core. I am using Arduino on my old Macbook running Linux: And Boy was I wrong!

The first challenge was to figure out the correct wiring: The UART from the Debug Probe optinally goes to the UART and a GND pin of the RP2040. Here the documentation is clear. To use the debugging functionality, the pins from the Debug port of the probe go to the Debug pins of the RP2040. However, I found it was quite tricky to get the sequence of the debug pins right: the correct sequence is from left to right: red goes to SWCLK, black to GND and yellow to SWDIO.

In the Arduino Tools menu the Upload Method PicoProbbe (CMSIS/DAP) needs to be selected if you use the Pico Debug Probe: but I still had no success!

Then, I was finding this discussion which describes that the wrong tcl file is used, because there is a but in Arduino, so I used the suggested proposal and copied the picoprobe_cmsis_dap.tcl to picoprobe.tcl. Looking at the log, I could confirm that the wrong picoprobe.tcl is still used, so the bug has not been resolved yet. However even with this correction, debugging was still not working!

Finally I was setting up the Linux udev rules and authorizations as documented for PlatformIO, assuming that the same must apply to Arduino as well and finally, after rebooting, things finally started to work.

To keep things simple, I started with the following minimal test sketch and setting a break point in setup and the loop was halting the execution at the expected locations:

void setup() {

void loop() {

Please note that with this setup the Debug Probe is using Serial1 while Serial is still the output which goes via the USB connection to the RP2040.

Categories: Arduino


Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *