dimaryaz / jdmtool

A command-line tool for downloading Jeppesen databases and programming Garmin aviation data cards aiming to be compatible with Jeppesen Distribution Manager.
Apache License 2.0
12 stars 2 forks source link

8M card #16

Open ELD400 opened 1 month ago

ELD400 commented 1 month ago

Info from Jeppesen application et jdmtool

8 MB green jdm : G2 firmware v:20071203 isG2Orange: 0 Card:441: 8 MB AMD Series C/D (2 MB x 4) JDA version:1.0.0.6 IID:0x100AD00 isOrangeCard: 0

jdmtool : IID: 0x0100ad00 unknow identifier: 0x31000100

8 MB green jdm : G2 firmware v:20071203 isG2Orange: 0 Card:441: 8 MB AMD Series C/D (2 MB x 4) JDA version:1.0.0.6 IID:0x100AD00 isOrangeCard: 0

jdmtool : IID: 0x0100ad00 unknow identifier: 0x3500b000

16MB WASS GREY jdm : G2 firmware v:20071203 isG2Orange: 0 Card:451: 16 MB AMD Series C/D (4 MB x 4) JDA version:1.0.0.6 IID:0x1004100 isOrangeCard: 0 jdmtool : IID: 0x01004100 unknow identifier: 0x3C009000

TERRAIN IID: 0x90009000 unknow identifier: 0x90009000

dimaryaz commented 1 month ago

Thanks for the info!

Looks like jdmtool detects your card as a 4MB card. I made a fix here; could you try it?

You can either check it out using git yourself and switch to the 8mb branch, or install it like this:

pip3 install "git+https://github.com/dimaryaz/jdmtool.git@8mb#egg=jdmtool"
dimaryaz commented 1 month ago

I am only guessing at the card's memory layout, so there's a possibility that it won't work correctly. If it doesn't work, try the 8mb-2 branch:

pip3 install "git+https://github.com/dimaryaz/jdmtool.git@8mb-2#egg=jdmtool"
ELD400 commented 1 month ago

8mb branch read only 4mb

Latutude:~$ #8mb Latutude:~$ jdmtool detect Found device: Bus 005 Device 008: ID 0e39:1250 Firmware version: 20071203 Card inserted: IID: 0x0100ad00 Unknown identifier: 0x31000100 Latutude:~$ jdmtool read-metadata Found device: Bus 005 Device 008: ID 0e39:1250 Detected data card: 8MB non-WAAS Database metadata: Latutude:~$ jdmtool read-database test1.bin Found device: Bus 005 Device 008: ID 0e39:1250 Detected data card: 8MB non-WAAS Reading the database: 48%|██████████████████████████▌ | 3.99M/8.39M [00:46<00:51, 86.3kB/s] Truncating the file... Done Latutude:~$ jdmtool write-database test1.bin Found device: Bus 005 Device 008: ID 0e39:1250 Detected data card: 8MB non-WAAS Transfer test1.bin to the data card? (y/n) y Erasing the database: 100%|████████████████████████████████████████████████████████| 4.06M/4.06M [01:04<00:00, 63.0kB/s] Writing the database: 100%|████████████████████████████████████████████████████████| 4.00M/4.00M [01:43<00:00, 38.5kB/s] Verifying the database: 100%|██████████████████████████████████████████████████████| 4.00M/4.00M [00:46<00:00, 85.6kB/s] Done

Latitude~$ #8mb-2 Latitude~$ jdmtool detect Found device: Bus 005 Device 002: ID 0e39:1250 Firmware version: 20071203 Card inserted: IID: 0x0100ad00 Unknown identifier: 0x31000100 Latitude~$ jdmtool read-metadata Found device: Bus 005 Device 002: ID 0e39:1250 Detected data card: 8MB non-WAAS Database metadata: Latitude~$ jdmtool read-database test2.bin Found device: Bus 005 Device 003: ID 0e39:1250 Detected data card: 8MB non-WAAS Reading the database: 73%|█████████████████████▊ | 6.08M/8.39M [01:11<00:26, 85.5kB/s] Truncating the file... Done Latitude~$ jdmtool write-database test2.bin Found device: Bus 005 Device 004: ID 0e39:1250 Detected data card: 8MB non-WAAS Transfer test2.bin to the data card? (y/n) y Erasing the database: 100%|██████████████████████████████| 6.16M/6.16M [01:37<00:00, 62.9kB/s] Writing the database: 100%|██████████████████████████████| 6.09M/6.09M [02:36<00:00, 39.0kB/s] Verifying the database: 100%|████████████████████████████| 6.09M/6.09M [01:11<00:00, 85.6kB/s] Done Latitude~$

dimaryaz commented 1 month ago

Interesting! Ok, it looks like 8mb-2 works correctly.

There's a chance that 8mb also worked, but the existing database on the card was exactly 4MB - but that definitely looks suspicious. Could you try writing a greater-than-4MB file using the 8mb branch, and see if it fails? That would give me more confidence that 8mb-2 is the answer.

