Comment 4 for bug 111694

Revision history for this message
Peter Rhone (prhone-gmail) wrote :

The solution involves recompiling the module, which stopped working for the LT-20 after a patch introduced into the 2.6.19 tree. The patch I'm assuming fixed some issue with other devices which use the same driver, so be careful.

To get it to work I did the following:

1)installed the linux source tree:
sudo apt-get install linux-source-2.6.XX <- replace XX with your running kernel version, for me: 20.
cd /usr/src
tar -xvf linux-source-2.6.XX.bz2

2)Copied the files cypress_m8.h and cypress_m8.c from /usr/src/linux-source-2.6.XX/drivers/usb/serial/
to /usr/src/modules/

3)Changed dirs to /usr/src/modules,
created /usr/src/Makefile with the standard module creation 2.6 stuff:

obj-m := cypress_m8.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

4) Commented out line 408 from cypress_m8.c, which should read:
   cypress_set_dead(port);
(anyway, if it isn't line 408 for you, it should be in the following if statement in function cypress_serial_control, which, after being commented out should look like this:
if (retval != 5) {
                err("%s - failed to retrieve serial line settings - %d", __FUNCTION__, retval);
                /*cypress_set_dead(port); // fix for LT-20*/
                return retval;
            } else ...

5) ran make

6) finally installed the new modules:
install -m 644 cypress_m8.ko /lib/modules/`uname -r`/kernel/drivers/cypress_m8.ko
depmod -a

7) tested with
cat /dev/ttyUSB0
all good -> lots out NMEA output.

Hope I didn't forget anything important, Good luck.