# [HOWTO] Holux GM210 USB GPS Receiver

## Spida

Getting a Holux GM210-USB GPS-Receiver to work with Gentoo

Prerequisites:

You should have a fully working linux base-system

(for non-gentooists, that should include:

- compiler and matching tools

- configured kernelsources)

You should have a kernel, and know how to configure and compile it.

Kernel:

These are the things that I believe are the minimum required settings for usb-gps to work. I used vanilla-2.6.7:

```
General setup  --->

        [*] Support for hot-pluggable devices

Device Drivers  --->

        USB support  --->

                <*> Support for Host-side USB

                [*]   USB device filesystem

                # choose your driver here

                <*>   UHCI HCD (most Intel and VIA) support
```

At that point you can 

```
cat /proc/bus/usb/devices
```

```
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=12  MxCh= 0

D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1

P:  Vendor=067b ProdID=2303 Rev= 2.02

C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA

I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)

E:  Ad=81(I) Atr=03(Int.) MxPS=  10 Ivl=1ms

E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
```

Interesting are the P and I lines. The P line states that this devices contains a prolific 2303 usb-to-serial-converter. The I line says that your system doesn't know which driver to choose (yet).

lsusb gives the same info about the device

```
Bus 001 Device 003: ID 067b:2303 Prolific Technology, Inc. PL2303

Serial Port
```

Now, we know which driver to enable in the kernel

```
Device Drivers  --->

   USB support  ---> 

      USB Serial Converter support  --->

         <*> USB Serial Converter support

         <*>   USB Prolific 2303 Single Port Serial

Driver
```

With that kernel, you should see some messages when connecting the device in dmesg:

```
usb 3-1: new full speed USB device using address 2

pl2303 3-1:1.0: PL-2303 converter detected

usb 3-1: PL-2303 converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
```

additionally

cat /proc/bus/usb/devices should now list the device claimed by the pl2303 driver:

```
T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0

D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1

P:  Vendor=067b ProdID=2303 Rev= 2.02

C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA

I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=pl2303

E:  Ad=81(I) Atr=03(Int.) MxPS=  10 Ivl=1ms

E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
```

Ok, now that the device is working, we can have a look at the software

Software:

emerge app-misc/gpsdrive-2.0.9 (It was masked at the time I wrote this, but works much better than the old version 2.0.4)

You can now start gpsd (the gpsdaemon, it comes with gpsdrive, you can use your gps-signals from more than one application this way and even share them across different computers. read the kismet-manual for possible uses ;-) )

```
gpsd -K -s 4800 -p /dev/usb/tts/0
```

Substitute usb/tts/0 with whatever dmesg told you (that would be /dev/tts/USB0 for udev-users).

You can now start the gpsdrive-application.

