I’ve got a USB Delorme Earthmate LT-20 that, untill a few months ago, worked perfectly fine. Somewhere between then and now, the cypress_m8 driver that supported it in linux somehow changed to make it unsupported. What happened was that it tried to retrieve the serial line settings but the Earthmate didn’t respond to the query, so the driver disabled it to try and make it harmless, even though it was already harmless. Somewhere around line 400 in drivers/usb/serial/cypress_m8.c, add this:
/* The LT-20 doesn't really work too well with trying to get the serial settings. */
if (port->serial->dev->descriptor.idProduct == PRODUCT_ID_EARTHMATEUSB_LT20) {
return retval;
}
Put it right before the lines that say:
do {
retval = usb_control_msg (port->serial->dev, usb_rcvctrlpipe(port->serial->dev, 0),
HID_REQ_GET_REPORT, USB_DIR_IN | USB_RECIP_INTERFACE | USB_TYPE_CLASS,
0x0300, 0, feature_buffer, 8, 500);
That fixes it and doesn’t break other devices either, like simply commenting out the cypress_set_dead() call.
Can you tell me where the file ‘drivers/usb/serial/cypress_m8.c’ is at. Can I grep for this (I’ve never used GREP)
I run Linux Mint 7
Hey, thanks – I really see not reason to throw away this gps puck.
David
Its in your linux kernel sources. I dunno how to download them for mint, but it seems this bug has been fixed for quite some time.