Holux Compact Flash GPS
This Howto has been contributed by Gerald J. Normandin Jr. It has b een found at: http://qpegps.sourceforge.net/assets/gps_units/holux_gm_270.html
The GM-270 from HOLUX Technology, Inc. is a GPS receiver for the Compact Flash port. It contains a SiRF II/Lp chipset which draws a relatively low current (< 80 mA). This sounds nice for a Zaurus PDA which has a somehow not-so-strong internal battery. In theory, the SiRF II chipset is a good promise to get the receiver working together with any Linux-operated hardware.
Further information can be found at
Unfortunately, the GM-270 does not work out-of-the-box on a Zaurus with the original Sharp ROM. My Zaurus SL-5500G runs 2.38G which is the latest available German version at this time. If you have information about other ROMs, please let me know.
Everything looks fine at the first glance when the GM-270 is plugged into the rear CF slot. The CF card icon appears in the status bar at the bottom and the red LED at the receiver is lit. But when you try to read some data from /dev/ttyS3 which is the default terminal for CF emulated serial devices, you'll see nothing but silence. Neither gpsd nor a terminal program receives any life-sign from the GPS device. Digging deeper reveals that the serial PCMCIA driver is in trouble and complains about "Bad Vcc" in the system log:
serial_cs: RequestConfiguration: Bad Vcc
You need to activate the syslog daemon manually to see such messages (/var/log/*) in case this service is not started automatically.
1. Make sure that /etc/syslog.conf contains the line *.* /var/log/messages 2. Start the syslog daemon: /etc/rc.d/init.d/syslog start
I am not an expert for PCMCIA topics but that sounds like a pretty fundamental problem in the communication between the host system and the GM-270.
Here is some more information about the system status at this point:
- cardctl status
3.3V 16-bit PC Card function 0: ready
- cardctl config
Vcc 3.3V Vpp1 3.3V Vpp2 3.3V
Hey, we run Linux on this device - there should always be a way out :-)
I was wondering if Linux had made any progress since version 2.4.6 which is the underlying OS of the Sharp ROM. So I took the recent kernel source (linux-2.4.21-pre5) and compiled the serial_cs module on its own. The header of serial_cs.c says it's version 1.138. To make it short: replacing the original module with this new one got me the GM-270 card working properly!
Meanwhile, I have received the confirmation from the Linux PCMCIA developers that the "Bad Vcc" is a known bug when attaching mulifunction cards. The fix has not been introduced in a stable 2.4 kernel yet, it will be included in linux-2.4.21. It should be ok to use the new module together with an old kernel.
Here are the instructions:
The following is valid for the Sharp ROM 2.38G, you might observe different behaviour with a different ROM.
1. Locate a compiled serial_cs module. Either take it from here: serial_cs.o
Or compile it on your own from the Linux source:
# cd /usr/src/linux/driver/char/pcmcia # arm-linux-gcc -DKERNEL -DMODULE -c serial_cs.c
You need the GCC distribution from Sharp and might have to add some links in /opt/Embedix/tools/arm-linux-include to the asm directories in the kernel source tree.
2. Remove the original module on your Zaurus:
# cd /lib/modules/2.4.6-rmk1-np2-embedix/kernel/drivers/char/pcmcia # rm serial_cs.o
Don't worry, you are only deleting a link to the file located in ROM. You can always restore this link if you want to do so.
3. Copy the new serial_cs.o to this location.
4. Unplug the GM-270 and make sure that the module is not loaded. A 'lsmod' should show no line with serial_cs. Do a 'rmmod serial_cs' if the module is still loaded.
5. Insert the GM-270. You should observe the following:
- CF card icon appears in the status bar
- The red LED at the GM-270 flashes once and remains inactive
- The GM-270 is suspended:
# cardctl status
Socket 0: 3.3V 16-bit PC Card suspended
- Upon resume, the red LED is lit and the card is configured properly:
# cardctl resume # cardctl status Socket 0: 3.3V 16-bit PC Card function 0: ready, bat dead, bat low # cardctl config Socket 0: Vcc 3.3V Vpp1 0.0V Vpp2 0.0V interface type is "memory and I/O" irq 35 exclusive level Speaker output is enabled function 0: config base 0x00f8 option 0x41 status 0x08 pin 0x00 copy 0x00 io 0xf60003f8-0xf6000407 8bit
- There are messages in the system log that announce a new serial device:
ttyS03 at port 0xf6000400 (irq = 35) is a 16C950/954
6. Start your favourite GPS utility and wait for the first fix.
Serial port is /dev/ttyS3, baud rate is 4800.
Other ROMs and GPS units
I have received several reports on ROM versions other than the Sharp 2.38G. Here is a list of what has been tested so far:
OpenZaurus 3.1rc2 Requires the updated serial_cs.o module (also based on kernel 2.4.6). The card is not automatically suspended after insertion, although it's suspended after powering on the Zaurus. Jerome Marot OpenZaurus 3.2 Same as OZ 3.1rc2 Jerome Marot Sharp 3.10 No patch required, although it is based on kernel 2.4.18. Stewart Midwinter ROM 1.20 JP for C700 Patch required. Jerome Marot Familiar Linux V0.6 on iPAQ H3660 Requires the patch within the 2.4.18-rmk3-hh24 environment. Dennis Hurrelmann
Furthermore, there are issues with different GPS and non-GPS units:
Audiovox RTM-8000 GSM/GPRS CF-Card GSM card with serial interface. Has persistent "Bad Vcc" problems after exchanging serial_cs.o. Please report if you have found a way to get working. Frank Pieczynski iTrek CF GPS This GM-270 clone works without problems under Sharp 3.10. No information available whether the patch is required under 2.38. Stewart Midwinter GlobalSat CF GPS Patch is required under 2.38. Andy
Original Howto doc by: Arnim LÃ¤uger