Mer/Documentation/N810 GPS

Contents

Notes

  • These directions are confirmed to work on Mer 0.12.
  • All commands should be run as root.
  • All instances of "YOURUSERNAME" should be changed to whatever your user is named. Commands involving "YOURUSERNAME" [i]probably[/i] don't have to be run if your user is named "user", though this is unconfirmed.
  • The time to first fix (TTFF) is quite long (~30 min), and GPSD quits after the last client disconnects. Keep this in mind.

Directions

Step 1: Install the necessary files

Install the following packages from the Maemo Updates repository (you can install them on Maemo, then copy the packages from the apt cache):

libsupld1
osso-gpsd
libgpsmgr
libgpsbt (?)
gpsdriver

Step 2: Tweak /etc/init.d/libgpsbt

Edit /etc/init.d/libgpsbt and change all instances of "user:users" to "YOURUSERNAME:users" There should be 2 instances you need to change.

Step 3: Change ownership

Run:

chown -R YOURUSERNAME:users /var/lib/gps

Step 4: Make the necessary files

Make the following files:

/etc/default/gps5300driver.conf:

# /etc/default/gps5300driver.conf

# The user who can control the driver
GPS5300_USER=root

# Whether the driver will self-initialize, may or may not work (more on the may not side)
GPS5300_SELFINIT=true


/etc/init.d/gps5300driver:

#!/bin/bash

GPS5300_DRIVER='/usr/sbin/gps5300driver'
GPS5300_PIDFILE='/var/run/gps5300driver.pid'
GPS5300_PRELOAD='/usr/lib/libgps5300faker.so'
CONF=/etc/default/gps5300driver.conf

if [ -f $CONF ]; then
         . $CONF
fi

case $1 in
	start)
		echo "Starting GPS5300 driver"
		if ! [ -e /sys/devices/platform/gpio-switch/gps_reset/state ]; then
			echo "gps_reset state gpio switch missing"
#			return 1
		fi
			
		[ -z "${GPS5300_SELFINIT}" ] && GPS5300_SELFINIT=true
		${GPS5300_SELFINIT} || unset GPS5300_SELFINIT
		export GPS5300_SELFINIT
		
		[ -z "${GPS5300_USER}" ] && GPS5300_USER=root
		export GPS5300_USER
		
		export LD_PRELOAD=${GPS5300_PRELOAD}		
	
		start-stop-daemon --start \
			--quiet \
			--background \
			--pidfile "${GPS5300_PIDFILE}" \
			--make-pidfile \
			--exec "${GPS5300_DRIVER}"
#			--env "LD_PRELOAD=${GPS5300_PRELOAD}" \
#			--exec "${GPS5300_DRIVER}"
#		return 0
	;;

	stop)
		echo "Stopping GPS5300 driver"
		start-stop-daemon --stop \
			--quiet \
			--pidfile "${GPS5300_PIDFILE}"
		rm ${GPS5300_PIDFILE}
#		return 0
	;;

	restart|force-reload)
		$0 stop
		$0 start
	;;

	*)
		echo "Usage: $0: {start|stop|restart|force-reload}"
		exit 1
	;;
esac

Step 5: Copy gpsdriver

Make a copy of gpsdriver to prevent confusion

cp /usr/sbin/gpsdriver /usr/sbin/gps5300driver

Step 6: Install libgps5300faker.so

Put libgps5300faker.so in /usr/lib (Not posted anywhere yet):

cp /path/to/libgps5300faker.so /usr/lib

Step 7: Reboot

Reboot:

reboot

Step 8: Prepare to use the GPS

Get ready to use the GPS:

/etc/init.d/libgpsbt restart
/etc/init.d/gpsdriver restart
/etc/init.d/gps5300driver restart

Step 9: Start GPSD

Start GPSD:

gpsd -n -N -D2 /dev/pgps

When you start getting messages like:

gpsd: <= GPS: $GPGGA,183757.000,4504.94573,N,09300.43367,W,1,04,2.7,288.8,M,-31.3,M,,*60
gpsd: <= GPS: $GPGLL,4504.94573,N,09300.43367,W,183757.000,A,A*42
gpsd: can't use GGA/GGL time until after ZDA or RMC has supplied a year.
gpsd: <= GPS: $GPGSA,A,3,31,11,30,32,,,,,,,,,5.9,2.7,5.3*3D
gpsd: <= GPS: $GPGST,183757.000,14.3,13.2,37.3,19.1,16.0,32.4,73.2*54

You have a lock and are ready to use your GPS (I've also gotten other messages indicating the GPS is ready. Basically anything new/other than what it routinely spits out should be a good indicator).