BLUETOOTHCTL-MGMT(1)

🌸 NAME

Okay bestie, this is the manual page for bluetoothctl-mgmt β€” the BLUETOOTHCTL-MGMT(1) management-submenu one from the Linux System Administration section β€” and its whole name is literally Management Submenu. Slay.


✨ SYNOPSIS

bluetoothctl [--options] [mgmt.commands]
NOTE: This submenu communicates directly with the kernel via the Bluetooth Management socket (mgmt), bypassing the BlueZ D-Bus API. Commands use the Bluetooth Management API defined in the kernel documentation. It's giving direct-line-to-the-kernel energy, no middleman vibes. πŸ’…

πŸ‘‘ MGMT COMMANDS

πŸŽ€ select

Select a different index.

Usage

Usage  > select <index>
  • <index> β€” Controller index number (0-based) to select. Bestie, the count starts at zero, that's just the rule. ✨

Example β€” Select controller index 0 (hci0)

> select 0

Example β€” Select controller index 1 (hci1)

> select 1

Example β€” Select controller index 2 (hci2)

> select 2

πŸ” revision

Get the MGMT Revision.

Usage

Usage  > revision

Example β€” Display MGMT API revision information

> revision

πŸ“œ commands

List supported commands.

Usage

Usage  > commands

Example β€” List all supported management commands

> commands

βš™οΈ config

Show configuration info.

Usage

Usage  > config

Example β€” Show current controller configuration

> config

πŸ’– info

Show controller info.

Usage

Usage  > info

Example β€” Show detailed controller information

> info

πŸ¦‹ extinfo

Show extended controller info.

Usage

Usage  > extinfo

Example β€” Show extended controller information

> extinfo

πŸ”₯ auto-power

Power all available features.

Usage

Usage  > auto-power

Example β€” Automatically power on all available controller features

> auto-power

🫢 power

Toggle powered state.

Usage

Usage  > power <on/off>
  • <on/off> β€” Power state: on to enable the controller, off to disable it. Very choose-your-own-adventure. πŸ’…

Example β€” Power on the controller

> power on

Example β€” Power off the controller

> power off

🌈 discov

Toggle discoverable state.

Usage

Usage  > discov <yes/no/limited> [timeout]
  • <yes/no/limited> β€” Discoverable mode: yes for general, no to disable, limited for limited discoverable. Pick your vibe. ✨
  • [timeout] β€” Optional timeout in seconds for discoverable mode duration. So it can clock out on its own. ⏳

Example β€” Make controller discoverable indefinitely

> discov yes

Example β€” Make controller non-discoverable

> discov no

Example β€” Enable limited discoverable mode

> discov limited

Example β€” Make discoverable for 30 seconds

> discov yes 30

Example β€” Make discoverable for 2 minutes

> discov yes 120

Example β€” Make discoverable for 5 minutes

> discov yes 300

Example β€” Limited discoverable for 60 seconds

> discov limited 60

🧚 connectable

Toggle connectable state.

Usage

Usage  > connectable <on/off>
  • <on/off> β€” Connectable state: on to allow connections, off to reject. Boundaries, bestie. πŸšͺ✨

Example β€” Make controller connectable

> connectable on

Example β€” Make controller non-connectable

> connectable off

⚑ fast-conn

Toggle fast connectable state.

Usage

Usage  > fast-conn <on/off>
  • <on/off> β€” Fast connectable state: on to enable fast connection mode, off to disable. Speedy vibes only. πŸ”₯

Example β€” Enable fast connectable mode

> fast-conn on

Example β€” Disable fast connectable mode

> fast-conn off

πŸ’« bondable

Toggle bondable state.

Usage

Usage  > bondable <on/off>
  • <on/off> β€” Bondable state: on to enable bonding capability, off to disable. Make it make sense. πŸ’–

Example β€” Enable bonding capability

> bondable on

Example β€” Disable bonding capability

> bondable off

πŸŽ€ pairable

Toggle bondable state. Yes, that's the label the page gives this one; the arg below is all about pairable, bestie. πŸ™ˆ

Usage

Usage  > pairable <on/off>
  • <on/off> β€” Pairable state: on to enable pairing capability, off to disable. Pairing permissions, periodt. ✨

Example β€” Enable pairing capability

> pairable on

Example β€” Disable pairing capability

> pairable off

πŸ” linksec

Toggle link level security.

Usage

Usage  > linksec <on/off>
  • <on/off> β€” Link level security: on to enable, off to disable. Security check, but make it link-level. πŸ’…

Example β€” Enable link level security

> linksec on

Example β€” Disable link level security

> linksec off

🌟 ssp

Toggle SSP mode.

Usage

Usage  > ssp <on/off>
  • <on/off> β€” Secure Simple Pairing mode: on to enable SSP, off to disable. Iconic acronym behavior. πŸŽ€

Example β€” Enable Secure Simple Pairing

> ssp on

Example β€” Disable Secure Simple Pairing

> ssp off

πŸ¦‹ sc

Toggle SC support.

Usage

Usage  > sc <on/off/only>
  • <on/off/only> β€” Secure Connections support: on to enable, off to disable, only for exclusive use. Exclusive-use energy, iykyk. πŸ‘‘

Example β€” Enable Secure Connections support

> sc on

Example β€” Disable Secure Connections support

> sc off

Example β€” Use Secure Connections exclusively

> sc only

πŸš€ hs

Toggle HS support.

Usage

Usage  > hs <on/off>
  • <on/off> β€” High Speed support: on to enable 802.11 High Speed, off to disable. Zoom zoom. πŸ”₯

Example β€” Enable High Speed support

> hs on

Example β€” Disable High Speed support

> hs off

🌱 le

Toggle LE support.

Usage

Usage  > le <on/off>
  • <on/off> β€” Low Energy support: on to enable LE functionality, off to disable. Low energy, high impact. ✨

