Good news, everyone! :^)

The DeLorme Earthmate LT-20 (and LT-40) GPS receivers now work again
under Linux!  The new 2.6.26 kernel incorporates a series of patches by
Mike Isely which fix the problems with the supporting driver.

The full story is a bit more involved, so for anyone interested, please
read on....

As near as I've been able to discern, DeLorme has had at least 4 USB-
based GPS receivers which all go by the "Earthmate" name.  There is the
original USB-based "Earthmate", 2 variants (details below) of the
"Earthmate LT-20", and the recent "Earthmate LT-40".  (It appears that
there may have even been an older RS-232 "Earthmate" as well, but I'm
ignoring any such device here since it is irrelevant to this discussion.

The 'cypress_m8' Linux kernel module initially (until the 2.6.19 kernel
came out) worked fine with the original USB Earthmate and the 1st
(older) variant of the Earthmate LT-20.

A patch to the 'cypress_m8' driver by Mike Isely went into what became
the Linux 2.6.19 kernel.  For me, it caused my previously-working LT-20
to stop working.  I discovered this (way back in Mar 2007) and, after
some testing, posted about it, including a "quick 'n' dirty" 1-line fix
that made my LT-20 start working again:

   http://www.mail-archive.com/linux-usb-
[EMAIL PROTECTED]/msg52237.html

Shortly thereafter, I got an email from Mike Isely.  He explained that
his patch that got included in creating the Linux 2.6.19 kernel made his
original USB Earthmate GPS receiver work more reliably, preventing some
situation in which the driver was monopolizing his CPU, sometimes even
forcing a reboot.

We began an email exchange/discussion (which eventually drifted off the
'linux-usb-devel' mailing list) about fixing the driver properly, to
support both the original Earthmate and the LT-20 version.  At that
time, the LT-40 didn't exist.

We both got distracted for several months doing other things.  In that
time, Mike had conveniently purchased an Earthmate LT-20 to do some
testing.  We finally got around to resuming the discussion and testing.
Up until late January 2008, neither of us realized that there was such a
thing as a "new" LT-20 variant.  Mike came up with a patch to the
'cypress_m8' driver that worked with his original Earthmate and with his
(new) LT-20.  When I tested it, it didn't work with my (old) LT-20,
though.

We quickly realized that DeLorme had put out a newer version of the
LT-20 but with the same USB 'Product ID' (PID).

As it turns out, both of the Earthmate LT-20 receivers I own are the
older variant.  Mike owns both the old original Earthmate (non-"LT-20")
and the newer variant of the LT-20.

Once we realized this and reported our respective LT-20 device
capabilities to each other, Mike quickly came up with another patch
which worked perfectly on my older LT-20 devices.  Since DeLorme didn't
change the PID between the old and new LT-20 receivers, Mike was forced
to use the device's report of the 'maximum packet size' (32 bytes on the
old LT-20 devices but only 8 bytes on the new LT-20 devices) to discern
the proper way to process the datastream.

In fact, for anyone interested in the really gory details, here's the
releavant part of the output from 'cat /proc/bus/usb/devices' for every
USB-based Earthmate GPS receiver except the LT-40....

The oldest, "original" (non-"LT-20") USB Earthmate:

   T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
   D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
   P:  Vendor=1163 ProdID=0100 Rev= 0.04
   S:  Manufacturer=DeLorme Publishing
   S:  Product=DeLorme USB Earthmate
   C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
   I:* If#= 0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=cypress
   E:  Ad=81(I) Atr=03(Int.) MxPS=  32 Ivl=6ms
   E:  Ad=02(O) Atr=03(Int.) MxPS=  32 Ivl=6ms
   
The "older" (32-byte) Earthmate LT-20:

   T:  Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
   D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
   P:  Vendor=1163 ProdID=0200 Rev= 0.01
   S:  Manufacturer=DeLorme Publishing
   S:  Product=DeLorme USB Earthmate      
   C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
   I:  If#= 0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=cypress
   E:  Ad=81(I) Atr=03(Int.) MxPS=  32 Ivl=6ms
   E:  Ad=02(O) Atr=03(Int.) MxPS=  32 Ivl=6ms

The "newer" (8-byte) Earthmate LT-20:

   T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=1.5 MxCh= 0
   D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
   P:  Vendor=1163 ProdID=0200 Rev= 1.11
   S:  Manufacturer=DeLorme Publishing
   S:  Product=DeLorme USB Earthmate
   C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=400mA
   I:* If#= 0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=cypress
   E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=10ms
   E:  Ad=02(O) Atr=03(Int.) MxPS=   8 Ivl=10ms
   
The original (non-"LT-20", non-"LT-40") Earthmate has a unique USB PID 
("ProdID=0100"), making it easy to distinguish.  As you can see, among other 
things, the 2 variants of the LT-20 have different values for "Spd" and for 
"MxPS" on both the Input and Output endpoints.  In USB parlance, the older 
LT-20 is a "full-speed" device (12 Mbps) and the newer LT-20 is a "low-speed" 
(1.5 Mbps) device.

Sometime after those tests were made and Mike's repair patches were
created, both Mike and I purchased the newer Earthmate LT-40.  It
appears to be much more like the old LT-20 than the new LT-20.  Here's
the output from 'cat /proc/bus/usb/devices' for the LT-40:

   T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
   D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
   P:  Vendor=1163 ProdID=0200 Rev= 0.01
   S:  Manufacturer=DeLorme Publishing
   S:  Product=DeLorme USB Earthmate      
   C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
   I:  If#= 0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=cypress
   E:  Ad=81(I) Atr=03(Int.) MxPS=  32 Ivl=4ms
   E:  Ad=02(O) Atr=03(Int.) MxPS=  32 Ivl=4ms

More importantly, these new LT-40 GPS receivers work perfectly with the
new 2.6.26 kernel too.

The bottom line is that the new 2.6.26 kernel properly supports all 4 of
these USB-based DeLorme Earthmate GPS receivers.

My sincere thanks to Mike Isely for providing these very useful patches
and pushing them upstream for kernel inclusion!  He did all the hard
work -- all I did was test and report.

Hopefully this will be useful to all you Linux-loving Earthmate GPS
users, like me! :^)

Regards,
Bill Marr

-- 
DeLORME Earthmate GPS LT-20 (USBid:1163:0200) doesn't work in Feisty
https://bugs.launchpad.net/bugs/111694
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to