convert gps data to nmea2000 (signalk-to-nmea2000)

I'm trying to convert GPS data in 0183 format coming from my peplink router onto my nmea2000 network for further usage. But the GPS location isnt relayed to the nmea2000 bus. I have a rbpi with canhat connected to nmea with data connection via canboat. Receiving nmea2000 data works fine. And data connection via tcp for receiving the 0183 gps data fine. I've enabled the location in signalk-to-nmea2000 converter. With and without filling in the source (can1) Issue is that I dont see the gps location pgns on my nmea2000 network. Am I missing something here? (I suppose this works without a Actisense device? with (just) a canhat?) (should i be able to see the location in my data browser as a can1 source?) @Scott Bender
No description
No description
No description
11 Replies
nmbath
nmbath3mo ago
I suspect it is your source, if you clear that in the configuration, you should find it works. The source field is saying if the lat and lon has come from can0 then use it. Clearing it will cuase any to be used.. As I only want my GPS connected to the SignalK device to be used if nothing is comming from the N2K network, my source is set to GPSD.GP; then I have told the system to only use HPSD.GS for position if I have not got any comming in from the CAN network. This means that I only send when the GPSD.GO is the only source of GPS
Koenraad de Haas
Koenraad de HaasOP3mo ago
I have tried both empty and nmea0183.GP but without succes. In the SK Data browser enabling the plugin correctly: besides the navigation.position with source HPSD.GS, do you get navigation.position with source can (eg: can1)? (so to verify the conversion is working)
Scott Bender
Scott Bender3mo ago
tun on debug for signalk-to-nmea20000 and turn on debug for canboatjs:canbus then check the "Server Log" (you will not see n2k data that you send out in the Data Browser)
Koenraad de Haas
Koenraad de HaasOP3mo ago
turn on debug for canboatjs:canbus" Do you mean in data connection: data logging?
Scott Bender
Scott Bender3mo ago
on the "Server Log" page at the top
Koenraad de Haas
Koenraad de HaasOP3mo ago
Actually this looks alright: Jul 25 12:41:52 2025-07-25T10:41:52.831Z signalk-to-nmea2000 emit nmea2000JsonOut {"pgn":129029,"Date":20294,"Time":38512,"Latitude":53.195708333333336,"Longitude":5.6266906,"GNSS type":"GPS+SBAS/WAAS","Method":"DGNSS fix","Integrity":"No integrity checking","Number of SVs":16,"HDOP":0.64,"Geoidal Separation":-0.01,"Reference Stations":1,"list":[{"Reference Station Type":"GPS+SBAS/WAAS","Reference Station ID":7}]} Jul 25 12:41:52 2025-07-25T10:41:52.832Z canboatjs:canbus sending {"pgn":129029,"Date":20294,"Time":38512,"Latitude":53.195708333333336,"Longitude":5.6266906,"GNSS type":"GPS+SBAS/WAAS","Method":"DGNSS fix","Integrity":"No integrity checking","Number of SVs":16,"HDOP":0.64,"Geoidal Separation":-0.01,"Reference Stations":1,"list":[{"Reference Station Type":"GPS+SBAS/WAAS","Reference Station ID":7}]} Jul 25 12:41:52 2025-07-25T10:41:52.837Z canboatjs:canbus 2025-07-25T10:41:52.835Z,2,129029,100,255,47,ff,46,4f,00,77,f4,16,80,11,d6,1b,26,e4,61,07,00,84,bd,f0,73,e6,c7,00,ff,ff,ff,ff,ff,ff,ff,7f,23,fc,10,40,00,ff,7f,ff,ff,ff,ff,01,73,00,ff,ff Jul 25 12:41:52 2025-07-25T10:41:52.839Z signalk-to-nmea2000 navigation.courseOverGroundTrue,navigation.speedOverGround:4.153883620694959,0 Jul 25 12:41:52 2025-07-25T10:41:52.840Z signalk-to-nmea2000 emit nmea2000JsonOut {"pgn":129026,"COG Reference":0,"COG":4.153883620694959,"SOG":0} Jul 25 12:41:52 2025-07-25T10:41:52.841Z canboatjs:canbus sending {"pgn":129026,"COG Reference":0,"COG":4.153883620694959,"SOG":0} Jul 25 12:41:52 2025-07-25T10:41:52.843Z canboatjs:canbus 2025-07-25T10:41:52.843Z,2,129026,100,255,8,ff,fc,43,a2,00,00,ff,ff
Scott Bender
Scott Bender3mo ago
yes, and the n2k messages convert back good also
$ analyzerjs --pretty --show-non-matches --camel --coalesced
2025-07-25T10:41:52.835Z,2,129029,100,255,47,ff,46,4f,00,77,f4,16,80,11,d6,1b,26,e4,61,07,00,84,bd,f0,73,e6,c7,00,ff,ff,ff,ff,ff,ff,ff,7f,23,fc,10,40,00,ff,7f,ff,ff,ff,ff,01,73,00,ff,ff
{
"prio": 2,
"pgn": 129029,
"dst": 255,
"src": 100,
"timestamp": "2025-07-25T10:41:52.835Z",
"input": [
"2025-07-25T10:41:52.835Z,2,129029,100,255,47,ff,46,4f,00,77,f4,16,80,11,d6,1b,26,e4,61,07,00,84,bd,f0,73,e6,c7,00,ff,ff,ff,ff,ff,ff,ff,7f,23,fc,10,40,00,ff,7f,ff,ff,ff,ff,01,73,00,ff,ff"
],
"fields": {
"date": "2025.07.25",
"time": "10:41:52",
"latitude": 53.195708333333336,
"longitude": 5.6266906,
"gnssType": "GPS+SBAS/WAAS",
"method": "DGNSS fix",
"integrity": "No integrity checking",
"numberOfSvs": 16,
"hdop": 0.64,
"geoidalSeparation": -0.01,
"referenceStations": 1,
"list": [
{
"referenceStationType": "GPS+SBAS/WAAS",
"referenceStationId": 7
}
]
},
"description": "GNSS Position Data"
}
2025-07-25T10:41:52.843Z,2,129026,100,255,8,ff,fc,43,a2,00,00,ff,ff
{
"prio": 2,
"pgn": 129026,
"dst": 255,
"src": 100,
"timestamp": "2025-07-25T10:41:52.843Z",
"input": [
"2025-07-25T10:41:52.843Z,2,129026,100,255,8,ff,fc,43,a2,00,00,ff,ff"
],
"fields": {
"cogReference": "True",
"cog": 4.1539,
"sog": 0
},
"description": "COG & SOG, Rapid Update"
}
$ analyzerjs --pretty --show-non-matches --camel --coalesced
2025-07-25T10:41:52.835Z,2,129029,100,255,47,ff,46,4f,00,77,f4,16,80,11,d6,1b,26,e4,61,07,00,84,bd,f0,73,e6,c7,00,ff,ff,ff,ff,ff,ff,ff,7f,23,fc,10,40,00,ff,7f,ff,ff,ff,ff,01,73,00,ff,ff
{
"prio": 2,
"pgn": 129029,
"dst": 255,
"src": 100,
"timestamp": "2025-07-25T10:41:52.835Z",
"input": [
"2025-07-25T10:41:52.835Z,2,129029,100,255,47,ff,46,4f,00,77,f4,16,80,11,d6,1b,26,e4,61,07,00,84,bd,f0,73,e6,c7,00,ff,ff,ff,ff,ff,ff,ff,7f,23,fc,10,40,00,ff,7f,ff,ff,ff,ff,01,73,00,ff,ff"
],
"fields": {
"date": "2025.07.25",
"time": "10:41:52",
"latitude": 53.195708333333336,
"longitude": 5.6266906,
"gnssType": "GPS+SBAS/WAAS",
"method": "DGNSS fix",
"integrity": "No integrity checking",
"numberOfSvs": 16,
"hdop": 0.64,
"geoidalSeparation": -0.01,
"referenceStations": 1,
"list": [
{
"referenceStationType": "GPS+SBAS/WAAS",
"referenceStationId": 7
}
]
},
"description": "GNSS Position Data"
}
2025-07-25T10:41:52.843Z,2,129026,100,255,8,ff,fc,43,a2,00,00,ff,ff
{
"prio": 2,
"pgn": 129026,
"dst": 255,
"src": 100,
"timestamp": "2025-07-25T10:41:52.843Z",
"input": [
"2025-07-25T10:41:52.843Z,2,129026,100,255,8,ff,fc,43,a2,00,00,ff,ff"
],
"fields": {
"cogReference": "True",
"cog": 4.1539,
"sog": 0
},
"description": "COG & SOG, Rapid Update"
}
So the issue is either with your socketcan device or the device you are recieving with
Koenraad de Haas
Koenraad de HaasOP3mo ago
Than its not possible to check in the skserver, if the data got send correctly right? (so I need to hook up another device to check the nmea2000 data)
Scott Bender
Scott Bender3mo ago
correct, we have done as much as we can with the server, we know it is getting sent the only way to prove that it is really working, is with another device You could run candumpjs at the command line but that doesn't really prove anything (like if wiring is bad or the socketcan device is bad) And I have seen can hats that were broken and can recieve, but not send
Koenraad de Haas
Koenraad de HaasOP3mo ago
Thanks for that, I'll hook up a Maretron USB
Scott Bender
Scott Bender3mo ago
and note that some n2k devices, like most MFDs. won't pick up location unless you go into settings and pick the Signal K device as the source any luck?

Did you find this page helpful?