Example β€” Enable Low Energy support

> le on

Example β€” Disable Low Energy support

> le off

πŸ“£ advertising

Toggle LE advertising.

Usage

Usage  > advertising <on/off>
  • <on/off> β€” LE advertising state: on to enable advertising, off to disable. It's giving main character announcement energy. πŸ’…

Example β€” Enable LE advertising

> advertising on

Example β€” Disable LE advertising

> advertising off

🎧 bredr

Toggle BR/EDR support.

Usage

Usage  > bredr <on/off>
  • <on/off> β€” BR/EDR support: on to enable Classic Bluetooth, off to disable. Classic Bluetooth stays iconic. πŸ‘‘

Example β€” Enable BR/EDR (Classic Bluetooth) support

> bredr on

Example β€” Disable BR/EDR support

> bredr off

πŸ•΅οΈ privacy

Toggle privacy support.

Usage

Usage  > privacy <on/off> [irk]
  • <on/off> β€” Privacy support: on to enable privacy features, off to disable. Private mode: activated. 🫢
  • [irk] β€” Optional 32-character hexadecimal Identity Resolving Key. Exactly 32 hex characters, no cap. πŸ”‘

Example β€” Enable privacy with auto-generated IRK

> privacy on

Example β€” Disable privacy

> privacy off

Example β€” Enable privacy with specific IRK

> privacy on 0123456789abcdef0123456789abcdef

Example β€” Enable privacy with different IRK

> privacy on 1234567890abcdef1234567890abcdef

🏷️ class

Set device major/minor class.

Usage

Usage  > class <major> <minor>
  • <major> β€” Major device class code (hexadecimal).
  • <minor> β€” Minor device class code (hexadecimal).

Example β€” Set class to Audio/Video - Wearable Headset

> class 0x04 0x01

Example β€” Set class to Audio/Video - Hands-free

> class 0x04 0x02

Example β€” Set class to Audio/Video - Headphones

> class 0x04 0x06

Example β€” Set class to Audio/Video - VCR

> class 0x04 0x0B

Example β€” Set class to Computer - Desktop workstation

> class 0x01 0x01

Example β€” Set class to Computer - Server

> class 0x01 0x02

Example β€” Set class to Computer - Laptop

> class 0x01 0x03

Example β€” Set class to Computer - Handheld PC/PDA

> class 0x01 0x04

Example β€” Set class to Phone - Cellular

> class 0x02 0x01

Example β€” Set class to Phone - Cordless

> class 0x02 0x02

Example β€” Set class to Phone - Smart phone

> class 0x02 0x03

πŸ”Œ disconnect

Disconnect device.

Usage

Usage  > disconnect [-t type] <remote address>
  • [-t type] β€” Optional address type (public, random, le_public, le_random). Pick the address vibe. ✨
  • <remote address> β€” Bluetooth address of device to disconnect.

Example β€” Disconnect device using public address

> disconnect 00:11:22:33:44:55

Example β€” Disconnect another device

> disconnect AA:BB:CC:DD:EE:FF

Example β€” Disconnect device with public address type

> disconnect -t public 00:11:22:33:44:55

Example β€” Disconnect device with random address type

> disconnect -t random AA:BB:CC:DD:EE:FF

Example β€” Disconnect LE device with public address

> disconnect -t le_public 11:22:33:44:55:66

Example β€” Disconnect LE device with random address

> disconnect -t le_random CC:DD:EE:FF:00:11

🧡 con

List connections.

Usage

Usage  > con

Example β€” List all active connections

> con

πŸ”Ž find

Discover nearby devices.

Usage

Usage  > find [-l|-b] [-L]
  • [-l|-b] β€” Discovery type: -l for LE only, -b for BR/EDR only (default: both). Both is the default, bestie. πŸ’–
  • [-L] β€” Limited discovery mode flag.

Example β€” Discover both LE and BR/EDR devices

> find

Example β€” Discover LE devices only

> find -l

Example β€” Discover BR/EDR devices only

> find -b

Example β€” Discover devices in limited mode

> find -L

Example β€” Discover LE devices in limited mode

> find -l -L

Example β€” Discover BR/EDR devices in limited mode

> find -b -L

🧚 find-service

Discover nearby service.

Usage

Usage  > find-service [-u UUID] [-r RSSI_Threshold] [-l|-b]
  • [-u UUID] β€” Service UUID to search for (16-bit, 32-bit, or 128-bit). UUID hunt: activated. πŸ”
  • [-r RSSI_Threshold] β€” Minimum RSSI value in dBm for device filtering. Signal strength gatekeeping. πŸ“Ά
  • [-l|-b] β€” Discovery type: -l for LE only, -b for BR/EDR only.

Example β€” Find devices with Generic Access service

> find-service -u 0x1800

Example β€” Find devices with Battery Service

> find-service -u 0x180F

Example β€” Find devices with custom service

> find-service -u 12345678-1234-5678-9abc-123456789abc

Example β€” Find devices with RSSI β‰₯ -60 dBm

> find-service -r -60

Example β€” Find devices with RSSI β‰₯ -80 dBm

> find-service -r -80

Example β€” Find Battery Service devices with RSSI β‰₯ -70 dBm

> find-service -u 0x180F -r -70

Example β€” Find Generic Access on LE devices with strong signal

> find-service -u 0x1800 -r -50 -l

Example β€” Find Serial Port Profile on BR/EDR devices

> find-service -u 0x1101 -b

Example β€” Find Battery Service on LE devices

> find-service -u 0x180F -l

πŸ›‘ stop-find

Stop discovery.

Usage

Usage  > stop-find [-l|-b]
  • [-l|-b] β€” Discovery type to stop: -l for LE only, -b for BR/EDR only (default: all). Stop everything unless you say otherwise. βœ‹

Example β€” Stop all discovery

> stop-find

