09 Nov 2018
gpsrinex
1
The GPSD Project
GPSD Documentation
gpsrinex
Read data from gpsd convert to RINEX3 and save to a file.
gpsrinex
-D debuglevel
-f filename
-h
-i interval
-n count
-V
server
:port
:device
DESCRIPTION
gpsrinex is a tool to connect to
gpsd and output the received raw measurements
as a RINEX 3 observation file. This is useful for sending raw measurements
(pseudorange and carrierphase) from gpsd to
a Precise Point Positioning (PPP) program or service.
gpsrinex does not require root
privileges, and can be run concurrently with other tools connecting
to a local or remote gpsd without causing
problems.
gpsrinex needs the GPS receiver to be sending raw measurements
to gpsd. Only a few GPS have this capability.
In addition, the gpsd driver for that GPS
must support raw mode. Currently only the u-blox driver has this support.
Only a few u-blox 8 GPS implment the required UBX-RXM-RAWX message. The
NEO-M8T is known to work, but requires configuration with
ubxtool.
RINEX has its own definitions and abbreviations. Be
sure to consult their documentation. An observation file (.obs)
contains data sets, called epochs, that contain the pseudorange
and carrierphase for each satellite seen.
gpsrinex by default will acquire
20 epochs spaced apart by 30 seconds. That will take 10 minutes to
complete. Most users consider the 30 second interval to be optimal.
Many PPP programs require at least 1 or 2 hours data, but no more than
24 or 48 hours of data. Most users consider 4 to 6 hours of data
as a minimum for good accuracy. Additional hours will not yield much
improvement.
The output will consist of one RINEX 3 observation file that
is ready to be read by your PPP program. The default filename will be
in the form: gpsrinexYYYYJJJHHMMSS.obs. You can override this filename
with the -f option.
Optionally a server, TCP/IP port number and remote device can
be given. If omitted, gpsrinex connects to
localhost on the default port (2947) and watches all devices opened by
gpsd.
OPTIONS
-D [debuglevel] set debug level to [debuglevel].
-f [filename] save RINEX into [filename].
-h makes gpsrinex print
a usage message and exit.
-i [interval] wait [interval] seconds between epochs. OPUS
accepts intervals of 1, 2, 3, 5, 10, 15 or,30 seconds. OPUS then
reduces the data to 30 second intervals.
-n [count] causes [count] epochs to be output. OPUS requires a
minimum af 15 minutes, and a maximum of 48 hours, of data.
-V makes gpsrinex print
its version and exit.
EXAMPLES
Example 1:
Create a 4 hour .obs file. With a running
gpsd accessible on the localhost do all of
the following, in order. Order matters.
The raw measurement messages are long. Be sure your serial port
speed is high enough:
gpsctl -s 115200
Disable all NMEA messages, and enable binary messages:
ubxtool -d NMEA
ubxtool -e BINARY
The NEO-M8N will only reliably output raw measurements
when only the GPS and QZSS constellations are enabled. If your PPP
service can use GLONASS, then enable that as well. Be sure to
disable, before enable, so as not to momentarily have too many
constellations selected.
ubxtool, as recommended by u-blox, enables
the QZSS constellation in tandem with GPS. Disable all constellations,
except GPS (and QZSS):
ubxtool -d BEIDOU
ubxtool -d GALILEO
ubxtool -d GLONASS
ubxtool -d SBAS
ubxtool -e GPS
Verify the constellations enabled:
ubxtool -p GNSS
Enable the good stuff, the raw measurement messages:
ubxtool -e RAWX
Verify raw data messages are being sent:
ubxtool | fgrep RAWX
You should see this output:
UBX-RXM-RAWX:
UBX-RXM-RAWX:
Collect 4 hours of samples at 30 second intervals, save the
RINEX 3 observations in the file today.obs:
gpsrinex -i 30 -n 480 -f today.obs
Wait 4 hours. Enjoy a meal, or do some exercise. When
gpsrinex finishes, upload the file today.obs
to your favorite PPP service.
Example 2:
Collect raw masurement data from a remote gpsd. The
process it later with gpsrinex and
gpsprof.
Ensure the GPS is configured properly, as shown in Example 1.
Grab 4 hours of raw live data from remote
gpsd at 10.168.1.2:
gpspipe -x 14400 -R 10.168.1.2 > 4h-raw.ubx
When gpspipe is complete, feed the
data to gpsfake:
gpsfake -1 -P 3000 4h-raw.ubx
In another window, feed the data to
gpsrinex. Use -n 10000000 so that
all the data from the raw file is used::
gpsrinex -i 30 -n 1000000
Repeat the process with
gpsfake to send the data to
gpsprof.
SEE ALSO
One service known to work with obsrinex output is at:
https://webapp.geod.nrcan.gc.ca/geod/tools-outils/ppp.php
OPUS requires 2 frequency observation files.
https://www.ngs.noaa.gov/OPUS/
The curious can find the RINEX 3.03 format described here:
ftp://igs.org/pub/data/format/rinex303_update1.pdf
gpsd
8
,
gpsfake1,
ubxtool1.
AUTHOR
Gary E. Miller gem@rellim.com.