NMEA(4) | Device Drivers Manual | NMEA(4)

# NAME

`nmea` — NMEA 0183 timedelta sensor

# SYNOPSIS

`pseudo-device nmea` [count]

# DESCRIPTION

This line discipline interfaces NMEA devices, such as GPS receivers attached to a serial or USB port.

The line discipline is enabled by the following sequence:

    #include <sys/ioctl.h>
    int ldisc = NMEADISC, fildes; ...
    ioctl(fildes, TIOCSETD, &ldisc);

The byte stream is unaltered by the line discipline which maintains timedelta and position sensors using the NMEA data. The sensors will appear as nmea* in the list. The timedelta (nanoseconds difference between the received time information and the local time), position (calculated latitude and longitude in degrees), altitude and speed can be accessed through the sysctl(8) interface.

The `nmea` line discipline decodes the following NMEA 0183 sentences:

RMC
  Recommended Minimum Specific GPS/TRANSIT Data. The time and date information, position and speed are extracted. The warning indication is used to provide the sensor status (see below). If the attached device sends the RMC message in the 13-field format, the operation mode of the GPS device is reported in the sensor description. The sensor timestamp is copied from the tty timestamp if a device with PPS is being used and tty timestamping has been turned on. Otherwise the sensor timestamp is taken when the initial `$' character of a message block is received from the NMEA device.
GGA
  Current fix data. The altitude in meters is extracted.

Messages source are recognised by the first two characters of the NMEA sentence according to the following prefixes:

GP
  GPS
GA
  Galileo
BD
  BeiDou
GL
  Glonass
GN
  Generic GNSS

# SENSOR STATES

The quality of the timedelta is reported as the sensor status:

OK
  The time information and position are valid. The timedelta is safe to use for applications like ntpd(8).
WARN
  The attached GPS receiver has been indicating a warning condition for at least the last ten minutes. The timedelta should be used with care.
CRITICAL
  tty timestamping has been turned on but there is no PPS signal present or the GPS receiver indicated a warning condition for at least the last twenty minutes. Check your hardware. Some GPS units need PPS to be manually turned on.

The status of a second sensor is used to report the status of the device itself:

OK
  The clock is synchronized, e.g. a GPS receiver has a fix.
WARN
  The device issued a warning condition, e.g. a GPS receiver has no fix.

# SEE ALSO

tty(4), ldattach(8), ntpd(8), sysctl(8)

# HISTORY

The `nmea` interface first appeared in OpenBSD 4.0.

# AUTHORS

The `nmea` line discipline was written by Marc Balmer <mbalmer@openbsd.org>.

January 27, 2019 | Debian