Enable NFC for Linux and pcscd on Dell E7470 (and others) with ControlVault2
Ben Harris
2021-02-03 f3b864392366cbef862f8cca493c2ff0e72c94db
commit | author | age
f83421 1 # Enable NFC on Dell ControlVault2 and ControlVault3
ec8c66 2
JK 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.
f83421 17 1. Run: `./nfc.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
f83421 27 * `0a5c:5832` (ControlVault 2),
JK 28 * `0a5c:5834` (ControlVault 2),
f3b864 29 * `0a5c:5842` (ControlVault 3).
f83421 30 * `0a5c:5843` (ControlVault 3).
ec8c66 31
JK 32 Firmware update (done during driver installation on Windows) may be required.
33
8287e9 34 ## Tested on
JK 35
f3b864 36 * Dell Latitude 5310 2-in-1
04e698 37 * Dell Latitude 5480
6b959a 38 * Dell Latitude 5491
04e698 39 * Dell Latitude 7280
e75db2 40 * Dell Latitude 7290
MJ 41 * Dell Latitude 7390
f83421 42 * Dell Latitude 7400
04e698 43 * Dell Latitude E5270
9f147e 44 * Dell Latitude E5570
04e698 45 * Dell Latitude E7470
JK 46 * Dell Latitude E7490
8287e9 47
ec8c66 48 ## How it works?
JK 49
f83421 50 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) and [~lgarbarini](https://github.com/lgarbarini) and for that).
ec8c66 51
JK 52 The data is sent as-is and responses are read, but no error-checking is done.
53
f83421 54 The semi-annotated traffic dumps are available as [traffic_cv2.txt](traffic_cv2.txt) and [traffic_cv3.txt](traffic_cv3.txt) - feel free to decode it further!
ec8c66 55
f83421 56 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 vendor-independent structs.
ec8c66 57
JK 58 ## References
59
60 * https://android.googlesource.com/platform/external/libnfc-nci/ - the driver of NFC component (BCM 20795),
61 * https://blog.g3rt.nl/enable-dell-nfc-contactless-reader.html - this does not work on E7470.