LinuxCommandLibrary

hciconfig

Configure Bluetooth devices

SYNOPSIS

hciconfig [-a|--all] [-s|--short] [-t=bredr|le|amp] [controller [command [args]]]

PARAMETERS

-a, --all
    Display full controller information and features

-s, --short
    Use compact output format

-t, --type=<type>
    Set controller type: bredr (BR/EDR), le (Low Energy), amp (AMP)

--help
    Show usage summary and exit

--version
    Print version and exit

<controller>
    HCI device name, e.g. hci0, hci1

auth [<0|1>]
    Disable (0) or enable (1) authentication (default: 1)

class 0x<value>
    Set device class (6 hex digits: major, minor, services)

connect [<0|1>]
    Disable (0) or enable (1) connect scanning (default: 1)

encrypt [<0|1>]
    Disable (0) or enable (1) encryption (default: 0)

name "<name>"
    Set device name (quoted string, max 248 chars)

page <interval> <window>
    Set paging scan interval/window (0.625ms units, 0x0002-0x8000)

pagescan <interval> <window>
    Set page scan interval/window (same range)

pair [<0|1>]
    Disable (0) or enable (1) pairing (default: 0)

piscan <interval> <window>
    Set inquiry scan interval/window

reset
    Reset controller and link keys

roleswitch [<0|1>]
    Disable (0) or enable (1) role switch (default: 1)

sspmode [<0|1|2>]
    Set SSP mode: off(0), on(1), only(2)

up
    Open and initialize HCI device

down
    Close HCI device

DESCRIPTION

hciconfig is a command-line tool from the Linux BlueZ Bluetooth stack for querying and configuring Host Controller Interface (HCI) devices, which represent Bluetooth adapters.

It displays device status, features, and parameters like name, class, authentication mode, and scan settings. Without arguments, it lists all detected HCI devices with basic info such as type, bus, BD address, ACL/SCO mtu, and state (UP/RUNNING or DOWN).

Specifying a device (e.g., hci0) shows detailed info. Subcommands set properties: bring interfaces up/down, enable/disable auth/encryption, set device name/class, adjust page/scan intervals, and more. The -a option reveals all features; -s shortens output.

Root privileges are typically required for configuration. It's interactive for troubleshooting Bluetooth but interactive for scripting basic adapter control.

Note: Deprecated in BlueZ 5.41+; prefer bluetoothctl (user-friendly) or btmgmt (low-level mgmt interface) for new code.

CAVEATS

Deprecated: Removed from BlueZ 5.70+; use btmgmt or bluetoothctl. Requires root for config changes. Not for LE-only advertising/scanning (use bluetoothctl). Output assumes kernel support.

DISPLAY COMMANDS

Run hciconfig hci0 features, version, or revision without args to query specific info.

PERMISSIONS

Query works unprivileged; config (up/down/set) needs CAP_NET_ADMIN or root.

HISTORY

Developed in early 2000s by BlueZ project (Qualcomm/Atheros, Marcel Holtmann). Integral to Linux Bluetooth since kernel 2.4/2.6 eras. Deprecated post-2016 as BlueZ shifted to DBus/MGMT interface for multi-transport support.

SEE ALSO

bluetoothctl(1), btmgmt(8), hcitool(1), hcimtool(1), rfkill(8)

Copied to clipboard