Holux GM-270 for the Sharp Zaurus

Disclaimer

The instructions given in this document are derived from experiments. There is no guarantee that they will work for anybody else than the author of this document.

BACKUP YOUR DEVICE  BEFORE YOU CONTINUE.
THE AUTHOR IS NOT RESPONSIBLE IF YOU LOSE YOUR DATA.
IT IS YOUR OWN DECISION TO PERFORM THE FOLLOWING STEPS.

Introduction

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

Motivation

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

Socket 0:
  3.3V 16-bit PC Card
  function 0: [ready]
# cardctl config
Socket 0:
  Vcc 3.3V  Vpp1 3.3V  Vpp2 3.3V

Workaround

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 -D__KERNEL__ -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.

Good luck!

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:

ROM version Observation
Reported by
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.
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.

Furthermore, there are issues with different GPS and non-GPS units:

Unit
Description
Reported by
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.
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.
GlobalSat CF GPS
Patch is required under 2.38.

In case of any questions please don't hesitate to contact me.

[back to overview]

© Copyright 2003 - qpeGPS project team, All Rights Reserved. Don't hesitate to comment!