Example β€” Stop LE discovery only

> stop-find -l

Example β€” Stop BR/EDR discovery only

> stop-find -b

🏷️ name

Set local name.

Usage

Usage  > name <name> [shortname]
  • <name> β€” Complete local name for the controller.
  • [shortname] β€” Optional shortened local name. Cute little nickname energy. πŸŽ€
  • Example: Set complete local name
> name "My Bluetooth Device"
  • Example: Set name without spaces
> name MyComputer
  • Example: Set name with hyphens
> name "Home-Office-PC"
  • Example: Set both complete and shortened names
> name "My Long Device Name" MyDevice
  • Example: Set descriptive and short names
> name "Professional Workstation" ProWork
  • Example: Set audio device names
> name "Bluetooth Audio Headset" BT-Audio

🫢 pair

Bestie, this is the "make friends with the other device" command β€” pair with a remote device, fr fr.

Usage:

> pair [-c cap] [-t type] <remote address>
  • -c cap β€” IO capability. Pick one of: DisplayOnly, DisplayYesNo, KeyboardOnly, NoInputNoOutput, KeyboardDisplay
  • -t type β€” Address type. Options are public, random, le_public, le_random
  • <remote address> β€” the Bluetooth address of the device you wanna pair with πŸ’–

Examples, get you some:

  • Example: Pair with device using default settings
> pair 00:11:22:33:44:55
  • Example: Pair with another device
> pair AA:BB:CC:DD:EE:FF
  • Example: Pair with display-only IO capability
> pair -c DisplayOnly 00:11:22:33:44:55
  • Example: Pair with display and yes/no capability
> pair -c DisplayYesNo AA:BB:CC:DD:EE:FF
  • Example: Pair with keyboard-only capability
> pair -c KeyboardOnly 11:22:33:44:55:66
  • Example: Pair with no I/O capability
> pair -c NoInputNoOutput CC:DD:EE:FF:00:11
  • Example: Pair with keyboard and display capability
> pair -c KeyboardDisplay 22:33:44:55:66:77
  • Example: Pair with public address device
> pair -t public 00:11:22:33:44:55
  • Example: Pair with random address device
> pair -t random AA:BB:CC:DD:EE:FF
  • Example: Pair with LE public address device
> pair -t le_public 11:22:33:44:55:66
  • Example: Pair with LE random address device
> pair -t le_random CC:DD:EE:FF:00:11
  • Example: Pair LE device with keyboard/display capability
> pair -c KeyboardDisplay -t le_public 00:11:22:33:44:55
  • Example: Pair random address device with display/yes-no capability
> pair -c DisplayYesNo -t random AA:BB:CC:DD:EE:FF

πŸ™ˆ cancelpair

Changed your mind mid-pair? Iconic. This cancels the pairing.

Usage:

> cancelpair [-t type] <remote address>
  • -t type β€” Address type: public, random, le_public, le_random
  • <remote address> β€” the Bluetooth address of the device to cancel pairing with

Examples:

  • Example: Cancel ongoing pairing with device
> cancelpair 00:11:22:33:44:55
  • Example: Cancel pairing with another device
> cancelpair AA:BB:CC:DD:EE:FF
  • Example: Cancel pairing with public address device
> cancelpair -t public 00:11:22:33:44:55
  • Example: Cancel pairing with LE random address device
> cancelpair -t le_random AA:BB:CC:DD:EE:FF

πŸ’€ unpair

The full breakup πŸ’” β€” this one removes the pairing for real.

Usage:

> unpair [-t type] <remote address>
  • -t type β€” Address type: public, random, le_public, le_random
  • <remote address> β€” the Bluetooth address of the device to unpair

Examples:

  • Example: Remove pairing with device
> unpair 00:11:22:33:44:55
  • Example: Remove pairing with another device
> unpair AA:BB:CC:DD:EE:FF
  • Example: Unpair public address device
> unpair -t public 00:11:22:33:44:55
  • Example: Unpair LE public address device
> unpair -t le_public 11:22:33:44:55:66
  • Example: Unpair LE random address device
> unpair -t le_random CC:DD:EE:FF:00:11

πŸ”‘ keys

Load Link Keys β€” that's it, that's the whole vibe.

Usage:

> keys
  • Example: Load stored link keys
> keys

πŸ—οΈ ltks

Load Long Term Keys. Same energy, LE flavored ✨

Usage:

> ltks
  • Example: Load stored LE long term keys
> ltks

🧚 irks

Load Identity Resolving Keys β€” and yes you can point it at a specific controller and a specific file, obsessed.

Usage:

> irks [--local index] [--file file path]
  • --local index β€” which local controller index to use
  • --file file path β€” path to a custom IRK configuration file

Examples:

  • Example: Load IRKs with default local index and file
> irks
  • Example: Load IRKs for controller index 0
> irks --local 0
  • Example: Load IRKs for controller index 1
> irks --local 1
  • Example: Load IRKs from custom configuration file
> irks --file /etc/bluetooth/irks.conf
  • Example: Load IRKs from user file
> irks --file /home/user/bluetooth_irks.txt
  • Example: Load IRKs for hci0 from specific file
> irks --local 0 --file /etc/bluetooth/hci0_irks.conf

🚫 block

Block Device β€” like soft-blocking an ex, but for real.

Usage:

> block [-t type] <remote address>
  • -t type β€” Address type: public, random, le_public, le_random
  • <remote address> β€” the Bluetooth address of the device to block

Examples:

  • Example: Block device using default address type
> block 00:11:22:33:44:55
  • Example: Block another device
> block AA:BB:CC:DD:EE:FF
  • Example: Block device with public address
> block -t public 00:11:22:33:44:55
  • Example: Block device with random address
> block -t random AA:BB:CC:DD:EE:FF
  • Example: Block LE device with public address
> block -t le_public 11:22:33:44:55:66
  • Example: Block LE device with random address
