GPS on the Neo 1973

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(redundant)
Line 6: Line 6:
  
 
In the very early shipment to 50 Phase 1 developers, a binary-only program for talking to the the GPS was accidentally included  
 
In the very early shipment to 50 Phase 1 developers, a binary-only program for talking to the the GPS was accidentally included  
in /home/root/DM2/gps, (and presumably, the same binary would function on a P0 device).
 
 
There is an ongoing effort to write a Free Software
 
program that could be used instead of this binary-only program. See
 
[[Hammerhead/Protocol]] for details and the latest status.
 
 
== Binary Daemon GLLIN ==
 
 
For those few with the binary driver in the meantime, Pavel Machek
 
[http://pavelmachek.livejournal.com/39229.html provides] the
 
following script for recording an NMEA stream from the binary program.
 
 
#!/bin/sh
 
echo 1 > /sys/class/leds/gta01\:vibrator/brightness
 
killall gllin cat
 
sleep 1
 
echo 0 > /sys/class/leds/gta01\:vibrator/brightness
 
mknod /tmp/nmeaNP p
 
cat /tmp/nmeaNP >> /tmp/gps.nmea &
 
/home/root/DM2/gps/gllin -low 5
 
/home/root/DM2/gps/gllin -periodic 3
 
 
The binary program was compiled to OABI format which now is obsolete as OM2007.2 builds are in EABI format. You can still run the binary with ''chroot''. [[user:Zdanek|Bartek Zdanowski]] wrote an [http://www.openmoko.org.pl/node/55 aticle] how to run GPS receiver. Alternativly ld-linux can be used to do the trick:
 
 
==The ld-linux trick==
 
 
you need the following files:
 
 
bin/gllin
 
bin/gllin.sh
 
lib/ld-linux.so.2
 
lib/libc.so.6
 
lib/libgcc_s.so.1
 
lib/libm.so.6
 
lib/libnss_dns.so.2
 
lib/libnss_files.so.2
 
lib/libpthread.so.0
 
lib/libresolv.so.2
 
lib/librt.so.1
 
lib/libstdc++.so.6
 
lib/libutil.so.1
 
 
the file bin/gllin.sh contains:
 
 
#!/bin/sh
 
`pwd`/lib/ld-linux.so.2 --library-path `pwd`/lib `pwd`/bin/gllin -low 5
 
test -p /tmp/nmeaNP || ( rm -f /tmp/nmeaNP && mknod /tmp/nmeaNP p )
 
`pwd`/lib/ld-linux.so.2 --library-path `pwd`/lib `pwd`/bin/gllin -periodic 3
 
 
be shure to start at least a `cat /tmp/nmeaNP` somewhere.
 
 
==Strange messages==
 
 
the message
 
 
Stack size 8864 bytes (9 KB)
 
 
means, nobody is reading on the pipe /tmp/nmeaNP, you probably forgot to start the `cat ...`. the message
 
 
gllin: early exit(3) in halInit()/681
 
 
is issued by the low-level hardware test but gllin works fine afterwords.
 
 
== Bluetooth GPS ==
 
 
He also [http://pavelmachek.livejournal.com/39659.html succeeded]
 
at getting the Neo1973 to act like a bluetooth GPS with the following
 
script: (Note that this script has bad problems if you run it more than once. You can get a "time traveling GPS" effect, with the GPS showing you your past position).
 
 
#!/bin/sh
 
killall rfcomm tail
 
mknod /dev/rfcomm0 c 216 0
 
echo 1 > /sys/devices/platform/s3c2410-i2c/i2c-0/0-0008/gta01-pm-bt.0/power_on
 
sleep 1
 
hciconfig hci0 up name linuxgps
 
sleep 1
 
sdpd
 
sleep 1
 
sdptool add SP
 
(
 
        while true; do
 
        rfcomm listen /dev/rfcomm0 1
 
        sleep 1
 
        done
 
) &
 
(
 
        while true; do
 
            tail -f /tmp/gps.nmea > /dev/rfcomm0
 
            echo 1 > /sys/class/leds/gta01\:vibrator/brightness
 
            sleep 1
 
            echo 0 > /sys/class/leds/gta01\:vibrator/brightness
 
        done
 
) &
 
 
 
== Possible GPS programs ==
 
 
As people develop more sophisticated GPS applications, please note them here.
 
 
Here are some ideas for possibilities:
 
 
* Cairo-based mapping
 
 
* Routing
 
 
* [[Openstreetmap]] logger, (with voice annotations)
 
 
* [http://lists.openmoko.org/pipermail/community/2007-July/007252.html collection of ideas]
 
  
 
[[Category:GPS]]
 
[[Category:GPS]]

Revision as of 23:45, 23 November 2007

The Neo1973 device contains an integrated GPS. The particular device is marketed as an AGPS, and there is some discussion available as to what significance that "A" might have.

All purchased phones do not include the GPS binary driver. [1]

In the very early shipment to 50 Phase 1 developers, a binary-only program for talking to the the GPS was accidentally included

Personal tools

The Neo1973 device contains an integrated GPS. The particular device is marketed as an AGPS, and there is some discussion available as to what significance that "A" might have.

All purchased phones do not include the GPS binary driver. [1]

In the very early shipment to 50 Phase 1 developers, a binary-only program for talking to the the GPS was accidentally included in /home/root/DM2/gps, (and presumably, the same binary would function on a P0 device).

There is an ongoing effort to write a Free Software program that could be used instead of this binary-only program. See Hammerhead/Protocol for details and the latest status.

Binary Daemon GLLIN

For those few with the binary driver in the meantime, Pavel Machek provides the following script for recording an NMEA stream from the binary program.

#!/bin/sh
echo 1 > /sys/class/leds/gta01\:vibrator/brightness
killall gllin cat
sleep 1
echo 0 > /sys/class/leds/gta01\:vibrator/brightness
mknod /tmp/nmeaNP p
cat /tmp/nmeaNP >> /tmp/gps.nmea &
/home/root/DM2/gps/gllin -low 5
/home/root/DM2/gps/gllin -periodic 3

The binary program was compiled to OABI format which now is obsolete as OM2007.2 builds are in EABI format. You can still run the binary with chroot. Bartek Zdanowski wrote an aticle how to run GPS receiver. Alternativly ld-linux can be used to do the trick:

The ld-linux trick

you need the following files:

bin/gllin
bin/gllin.sh
lib/ld-linux.so.2
lib/libc.so.6
lib/libgcc_s.so.1
lib/libm.so.6
lib/libnss_dns.so.2
lib/libnss_files.so.2
lib/libpthread.so.0
lib/libresolv.so.2
lib/librt.so.1
lib/libstdc++.so.6
lib/libutil.so.1

the file bin/gllin.sh contains:

#!/bin/sh
`pwd`/lib/ld-linux.so.2 --library-path `pwd`/lib `pwd`/bin/gllin -low 5
test -p /tmp/nmeaNP || ( rm -f /tmp/nmeaNP && mknod /tmp/nmeaNP p )
`pwd`/lib/ld-linux.so.2 --library-path `pwd`/lib `pwd`/bin/gllin -periodic 3

be shure to start at least a `cat /tmp/nmeaNP` somewhere.

Strange messages

the message

Stack size 8864 bytes (9 KB)

means, nobody is reading on the pipe /tmp/nmeaNP, you probably forgot to start the `cat ...`. the message

gllin: early exit(3) in halInit()/681

is issued by the low-level hardware test but gllin works fine afterwords.

Bluetooth GPS

He also succeeded at getting the Neo1973 to act like a bluetooth GPS with the following script: (Note that this script has bad problems if you run it more than once. You can get a "time traveling GPS" effect, with the GPS showing you your past position).

#!/bin/sh
killall rfcomm tail
mknod /dev/rfcomm0 c 216 0
echo 1 > /sys/devices/platform/s3c2410-i2c/i2c-0/0-0008/gta01-pm-bt.0/power_on
sleep 1
hciconfig hci0 up name linuxgps
sleep 1
sdpd
sleep 1
sdptool add SP
(
        while true; do
        rfcomm listen /dev/rfcomm0 1
        sleep 1
        done
) &
(
        while true; do
            tail -f /tmp/gps.nmea > /dev/rfcomm0
            echo 1 > /sys/class/leds/gta01\:vibrator/brightness
            sleep 1
            echo 0 > /sys/class/leds/gta01\:vibrator/brightness
        done
) &


Possible GPS programs

As people develop more sophisticated GPS applications, please note them here.

Here are some ideas for possibilities:

  • Cairo-based mapping
  • Routing