commit | author | age
|
eb0c00
|
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. |
eb0c00
|
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 |
|
eb0c00
|
27 |
* `0a5c:5832` (ControlVault 2), |
JK |
28 |
* `0a5c:5833` (ControlVault 3), |
|
29 |
* `0a5c:5834` (ControlVault 2). |
ec8c66
|
30 |
|
JK |
31 |
Firmware update (done during driver installation on Windows) may be required. |
|
32 |
|
8287e9
|
33 |
## Tested on |
JK |
34 |
|
04e698
|
35 |
* Dell Latitude 5480 |
6b959a
|
36 |
* Dell Latitude 5491 |
04e698
|
37 |
* Dell Latitude 7280 |
eb0c00
|
38 |
* Dell Latitude 7400 |
04e698
|
39 |
* Dell Latitude E5270 |
JK |
40 |
* Dell Latitude E7470 |
|
41 |
* Dell Latitude E7490 |
8287e9
|
42 |
|
ec8c66
|
43 |
## How it works? |
JK |
44 |
|
eb0c00
|
45 |
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
|
46 |
|
JK |
47 |
The data is sent as-is and responses are read, but no error-checking is done. |
|
48 |
|
eb0c00
|
49 |
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
|
50 |
|
eb0c00
|
51 |
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
|
52 |
|
JK |
53 |
## References |
|
54 |
|
|
55 |
* https://android.googlesource.com/platform/external/libnfc-nci/ - the driver of NFC component (BCM 20795), |
|
56 |
* https://blog.g3rt.nl/enable-dell-nfc-contactless-reader.html - this does not work on E7470. |