> block -t le_random CC:DD:EE:FF:00:11

πŸ¦‹ unblock

Unblock Device β€” forgiveness era 🌸

Usage:

> unblock [-t type] <remote address>
  • -t type β€” Address type: public, random, le_public, le_random
  • <remote address> β€” the Bluetooth address of the device to unblock

Examples:

  • Example: Unblock device using default address type
> unblock 00:11:22:33:44:55
  • Example: Unblock another device
> unblock AA:BB:CC:DD:EE:FF
  • Example: Unblock device with public address
> unblock -t public 00:11:22:33:44:55
  • Example: Unblock device with random address
> unblock -t random AA:BB:CC:DD:EE:FF
  • Example: Unblock LE device with public address
> unblock -t le_public 11:22:33:44:55:66
  • Example: Unblock LE device with random address
> unblock -t le_random CC:DD:EE:FF:00:11

πŸ‘‘ add-uuid

Add UUID β€” registering a service, main character registration energy.

Usage:

> add-uuid <UUID> <service class hint>
  • <UUID> β€” Service UUID (16-bit, 32-bit, or 128-bit format)
  • <service class hint> β€” Service class hint bitmask (hexadecimal)

Examples:

  • Example: Add Serial Port Profile with object transfer hint
> add-uuid 0x1101 0x100000
  • Example: Add A2DP with audio hint
> add-uuid 0x110E 0x200000
  • Example: Add HFP with audio hint
> add-uuid 0x111E 0x200000
  • Example: Add custom service UUID with no hint
> add-uuid 12345678-1234-5678-9abc-123456789abc 0x000000
  • Example: Add custom UUID with object transfer hint
> add-uuid ABCD1234-ABCD-1234-ABCD-123456789ABC 0x100000
  • Example: Add Generic Access with no specific hint
> add-uuid 0x1800 0x000000
  • Example: Add Battery Service with no hint
> add-uuid 0x180F 0x000000

πŸ’… rm-uuid

Remove UUID β€” one singular service gets yeeted.

Usage:

> rm-uuid <UUID>
  • <UUID> β€” Service UUID to remove (16-bit, 32-bit, or 128-bit format)

Examples:

  • Example: Remove Serial Port Profile UUID
> rm-uuid 0x1101
  • Example: Remove A2DP UUID
> rm-uuid 0x110E
  • Example: Remove custom service UUID
> rm-uuid 12345678-1234-5678-9abc-123456789abc

πŸŽ€ clr-uuids

Clear UUIDs β€” the clean slate moment ✨

Usage:

> clr-uuids
  • Example: Clear all registered UUIDs
> clr-uuids

⭐ local-oob

Local OOB data β€” generate your own out-of-band authentication data.

Usage:

> local-oob
  • Example: Generate and display local OOB authentication data
> local-oob

🌈 remote-oob

Remote OOB data β€” feeding in the other device's out-of-band goodies. Look at all these flags, bestie 😭

Usage:

> remote-oob [-t <addr_type>] [-r <rand192>] [-h <hash192>] [-R
        <rand256>] [-H <hash256>] <addr>
  • -t <addr_type> β€” Address type: public, random, le_public, le_random
  • -r <rand192> β€” P-192 random value (32 hexadecimal characters)
  • -h <hash192> β€” P-192 hash value (32 hexadecimal characters)
  • -R <rand256> β€” P-256 random value (64 hexadecimal characters)
  • -H <hash256> β€” P-256 hash value (64 hexadecimal characters)
  • <addr> β€” Remote device Bluetooth address

Examples:

  • Example: Set remote OOB data for device (minimal)
> remote-oob 00:11:22:33:44:55
  • Example: Set P-192 random and hash values
> remote-oob -r 0123456789abcdef0123456789abcdef -h fedcba9876543210fedcba9876543210 00:11:22:33:44:55
  • Example: Set P-256 random and hash values
> remote-oob -R 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef -H fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210 AA:BB:CC:DD:EE:FF
  • Example: Set OOB data for LE public address device
> remote-oob -t le_public 11:22:33:44:55:66
  • Example: Set OOB data for LE random address device
> remote-oob -t le_random CC:DD:EE:FF:00:11
  • Example: Set complete OOB data with both P-192 and P-256 values
> remote-oob -t public -r 0123456789abcdef0123456789abcdef -h fedcba9876543210fedcba9876543210 -R 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef -H fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210 00:11:22:33:44:55

πŸ“ did

Set Device ID β€” four hex fields, colon-separated, no spaces allowed in your feelings.

Usage:

> did <source>:<vendor>:<product>:<version>
  • <source>:<vendor>:<product>:<version> β€” Device ID in format source:vendor:product:version (all hexadecimal)

Examples:

  • Example: Set USB source with Linux Foundation vendor ID
> did 0x0002:0x1D6B:0x0001:0x0100
  • Example: Set USB device with Cypress vendor ID
> did 0x0002:0x04B4:0x1234:0x0200
  • Example: Set Bluetooth SIG source with Broadcom vendor
> did 0x0001:0x000F:0x0001:0x0100
  • Example: Set Bluetooth SIG source with Apple vendor
> did 0x0001:0x004C:0x0001:0x0100
  • Example: Set custom USB device ID
> did 0x0002:0xFFFF:0x1234:0x5678
  • Example: Set Qualcomm Bluetooth device
> did 0x0001:0x05F1:0xABCD:0x0001

🧊 static-addr

Set static address β€” a static random Bluetooth address for the controller.

Usage:

> static-addr <address>
  • <address> β€” Static random Bluetooth address (must have bits 47-46 set to 11)
⚠️ Heads up bestie: those top bits are not optional. Bits 47-46 gotta be 11 or it's not a valid static random address, periodt.

Examples:

  • Example: Set static random address (bit 47=1, bit 46=1)