ELD400 commented 1 month ago

My file make 4442137 oct

ELD400 commented 1 month ago

I have make some tests with 7M file, Finally it's this layout MEMORY_LAYOUT_8MB = [0, 2, 4, 6]

I have make test with merge garmin_databases, files are on issue "https://github.com/dimaryaz/jdmtool/issues/19 (Some fix to work with GarminProgrammingDevice on garmin_databases branch)

8M-2

D630:~$ pipx install "git+https://github.com/dimaryaz/jdmtool.git@8mb-2#egg=jdmtool" --force Installing to existing venv 'jdmtool' installed package jdmtool 0.3.2, installed using Python 3.12.3 These apps are now globally available

D630:~$ jdmtool detect Found a Skybound device at Bus 003 Device 047: ID 0e39:1250 Firmware version: 20071203 Detected data card: 8MB non-WAAS, IID: 0x0100ad00, unknown: 0x1f003100 Card inserted: 8MB non-WAAS

D630:~$ jdmtool read-database read2410AMRN.BIN Found device: Bus 003 Device 033: ID 0e39:1250 Detected data card: 8MB non-WAAS Reading the database: 100%|████████████████████████████████████████████████████████| 8.39M/8.39M [01:37<00:00, 86.4kB/s] Truncating the file... Done D630:~$ jdmtool read-database read2410AMRN.BIN Found device: Bus 003 Device 034: ID 0e39:1250 Detected data card: 8MB non-WAAS Reading the database: 73%|████████████████████████████████████████▌ | 6.08M/8.39M [01:10<00:26, 86.3kB/s] Truncating the file... Done

D630:~$ ls -l j500a-amrn-2410.awp -rwxr-xr-x 1 eld eld 7178444 sept. 20 16:25 j500a-amrn-2410.awp

D630:~$ jdmtool extract-awp j500a-amrn-2410.awp 2410AMRN.BIN Unknown: b'd\x00\x02\x00\x00\x00Dd\x00\x1b\x00\x00\x00A\xc8\x00' Unknown: ['SQA', 'Jul 19 2001', '13:33:03'] Unknown: b'F\x90\x01i' Year: 24 Month: 10 Avionics: 'GNS 430W/530W' Coverage: 'Americas-North Garmin Navigation Database' Size of the remaining content: 7178300 Unknown: b'RKpGr' Unknown: b'd\x00\x02\x00\x00\x00Dd\x00\x1b\x00\x00\x00A\xc8\x00' Unknown: ['SQA', 'Oct 25 1999', '14:16:13'] Size of the remaining content: 7178250 Unknown: b'R\x04\x00\x00\x00\x00\x00' Database size: 7178240 Database is not block-aligned! Writing database... Done Unknown: b'' D630:~$

