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 '16 at 15:54
  • @meuh That should probably work, and if I'm not mistaken the driver is compiled into the kernel. I'll try. – rrrrrrrrrrrrrrrr Aug 24 '16 at 17:18

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.