> static-addr C0:00:00:00:00:01
  • Example: Set another static random address
> static-addr D0:11:22:33:44:55
  • Example: Set different static address
> static-addr E0:AA:BB:CC:DD:EE

🌸 public-addr

Set public address β€” swap out the controller's public Bluetooth address.

Usage:

> public-addr <address>
  • <address> β€” Public Bluetooth address to set for the controller

Examples:

  • Example: Set public Bluetooth address
> public-addr 00:11:22:33:44:55
  • Example: Set different public address
> public-addr AA:BB:CC:DD:EE:FF
  • Example: Set custom public address
> public-addr 12:34:56:78:9A:BC

πŸ’œ ext-config

External configuration β€” flip it on, flip it off, that's the whole job.

Usage:

> ext-config <on/off>
  • <on/off> β€” External configuration β€” "on" to enable external config, "off" to disable

Examples:

  • Example: Enable external configuration
> ext-config on
  • Example: Disable external configuration
> ext-config off

πŸ”₯ debug-keys

Toggle debug keys.

Usage:

> debug-keys <on/off>
  • <on/off> β€” debug keys support, bestie: "on" enables debug keys, "off" disables them. Simple as that πŸ’…
  • Example Enable debug key support: > debug-keys on
  • Example Disable debug key support: > debug-keys off

conn-info πŸ” β€” get the connection tea

Usage  > conn-info [-t type] <remote address>
  • -t type β€” address type (public, random, le_public, le_random)
  • <remote address> β€” Bluetooth address of connected device
  • Example Get connection information for device: > conn-info 00:11:22:33:44:55
  • Example Get info for another device: > conn-info AA:BB:CC:DD:EE:FF
  • Example Get info for public address device: > conn-info -t public 00:11:22:33:44:55
  • Example Get info for LE public address device: > conn-info -t le_public 11:22:33:44:55:66
  • Example Get info for LE random address device: > conn-info -t le_random CC:DD:EE:FF:00:11

io-cap πŸŽ€ β€” set the IO capability

Usage  > io-cap <cap>
  • <cap> β€” IO capability (DisplayOnly, DisplayYesNo, KeyboardOnly, NoInputNoOutput, KeyboardDisplay)
  • Example Set IO capability to display only: > io-cap DisplayOnly
  • Example Set IO capability to display with yes/no: > io-cap DisplayYesNo
  • Example Set IO capability to keyboard only: > io-cap KeyboardOnly
  • Example Set IO capability to no input/output: > io-cap NoInputNoOutput
  • Example Set IO capability to keyboard and display: > io-cap KeyboardDisplay

scan-params 🌸 β€” scan timing vibes

Usage  > scan-params <interval> <window>
  • <interval> β€” scan interval in hexadecimal (0x0004 to 0x4000, units of 0.625ms)
  • <window> β€” scan window in hexadecimal (0x0004 to 0x4000, units of 0.625ms)
  • Example Set fast scan (16ms interval, 16ms window): > scan-params 0x0010 0x0010
  • Example Set moderate fast scan (32ms interval, 32ms window): > scan-params 0x0020 0x0020
  • Example Set balanced scan (96ms interval, 48ms window): > scan-params 0x0060 0x0030
  • Example Set slow scan (256ms interval, 80ms window): > scan-params 0x0100 0x0050
  • Example Set background scan (2.56s interval, 18ms window): > scan-params 0x0800 0x0012
  • Example Set very slow background scan: > scan-params 0x1000 0x0020

get-clock ⏰ β€” clock info, local or remote

Usage  > get-clock [address]
  • [address] β€” optional remote device Bluetooth address (omit for local clock)
  • Example Get local Bluetooth clock information: > get-clock
  • Example Get clock information for remote device: > get-clock 00:11:22:33:44:55
  • Example Get clock for another remote device: > get-clock AA:BB:CC:DD:EE:FF

add-device πŸ‘‘ β€” add a device to the list

Usage  > add-device [-a action] [-t type] <address>
  • -a action β€” device action (auto, allow, deny) β€” "auto" for auto-connect, "allow" for allow-only, "deny" to block
  • -t type β€” address type (public, random, le_public, le_random)
  • <address> β€” Bluetooth address of device to add
  • Example Add device with auto-connect action and default type: > add-device 00:11:22:33:44:55
  • Example Add another device with defaults: > add-device AA:BB:CC:DD:EE:FF
  • Example Add device with auto-connect action: > add-device -a auto 00:11:22:33:44:55
  • Example Add device with allow-only action (no auto-connect): > add-device -a allow 11:22:33:44:55:66
  • Example Add device with deny action (blocked): > add-device -a deny CC:DD:EE:FF:00:11
  • Example Add device with public address type: > add-device -t public 00:11:22:33:44:55
  • Example Add device with random address type: > add-device -t random AA:BB:CC:DD:EE:FF
  • Example Add LE device with public address: > add-device -t le_public 11:22:33:44:55:66
  • Example Add LE device with random address: > add-device -t le_random CC:DD:EE:FF:00:11
  • Example Add LE public device with auto-connect: > add-device -a auto -t le_public 00:11:22:33:44:55
  • Example Add random address device with allow action: > add-device -a allow -t random AA:BB:CC:DD:EE:FF
  • Example Add LE random device with deny action: > add-device -a deny -t le_random CC:DD:EE:FF:00:11

del-device πŸ—‘οΈ β€” remove a device

Usage  > del-device [-t type] <address>
  • -t type β€” address type (public, random, le_public, le_random)
  • <address> β€” Bluetooth address of device to remove
  • Example Remove device using default address type: > del-device 00:11:22:33:44:55
  • Example Remove another device: > del-device AA:BB:CC:DD:EE:FF
  • Example Remove device with public address type: > del-device -t public 00:11:22:33:44:55
  • Example Remove device with random address type: > del-device -t random AA:BB:CC:DD:EE:FF
  • Example Remove LE device with public address: > del-device -t le_public 11:22:33:44:55:66
  • Example Remove LE device with random address: > del-device -t le_random CC:DD:EE:FF:00:11