D630:~$ jdmtool write-database 2410AMRN.BIN Found device: Bus 003 Device 035: ID 0e39:1250 Detected data card: 8MB non-WAAS Transfer 2410AMRN.BIN to the data card? (y/n) y Erasing the database: 100%|████████████████████████████████████████████████████████| 7.27M/7.27M [01:55<00:00, 63.0kB/s] Writing the database: 29%|████████████████▎ | 2.10M/7.21M [00:56<02:18, 37.0kB/s] Traceback (most recent call last): File "/home/eld/.local/bin/jdmtool", line 8, in sys.exit(main()) ^^^^^^ File "/home/eld/.local/share/pipx/venvs/jdmtool/lib/python3.12/site-packages/jdmtool/main.py", line 1130, in main func(kwargs) File "/home/eld/.local/share/pipx/venvs/jdmtool/lib/python3.12/site-packages/jdmtool/main.py", line 89, in wrapper f(dev, *args, *kwargs) File "/home/eld/.local/share/pipx/venvs/jdmtool/lib/python3.12/site-packages/jdmtool/main.py", line 140, in wrapper f(dev, args, kwargs) File "/home/eld/.local/share/pipx/venvs/jdmtool/lib/python3.12/site-packages/jdmtool/main.py", line 987, in cmd_write_database _write_database(dev, path) File "/home/eld/.local/share/pipx/venvs/jdmtool/lib/python3.12/site-packages/jdmtool/main.py", line 958, in _write_database dev.write_block(block) File "/home/eld/.local/share/pipx/venvs/jdmtool/lib/python3.12/site-packages/jdmtool/skybound.py", line 84, in write_block self.write(data) File "/home/eld/.local/share/pipx/venvs/jdmtool/lib/python3.12/site-packages/jdmtool/skybound.py", line 40, in write self.handle.bulkWrite(self.WRITE_ENDPOINT, data, self.TIMEOUT) File "/home/eld/.local/share/pipx/venvs/jdmtool/lib/python3.12/site-packages/usb1/init.py", line 1389, in bulkWrite return self._bulkTransfer(endpoint, data, sizeof(data), timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/eld/.local/share/pipx/venvs/jdmtool/lib/python3.12/site-packages/usb1/init.py", line 1358, in _bulkTransfer mayRaiseUSBError(libusb1.libusb_bulk_transfer( File "/home/eld/.local/share/pipx/venvs/jdmtool/lib/python3.12/site-packages/usb1/init.py", line 127, in mayRaiseUSBError raiseUSBError(value) File "/home/eld/.local/share/pipx/venvs/jdmtool/lib/python3.12/site-packages/usb1/init.py", line 119, in raiseUSBError raise STATUS_TO_EXCEPTION_DICT.get(value, __USBError)(value) usb1.USBErrorTimeout: LIBUSB_ERROR_TIMEOUT [-7] D630:~$

8M ttps://github.com/dimaryaz/jdmtool.git@8mb#egg=jdmtool" --force Installing to existing venv 'jdmtool' installed package jdmtool 0.3.2, installed using Python 3.12.3 These apps are now globally available

D630:~$ jdmtool detect Found a Skybound device at Bus 003 Device 047: ID 0e39:1250 Firmware version: 20071203 Detected data card: 8MB non-WAAS, IID: 0x0100ad00, unknown: 0x1f003100 Card inserted: 8MB non-WAAS

D630:~$ jdmtool write-database 2410AMRN.BIN Found device: Bus 003 Device 038: ID 0e39:1250 Detected data card: 8MB non-WAAS Transfer 2410AMRN.BIN to the data card? (y/n) y Erasing the database: 100%|████████████████████████████████████████████████████████| 7.27M/7.27M [01:55<00:00, 63.0kB/s] Writing the database: 100%|████████████████████████████████████████████████████████| 7.21M/7.21M [03:14<00:00, 37.1kB/s] Verifying the database: 100%|██████████████████████████████████████████████████████| 7.21M/7.21M [01:23<00:00, 86.4kB/s] Done

D630:~$ jdmtool read-database read2410AMRN.BIN Found device: Bus 003 Device 038: ID 0e39:1250 Detected data card: 8MB non-WAAS Reading the database: 86%|███████████████████████████████████████████████▉ | 7.18M/8.39M [01:23<00:13, 86.4kB/s] Truncating the file... Done D630:~$

dimaryaz commented 2 weeks ago

Thanks for the info! And sorry for the delay.

There is one more thing here I will need to solve - detecting 4MB vs 8MB cards - because it looks like they have the same IID. I am trying to figure out the meaning of the "unknown" identifier.

ELD400 commented 2 weeks ago

There is one more thing here I will need to solve - detecting 4MB vs 8MB cards<

Or 4MB is 8MB card :-)

on jdm program you can go to jdm menu, open device list, on device list window, below Skybound G2: , click on 8MB or other size you can see what jdm see for type of memory and see type of chip on card : here for my 8MB jdm display : "G2 firmware v:20071203 isG2Orange: 0 Card:441: 8 MB AMD Series C/D (2 MB x 4) JDA version:1.0.0.6 IID:0x100AD00 isOrangeCard: 0" Capture Capture2

here when I open my memory case, 4 memory chips AMD "29F016D-120E4C".

On datasheet : AM29F016D.PDF

AM29F016D-120E4C : 16 Megabit (2 M x 8-Bit) CMOS 5.0 Volt-only, Uniform Sector Flash Memory from "AMD"

On my 8MB card I have 4 chips x 2MB = 8MB

Maybe you can find on datasheet or in jdm device list, information to correlate your "unknown" identifier or on data from jdm device list and/or compare with same information on 4MB datacard.

you will be scared when you know the price of 4 chips compared to the price of garmin card

dimaryaz commented 1 week ago

Or 4MB is 8MB card :-)

Well, I don't have a 4MB card myself - I only got the info from another user who reported a bug. Who knows, maybe it's sold as 4MB, but it's all the same hardware inside.

On datasheet : AM29F016D.PDF

Oh wow, I didn't realize all of this info was available!

Maybe you can find on datasheet or in jdm device list, information to correlate your "unknown" identifier or on data from jdm device list and/or compare with same information on 4MB datacard.

My plan was to use a debugger to spoof the ID that JDM reads from the device: change different bits, and see how it appears in the UI. It should be doable - just haven't had time to actually try it.

you will be scared when you know the price of 4 chips compared to the price of garmin card

Ha, I'm curious to know... (Not that I'm surprised that the data cards are extremely overpriced.)

ELD400 commented 1 week ago

Well, I don't have a 4MB card myself - I only got the info from another user who reported a bug. Who knows, maybe it's sold as 4MB, but it's all the same hardware inside.

maybe 2 chips only on 4MB, on 8MB 4 chips.

you will be scared when you know the price of 4 chips compared to the price of garmin card

Ha, I'm curious to know... (Not that I'm surprised that the data cards are extremely overpriced.)

$2.6 by chip :-)