# Supported devices

`inkbird-ble` recognises the following INKBIRD models. Each one is exposed as a member of the `Model` enum (importable from `inkbird_ble`); pass it to `INKBIRDBluetoothDeviceData(...)` when you know the model up front, otherwise the parser detects it from the first advertisement (passive devices) or you must supply it (notify-only devices).

Model | Family | Transport | Detection | Sensors
--- | --- | --- | --- | ---
`IBS-TH` | Hygrometer | advertisement | local name `sps` | temperature, humidity, battery
`IBS-TH2` / `P01B` | Hygrometer | advertisement | local name `tps` | temperature, humidity, battery
`IBS-P02B` | Pool / probe | advertisement only | local name `ibs-p02b` | temperature, battery
`ITH-11-B` | Hygrometer | advertisement | local name `ith-11-b` | temperature, humidity, battery
`ITH-13-B` | Hygrometer | advertisement | local name `ith-13-b` | temperature, humidity, battery
`ITH-21-B` | Hygrometer | advertisement | local name `ith-21-b` | temperature, humidity, battery
`IAM-T1` | Indoor air quality | GATT notify | manufacturer-data `AC-6200` prefix | temperature, humidity, CO₂, atmospheric pressure
`IAM-T2` | Indoor air quality | advertisement | 17-byte payload + MAC prefix | temperature, humidity, CO₂
`IHT-2PB` | 3-probe thermometer | GATT notify | local name `Ink@IHT-2PB#…` | temperature × 3 probes
`INT-11P-B` | Connected BBQ probe | GATT poll | local name `int-11p-b` | probe temperature, ambient temperature, probe battery, case battery
`INT-11I-B` | Connected probe | GATT poll | local name `int-11i-b` | temperature, station battery, probe battery
`iBBQ-1` | BBQ probe (1 channel) | advertisement | name contains `xbbq` / `ibbq` | temperature × 1
`iBBQ-2` | BBQ probe (2 channel) | advertisement | name contains `xbbq` / `ibbq` | temperature × 2
`iBBQ-4` | BBQ probe (4 channel) | advertisement | name contains `xbbq` / `ibbq` | temperature × 4
`iBBQ-6` | BBQ probe (6 channel) | advertisement | name contains `xbbq` / `ibbq` | temperature × 6
`Generic 18 byte model` | Unknown hygrometer | advertisement | 18-byte payload + service UUID | temperature, humidity, battery
`IDT-34c-B` | 6-probe BBQ thermometer | GATT notify | local name `idt-34c-b` | temperature × 6 probes, battery

## Transport guide

- advertisement — passive: feed every `service_info` to `INKBIRDBluetoothDeviceData.update()` and it returns a `SensorUpdate`. No connection is opened. The `IBS-TH` family, the eighteen-byte hygrometers and the iBBQ probes work this way; `IAM-T2` is advertisement-only as well.

- advertisement only — the device cannot be polled or notified safely (`IBS-P02B` wedges its firmware until a battery reset if you open a GATT connection, see issue #116). All fields are already in the broadcast.

- GATT poll — the device exposes a readable characteristic; call `async_poll(ble_device)` when `poll_needed()` returns true. `INT-11P-B` carries no readings in its advertisement, so it must be polled.

- GATT notify — the device pushes readings over a notify characteristic; call `async_start(service_info, ble_device)` to subscribe. `IAM-T1` and `IHT-2PB` use this transport. `IHT-2PB` additionally requires two activation writes (handled transparently) before it starts streaming. The `IDT-34c-B` advertises only a name (no manufacturer data), so it is matched by local name; its `ff01` characteristic streams all six probe temperatures in a single notification.

## Not supported

A few INKBIRD product lines that come up in the issue tracker are out of scope for this library:

- Sous-vide cookers (`ISV-100W`, `ISV-100W 2.0`, `ISV-200W`, `ISV-300W`, `ISV-101W`). These are Wi-Fi / Tuya devices, not BLE, so they cannot be parsed here.

If you have a device that looks like it should work but is not detected, open an issue with a BLE advertisement capture (e.g. from `bluetoothctl` or `nrfConnect`) so the model can be reverse-engineered.