Exhaustive explanation of Garmin Mobile PC and it's IDs
What "HUMBLE BEERS" writes in post #41 is the normal installation procedure for Garmin PC and creation of the "SW.UNL" file. Of course we believe that since it's just how it always worked with numerous installations of Garmin Mobile PC. Not exactly the same words but practically the same meaning as this instructions "[Only registered and activated users can see links. ])".
Nothing new with post #41 and it's not in any way using a memory card and the CID register values as "HUMBLE BEERS" claims in post #37.
I can explain this issue a little bit further. Maybe off-topic with Garmin Mobile PC discussions here but it needs some clarifications before the discussion gets more dirty.
If Garmin Mobile PC is used with a Garmin GPS it's using the "Device ID" of that GPS.
Garmin Mobile PC is not specifically aware of what type of media it accesses. No call for the CID of a SD card or other type of memory card. Checked the "DeviceIOControl" API calls made from "Que.exe" (the EXE file for GMPC). There's no calls made for "IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER" value in the DeviceIOControl parameters.
Even if Garmin Mobile PC issued such a call it would only be successful for directly attached memory cards not residing on a USB bus and with a specific driver that uses full DeviceIOControl API support. It would not make any sense at all to sell such a product with those extreme limitations for a successful access of the CID register.
Que.exe API calls using DeviceIOControl:
No calls for reading the CID detected.
Garmin Mobile PC calculates a "Hardware ID" after installation. That's used for all cases when there's no Garmin GPS detected and used by Garmin Mobile PC.
I don't know how the "Hardware ID" is calculated but it's common to generate such from some values like the BIOS codes, MAC address of network card, ID of graphic card, CPU family and type etc.
Garmin Mobile PC with disabled GPS detection:
Hardware ID here in this example is "23030300000001cb51f728".
Color coding are used for explanation of little-endian address grouping and reading later.
By using the GMPC "Hardware ID" and "Little-endian" address calculation you will get the "Device ID". Little-endian conversion from the hardware ID gets "28f751cb". HexToDec calculation for 0x28f751cb equals "687296971" in this example. This value, here in the example 687296971, is also written to the ID tag inside the "%APPDATA%\GARMIN\Devices\Garmin Mobile PC\GarminDevice.xml" file so that MapSource and other Garmin applications can use and access the "device id".
Here's how it looks in Garmin Mobile PC:
Here we have the Device ID 687296971.
If we create a "SW.UNL" file for a non Garmin GPS using NMEA 0183 protocol we will get a "Software Unit ID". That ID is the same as the "Device ID" from the earlier step and it's therefore also a direct "Little-endian" calculation from the "Hardware ID".
Garmin Mobile PC with a valid "SW.UNL" file:
... and here we have the Software Unit ID 687296971.
Again the same value 687296971 as before and based on the original Hardware ID as explained earlier.
There's no memory card CID values involved in any of the scenarios. The product is not sold as a SD card product in any of the variants and bundles.
Bookmarks