Hi, was playing with an usb gps that works ootb with gpsd, but our nmea line discipline doesnt recognize it, and the 'indicator' sensor stays at its default 'unknown'.
The gps is a navilock nl-8002u: umodem0 at uhub3 port 2 configuration 1 interface 0 "u-blox AG - www.u-blox.com u-blox GNSS receiver" rev 1.10/2.01 addr 2 umodem0: data interface 1, has CM over data, has no break umodem0: status change notification available ucom1 at umodem0 The RMC message our tty_nmea.c code looks for is like this w/ this device: $GNRMC,194858.00,A,xxxxxxxx,N,yyyyyyy,E,0.236,,290818,,,A*6E Turns out the NMEA 0183 spec says that RMC message types are prefixed by various codes for 'talkers' which says if the data comes from GPS (GP), Glonass (GL), Galileo (GA), Beidou (BD), or 'Global navigation satellite' (GN) for the 'generic term' (cf http://freenmea.net/docs or https://github.com/mvglasow/satstat/wiki/NMEA-IDs) and mine uses GNRMC, while tty_nmea.c looks for GPRMC. Poking at the string comparison, i finally have sensors working: $doas ldattach -d nmea /dev/cuaU1 ldattach[93876]: attach nmea on /dev/cuaU1 hw.sensors.nmea0.indicator0=On (Signal), OK hw.sensors.nmea0.timedelta0=0.031653 secs (GPS autonomous), OK, Wed Aug 29 21:48:52.031 hw.sensors.nmea0.angle0=xxxxxx degrees (Latitude), OK hw.sensors.nmea0.angle1=yyyyyy degrees (Longitude), OK ntpd thinks the sensor is invalid, but that's for more poking later. $ntpctl -s Sensors sensor wt gd st next poll offset correction nmea0 1 0 0 2s 15s - sensor not valid - So here's the diff.. i wonder if we should just match the 3 chars for the 'RMC' message. Index: tty_nmea.c =================================================================== RCS file: /cvs/src/sys/kern/tty_nmea.c,v retrieving revision 1.46 diff -u -r1.46 tty_nmea.c --- tty_nmea.c 19 Feb 2018 08:59:52 -0000 1.46 +++ tty_nmea.c 29 Aug 2018 19:49:24 -0000 @@ -261,7 +261,7 @@ } /* we only look at the GPRMC message */ - if (strcmp(fld[0], "GPRMC")) + if (strcmp(fld[0], "GPRMC") && strcmp(fld[0], "GNRMC")) return; /* if we have a checksum, verify it */