Have fun. (and don't get lost)

----------

## baobab88

Thank you for this howto ... 

This configuration also works with the new GR-211.

but i'v a little trouble with the serial to usb driver. Only root is allowed to use it. how can i change this because it is not good to lauch gpsdrive as superuser ??

----------

## mathgeek

Hi!

For some reason, this does not work for me. I have the correct modules loaded (at least I think) but the device, a Holux GR-230, does not show up on lsusb. I loaded the modules usbserial and pl2303 (seen as Linux driver on Holus homepage). What is wrong here? Is it the cable? Do I need more than the mini USB cable that came with the charger?

----------

## Qui-Gon

Maby you have a conflict with an other usb device? I sometimes have trouble with my usb-mouse in combination with my GM-210.

However, now I'm having trouble starting the gpsd  in /etc/conf.d/local.start as a local. anyone know why? In the console I have no problems.

----------

## xdanx

HELPP!!!!  I can't emerge the newest version of gps drive.  If I do emerge gpsdrive.  It'll install v 2.0.4.

Xbox root # emerge app-misc/gpsdrive-2.0.9

Calculating dependencies   

!!! Problem in app-misc/gpsdrive-2.0.9 dependencies.

!!! "Specific key requires an operator (app-misc/gpsdrive-2.0.9) (try adding an '=')" exceptions

----------

## fredgt

 *xdanx wrote:*   

> HELPP!!!!  I can't emerge the newest version of gps drive.  If I do emerge gpsdrive.  It'll install v 2.0.4.
> 
> Xbox root # emerge app-misc/gpsdrive-2.0.9
> 
> Calculating dependencies   
> ...

 

If you try to install a package with te version number you have to at = before the package name.

```
emerge =app-misc/gpsdrive-2.0.9
```

BTW : are you installing gpsdrive on an xbox?

----------

## xdanx

 *fredgt wrote:*   

>  *xdanx wrote:*   HELPP!!!!  I can't emerge the newest version of gps drive.  If I do emerge gpsdrive.  It'll install v 2.0.4.
> 
> Xbox root # emerge app-misc/gpsdrive-2.0.9
> 
> Calculating dependencies   
> ...

 

Yes,  I'm installing it on the xbox (gentoox)

----------

## xdanx

[quote="xdanx"] *fredgt wrote:*   

>  *xdanx wrote:*   HELPP!!!!  I can't emerge the newest version of gps drive.  If I do emerge gpsdrive.  It'll install v 2.0.4.
> 
> Xbox root # emerge app-misc/gpsdrive-2.0.9
> 
> Calculating dependencies   
> ...

 

Xbox root # emerge =app-misc/gpsdrive-2.0.9

Calculating dependencies   

emerge: there are no ebuilds to satisfy "=app-misc/gpsdrive-2.0.9".

Ahhh.. How come it doesn't work =(

----------

## fredgt

Do you have gpsdrive-2.09 ebuild?

It should be in /usr/portage/app-misc/gpsdrive/ .

```
ls -l /usr/portage/app-misc/gpsdrive/

total 40

-rw-r--r--  1 root    root    3124 Apr  6 21:37 ChangeLog

-rw-r--r--  1 root    root    1330 Apr  6 21:37 Manifest

drwxr-xr-x  2 portage portage  376 Jun  8  2004 files

-rw-r--r--  1 root    root     870 Jan  1 16:10 gpsdrive-1.33.ebuild

-rw-r--r--  1 root    root     888 Jan  1 16:10 gpsdrive-2.03.ebuild

-rw-r--r--  1 root    root     824 Jan  1 16:10 gpsdrive-2.04-r1.ebuild

-rw-r--r--  1 root    root     904 Jan  1 16:10 gpsdrive-2.04.ebuild

-rw-r--r--  1 root    root     805 Jan  1 16:10 gpsdrive-2.05.ebuild

-rw-r--r--  1 root    root     641 Jan  1 16:10 gpsdrive-2.08.ebuild

-rw-r--r--  1 root    root     645 Apr  6 21:37 gpsdrive-2.09.ebuild

-rw-r--r--  1 portage portage  252 Dec 30  2003 metadata.xml
```

If it's not try to update you're portage.

```
emerge --sync
```

----------

## fredgt

There was a little typo in my post, it should be "-2.09" and not "-2.0.9"

```
emerge =app-misc/gpsdrive-2.09
```

----------

## xdanx

 *fredgt wrote:*   

> There was a little typo in my post, it should be "-2.09" and not "-2.0.9"
> 
> ```
> emerge =app-misc/gpsdrive-2.09
> ```
> ...

 

Xbox root # emerge =app-misc/gpsdrive-2.09

Calculating dependencies   

!!! All ebuilds that could satisfy "=app-misc/gpsdrive-2.09" have been masked.

!!! One of the following masked packages is required to complete your request:

- app-misc/gpsdrive-2.09 (masked by: ~x86 keyword)

For more information, see MASKED PACKAGES section in the emerge man page or 

section 2.2 "Software Availability" in the Gentoo Handbook.

----------

## xdanx

I made a little progress by editing "/usr/portage/app-misc/gpsdrive/gpsdrive-2.09.ebuild"

#KEYWORDS="~x86 ppc amd64"

KEYWORDS="x86 ~amd64 -ppc ~sparc ~alpha ~hppa"

I replaced gpsdrive-2.09.ebuild's keywords with gpsdrive-2.04.ebuild's keywords.  It downloaded the file but won't compile because the size doesn't match.  I check the digest-gpsdrive-2.09 file and it does match.

Xbox files # cat /usr/portage/app-misc/gpsdrive/files/digest-gpsdrive-2.09

MD5 eaa52cb220f3d10312a1046dd47126bb gpsdrive-2.09.tar.gz 1745509

=============emerge cut n paste=================

18:12:11 (278.29 KB/s) - `/usr/portage/distfiles/gpsdrive-2.09.tar.gz' saved [1,745,509/1,745,509]

=================================================================================================

Xbox gpsdrive # emerge =app-misc/gpsdrive-2.09 

Calculating dependencies ...done!

>>> emerge (1 of 1) app-misc/gpsdrive-2.09 to /

>>> Downloading ftp:///ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/distfiles/gpsdrive-2.09.tar.gz

ftp:///ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/distfiles/gpsdrive-2.09.tar.gz: Empty host.

>>> Downloading http://ftp.snt.utwente.nl/pub/os/linux/gentoo/distfiles/gpsdrive-2.09.tar.gz

--18:12:04--  http://ftp.snt.utwente.nl/pub/os/linux/gentoo/distfiles/gpsdrive-2.09.tar.gz

           => `/usr/portage/distfiles/gpsdrive-2.09.tar.gz'

Resolving ftp.snt.utwente.nl... 130.89.175.1, 2001:610:1908:8000::175:1

Connecting to ftp.snt.utwente.nl[130.89.175.1]:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 1,745,509 [application/x-tar]

100%[========================================================================================>] 1,745,509    283.19K/s    ETA 00:00

18:12:11 (278.29 KB/s) - `/usr/portage/distfiles/gpsdrive-2.09.tar.gz' saved [1,745,509/1,745,509]

>>> md5 files    :Wink:  gpsdrive-1.33.ebuild

>>> md5 files    :Wink:  gpsdrive-2.08.ebuild

>>> md5 files    :Wink:  gpsdrive-2.03.ebuild

>>> md5 files    :Wink:  gpsdrive-2.04-r1.ebuild

>>> md5 files    :Wink:  gpsdrive-2.05.ebuild

>>> md5 files    :Wink:  ChangeLog

!!! Digest verification Failed:

!!!    /usr/portage/app-misc/gpsdrive/gpsdrive-2.09.ebuild

!!! Reason: Filesize does not match recorded size

----------

## fredgt

It's not always the best to just edit the ebuild so just delete the things you have edited, as it seems that it checks that the ebuild is correct and the MD5 hash fails.

Also go to /usr/portage/distfiles/ and delete all files that that have something to do with the gpsdrive. These are the packages that were downloaded with when emerging, it they are not there you will just download them again.

Then for installing a masked package you have different ways to do it.

using the /etc/portage/package.keywords file 

but the easyest way is just to do

ACCEPT_KEYWORDS="~x86" emerge =app-misc/gpsdrive-2.09

Now if it still gives that sumcheck error just delete the ebuild and do emerge sync to get the original again.

This should work.

----------

## edward_og

I'm having a problem that may be due to permissions, but I can't seem to fix it.

I've compiled my kernel with support for my prolific 2303 chip-based device (as a module) and can see the module load when I plug in the usb cable.  When outside, if I do (as root)

```

# cat /dev/tts/USB0

```

I can see GPS data received scroll across the screen (note the presence of udev).

My problem is when I start gpsd.  When I run

```

# gpsd -K -s 4800 -p /dev/tts/USB0

```

and start xgps, it says that it cannot find a device.

I'm using the latest ~x86 gpsd, and have installed the udev rules that came with gpsd in /etc/udev/permissions (note that I'm recalling from memory - if that's not where it does, I put it where I found other udev rules).

As I'm running gpsd as root and xgps as root, I'm not sure how a permissions error could be occuring.  Any hints on where I should look?

----------

## edward_og

w00t, I got it!

gpsd 2.25 is a bit different than what the howto uses.

When using udev, you can type

```

# gpsd -N -f /dev/tts/USB0

```

and it will magically work.  Note the "-N" is there to prevent daemonization, so when you know that it works, leave it out.

----------

## edward_og

Note of caution:

gpsd and gpsdrive should block each other, but they don't.

(How do I ask the ebuild maintainers to make this happen?)

----------

## danpixley

I have my driver working for the GPS-360 in gentoo-dev-sources-2.6.11-r11 (http://gentoo-wiki.com/HOWTO_GPS_/_Microsoft_GPS-360)

```

T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0

D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

P:  Vendor=067b ProdID=aaa0 Rev= 3.00

S:  Manufacturer=Prolific Technology Inc.

S:  Product=USB-Serial Controller

S:  SerialNumber=12345678

C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA

I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=pl2303

E:  Ad=81(I) Atr=03(Int.) MxPS=  10 Ivl=1ms

E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

```

But I can't figure out where the device is attached in /dev.  I am using udev (I think):

```

# dmesg

drivers/usb/serial/usb-serial.c: USB Serial support registered for Generic

usbcore: registered new driver usbserial_generic

usbcore: registered new driver usbserial

drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0

drivers/usb/serial/usb-serial.c: USB Serial support registered for PL-2303

pl2303 3-1:1.0: PL-2303 converter detected

usb 3-1: PL-2303 converter now attached to ttyUSB0

usbcore: registered new driver pl2303

drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver v0.12

```

However, I can't find ttyUSB0 anywhere.  How can I be sure I am using udev (both udev and devfs are installed (I followed http://www.gentoo.org/doc/en/udev-guide.xml)?  How can I find out where my device is located in /dev?  

Thanks in advance,

Dan

----------

## edward_og

Plug in the USB cable

```
# cat /dev/tts/USB0
```

Did you install the udev rule that comes with gpsd?

----------

## dontremember

 *Spida wrote:*   

> Getting a Holux GM210-USB GPS-Receiver to work with Gentoo

 

FYI, I followed pretty much the exact same sequence independantly for a Deluo GPS w/ USB.  It identifies as the exact same device:

```
Bus 001 Device 006: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
```

The sticker on the bottom says "GM-R500".  It also says: "For home or office use", which is probably some crackhead attorney's way of saying, "Not suitable for navigation, and if you get lost while using this thing, it's your problem."

----------

## Xaosratt

Note, with a fresh install and the new dev systems, this is all that is realy required to get gpsd talking to the GM210:

```

gpsd -p /dev/ttyUSB0

```

----------

