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?