FIXED: Strange behaviour using USB_CDC_ADM on Ubuntu

Hi everyone,

I was getting strange behaviour using USB_CDC_ADM on Ubuntu 13.10

It appeared to be dropping characters and garbling input; for instance when I ran example_usb_com, and pressed ‘t’ repeatedly I got this:

timetime=0x0000ttimetimtimetime=0x00000f57
time=0x00000ff4
time=0x000010ba
time=0x0000116d
time=0x00001212
titime=0x0000135c
time=time=0x0time=timtime=timetititime=tititime=time=0x000titime=0x00001dctitime=0x00001e20
time=time=0x00001f65
time=0x00001ff2

However after a minute or so it subsided and the app worked normally. This kind of thing happened with other apps using the USB serial too.

WELL, it turns out that Ubuntu’s Modem Manager is opening the USB device and trying to interrogate it with commands like “AT+GAP” (as discussed here). Eventualy it gives up and the serial device stops acting up. To fix it, I edited the file /etc/udev/rules.d/99-pololu.rules that ships with the SDK and changed the line from

SUBSYSTEM=="usb", ATTRS{idVendor}=="1ffb", MODE="0666"

to

SUBSYSTEM=="usb", ATTRS{idVendor}=="1ffb", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1"

then ran sudo udevadm control --reload-rules. Now the USB device works correctly straight away. Hope this helps someone!

Hello.

Thank you for sharing this with us. We recently submitted a patch to the ModemManager project to generally ignore all Pololu devices, so in future versions of Ubuntu you should not need to worry about this:

cgit.freedesktop.org/ModemManage … fe11f780a0

–David