I have a partially similar question like this one ttyUSB? No, ttyACM. How can I assign the usb-device to ttyACM, not ttyUSB?

But mine is a little bit more difficult.

I recently bought a Feather RP2040 Prop-Maker device like this

I work for some time with ESP32 and Arduino devices. And I connected this one to my computer and got readings from the Arduino IDE. I therefore know the device and cable are working fine.

However, it also works as a tiny USB device. The manual states one could upload files to it (it plays music and you are supposed to copy the files via USB).

However when I plug the device it is not recognized as USB device.

calling lsusb I see the device is there (obviously since I can read from the serial monitor in the Arduino IDE)

Bus 001 Device 022: ID 239a:8131 Adafruit Feather RP2040 Prop-Maker

Calling ls -l /dev/serial/by-id it states this

lrwxrwxrwx 1 root root 13 Sep 16 16:57 usb-Adafruit_Feather_RP2040_Prop-Maker_DF6260785F590937-if00 -> ../../ttyACM0

So the device is understood as an ACM device. I thought that made sense since I can program it and read from the Serial connection.

However, I have no idea how I might connect it as a USB device for moving files there. I had a look at the journal and saw this message:

kernel: usb 1-6.2.4: new full-speed USB device number 23 using xhci_hcd
kernel: usb 1-6.2.4: New USB device found, idVendor=239a, idProduct=8131, bcdDevice= 1.00
kernel: usb 1-6.2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
kernel: usb 1-6.2.4: Product: Feather RP2040 Prop-Maker
kernel: usb 1-6.2.4: Manufacturer: Adafruit
kernel: usb 1-6.2.4: SerialNumber: DF6260785F590937
kernel: cdc_acm 1-6.2.4:1.0: ttyACM0: USB ACM device
mtp-probe[191599]: checking bus 1, device 23: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.2/1-6.2.4"
mtp-probe[191599]: bus: 1, device: 23 was not an MTP device
mtp-probe[191600]: checking bus 1, device 23: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.2/1-6.2.4"
mtp-probe[191600]: bus: 1, device: 23 was not an MTP device

The only solution I could find is to create a udev rule like that one:

#Adafruit RP2040 Prop-Maker Feather
ATTR{idVendor}=="293a", ATTR{idProduct}=="8131", GOTO="libmtp_rules_end"

And it kind of works that I don't get that error any longer. However the device still doesn't show up in lsblk or so. I can't mount anything.

I should note, I bought an Adafruit Soundboard which is the predecessor of that one. And there I can just plug in the cable and copy files. But it is not programmable so I assume it gets difficult when you want to use the device in 2 different ways - programming the ACM device and copy files on the USB device.

I would be fine to "switch" things, copy files and switch back to the programmable connection if that helps. But how can I tell my system to interpret the device as USB drive?

I'm using Manjaro (Arch) Linux. (And I tried the same on Windows with no success).

Any ideas?

1 Answer 1


Alright, I found another document that helped actually. Turns out there is nothing to do on my system. It's not like I needed drivers or so.

In fact the device itself has to ways of connecting. Another manual stated:

To enter the bootloader, hold down the BOOT/BOOTSEL button (highlighted in red above), and while continuing to hold it (don't let go!), press and release the reset button (highlighted in blue above). Continue to hold the BOOT/BOOTSEL button until the RPI-RP2 drive appears!

So in case anyone has that problem, this is the (easy) solution actually!

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .