Yes, thanks
Kanopus. I'd finally figured it out myself [eventually] that there are actually 2 advanced modes, 'Expert' and 'Full' [gpsdaemon -full]. The 'Expert Mode' gives this screen which doesn't have the 'Region Dump' option in Garmin Interface tab:
As shown above, I'd previously been trying to dump regions according to the following guide by
juergenss. Thanks to Caty for the link. Caty also suggested i write a tut for dumping if i could get it working, but
Kanopus has done that above in his trademark efficient way so i've made what's more a series of observations and comments. Much of which may-well be known to the old hands i'm sure.
[Corrected Bing English transaction from Deutsche, this is based on eTrex HCX]:
This tool can read the contents of the HCX namely:
To do this in the expert mode gpsdaemon.exe /e, then select 'Garmin Interface' tab
1. Uncheck option 'Close port',
2. Click on 'Unit ID' to start the USB connection
3. In 'Packet ID' enter '60', which stands for read (not published by Garmin)
4 Check 'Send Data' and enter '2'
5. Enter the data at the end, the first byte is the region of ID (eg 03 - Basemap), for the memory region that you want to read. Then enter (e.g. 03 on position 1)
5. Click Send.
If there is something to read, the bytes in the window will appear and you can see what is stored in the region. The Basemap is quite long, so stop the transfer with "packet receiver > deactivate" you know already the card ID on the first bytes.
Task: Find the area ID of the eTrex Vista that includes the Marine POI.
In the 60's this is 31.
The device sends 16 bytes after the string "GARMIN Americas Marine POI", if this is implemented in Vista, probably in another region ID.
The region are IDs in hexadecimal to enter 09, 0A..10..1F, 20,...FF.
The region of IDs are the same practically for all devices:
A few well-known are:
03 base map
05 boot block
0A card memory
0C loader (not readable, is used as a cache for flashing the firmware.)
0D serial number of the unit and other
0E firmware so device software
20 unknown
2E - 29 FF - s unknown
31 IMG Americas.Marine.POI at the 60/76 CSx
F5 chip firmware etrex MTK
F6 chip firmware SiRF 60/76C(S)x
To write to a region, you need a 60-byte header (very nice how-to in the D005900A of the marine POI) (e.g. with a hex editor) before the data in the position 0x32 which is the region ID, and the length of data to write twice as a 4-byte words once in 2C-30 (length + 0A) and a second time at 38 to 3B length without offset, Low bytes first. Then rename such as irgendwas.rgn and start irgendwas.rgn with updater.exe.
It's pretty much fool-proof, but you should not write anything in the boot block region 5. It's like the BIOS on a PC.
I'm guessing the text i've put in red above achieves the same result as:
(i) changing the .img extension to bin; and then
(ii) either using makergn.exe to compile the rgn properly with intended target Region ID in hex, or saving the bin as an rgn file in RGN_Tool and then changing the incorrectly saved '33' at offset 0x32 to '03' [region 3 for gmapbmap storage], '0A' [region 10 for gmapsupp] or '31' [region 49 for gmapprom] or '32' [region 50 for gmapoem] before flashing the saved RGN file.
I think it's possible that not all all older units have region 50 available for an OEM map and some units with media cards maybe can't save any map on board other than the basemap.
Flashing to region 10 [hex 0A] in a unit which doesn't have a media card slot [e.g. SP 2720] will save the supplementary map to the unit's internal memory region 10 whereas the same flash for a unit with a card will save gmapsupp.img to the card's Garmin folder as mentioned above for the eTrex. Tested on SP 2720 and c320 [SD card inserted].
A custom splash screen can be done by flashing a GIR_Editor modified logo after opening the bin file in RGN_Tool, saving as an rgn file and then checking that 0x32 is saved as 10 [dec 16] before flashing to the unit. I accidentally overwrote the logo in my SPc320 and was able to flash a modified nuvi 3xx logo to it, seems to work ok so far.
The dumper in Full Mode will save map regions happily to the same folder as gpsdaemon.exe into a folder it creates named 'DUMP--StreetPilot 2720 Version7.20' in the case of my SP2720. It will write a tmp file 'RegionDump.tmp and the final file name is RegionDump--xx.hex where 'xx' is the hex region #. When the dump for the map region is renamed to *.img it opens in GMAP_Tool without error. The entire allocated space of the region is dumped however. 2720 has 16MB available for the basemap so the resultant image size is 16,777,216 bytes exactly 16MB whereas its actual basemap size was only 10,493,952 bytes or ~10MB. The problem is compounded with regions which share memory space [dec 10, 49, 50 i guess
*(nup, wrong! see edit)] as it seems that dumping one of them also dumps any free available space as empty bytes. e.g. If the map in region 10 is only tiny, as is the case in my 2720 where gmapsupp.img is 84KB Raratonga, the dumper will take forever writing the entire available free space on top of that which happens in this case to be well over 1GB. So the more available free space, it seems the longer the dump will take. The option is there to kill the Packet Receiver of course, provided you're sure all the valid data has been written to the tmp file. Right clicking the tmp file while it's still being written will update its size to get an idea. Empty FFs can then be removed from the end of the file.
Now here's my current problem: I can't get some regions to dump with the 2720, in particular the logo region 16 [10]. I follow the same procedure as with dumping regions for the maps, but get no dump file, nothing other than the packet info on the screen:
Code:
Please Login or Register to see the links
For regions that don't exist, a pop-up message is given to that effect. Region 16 [10] doesn't do that, the unit initializes then reboots almost immediately.
I can dump fw_all from 0E [region 14] and it matches up with fw_all.bin when extraneous trailing FFs are deleted. Region 5 dumps but is incomplete, but i don't think that's unusual.
Similarly using the 'data to the screen' as per the method detailed by
juergenss for the basemap for example, using 03 will write onto the screen [takes hours for that, i stopped it after about 2 hrs] The data can be copy/pasted into a text editor using Ctrl C/V and i suppose can be used in a hex editor somehow, i have no idea how to do that. But ... 10 [region 16 logo] won't write to screen either so i think maybe it's protected. Or, another distinct possibility: I've simply stuffed up [again].
Any suggestions for dumping a protected region, and/or corrections to the above?
*EDIT: I guessed wrong. In my 2720 region 50 has a limited memory space, only 1MB consistent with it being intended for small maps such as dealer POIs. Small non-NT maps seem to work in it ok provided they're under 1MB of course. It seems certain that regions 10 and 49 do share memory however [makes sense as erasing the supp map from region 10 with command 'erase' from Sendmap20 frees up space for the primary map in the region 49 of units such as SP27x0].
Bookmarks