chefiq-ble
Passive Bluetooth Low Energy advertisement parser for Chef iQ wireless
cooking probes (CQ50 / CQ60), built for use with the Home Assistant
bluetooth passive update framework.
The probe broadcasts everything needed to read temperatures over plain BLE advertisements - no connection, no cloud, no base/hub required.
Install
pip install chefiq-ble
Usage
from chefiq_ble import ChefIqBluetoothDeviceData
device = ChefIqBluetoothDeviceData()
# service_info is a BluetoothServiceInfo (or BluetoothServiceInfoBleak)
update = device.update(service_info)
for key, value in update.entity_values.items():
print(key.key, value.native_value)
What it parses
A Chef iQ probe rotates three advertisement packet types in its manufacturer
specific data (company id 0x05CD). The low nibble of the first byte selects
the type; the remaining header nibbles encode a major.minor.patch
advertisement protocol version.
| sensor | unit | source |
|---|---|---|
food_temperature |
°C | temperature packet (food core) |
ambient_temperature |
°C | temperature packet |
probe_tip_1..4_temperature |
°C | temperature packet (V2: 3 tips, V3: 4 tips) |
battery_percent |
% | status packet (V3) / temperature packet (V2, legacy) |
soc_temperature |
°C | status packet (V3) / temperature packet (V2, legacy) |
All 16-bit temperatures are signed, little-endian, divided by 10 (Celsius).
Identifying a probe
The manufacturer id alone is not proof of a Chef iQ probe. Some vendors put a
sensor reading where the Bluetooth company id belongs: an Inkbird IBS-TH
broadcasts its temperature x100 there, so at exactly 14.85 °C it shows up with
"manufacturer id" 0x05CD (home-assistant/core#188557). The parser
therefore accepts an advertisement, and supported() reports a probe, only when
the protocol major version is a known one (2 to 5) and the payload matches the
documented layout for its packet type:
- a name packet carries a 12-byte, NUL-padded, printable name, or the
device's local name is a known probe model (probes advertise their model,
e.g.
CQ60, as the BLE local name); - a temperature packet carries every reading of its layout, each either a
plausible Celsius value or the firmware's "no reading" sentinel (raw values
of 32000 and above; a CQ60 sends
0x7FFFfor an empty ring); - a status packet (and a legacy temperature packet) carries the probe's own MAC address, which must match the advertising address.
Any single real packet passes, so discovery works whichever of the three packet types is seen first. Rejected advertisements are logged at debug level.
Advertisement formats
Three temperature-payload layouts are supported, selected by the protocol major version carried in the advertisement:
| protocol major | layout | status packet |
|---|---|---|
| 5 | V3 - verified against a CQ60 (protocol version 5.0.0) | MAC, battery, SoC |
| 4 | V2 - 3 tips, battery and SoC inline | MAC only |
| 2, 3 | legacy - MAC, SoC, food and ambient inline; battery from 3.x | none |
V2 and legacy are supported from the protocol description and are not yet verified against real hardware; captures from a CQ50 or an older-firmware probe are welcome to confirm the layouts and the version boundaries. Other major versions are not known probe protocols and are ignored.
This library decodes the probe's public BLE advertisements for
interoperability and builds on the earlier Chef iQ work in
ble_monitor. The byte
layouts are documented in parser.py.
License
MIT
Metadata
Release files for chefiq-ble 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| chefiq_ble-1.1.0.tar.gz | 12.8 kB | With provenance | Details for chefiq_ble-1.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| chefiq_ble-1.1.0-py3-none-any.whl | Python 3 | none | any | Details for chefiq_ble-1.1.0-py3-none-any.whl |
Total release size: 22.4 kB
Release files / chefiq_ble-1.1.0.tar.gz
| Download URL | chefiq_ble-1.1.0.tar.gz |
|---|---|
| Size | 12.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
76a869ea8611fc8dad2c4f01950ba807eb0f0203529daca8616b64d499661e73
|
|
BLAKE2b-256 checksum How to use checksums |
b158b8e296ffe9cae0316a86e0935acef0247a7689edede669f41938dc2d57c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.
Transparency logRelease files / chefiq_ble-1.1.0-py3-none-any.whl
| Download URL | chefiq_ble-1.1.0-py3-none-any.whl |
|---|---|
| Size | 9.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c7a51f04350638eee833443f970e5efe32b2885c84860583777d506bb011b54a
|
|
BLAKE2b-256 checksum How to use checksums |
c50b159f8f91b773e07c543141c87899fc7f5e534c9f6c00a58ab4306ee7f0fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.
Transparency logSecurity for chefiq-ble 1.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for chefiq_ble-1.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.