Rolf van Kleef - Is there a way to set NMEA-200...

Is there a way to set NMEA-2000 identification information? I see in https://github.com/SignalK/n2k-signalk/blob/14eebdfc56ac4d792e2b6c5b7a1772a6a6187ab8/n2kMapper.js#L359 that there are some properties pulled from somewhere, but I cannot find where I can modify these.
13 Replies
Scott Bender
Scott Bender6mo ago
What n2k adapter are you using and what exactly do you want to change?
Rolf van Kleef
Rolf van KleefOP6mo ago
I use an mcp2515 connected through SPI to a Raspberry P 5. Stuff is working using CanboatJS configured for SocketCAN. As I linked, SignalkK sends several identification PGNs over N2k, and I want to adjust that data to differentiate different devices running Signalk.
Scott Bender
Scott Bender6mo ago
GitHub
canboatjs/lib/n2kDevice.js at 65fd6e8764f9c7994f7b2d817d22981120f10...
Native javascript NMEA 2000 decoder and encoder. Contribute to canboat/canboatjs development by creating an account on GitHub.
Scott Bender
Scott Bender6mo ago
You can manually set the addressClaim, productInfo and also the install info. This is done in ~/.signalk/settings.json for example:
"pipeElements": [
{
"type": "providers/simple",
"options": {
"logging": false,
"type": "NMEA2000",
"subOptions": {
"type": "canbus-canboatjs",
"interface": "can0",
"providerId": "can0",
"uniqueNumber": 920606,
"addressClaim": {
"Unique Number": 139725,
"Manufacturer Code": 'Fusion Electronics',
"Device Function": 130,
"Device Class": 'Entertainment',
"Device Instance Lower": 0,
"Device Instance Upper": 0,
"System Instance": 0,
"Industry Group": 'Marine'
},
"productInfo": {
"NMEA 2000 Version": 1300,
"Product Code": 667,
"Model ID": "MS-UD650",
"Software Version Code": "1.0",
"Model Version": "1.0",
"Model Serial Code": "123456",
"Certification Level": 0,
"Load Equivalency": 1
}

"serverVersion": "signalk-server 1.2.3",
"serverUrl": "https://wilhelm4:3443",
"serverDescription": "this is my main server",
"transmitPGNs": [
126983,
126984,
126985
]
},
"providerId": "can0"
}
"pipeElements": [
{
"type": "providers/simple",
"options": {
"logging": false,
"type": "NMEA2000",
"subOptions": {
"type": "canbus-canboatjs",
"interface": "can0",
"providerId": "can0",
"uniqueNumber": 920606,
"addressClaim": {
"Unique Number": 139725,
"Manufacturer Code": 'Fusion Electronics',
"Device Function": 130,
"Device Class": 'Entertainment',
"Device Instance Lower": 0,
"Device Instance Upper": 0,
"System Instance": 0,
"Industry Group": 'Marine'
},
"productInfo": {
"NMEA 2000 Version": 1300,
"Product Code": 667,
"Model ID": "MS-UD650",
"Software Version Code": "1.0",
"Model Version": "1.0",
"Model Serial Code": "123456",
"Certification Level": 0,
"Load Equivalency": 1
}

"serverVersion": "signalk-server 1.2.3",
"serverUrl": "https://wilhelm4:3443",
"serverDescription": "this is my main server",
"transmitPGNs": [
126983,
126984,
126985
]
},
"providerId": "can0"
}
Rolf van Kleef
Rolf van KleefOP2mo ago
Oh that's awesome! That helps enormously! Thanks a lot! It looks like this doesn't work anymore. These fields are not being sent out over the CANBus anymore?
Scott Bender
Scott Bender2mo ago
I don’t think I changed anything that would effect this They are definitely still being sent out.
Rolf van Kleef
Rolf van KleefOP2mo ago
Huh. I'll continue debugging then.
Scott Bender
Scott Bender2mo ago
You know what. I guess I could have broken the part that gets the config. I did refactor some of that. I’ll do some testing…
Rolf van Kleef
Rolf van KleefOP2mo ago
For context, I ran Canboatjs 3.12.0. I'm currently upgrading to .1 in case one of the fixes there helps this issue. .1 seems to make no difference. Moreover, perhaps this is useful in debugginb. Even when I specify nothing of the values shown above, there is no mention of the default (which is Signal K, I think). There's just no productInfo pgn being sent it seems. I also think the addressClaim is a bit faulty as I'm unable to get an address other than 100. I'll go write down my findings in an issue on GH to provide a bit more structure to the problems i'm having.
Scott Bender
Scott Bender2mo ago
I've some basic "mocked up" testing, and things look ok to me Definitely working for me on my boat, but I don't want to mess with things there. I don't have access to my lab right now, but will test there ASAP Do you know what version of canbatjs worked for you? You can turn on debug for canboatjs:candevice That should show you what is being sent out
Rolf van Kleef
Rolf van KleefOP2mo ago
I remember doing it back in june (based on the initial messages in this thread). I'll do that. 1 moment.
Scott Bender
Scott Bender2mo ago
That should also show the address claim procedure
Rolf van Kleef
Rolf van KleefOP2mo ago
Hmm I see this in the log:
2025-10-30T14:18:50.754Z canboatjs:candevice Sending product info
2025-10-30T14:18:50.756Z canboatjs:candevice Sending PGN {"NMEA 2000 Version":1300,"Product Code":667,"Model ID":"MS-UD650","Software Version Code":"3.12.1","Model Version":"1.0","Model Serial Code":"123456","Certification Level":0,"Load Equivalency":1,"pgn":126996,"dst":255,"src":100,"prio":3}
2025-10-30T14:18:50.754Z canboatjs:candevice Sending product info
2025-10-30T14:18:50.756Z canboatjs:candevice Sending PGN {"NMEA 2000 Version":1300,"Product Code":667,"Model ID":"MS-UD650","Software Version Code":"3.12.1","Model Version":"1.0","Model Serial Code":"123456","Certification Level":0,"Load Equivalency":1,"pgn":126996,"dst":255,"src":100,"prio":3}
But I also see a LOT of this in the log:
2025-10-30T14:18:48.844Z canboatjs:candevice Got unsupported ISO request for PGN 130847. Sending NAK.
2025-10-30T14:18:48.847Z canboatjs:candevice Sending PGN {"pgn":59392,"prio":6,"src":100,"dst":11,"fields":{"control":"ACK","groupFunction":255,"pgn":130847}}
2025-10-30T14:18:48.942Z canboatjs:candevice handleISORequest {"canId":418014219,"prio":6,"src":11,"pgn":59904,"dst":100,"fields":{"pgn":130847,"PGN":130847},"description":"ISO Request","id":"isoRequest","timestamp":"2025-10-30T14:18:48.942Z"}
2025-10-30T14:18:48.844Z canboatjs:candevice Got unsupported ISO request for PGN 130847. Sending NAK.
2025-10-30T14:18:48.847Z canboatjs:candevice Sending PGN {"pgn":59392,"prio":6,"src":100,"dst":11,"fields":{"control":"ACK","groupFunction":255,"pgn":130847}}
2025-10-30T14:18:48.942Z canboatjs:candevice handleISORequest {"canId":418014219,"prio":6,"src":11,"pgn":59904,"dst":100,"fields":{"pgn":130847,"PGN":130847},"description":"ISO Request","id":"isoRequest","timestamp":"2025-10-30T14:18:48.942Z"}
Don't know if that has to do with anything though. So I guess the plotter just isn't recognizing it somehow. Though after restarting Signalk the log is somehow a lot cleaner. Showing that it does indeed send the product info and claims the address properly. So perhaps it's a plotter issue. Very strange though. I'll see if I can decipher anything using the Actisense. Curiosly enough it does show FUSION as the manufacturer, but no other information. I think it's this: https://github.com/canboat/canboatjs/issues/157 At least it looks very similar.

Did you find this page helpful?