This directory contains command-line tools for Bluetooth development.

## bt-hci-tool

`bt-hci-tool` uses the [host HCI library](../../../drivers/bluetooth/lib/hci) to send
HCI commands directly to a bt-hci device (`/dev/class/bt-hci/000` by default)

Currently all bt-hci devices are automatically claimed by the bt-host driver. To
use bt-hci-tool, disable the bt-host driver by passing `driver.bthost.disable`
to the kernel command line:

On host machine:
```
$ fx pave -- driver.bthost.disable
```

On Fuchsia:
```
$ bt-hci-tool reset
  Sent HCI_Reset (id=1)
  Command Complete - status 0x00 (id=1)
$ bt-hci-tool read-bdaddr
  Sent HCI_Read_BDADDR (id=1)
  Command Complete - status 0x00 (id=1)
  BD_ADDR: 00:1A:7D:DA:71:0A
```

## bt-snoop-cli

`bt-snoop-cli` is a command line client of the `bt-snoop` service. `bt-snoop` monitors snoop
channels for all bluetooth adapters on the system.
`bt-snoop-cli` subscribes to snoop logs for HCI devices and writes traffic to a file (stdout by
default) supporting the pcap format. The captured packets can be visualized using any protocol
analyzer that supports pcap (e.g. Wireshark).

This will fetch the current buffer of packets for all devices under `/dev/class/bt-hci/`,
output the traffic to stdout, then exit:

```
$ bt-snoop-cli --dump --format pretty
```

To initiate a live capture using Wireshark (on host):

```
$ fx shell bt-snoop-cli | wireshark -k -i -
```

To specify a custom HCI device ("005") and output location (on device):
```
$ bt-snoop-cli --output /my/custom/path --device 005
```

Logs can then be copied from the Fuchsia device and given to any tool that can
parse BTSnoop (e.g. Wireshark):
```
$ fx cp --to-host :/tmp/btsnoop.log ./
$ wireshark ./btsnoop.log
```

See the tool's help for complete usage:
```
$ bt-snoop-cli --help
```

## bt-cli

`bt-cli` is a command-line interface for the Generic Access Profile (using the
[control](../../../public/fidl/fuchsia.bluetooth.control/control.fidl) FIDL interfaces).
This can be used to query available Bluetooth controllers, to perform dual-mode
discovery and connection procedures, and to respond to pairing requests.

The `bluetooth` process does not need to be run directly before using
bt-cli, as it will be launched by sysmgr if necessary.

```
$ bt-cli
bt> list-adapters
Adapter:
        Identifier:     35700c9b-6748-4676-bd2c-1d863fd89210
        Address:        28:C6:3F:2F:D4:14
        Technology:     DualMode
        Local Name:     fuchsia fuchsia-unset-device-name
        Discoverable:   false
        Discovering:    false
        Local UUIDs:    None
```

## Other Tools

This package contains additional tools. Refer to each tool's own README for
more information.
