Enabling contactless Broadcom readers

Current status

Some Dell laptops have a Broadcom smart card reader. Some readers are for contact cards and some are for contactless cards. Contact readers should work fine with my CCID driver and are listed in the Should work but untested by me list.

However, none of the contactless readers are supported by my driver and are in the Unsupported or partly supported CCID readers.

Example with a Dell Latitude 7350

$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 0bda:557e Realtek Semiconductor Corp. Integrated_Webcam_FHD
Bus 003 Device 003: ID 0a5c:5865 Broadcom Corp. 58200
Bus 003 Device 004: ID 8087:0036 Intel Corp. BE200 Bluetooth
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

The reader found is this Broadcom Corp. 58200 (USB idProduct = 0x5865).

My CCID driver web page indicates for this reader: The contactless interface is not supported.

$ pcsc_scan
PC/SC device scanner
V 1.7.5 (c) 2001-2026, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
0: Broadcom Corp 58200 [Contacted SmartCard] (0123456789ABCD) 00 00
1: Broadcom Corp 58200 [Contactless SmartCard] (0123456789ABCD) 01 00

Sat Jul  4 17:40:42 2026
 Reader 0: Broadcom Corp 58200 [Contacted SmartCard] (0123456789ABCD) 00 00
  Event number: 0
  Card state: Card removed,
 Reader 1: Broadcom Corp 58200 [Contactless SmartCard] (0123456789ABCD) 01 00
  Event number: 0
  Card state: Card removed,
Insert or remove a card or a reader...

My CCID driver finds and reports both readers/interfaces. However, only the contact reader reports card insertion and removal and can use a card.

The readers are a composite device with two CCID interfaces: "Contacted SmartCard" and "Contactless SmartCard". The device also has an interface labelled "Broadcom ControlVault 3+ w/FingerPrint" and another labelled "Broadcom NFP" (NFP stands for "Near Field Proximity").

Electromagnetic field

The contactless reader does not detect the presence of a card because its electromagnetic field is inactive.

I have a special detector that tells me when a contactless reader is, or isn't, emitting an electromagnetic field. And I see no activity at all.

Broadcom NFC service

Broadcom provides a (proprietary) program at https://packages.broadcom.com/artifactory/dell-controlvault-drivers/

The current version is brcm_linux_nfc_6.4.23.tgz.

$ tar tzvf brcm_linux_nfc_6.4.23.tgz
-rwxrwxr-x adminuser/adminuser 1427144 2026-05-01 00:48 usr/lib/broadcom-nfc/bcmnfcd.bin
-rw-rw-r-- adminuser/adminuser   26117 2026-05-01 00:48 usr/lib/broadcom-nfc/bcmnfcd.conf
-r-xr-xr-x adminuser/adminuser     155 2026-05-01 00:48 filelist
-r-xr-xr-x adminuser/adminuser     961 2026-05-01 00:48 install.sh
-r-xr-xr-x adminuser/adminuser      83 2026-05-01 00:48 rm.sh
-r-xr-xr-x adminuser/adminuser     249 2026-05-01 00:48 etc/systemd/system/broadcom-nfc.service
-r-xr-xr-x adminuser/adminuser     157 2026-05-01 00:48 lib/systemd/system-sleep/bcmnfcd-control.sh
-r-xr-xr-x adminuser/adminuser    2098 2026-05-01 00:48 readme.txt
-r-xr-xr-x adminuser/adminuser    4325 2026-05-01 00:48 LICENSE.broadcom

Readme

Extract from the readme.txt file:

===========================================================
                         Broadcom NFC Daemon for Linux
===========================================================


================
DESCRIPTION
================

This package is a Linux based package to install Broadcom NFC daemon.  The NFC
daemon runs and NFC stack needed to initialize and keep the state of the NFC
controller of the CV device.  The sole purpose of this NFC stack is to enable
the Contactless CCID interface.

It is assumed higher level software such as PCSC Lite will be used in
conjunction with the NFC daemon.

[...]

Installation

After installation, the process bcmnfcd.bin is running:

