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
8 stars 0 forks source link

JDMTool error when accessing the card reader in MacOS #3

Open icordoba opened 6 months ago

icordoba commented 6 months ago

Hi, I have tried jdmtool in MacOS Ventura 13.6.3 (22G436) Python version 3.11.

App works and I can download my subscription but when I try to get information from the card reader as a previous step to writing (card reader works with original JDM application from Jeppesen) I get:

(jdmtool) ~ ➤ jdmtool detect
Found device: Bus 020 Device 016: ID 0e39:1250
Traceback (most recent call last):
  File "/Users/icordoba/anaconda3/envs/jdmtool/bin/jdmtool", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/Users/icordoba/anaconda3/envs/jdmtool/lib/python3.11/site-packages/jdmtool/main.py", line 442, in main
    func(**kwargs)
  File "/Users/icordoba/anaconda3/envs/jdmtool/lib/python3.11/site-packages/jdmtool/main.py", line 66, in wrapper
    with handle.claimInterface(0):
         ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/icordoba/anaconda3/envs/jdmtool/lib/python3.11/site-packages/usb1/__init__.py", line 1146, in claimInterface
    mayRaiseUSBError(
  File "/Users/icordoba/anaconda3/envs/jdmtool/lib/python3.11/site-packages/usb1/__init__.py", line 127, in mayRaiseUSBError
    __raiseUSBError(value)
  File "/Users/icordoba/anaconda3/envs/jdmtool/lib/python3.11/site-packages/usb1/__init__.py", line 119, in raiseUSBError
    raise __STATUS_TO_EXCEPTION_DICT.get(value, __USBError)(value)
usb1.USBErrorAccess: LIBUSB_ERROR_ACCESS [-3]
(jdmtool) ~ ➤ jdmtool read-metadata
Found device: Bus 020 Device 016: ID 0e39:1250
Traceback (most recent call last):
  File "/Users/icordoba/anaconda3/envs/jdmtool/bin/jdmtool", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/Users/icordoba/anaconda3/envs/jdmtool/lib/python3.11/site-packages/jdmtool/main.py", line 442, in main
    func(**kwargs)
  File "/Users/icordoba/anaconda3/envs/jdmtool/lib/python3.11/site-packages/jdmtool/main.py", line 66, in wrapper
    with handle.claimInterface(0):
         ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/icordoba/anaconda3/envs/jdmtool/lib/python3.11/site-packages/usb1/__init__.py", line 1146, in claimInterface
    mayRaiseUSBError(
  File "/Users/icordoba/anaconda3/envs/jdmtool/lib/python3.11/site-packages/usb1/__init__.py", line 127, in mayRaiseUSBError
    __raiseUSBError(value)
  File "/Users/icordoba/anaconda3/envs/jdmtool/lib/python3.11/site-packages/usb1/__init__.py", line 119, in raiseUSBError
    raise __STATUS_TO_EXCEPTION_DICT.get(value, __USBError)(value)
usb1.USBErrorAccess: LIBUSB_ERROR_ACCESS [-3]
dimaryaz commented 4 months ago

Hi! Sorry for the slow response. I don't currently have a Mac to test it - but will in a few weeks.

I don't suppose you've found some workaround for this? I see a bug report about HID devices (https://github.com/libusb/libusb/issues/859) that basically says that libusb shouldn't be used for HID devices - but, I don't think a card reader counts as HID. In any case, I'll have a better idea once I can try it myself.

alxwolf commented 1 month ago

Can't help for this case but only confirm it works on macOS Sonoma 14.4.1

[~/dev/jdmtool/.venv/bin]$ ./jdmtool detect
Found device: Bus 002 Device 001: ID 0e39:1250
Firmware version: 20071203
Card inserted:
  IID: 0x1004100
  Unknown identifier: 0x10000000

this is "silver" card