EDIT: based on other’s replies, it seems my conclusion USB 3 is required is not correct. However, it’s the only way I’ve gotten it to work from M1 Macs or RPi 4 and 5. The power is most likely the true culprit.
This is a troubleshoot tale of flashing the Tiny 2350 and probably other 2350-based boards. The bottom line is you need to use USB 3 from a reliable source of signal and power. I will explain the journey and I believe sharing this info will help people.
Ordered two Tiny 2350’s and two Pico 2’s and received them this week. US vendors don’t have any immediately shipping RP2350 boards yet. Ordered a Pimoroni Pico Plus 2 today.
Basically the debugging journey started when I was unable to flash MicroPython the Tiny 2350 from either an M1 Mac or a Raspberry Pi 4. When I tried to get into boot/flashing mode, it would connect and then disconnect quickly, rarely even popping up as a connected device. The MicroPython builds are hot off the beta presses so I wondered if somehow the .uf2 files were unstable. But the problem was much simpler than that.
At some point I realized the problem was probably the choice of USB port I used on either the Mac M1 systems or the Raspberry Pi 4. Both Macs had many year old USB hubs that only support USB 2 and are not externally powered. When I went straight from one of the USB C 3/Thunderbold ports, the flashing process was stable and consistent. Sure enough, going back to the Pi 4 and using one of the two USB 3 ports also made things right.
I looked around all sorts of flashing documentation for the RP2350 devices and their specific MicroPython. I also review how to get into the right boot mode. I don’t recall seeing USB 3 mentioned.
I have all four boards delivered in a week from UK to USA even before any US-based maker I checked were shipping anything with an RP2350 in it. I was so pleased with the availability and features I just ordered a Pimoroni Pico Plus 2.
I want to share this troubleshooting advice. Perhaps it should be added to the documentation on flashing. Very good instructions but i don’t recall USB 3 being stated as a requirement. From my experience, USB 3 with good power is required. As always, avoid hubs when things go wrong. Thank you for the cool Tinys. I’ve programming with them last 4 hours and they are cool. I bought the Pimoroni Pico Plus 2 because I might quickly run out of headroom on the mighty Tiny. I strongly recommend buying RP2350 stuff from Pimoroni because they can ship immediately. It seems they may be months ahead of other makers.
I got rid of my old USB 2 hubs years ago as they could be problematic at the best of times. I have an M2 Mac mini and a simple UGreen passive USB C to USB-A 3.2 and USB-C 3.2 hub and I have not had a single problem with the Pimoroni 2350 boards. That includes the 3A-capable Plasma 2350. Nothing special in the way of the USB-C cable is required either, in my experience.
Sorry, no! The RP2350 has a builtin USB 2.0 controller. The additional contacts of USB3 will never reach the MCU.
Your observation regarding stable power is of course true, but keep in mind this is a microcontroller that does not draw a lot of power, so the power-requirements are very low - as long as you don’t attach a lot of peripherals, which you shouldn’t anyway when you are flashing.
I think it can be even more relaxed according to the R Pi Pico 2 data-sheet:
• On-board USB1.1 (device or host)
Do Pimoroni boards have additional circuitry to require USB 2 or 3?
That’s good to know. I was just providing my experience and what solved the problem. When there’s trouble with USB, it’s almost always power related. I’ll do more tinkering and see if I can get one to flash from a USB 2 port on a Raspberry Pi 5. I don’t have a Plasma 2350 yet, but will probably get one soon. Thanks for replying.
Yep, the RP2350 provides an USB 2.0 controller, but attached to an USB1.1 PHY, so only full-speed (i.e. 12Mb/s).
I set up my Raspberry Pi 400 and connected a Pimoroni Pico Plus 2 running regular Micropython. I connected it to the Pi 400 USB 2 port using the lead that came with Tiny FX. Everything ran as expected.
I then tried to load the Pimoroni Micropython build (non-PSRAM) and everything ran as expected.
No problem with using USB 2 with a Pico Plus 2.
Repeated the above with a Tiny 2350 and with the same result - everything ran as expected.
No problem with using USB 2 with a Tiny 2350.
Computer: R Pi 400 with standard, fully updated Pi OS. Port: USB 2 A. Cable: USB A to C as supplied with Tiny FX kit. IDE: Thonny.
Sorry if this comes across as a bit pedantic but I feel I need to be clear about what worked for me.
On my Windows PC, having other RP2040 devices plugged into USB, can give me grief when trying to Flash a Pico. Especially if one of the others is running Circuit Python. I have to unplug my RGB Keypad or the Pico won’t be recognised when plugged in, in Boot mode. I get unknown device, device descriptor has failed. Took me a while to sort that one out.
That being said, I haven’t had issues per say, with USB C Pimoroni Pico Devices. Nothing out of the ordinary versus Micro USB Pico Devices. Just my 2 cents, YMMV.
Just a small addition: I always mount the Pico partition with the option “-o sync”. Depending on the Linux-OS, this might be automatic if the system detects a removable media. Mounting with the sync option will bypass the buffering of data on the OS-side, so bits and bytes will go directly to the device.
@RichSad: you can check how your device is mounted with the “sudo mount” command. “sudo lsblk” and “sudo blkid” will give you additional information which you need to match with what “mount” gives you (“mount” prints a long list, and you have to find the correct entry).