$ systemctl status broadcom-nfc.service
● broadcom-nfc.service - Broadcom NFC service
         Loaded: loaded (/etc/systemd/system/broadcom-nfc.service; enabled; preset: enabled)
         Active: active (running) since Sat 2026-07-04 13:19:07 CEST; 1min 19s ago
 Invocation: 45b58a953ed54891a3b7d3c167502c39
   Main PID: 9271 (bcmnfcd.bin)
          Tasks: 6 (limit: 18475)
         Memory: 2.5M (peak: 3.5M)
                CPU: 48ms
         CGroup: /system.slice/broadcom-nfc.service
                         └─9271 /usr/lib/broadcom-nfc/bcmnfcd.bin -d -f -c /usr/lib/broadcom-nfc/

Use

And it is now possible to detect and use contactless smart cards.

$ pcsc_scan
PC/SC device scanner
V 1.7.3 (c) 2001-2024, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
0: Broadcom Corp 58200 [Contacted SmartCard] (0123456789ABCD) 00 00
1: Broadcom Corp 58200 [Contactless SmartCard] (0123456789ABCD) 01 00

Sat Jul  4 13:21:48 2026
 Reader 0: Broadcom Corp 58200 [Contacted SmartCard] (0123456789ABCD) 00 00
  Event number: 0
  Card state: Card removed,
 Reader 1: Broadcom Corp 58200 [Contactless SmartCard] (0123456789ABCD) 01 00
  Event number: 4
  Card state: Card removed,

Sat Jul  4 13:21:50 2026
 Reader 1: Broadcom Corp 58200 [Contactless SmartCard] (0123456789ABCD) 01 00
  Event number: 5
  Card state: Card inserted,
  ATR: 3B 8F 80 01 80 91 00 31 80 65 B0 84 05 00 25 83 01 90 00 CD

ATR: 3B 8F 80 01 80 91 00 31 80 65 B0 84 05 00 25 83 01 90 00 CD
+ TS = 3B --> Direct Convention
+ T0 = 8F, Y(1): 1000, K: 15 (historical bytes)
  TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0
-----
  TD(2) = 01 --> Y(i+1) = 0000, Protocol T = 1
-----
+ Historical bytes: 80 91 00 31 80 65 B0 84 05 00 25 83 01 90 00
  Category indicator byte: 80 (compact TLV data object)
        Tag: 9, len: 1 (unknown)
          Value: 00
        Tag: 3, len: 1 (card service data byte)
          Card service data byte: 80
                - Application selection: by full DF name
                - EF.DIR and EF.ATR access services: by GET RECORD(s) command
                - Card with MF
        Tag: 6, len: 5 (pre-issuing data)
          Data: B0 84 05 00 25
        Tag: 8, len: 3 (status indicator)
          LCS (life card cycle): 01 (Creation state)
          SW: 9000 (Normal processing.)
+ TCK = CD (correct checksum)

Possibly identified card (using /home/ludovic/.cache/smartcard_list.txt):
3B 8F 80 01 80 91 00 31 80 65 B0 84 05 00 25 83 01 90 00 CD
        Contactless IDCore3230 build 6.8, test APDU applet (JavaCard)

If you stop the /usr/lib/broadcom-nfc/bcmnfcd.bin process then the contactless reader is disabled again.

The process does more than just initialise the contactless reader.

License

Extract from the LICENSE.broadcom file:

Copyright: Copyright © 2005-2023 Broadcom. All Rights Reserved.
The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
License: Proprietary
[...]

The program is proprietary. The source code is not provided.

I understand this can be problematic. A Free Software solution would be preferable.

If you want to use a contactless reader that works without a non-free "driver" you can use one from the supported list or check the contactless support if you use a reader from the should work list.

I note that, in order to use the Wi-Fi card on this laptop, I need to install the package firmware-iwlwifi which comes from the Debian non-free-firmware repository. This is a similar issue, except that for the non-free program for the contactless reader runs on the main CPU rather than the Wi-Fi card CPU.

Conclusion

Broadcom provides a program that enables the use of the contactless readers.

It is not perfect, since the license is NOT Free Software. However, it does allow you to use the contactless reader if you really need to.