Cypress Driver Problem with Delorme Earthmate LT-20 - Patch Available

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,
0×0300, 0, feature_buffer, 8, 500);

That fixes it and doesn’t break other devices either, like simply commenting out the cypress_set_dead() call.

Leave a Reply