http://www.svrsig.org/ software/SatNav.htm


This GPS utility for RISC OS broadcasts GPS location data to other applications such as mapping software.

The latest version is 2.60 (29th June 2023) and no longer needs custom built hardware. There are many simple and cheap USB-connected GPS units which can now be used in 'plug and play' under RISC OS. A Pinebook Pro running RISC OS with a GPS unit plugged in (and RiscOSM available) will show a rolling map as you travel around. SatNav logs each journey and can download the journey data onto a USB stick in the form of a GPX file. SatNav can also control a Witty Pi 2, a PaPiRus e-ink display, an OLED display and a GPS module.

Further reading

For further reading (parts 1 to 6 of 'Using GPS on RISC OS') see Archive Magazine Volume 24 No. 2 October 2016 (page 11), Volume 24 No. 3 April 2017 (page 21), Volume 24 No. 4 April 2018 (page 24), Volume 24 No. 5 October 2019 (page 31) , Volume 26 No. 2 March/April 2023 (page 38) and Volume 26 No. 3 May/June 2023 (page 37) or see here


Clearly a GPS module is required. The simplest is to plug in a USB-connected GPS module. Alternatively connecting the GPS module to the 40-pin header on the Raspberry Pi is the simplest way to proceed. This allows the on-board UART to receive the serial data from the module. In ROMS from 26 October 2016 onwards, there is a Serial module in the Raspberry Pi rom, all other platforms have had this for some time.

Version 2.56 allows the use of cheap USB-connected GPS devices on a plug and play basis. Whilst plugged in data are read from the USB device instead of the UART.

It is possible to connect certain displays to the IIC bus and for them to be controlled by SatNav. These can be used in place of or as a supplement to the normal HDMI display. 16 characters by 2 lines LCD displays and 128x64 SSD1306 OLED displays are supported. If not present then the relevant routines are suppressed.

Another type of display is also supported, a 2″ PaPiRus Zero electronic ink display: this needs to be connected in a special way, requiring a breakout board or cable wired up so that pins 8 and 10 on the display are connected to pins 29 and 31 respectively so that the serial data on pins 8 and 10 remain unaffected, see below. If such a display is not connected then the line in !Run which ensures that the PiSPI module is running should be commented out (add a '|' to the start of the relevant line).

This utility provides a means of receiving and interpreting satellite GPS data - it displays the current location and direction of travel via its icon bar icon and (optionally) via a simple status window. At regular intervals (1s, 2s, 5s or 10s), once a fix has been obtained, it broadcasts a message giving the latitude and longitude of the current location.

Any application that understands a 'geo:' URI dispatch (for example RiscOSM) can make use of these data to do something relevant (for example to display a map showing your current location). RiscOSM will also respond to Wimp messages using a defined protocol, which is more elegant. An arrangement of !SatNav and !RiscOSM with an attached GPS module can operate with no user intervention. An example is shown below:

A more primitive device, with no screen but with a 16x2 text display is shown below where time (with a flashing colon), speed (both instantaneous and, in brackets) averaged over the last few fixes) and grid reference are shown. This is battery powered with an approximate drain of 100mA and a battery capcity of 5200mAh it should last for a day or two:

A status window may be displayed at any time showing the satellites in view, altitude, ground speed etc. and lists the satellites being tracked. The status window may be saved as a Draw file, example below:

Version 1.65 of SatNav now supports LCD text displays, an OLED display, a PaPiRus Zero 2″ display and a Witty Pi 2. Below it is shown ‘time slicing’ to reduce power consumption.

The computer shown above is a Pi model A+ 512Mbyte computer, with a Witty Pi just above in the stack, with a ProtoPal breakout board above that, onto which has been soldered an OLED display and a GPS module, finally the PaPiRus Zero display is on the top of the stack. Turning on for 15s or so every 5 minutes cuts average power consumption down to about 16mA, extending battery lifetime with a 5000mAh battery to about 12 days.

A stored route (held in an Anquet Export Format '.AEF' file - RISC OS filetype 'AnqExp' type &A6F) may be played back as if the route was being retraced with GPS location data reflecting the progress along the path. No actual satellite data (altitude, etc.) will be available. This allows RiscOSM to follow a previously traced path and show a rolling map. An example showing the East Coast Main Line from Kings Cross to Welwyn Garden City is shown below in an animated GIF:

Please note these images are copyright © OpenStreetMap contributors,