jacekkow / controlvault2-nfc-enable

Enable NFC on Linux for pcscd on Dell E7470 (and others) with ControlVault2
BSD 3-Clause "New" or "Revised" License
78 stars 20 forks source link

Add support for 0a5c:5843 #9

Closed aeyno closed 4 years ago

aeyno commented 4 years ago

I have a 0a5c:5843 NFC readr on my Dell Latitude 5501 but I'm not able to use it on Ubuntu 20.04, could you add support for this chip?

jacekkow commented 4 years ago

This is a different hardware (ControlVault3) that I have no access to, unfortunately.

If you could sniff communication between Windows and the device using USBPcap: https://desowin.org/usbpcap/tour.html then I might be able to come up with something (skip the part about detaching device).

When you have sniffing enabled go to Device Manager, find ControlVault NFC device, select Disable command, wait a moment and reenable the device.

You can attach the resulting .pcap file to this issue (optionally encrypting it with my public GPG key) or send it to me privately.

lgarbarini commented 4 years ago

@jacekkow I have pcaps from 0a5c:5843 on a Dell Latitude 7400. I can't seem to track down your contact info/gpg key, but am happy to pass along the pcaps when I do.

jacekkow commented 4 years ago

@lgarbarini GitHub posts my GPG key at: https://api.github.com/users/jacekkow/gpg_keys

I'm also attaching it for convenience: gpg.txt

lgarbarini commented 4 years ago

Thank you, pcaps are on their way

jacekkow commented 4 years ago

I finally found some time to look at these dumps. These are not as scary as I have thought - general framework looks the same, only commands differ: https://gist.github.com/jacekkow/8acf2bbc164dc377df9913a47807d589

I'll try to wrap it up during the weekend somehow.

jacekkow commented 4 years ago

Could you try: https://github.com/jacekkow/controlvault2-nfc-enable/tree/cv3 (branch cv3)?

Usage changed slightly:

./nfc.py on

or

sudo ./nfc.py on
aeyno commented 4 years ago

I tried on my Latitude 5501 with 0a5c:5843 and I keep getting this error

INFO:__main__:Looking for supported device...
Traceback (most recent call last):
  File "./nfc.py", line 62, in <module>
    handler = UsbDeviceFinder.find()
  File "./nfc.py", line 46, in find
    raise Exception('Cannot find BCM device - check list of supported devices')
Exception: Cannot find BCM device - check list of supported devices

PS: sorry if I didn't send the pcap you asked for, I was really busy during the past month

jacekkow commented 4 years ago

My mistake - I have added 0a5c:5833 instead of 0a5c:5843. Fixed on that branch (note that I have made amend to the existing commit instead of a new one).

aeyno commented 4 years ago

This time, I got this error:

NFO:__main__:Looking for supported device...
INFO:__main__:Found 0A5C:5843
DEBUG:cvcomm:Enumerating interfaces...
Traceback (most recent call last):
  File "./nfc.py", line 62, in <module>
    handler = UsbDeviceFinder.find()
  File "./nfc.py", line 49, in find
    handler = cls._cls_matcher(device)
  File "./nfc.py", line 36, in _cls_matcher
    return matcher.handler(device)
  File "./nfc.py", line 22, in <lambda>
    UsbDeviceMatcher({'idVendor': 0x0A5C, 'idProduct': 0x5843}, lambda device: __import__('cv3').ControlVault3(device)),
  File "/home/Download/controlvault2-nfc-enable-cv3/cv3.py", line 26, in __init__
    self.communicator = cvcomm.ControlVaultCommunicator(device)
  File "/home/Download/controlvault2-nfc-enable-cv3/cvcomm.py", line 13, in __init__
    self.bulk_in, self.bulk_out = self._find_endpoints()
  File "/home/Download/controlvault2-nfc-enable-cv3/cvcomm.py", line 68, in _find_endpoints
    raise Exception('Cannot find vendor-specific interface')
Exception: Cannot find vendor-specific interface
jacekkow commented 4 years ago

This is a part I have not touched - iInterface value is different. I have just pushed another update.

aeyno commented 4 years ago

It works! I'm now able to use pcsc_scan ! Thank you very much for this!

jacekkow commented 4 years ago

There is probably some room for improvements, but I'll leave it for when I get my hands on some laptop with that chip.

Great it works, I'll push these changes to master branch.