I'm trying to connect a u-Blox USB GPS device to an embedded (armel) Linux 2.6.32 system based on BusyBox. The device has a native CDC ACM USB interface. The system didn't come with cdc_acm, so I cross-compiled it, transferred & insmodded it, and it loaded successfully (confirmed by dmesg).

I plugged the device and it correctly got enumerated by the USB driver with address 001:003, and assigned to the cdc_acm driver that created the /dev/ttyACM0 file. However, opening the device with a serial terminal or even with the cat command, results in garbage being printed, whereas ASCII NMEA commands should be printed (this is confirmed to work on two other systems).

stty runs on the file without errors (however the reported data is obviously invalid/arbitrary, due to the device being a USB device and not a serial device). lsusb -v -s 1:3 also reports the correct information for the device.

I don't know how to further debug the issue. What steps can I take to figure out the problem and solve it?

  • You might alternatively try the generic serial driver, search for new_id.
    – meuh
    Aug 24, 2016 at 15:54
  • @meuh That should probably work, and if I'm not mistaken the driver is compiled into the kernel. I'll try. Aug 24, 2016 at 17:18

1 Answer 1


Looks like the problem resided in the terminal settings.

By manually setting the right baudrate and raw mode, I started to get meaningful data from the device:

stty -F /dev/ttyACM0 57600
stty -F /dev/ttyACM0 raw

You must log in to answer this question.

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