Best way to identify each GHI product

Is there a “best way” to uniquely identify each GHI processor board? For instance, given that you plug a random GHI board into USB, is there a reliable value (USB name, some config value, SKU code) that is unique among all the products and which I can use to choose a friendly name for each board?

My problem is that the USB names for Cerbuino Net and Bee both come up as “Cerb-Family (non-commercial use)_Gadgeteer”, so I need a unique identifier among all products.

Each device type has a unique id. John will shed some light on this.

@ andre.m - small things like this are documented in the library references.

Andre - that’s a completely different issue. That topic talks about uniquely identifying individual boards. I need to identify boards by model (not individual boards within a model).

Gus/John - thanks - that’s what I need.

@ mcalsyn - Take a look at https://www.ghielectronics.com/downloads/man/Library_Documentation_v4.3/html/T_GHI_Processor_DeviceType.htm

@ John - Good to know, but there are two issues with that. One is that it does not distinguish between, for instance, a Cerbuino Bee and a Cerbuino Net, each of which has different hardware.

The other, bigger issue (my fault for not making this clear) is that I need to identify the boards from the host’s perspective. Is there any way to uniquely identify a board from the perspective of an app on the PC? - say by using the MFDeploy tools lib to read a firmware SKU field or config value?

@ mcalsyn - how about the MAC address? MFDeploy DLL should allow you to access from host.

Will that tell me the model? Again, I am not interested in distinguishing individual boards, just the model of the board.

Sorry, your use of the word “uniquely” confused me. ???

@ mcalsyn -

I do not have any other boards here to test at the moment but…

My Raptor returns:
Version ver = Microsoft.SPOT.Hardware.SystemInfo.Version; //Get firmware version
Debug.Print("Version: " + ver); //Version: 4.3.6.0

        string name = Mainboard.MainboardName;
        Debug.Print("MainboardName: " + name);    //MainboardName: GHI Electronics FEZ Raptor

@ willgeorge - As @ mcalsyn has identified, that approach will not distinguish between, for example, Cerbuino Bee and a Cerbuino Net.

@ iamin -
OOOPS!

@ mcalsyn - I reckon as long as the info is not properly stored we will not have much of a chance … maybe doing it ourself for each and every FW we have to burn.

This has already been discussed before and has been tagged as new feature on the github repo for netmf but it has not been assigned yet. Maybe some more motivation is needed … Expand available hardware information · Issue #115 · NETMF/netmf-interpreter · GitHub

Topic with alike question https://www.ghielectronics.com/community/forum/topic?id=19081 but never got any reply

or discussion for maybe an alternative https://www.ghielectronics.com/community/forum/topic?id=19309

@ mcalsyn - Unfortunately there is no way to distinguish between any of the cerb boards from firmware. In the case of the bee and net, you could try and initialize Ethernet and see if it exists.

Also unfortunately, there is no way to do that through MFDeploy. All you have to go off of is the device name itself.