clr-devices 🧹 β€” clear the whole device list

Usage  > clr-devices
  • Example Clear all devices from the device list: > clr-devices

bredr-oob πŸ” β€” local OOB data (BR/EDR)

Usage  > bredr-oob
  • Example Generate and display local BR/EDR OOB authentication data: > bredr-oob

le-oob πŸ¦‹ β€” local OOB data (LE)

Usage  > le-oob
  • Example Generate and display local LE OOB authentication data: > le-oob

advinfo ✨ β€” advertising features, revealed

Usage  > advinfo
  • Example Display advertising capabilities and supported features: > advinfo

advsize πŸ“ β€” advertising size info

Usage  > advsize [options] <instance_id>
  • [options] β€” advertising options flags
  • <instance_id> β€” advertising instance identifier (0-based)
  • Example Show advertising data size information for instance 0: > advsize 0
  • Example Show size information for advertising instance 1: > advsize 1
  • Example Show size information for advertising instance 5: > advsize 5

add-adv 🌈 β€” add an advertising instance

Usage  > add-adv [options] <instance_id>
  • [options] β€” advertising options (-c connectable, -s scannable, -g general discoverable, -l limited discoverable, -m managed flags, -p TX power)
  • <instance_id> β€” advertising instance identifier (0-based)
  • Example Add advertising instance 0 with default settings: > add-adv 0
  • Example Add advertising instance 1: > add-adv 1
  • Example Add advertising instance 5: > add-adv 5
  • Example Add connectable advertising instance 0: > add-adv -c 0
  • Example Add scannable advertising instance 1: > add-adv -s 1
  • Example Add general discoverable advertising instance 2: > add-adv -g 2
  • Example Add limited discoverable advertising instance 3: > add-adv -l 3
  • Example Add managed flags advertising instance 4: > add-adv -m 4
  • Example Add TX power advertising instance 5: > add-adv -p 5
  • Example Add connectable and scannable advertising instance: > add-adv -c -s 0
  • Example Add general discoverable with TX power: > add-adv -g -p 1
  • Example Add connectable, general discoverable, and scannable: > add-adv -c -g -s 2

rm-adv πŸ’€ β€” remove an advertising instance

Usage  > rm-adv <instance_id>
  • <instance_id> β€” advertising instance identifier (0-based) to remove
  • Example Remove advertising instance 0: > rm-adv 0
  • Example Remove advertising instance 1: > rm-adv 1
  • Example Remove advertising instance 5: > rm-adv 5

clr-adv 🫧 β€” clear all advertising instances

Usage  > clr-adv
  • Example Clear all advertising instances: > clr-adv

add-ext-adv-params 🧚 β€” extended advertising params

Usage  > add-ext-adv-params [options] <instance_id>
  • [options] β€” extended advertising options (-c connectable, -s scannable, -d directed, -h high duty cycle, -l legacy PDU, -a anonymous, -i include TX power)
  • <instance_id> β€” extended advertising instance identifier (0-based)
  • Example Add extended advertising parameters for instance 0: > add-ext-adv-params 0
  • Example Add extended advertising parameters for instance 1: > add-ext-adv-params 1
  • Example Add connectable extended advertising for instance 0: > add-ext-adv-params -c 0
  • Example Add scannable extended advertising for instance 1: > add-ext-adv-params -s 1
  • Example Add directed extended advertising for instance 2: > add-ext-adv-params -d 2
  • Example Add high duty cycle extended advertising for instance 3: > add-ext-adv-params -h 3
  • Example Add legacy PDU extended advertising for instance 4: > add-ext-adv-params -l 4
  • Example Add anonymous extended advertising for instance 5: > add-ext-adv-params -a 5
  • Example Add include TX power extended advertising for instance 6: > add-ext-adv-params -i 6
  • Example Add connectable and scannable extended advertising: > add-ext-adv-params -c -s 0
  • Example Add connectable extended advertising with TX power: > add-ext-adv-params -c -i 1
  • Example Add scannable legacy PDU extended advertising: > add-ext-adv-params -s -l 2

add-ext-adv-data πŸ’œ β€” extended advertising data

Usage  > add-ext-adv-data [options] <instance_id>
  • [options] β€” data options (-s for scan response data, -c for complete data)
  • <instance_id> β€” extended advertising instance identifier (0-based)
  • Example Add advertising data to extended instance 0: > add-ext-adv-data 0
  • Example Add advertising data to extended instance 1: > add-ext-adv-data 1
  • Example Add scan response data to extended instance 0: > add-ext-adv-data -s 0
  • Example Add scan response data to extended instance 1: > add-ext-adv-data -s 1
  • Example Add complete advertising data to instance 0: > add-ext-adv-data -c 0
  • Example Add complete scan response data to instance 1: > add-ext-adv-data -c -s 1

appearance πŸŽ€ β€” set the appearance value

Usage  > appearance <appearance>
  • <appearance> β€” appearance value (16-bit integer) representing device type
  • Example Set appearance to Unknown: > appearance 0
  • Example Set appearance to Generic Phone: > appearance 64
  • Example Set appearance to Generic Computer: > appearance 128
  • Example Set appearance to Generic Audio/Video device: > appearance 832
  • Example Set appearance to Speaker: > appearance 833
  • Example Set appearance to Microphone: > appearance 834
  • Example Set appearance to Headset: > appearance 835

