Enable NFC for Linux and pcscd on Dell E7470 (and others) with ControlVault2
Jacek Kowalski
2019-03-25 ec8c6648819d21167a67817c0e6fa5c9937ec289
Add README.md
1 files added
44 ■■■■■ changed files
README.md 44 ●●●●● patch | view | raw | blame | history
README.md
New file
@@ -0,0 +1,44 @@
# Enable NFC on Dell ControlVault2
## Introduction
Recent Dell laptops - i.e. E7470 - contain integrated Broadcom NFC (contactless), (contacted) chip card and fingerprint reader (USB 0a5c:5834 - Broadcom BCM5880 USH).
The contacted card reader works out of the box on Linux, yet NFC reader does not - no RF field is present.
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.
This project aims to enable Linux to read NFC cards the same way Windows does.
## Usage
1. Clone the repository.
1. Install python3 and python3-usb.
1. Run: `./bcm20795.py on`
1. Run `pcsc_scan` or whatever you prefer.
1. Enjoy!
To disable the reader replace `on` with `off`.
## Supported devices
Currently only the following devices were tested and are known to work:
* `0a5c:5834`
Firmware update (done during driver installation on Windows) may be required.
## How it works?
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).
The data is sent as-is and responses are read, but no error-checking is done.
The semi-annotated traffic dump is available as [traffic.txt](traffic.txt) - feel free to decode it further!
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.
## References
* https://android.googlesource.com/platform/external/libnfc-nci/ - the driver of NFC component (BCM 20795),
* https://blog.g3rt.nl/enable-dell-nfc-contactless-reader.html - this does not work on E7470.