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. |