okay so, the rest of the appearance examples β€” same exact numbers, same main-character energy:

  • Example Set appearance to Headphones β€” > appearance 836
  • Example Set appearance to Generic HID β€” > appearance 960
  • Example Set appearance to Keyboard β€” > appearance 961
  • Example Set appearance to Mouse β€” > appearance 962
  • Example Set appearance to Joystick β€” > appearance 963
  • Example Set appearance to Generic Health Sensor β€” > appearance 1344
  • Example Set appearance to Heart Rate Sensor β€” > appearance 1345
  • Example Set appearance to Blood Pressure Monitor β€” > appearance 1346
  • Example Set appearance to Generic Sports and Fitness β€” > appearance 1472
  • Example Set appearance to Location Display β€” > appearance 1473
  • Example Set appearance to Location Navigation Display β€” > appearance 1474

πŸ¦‹ phy πŸ¦‹

Get/Set PHY Configuration. This one is basically the PHY flag buffet, bestie.

Usage:

> phy [LE1MTX] [LE1MRX] [LE2MTX] [LE2MRX] [LECODEDTX] [LECODEDRX]
      [BR1M1SLOT] [BR1M3SLOT] [BR1M5SLOT][EDR2M1SLOT] [EDR2M3SLOT]
      [EDR2M5SLOT][EDR3M1SLOT] [EDR3M3SLOT] [EDR3M5SLOT]
  • [PHY flags] β€” PHY configuration flags to enable (LE1MTX, LE1MRX, LE2MTX, LE2MRX, LECODEDTX, LECODEDRX, BR1M1SLOT, etc.)
  • Example Display current PHY configuration β€” > phy
  • Example Enable LE 1M TX PHY β€” > phy LE1MTX
  • Example Enable LE 1M RX PHY β€” > phy LE1MRX
  • Example Enable LE 2M TX PHY β€” > phy LE2MTX
  • Example Enable LE 2M RX PHY β€” > phy LE2MRX
  • Example Enable LE Coded TX PHY β€” > phy LECODEDTX
  • Example Enable LE Coded RX PHY β€” > phy LECODEDRX
  • Example Enable BR 1M 1-slot packets β€” > phy BR1M1SLOT
  • Example Enable BR 1M 3-slot packets β€” > phy BR1M3SLOT
  • Example Enable BR 1M 5-slot packets β€” > phy BR1M5SLOT
  • Example Enable EDR 2M 1-slot packets β€” > phy EDR2M1SLOT
  • Example Enable EDR 2M 3-slot packets β€” > phy EDR2M3SLOT
  • Example Enable EDR 2M 5-slot packets β€” > phy EDR2M5SLOT
  • Example Enable EDR 3M 1-slot packets β€” > phy EDR3M1SLOT
  • Example Enable EDR 3M 3-slot packets β€” > phy EDR3M3SLOT
  • Example Enable EDR 3M 5-slot packets β€” > phy EDR3M5SLOT
  • Example Enable LE 1M TX and RX PHYs β€” > phy LE1MTX LE1MRX
  • Example Enable LE 1M and 2M TX/RX PHYs β€” > phy LE1MTX LE1MRX LE2MTX LE2MRX
  • Example Enable 1-slot packets for all BR/EDR PHYs β€” > phy BR1M1SLOT EDR2M1SLOT EDR3M1SLOT

πŸŽ€ wbs πŸŽ€

Toggle Wideband-Speech support. Cute little on/off moment.

Usage:

> wbs <on/off>
  • <on/off> β€” Wideband Speech support β€” "on" to enable for audio profiles, "off" to disable
  • Example Enable Wideband Speech support for audio profiles β€” > wbs on
  • Example Disable Wideband Speech support β€” > wbs off

πŸ” secinfo πŸ”

Show security information. The receipts, basically.

Usage:

> secinfo
  • Example Display security features and capabilities β€” > secinfo

πŸ§ͺ expinfo πŸ§ͺ

Show experimental features. The lab-notebook vibe.

Usage:

> expinfo
  • Example Display available experimental features and their status β€” > expinfo

πŸ› οΈ exp-debug πŸ› οΈ

Set debug feature. Flipping the tiny debug switch.

Usage:

> exp-debug <on/off>
  • <on/off> β€” Experimental debug features β€” "on" to enable, "off" to disable
  • Example Enable experimental debug features β€” > exp-debug on
  • Example Disable experimental debug features β€” > exp-debug off

πŸ•΅οΈ exp-privacy πŸ•΅οΈ

Set LL privacy feature. Very stealth, very demure.

Usage:

> exp-privacy <on/off>
  • <on/off> β€” Experimental Link Layer privacy β€” "on" to enable LL privacy features, "off" to disable
  • Example Enable experimental Link Layer privacy features β€” > exp-privacy on
  • Example Disable experimental Link Layer privacy features β€” > exp-privacy off

πŸ“Š exp-quality πŸ“Š

Set bluetooth quality report feature. Quality check energy.

Usage:

> exp-quality <on/off>
  • <on/off> β€” Experimental quality reporting β€” "on" to enable Bluetooth quality reports, "off" to disable
  • Example Enable experimental Bluetooth quality reporting β€” > exp-quality on
  • Example Disable experimental Bluetooth quality reporting β€” > exp-quality off

🎧 exp-offload 🎧

Toggle codec support. Codec offload said let me handle it.

Usage:

> exp-offload <on/off>
  • <on/off> β€” Experimental codec offload β€” "on" to enable codec offload support, "off" to disable
  • Example Enable experimental codec offload support β€” > exp-offload on
  • Example Disable experimental codec offload support β€” > exp-offload off

πŸ”Š exp-iso πŸ”Š

Toggle ISO Socket support. ISO socket girlie reporting for duty.

Usage:

> exp-iso <on/off>
  • <on/off> β€” Experimental ISO Socket support β€” "on" to enable ISO Socket support, "off" to disable
  • Example Enable experimental ISO Socket support β€” > exp-offload on
  • Example Disable experimental ISO Socket support β€” > exp-offload off
