How to Check Bluetooth Hardware Details and Paired Devices in macOS Terminal Using system_profiler

Diagnosing wireless peripheral issues, verifying Bluetooth Low Energy (BLE) capabilities, or auditing connected accessories on macOS often requires deeper technical insight than the standard System Settings interface provides. While the graphical menu displays device names and basic battery levels, it conceals critical low-level parameters such as controller chipset revisions, Bluetooth firmware versions, transport protocols, vendor identifiers (VID), and signal reception states. Leveraging the native system_profiler command in macOS Terminal grants direct access to the CoreBluetooth hardware tree, allowing systems administrators and power users to query comprehensive diagnostic data without installing third-party utilities.

Understanding system_profiler and the Bluetooth Data Type

The macOS system_profiler utility serves as the command-line interface to the system information database. It reports hardware configuration, active buses, peripheral specifications, and driver extensions. By targeting the SPBluetoothDataType dictionary, you extract precise details reported directly by the macOS I/O Kit and CoreBluetooth daemons.

Querying this data type reveals whether your Mac supports modern wireless standards, such as Bluetooth 5.0 or 5.3, alongside specific subsystem features including Instant Hotspot, Handoff, Low Energy Central role, and Simultaneous Multi-Threading audio streams.

How to Retrieve Complete Bluetooth Controller Information

To inspect your Mac’s internal Bluetooth controller, launch Terminal from Applications > Utilities > Terminal or invoke it via Spotlight by pressing Command + Space, typing Terminal, and pressing Enter.

Execute the following command to print the full Bluetooth report:

system_profiler SPBluetoothDataType

The output presents a structured breakdown divided into two principal sections: Hardware Settings (or Controller Properties) and Connected / Paired Devices. Within the controller block, observe the following critical properties:

  • Apple Bluetooth Software Version: Indicates the exact macOS CoreBluetooth build active on the kernel.
  • Chipset: Identifies the hardware vendor and transceiver architecture (for example, Broadcom, Cypress, or Apple Silicon integrated wireless silicon).
  • Firmware Version: Reflects the microcode version loaded onto the wireless module. This field is essential when verifying whether a recent macOS security patch addressed peripheral dropping bugs.
  • Bluetooth Core Spec: Displays the supported specification standard (e.g. 5.3 (0xC)).
  • Transport: Confirms whether the controller communicates with the system logic board over internal USB, PCIe, or unified UART channels.
  • Address: Displays the hardware Media Access Control (MAC) address of the Mac’s Bluetooth transceiver.

How to Filter Output for Specific Controller Properties

Because the default system_profiler report can span dozens of lines if you have numerous accessories paired, piping the stream into grep or awk lets you isolate specific values instantly.

Checking Bluetooth Controller State and Power

To quickly check whether Bluetooth is powered on, discoverable, and capable of hosting connections, run:

system_profiler SPBluetoothDataType | grep -E "State:|Discoverable:|Address:"

Verifying Hardware Chipset and Firmware

To extract the exact chipset model and loaded microcode without scrolling through peripheral entries, execute:

system_profiler SPBluetoothDataType | grep -E "Chipset:|Firmware Version:|Bluetooth Core Spec:"

How to Inspect Paired and Connected Bluetooth Devices

Below the hardware controller parameters, system_profiler SPBluetoothDataType enumerates every accessory that has completed pairing with your Mac, categorised by connection status.

For currently connected peripherals—such as the Magic Keyboard, Magic Trackpad, AirPods, or third-party audio gear—the report exposes rich telemetry:

  • Device Name and BD_ADDR: The broadcast label and hardware Bluetooth address of the peripheral.
  • Major / Minor Type: Classifies the peripheral type, such as Peripheral (Pointer), Audio (Headphones), or Wearable.
  • Services: Lists advertised Bluetooth profiles, including Advanced Audio Distribution Profile (A2DP), Human Interface Device (HID), and Hands-Free Profile (HFP).
  • Firmware Version: Shows the onboard firmware running on the accessory itself, enabling you to check whether Apple AirPods or Beats headphones have received background over-the-air updates.
  • RSSI (Received Signal Strength Indicator): Measures radio link quality in decibel-milliwatts (dBm). Values between -30 dBm and -60 dBm reflect strong reception, whereas figures dropping below -80 dBm indicate severe physical obstruction or 2.4 GHz radio-frequency interference.

To filter the report down exclusively to connected devices and their corresponding signal metrics, execute:

system_profiler SPBluetoothDataType | awk '/Connected: Yes/,/Vendor ID/'

Exporting Bluetooth Diagnostics to JSON or XML for System Audits

For automated enterprise administration, MDM script integration, or hardware archiving, system_profiler can structure its telemetry into machine-readable JSON or XML plist format. Add the -json or -xml flag to format the output stream:

system_profiler SPBluetoothDataType -json > ~/Desktop/bluetooth_audit.json

Opening the generated JSON file provides nested key-value objects representing the controller state and all peripheral nodes, suitable for processing with command-line tools like jq or ingesting into remote fleet monitoring dashboards.

Troubleshooting Unresponsive Bluetooth Stacks in Terminal

If system_profiler returns errors indicating that the Bluetooth controller is unavailable, or if paired accessories fail to establish communication, the underlying macOS background daemon may be stalled. You can cleanly restart the Bluetooth daemon without rebooting your Mac by issuing a kill signal to bluetoothd:

sudo pkill bluetoothd

macOS immediately relaunches bluetoothd via launchd, reinitialising the controller bus and reloading registered paired devices into memory within seconds. Running system_profiler SPBluetoothDataType immediately afterwards verifies that the wireless subsystem has returned to an active operational state.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.