Enable NFC for Linux and pcscd on Dell E7470 (and others) with ControlVault2
edit | blame | history | raw

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 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.
  2. Install python3 and python3-usb.
  3. Run: ./bcm20795.py on (use sudo if necessary).
  4. Run pcsc_scan or whatever you prefer.
  5. Enjoy!

To disable the reader replace on with off.

Supported devices

Currently only the following devices were tested and are known to work:

  • 0a5c:5832
  • 0a5c:5834

Firmware update (done during driver installation on Windows) may be required.

Tested on

  • Dell Latitude 5480
  • Dell Latitude 5491
  • Dell Latitude 7280
  • Dell Latitude 7290
  • Dell Latitude 7390
  • Dell Latitude E5270
  • Dell Latitude E7470
  • Dell Latitude E7490

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