Manual browser: bthcid(8)

BTHCID(8) System Manager's Manual BTHCID(8)


bthcidBluetooth Link Key/PIN Code Manager


bthcid [-fn] [-d device] [-m mode] [-s socket_name]

bthcid [-h]


The bthcid daemon handles Link Key and PIN code requests for Bluetooth devices. It opens a raw HCI socket and listens for the following HCI events.

bthcid scans the /var/db/bthcid.keys file for a cached link key matching the remote device BD_ADDR and, if found, the Link_Key_Request_Reply will be sent back to the device, otherwise the Link_Key_Request_Negative_Reply will be sent.

When a new link key is created by the device, it will be cached for future use in the /var/db/bthcid.keys link keys file, which will be created if it does not already exist.

The bthcid daemon checks its PIN cache for a matching remote device entry. If no PIN is found, the bthcid daemon will send a message to any PIN clients that have registered, with the device details and a timeout value. When no clients are available or the timeout has expired, bthcid will send a PIN_Code_Request_Negative_Reply back to the device. When a PIN is found, or if a client responds within the timeout period, a PIN_Code_Request_Reply will be sent back to the device.

PINs received from clients will be cached for 5 minutes until used, and may be added to the cache prior to pairing with the btpin(1) utility.

Some of the functionality of bthcid can be handled by the Bluetooth controller directly, and cached Link Keys may be examined, deleted or moved to device storage using the btkey(1) program.

The command line options are as follows:

-d device
Specify the local Bluetooth device address. The default is BDADDR_ANY.
Run in foreground (do not detach).
Display usage message and exit.
Specify the file mode access bits for the PIN client socket. The default is to allow readwrite access to user and group (0660).
Do not listen for PIN clients.
-s socket_name
Specify the socket name to listen on for PIN clients. The default path is /var/run/bthcid.




The bthcid daemon first appeared in FreeBSD 5.3 as hcsecd. It was ported to NetBSD 4.0 with its present name and extended to support PIN clients by Iain Hibbert under the sponsorship of Itronix, Inc.


Maksim Yevmenkin <> Iain Hibbert
September 29, 2006 NetBSD 7.0