The problem is that different vendors make different use of Device Instances, and relay on them to different degrees. As a side note, Device instances are different from Data Instances - read the linked article above for more info.
There actually is no technical need for devices to have different Device Instance numbers to be uniquely identifiable and selectable by a listening device. NMEA 2000
even says that a system should work just fine with all Device Instances set to zero. But that's not how some vendors handle things.
N2K devices have what's called a NAME field which is the concatenation of several sub fields. These include codes for the device type, device function, manufacturer ID, and most importantly a unique serial
number. The Device Instance is also part of the NAME field, but by virtue of the serial
number, it is guaranteed that every device can be uniquely identified even if they all have the same Device Instance.
Some vendors work off this unique identification for selecting which device to listen to. Furuno
is an example. If you do data source selection with their NavPilot, devices will be listed with their name and serial number, uniquely identifying each without need for a unique Device Instance.
uniquely identifies devices as long as they have different text names. So a GP25 GPS
can be distinguished from a GP330 GPS simply by virtue of it's name. However, if you have two of the exact same model device, say two GP25s, they need to have unique Device Instances to identify them. They will display the selection choices as GP25-1, and GP25-2, for example. If I recall
, they even assign unique Device Instances where needed, but I'm not 100% certain because I always assigned them myself.
Maretron takes yet another approach, and does data source selection exclusively based on Device Instance. In N2KView or one of their displays, if you want to select one of several GPSs, you pick a Device instance number between 1-253. It doesn't give you a list of available GPSs, but just let's you pick a number. And it's up to you to assign unique Device Instances to each, and keep track of which is which. I've talked to them about it, and they have their reasons for doing it that way, but personally I think it sucks and is a real pain in the ass to manage. And the real catch is that even though all N2K devices are required to have some way to program their Device Instance, many can only do it through some proprietary tool, and some can't even change it at all. And N2K Certification
doesn't test for it, because there are lots of certified products out there that don't have programmable Device Instances. So Maretron's approach only works with some product.