bccmd
Configure and control Broadcom Bluetooth devices
SYNOPSIS
bccmd [-i dev] [-t] [-E] [-v] [<ogf ocf>] [<params>]
PARAMETERS
-i, --device=DEV
Specify local Bluetooth device (e.g., hci0)
-t, --tool
Enable tool mode for subcommands like hcireset, hcisend
-E, --event
Enable event reporting from controller
-v, --verbose
Increase verbosity level for debugging
DESCRIPTION
bccmd is a low-level command-line utility from the BlueZ Bluetooth protocol stack for Linux. It enables direct interaction with Bluetooth host controllers by sending raw Host Controller Interface (HCI) commands and events. This tool is essential for debugging, firmware testing, vendor-specific operations, and advanced hardware configuration not available through user-friendly tools like bluetoothctl.
Users can query controller capabilities, reset adapters, read/write link keys, manage features, and monitor events. bccmd supports multiple controllers via device specification and provides verbose logging. It operates at the HCI layer (OGF/OCF opcode format), making it powerful for developers and sysadmins dealing with Bluetooth stacks. Typically requires root access and is used alongside tools like hciconfig for full adapter management.
CAVEATS
Requires root privileges for most operations.
Intended for advanced users; misuse can disrupt Bluetooth functionality.
Not all controllers support every HCI command.
COMMON USAGE EXAMPLES
Reset controller: bccmd -i hci0 hci reset
Read version: bccmd 0x03 0x0001
Send vendor cmd: bccmd 0x3f 0x0050 param1 param2
HCI OPCODE FORMAT
Commands use <OGF> <OCF> (e.g., 0x03 0x0001 for read local version). See Bluetooth Core Spec for codes.
HISTORY
Introduced in BlueZ 5.37 (2015) as a versatile HCI command sender, evolving from earlier hcitool features. Developed by Linux Bluetooth maintainers for enhanced low-level control.
SEE ALSO
bluetoothctl(1), hciconfig(8), hcitool(1), btmgmt(8)


