# Fluoride Bluetooth Profile Tuning Suite (PTS) Test Mode

This document provides commands to enable PTS test mode for Fluoride stack. We
need special handling for some test cases as they are not applicable for the
Fluoride stack.

## PTS Test Mode system property

Profile services in packages/apps/Bluetooth uses system property
`persist.bluetooth.pts` to check if the PTS test mode is enabled. To enable it:

```sh
adb shell setprop persist.bluetooth.pts true
```

To disable it:

```sh
adb shell setprop persist.bluetooth.pts false
```

### Current use case

- In `newavrcp`, we send active player update to remote device only in PTS test
  mode (AVRCP/TG/MPS/BV-05-C AVRCP/TG/MPS/BV-07-C).

## PTS Helpers in stack config

Native stack also requires some special handling, and the config is stored in
`conf/bt_stack.conf`. To enable a flag, uncomment the corresponding line and
push the config file to `/etc/bluetooth/` in IUT.

### Current use case

- `PTS_SecurePairOnly` enables secure connections only mode.
- `PTS_DisableConnUpdates` disables LE Connection updates.
- `PTS_DisableSDPOnLEPair` disables BR/EDR discovery after LE pairing to avoid
  cross key derivation errors.
- `PTS_SmpOptions` sets SMP Pair options (formatted as hex bytes) `auth, io,
  ikey, rkey, ksize`.
- `PTS_AvrcpTest` enables AVRCP test mode. The UID is set to 0xffffffffffffffff
  in `TrackChangedNotificationResponse` (AVRCP/TG/NFY/BV-04-C).
- `PTS_SmpFailureCase` enables handling for various SMP failure cases.