bestie, yes β€” those examples literally say exp-offload even in the exp-iso section. Copy them exactly as written, no editing, no cap.

πŸ“– read-sysconfig πŸ“–

Read System Configuration. Just reading the room, system-config style.

Usage:

> read-sysconfig
  • Example Read current system configuration parameters β€” > read-sysconfig

βš™οΈ set-sysconfig βš™οΈ

Set System Configuration. This is the big config slay.

Usage:

> set-sysconfig <-v|-h> [options...]
  • <-v|-h> β€” Verbose output or help flag
  • [options...] β€” System configuration options (--br-page-scan-type, --br-page-scan-interval, etc.)
  • Example Show help for system configuration options β€” > set-sysconfig -h
  • Example Set system configuration with verbose output β€” > set-sysconfig -v
  • Example Set BR/EDR page scan type with verbose output β€” > set-sysconfig -v --br-page-scan-type=0
  • Example Set BR/EDR page scan interval β€” > set-sysconfig -v --br-page-scan-interval=0x800
  • Example Set BR/EDR page scan window β€” > set-sysconfig -v --br-page-scan-window=0x12
  • Example Set BR/EDR inquiry scan type β€” > set-sysconfig -v --br-inquiry-scan-type=0
  • Example Set BR/EDR link supervision timeout β€” > set-sysconfig -v --br-link-supervision-timeout=0x2000
  • Example Set LE minimum connection interval β€” > set-sysconfig -v --le-min-connection-interval=0x18
  • Example Set LE maximum connection interval β€” > set-sysconfig -v --le-max-connection-interval=0x28
  • Example Set multiple BR/EDR scan parameters β€” > set-sysconfig -v --br-page-scan-type=0 --br-page-scan-interval=0x800 --br-page-scan-window=0x12
  • Example Set multiple LE connection parameters β€” > set-sysconfig -v --le-min-connection-interval=0x18 --le-max-connection-interval=0x28 --le-connection-latency=0

🏷️ get-flags 🏷️

Get device flags. Little flag check-in for your device.

Usage:

> get-flags [-t type] <address>
  • [-t type] β€” Address type (public, random, le_public, le_random)
  • <address> β€” Bluetooth address of device to query flags for
  • Example Get device flags for device using default type β€” > get-flags 00:11:22:33:44:55
  • Example Get flags for another device β€” > get-flags AA:BB:CC:DD:EE:FF
  • Example Get flags for public address device β€” > get-flags -t public 00:11:22:33:44:55
  • Example Get flags for random address device β€” > get-flags -t random AA:BB:CC:DD:EE:FF
  • Example Get flags for LE public address device β€” > get-flags -t le_public 11:22:33:44:55:66
  • Example Get flags for LE random address device β€” > get-flags -t le_random CC:DD:EE:FF:00:11

🚩 set-flags 🚩

Set device flags. Now we're assigning the flags, very decisive.

Usage:

> set-flags [-f flags] [-t type] <address>
  • [-f flags] β€” Device flags bitmask in hexadecimal (0x01=remote wake, 0x02=privacy)
  • [-t type] β€” Address type (public, random, le_public, le_random)
  • <address> β€” Bluetooth address of device to set flags for
  • Example Set default flags for device β€” > set-flags 00:11:22:33:44:55
  • Example Set default flags for another device β€” > set-flags AA:BB:CC:DD:EE:FF
  • Example Set remote wake flag for device β€” > set-flags -f 0x01 00:11:22:33:44:55
  • Example Set device privacy flag β€” > set-flags -f 0x02 AA:BB:CC:DD:EE:FF
  • Example Set both remote wake and privacy flags β€” > set-flags -f 0x03 11:22:33:44:55:66
  • Example Set remote wake for public address device β€” > set-flags -f 0x01 -t public 00:11:22:33:44:55
  • Example Set privacy flag for LE public device β€” > set-flags -f 0x02 -t le_public 11:22:33:44:55:66
  • Example Set multiple flags for LE random device β€” > set-flags -f 0x03 -t le_random CC:DD:EE:FF:00:11
  • Example Clear all flags for device β€” > set-flags -f 0x00 00:11:22:33:44:55
  • Example Clear all flags for LE public device β€” > set-flags -f 0x00 -t le_public 11:22:33:44:55:66

πŸ”— conn-subrate πŸ”—

Load Connection Subrate. Subrate loading, but make it iconic.

Usage:

> conn-subrate [-t type] <address> <min_interval> <max_interval>
      <subrate_min> <subrate_max> <max_latency> <cont_num>
      <supv_timeout>
  • [-t type] β€” Address type β€” 1 for LE Public, 2 for LE Random
  • <address> β€” Bluetooth address of the device
  • <min_interval> β€” Minimum connection interval (units of 0.125 ms)
  • <max_interval> β€” Maximum connection interval (units of 0.125 ms)
  • <subrate_min> β€” Minimum subrate factor
  • <subrate_max> β€” Maximum subrate factor
  • <max_latency> β€” Maximum peripheral latency (subrated connection events)
  • <cont_num> β€” Continuation number
  • <supv_timeout> β€” Supervision timeout (units of 10 ms)
  • Example Load subrate for LE public address device β€” > conn-subrate -t 1 00:11:22:33:44:55 8 3200 1 4 0 2 200
  • Example Load subrate for LE random address device β€” > conn-subrate -t 2 AA:BB:CC:DD:EE:FF 16 1600 2 8 0 4 100

🌈 RESOURCES 🌈

http://www.bluez.org

🫢 REPORTING BUGS 🫢

linux-bluetooth@vger.kernel.org

the legal tea, exactly: Free use of this software is granted under the terms of the GNU Lesser General Public Licenses (LGPL).


this page is from BlueZ, July 2023, and it's BLUETOOTHCTL-MGMT(1) β€” periodt. πŸ’…βœ¨πŸ¦‹

πŸ“¦ where this page comes from