Enable NFC for Linux and pcscd on Dell E7470 (and others) with ControlVault2
Szabolcs Hubai
2019-08-02 6b959a51a468c3bbf5b91890dc90e950393f37da
commit | author | age
ec8c66 1 # Enable NFC on Dell ControlVault2
JK 2
3 ## Introduction
4
5 Recent Dell laptops - i.e. E7470 - contain integrated Broadcom NFC (contactless), (contacted) chip card and fingerprint reader (USB 0a5c:5834 - Broadcom BCM5880 USH).
6
7 The contacted card reader works out of the box on Linux, yet NFC reader does not - no RF field is present.
8
9 Instructions from [blog.g3rt.nl](https://blog.g3rt.nl/enable-dell-nfc-contactless-reader.html) are not applicable: the ushdiag.exe does not recognize the device at all.
10
11 This project aims to enable Linux to read NFC cards the same way Windows does.
12
13 ## Usage
14
15 1. Clone the repository.
16 1. Install python3 and python3-usb.
13e114 17 1. Run: `./bcm20795.py on` (use `sudo` if necessary).
ec8c66 18 1. Run `pcsc_scan` or whatever you prefer.
JK 19 1. Enjoy!
20
21 To disable the reader replace `on` with `off`.
22
23 ## Supported devices
24
25 Currently only the following devices were tested and are known to work:
26
27 * `0a5c:5834`
28
29 Firmware update (done during driver installation on Windows) may be required.
30
8287e9 31 ## Tested on
JK 32
33 * Dell Latitude E7470
34 * Dell Latitude 7280
6b959a 35 * Dell Latitude 5491
8287e9 36
ec8c66 37 ## How it works?
JK 38
39 Python script sends the same sequence of commands the Windows driver does. The traffic was sniffed using USBPcap and Wireshark (kudos to [~jkramarz](https://github.com/jkramarz) for that).
40
41 The data is sent as-is and responses are read, but no error-checking is done.
42
43 The semi-annotated traffic dump is available as [traffic.txt](traffic.txt) - feel free to decode it further!
44
45 The communication protocol is based on NCI (NFC Controller Interface). Unfortunately the specs are not freely available and some proprietary extensions are used. libnfc-nci and kernel sources were used to decode some structs.
46
47 ## References
48
49 * https://android.googlesource.com/platform/external/libnfc-nci/ - the driver of NFC component (BCM 20795),
50 * https://blog.g3rt.nl/enable-dell-nfc-contactless-reader.html - this does not work on E7470.