Once more for the Unbelievers or just for you guys
Instructions to generate software unlock code using GMPC:
1. Download and install Garmin Mobile PC.
2. Launch GMPC, when asked "Did this purchase of Garmin Mobile PC include a Garmin GPS Receiver?" click "Yes".
3. When asked to Connect or power on your Garmin GPS receiver, click "Done".
4. Click "Skip" while scanning for GPS receiver and confirm "Yes" on "Are you sure..." message box.
5. Go to Settings -> About and make a note of your "Device ID". (ID of SD Card inserted in Card reader)
6. Launch the keygen and type in your "Device ID" into the "Unit ID" field.
7. Select "Garmin Mobile PC" in Software Product drop-down box and hit Generate button.
8. Copy (CTRL+C) your generated device unlock key to the clipboard.
9. Now open the Notepad and paste (CTRL+V) the key and save the file as SW.UNL
10. Put your newly created file to your GMPC installation directory (C:GarminMobilePC by default) and restart GMPC.
The SW.UNL can also be used as unlock file in any Garmin GPS not only in GMPC
NOTE: If you managed to start this software in Trial Mode, you won't see any "Device ID" in your Settings -> About page.
You will find a kind of "Software Unit ID" instead and you CANNOT GENERATE an unlock code for it!!!
If this is your case, close down GMPC, then go to C:Documents and Settings\Application DataGarminGarminMobilePC
and delete its content. The proceed from Step 2.
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".
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.
Don't post thanking posts. Use the "Like"button instead.
►[Only registered and activated users can see links. ]◄
NOTICE! Due to other activities I'm now having a very low attention to questions and requests here at GPSPower.
Thank you for your exceptional respond. In the meantime I have realizes that I was mistaken. I did follow a procedure from marine forum which was somehow completely wrong. Therein it was explained that MobilePC could read the SD CARD ID and that for a SD Card containing a BlueChart g2 a sw.unl key needed to be generated using the number displayed in MobilePC. Thinking that I would need this key to unlock a BlueChartg2 map I use in my GPSMAP78 I run it in Jetmouse to create sw.unl and gmapsupp.unl, and naturally the BlueChartg2 showed up on the GPS. Yesterday I copied the map onto a different card and at last I realized that no sw.unl was needed for the GPS, just the unlock code generated from the GPS ID, consequently a sw.unl created using any number was just good for nothing. I did just for fun used ReadCID and the number obviously was very different. I sincerely apologize for the confusion I might have caused and hope I did not give you too much of a headache. Thank you again for your patience, the great explanation and guiding me finally on to the right course. (on land and on water)
Thank you for your help
I have another problem: I have a 4Gb MicroSD card plugged into my Garmin, and by using the ReadCID.exe program, I managed to have this report:
Raw CID Bytes: 94-00-73-A2-7D-7D-10-30-30-30-30-30-4D-53-1B-00
Manufacturer ID: 1b
OEM ID: SM
Product Name: 00000
Product Revision: 1.0
Product Serial Number: 7d7da273
Manufacture Date: 4/2009
Now it is clear to me the Little-endian conversion, etc, but in my case I have 16 bytes (in your example there weren't 16 bytes), and I think I must take 4 of them. Which of them shall I take? The rightmost? Or am I completely on the wrong road?
Thank you in advance
The earlier example was just for Garmin Mobile PC and the calculation of "Software ID" from "Hardware ID".
Using ReadCID.exe from "jo0ls' .Net stuff" gives you the complete CID (128 bit / 16 bytes) and also the 32 bit PSN part. The PSN part should already have been calculated to decimal form by ReadCID.exe.
Your example data should be parsed with calculations for PSN bit fields [55:24]. Making [55:24] to count 16-bit atomic increment wise from 24 to 55 by using little-endian conversion.
Raw CID Bytes: 94-00-73-A2-7D-7D-10-30-30-30-30-30-4D-53-1B-00
Product Serial Number: 7d7da273 = 2105385587 in decimal form.