The BME688 is a compact, digital 4-in-1 environmental sensor that measures gas, humidity, pressure, and temperature in a single package — purpose-built for mobile and connected devices where size and energy efficiency are non-negotiable.
Its gas sensing capability is particularly noteworthy — it can detect volatile organic compounds (VOCs), volatile sulfur compounds (VSCs), carbon monoxide, hydrogen, and a range of other gases down to parts-per-billion (ppb) concentrations. This makes it well-suited for applications like indoor air quality monitoring, breath analysis, smart home systems, and wearables.
It is a hardware-compatible drop-in replacement for the BME680, but with the gas scanner function and AI capability layered on top.
What is BME688?

The BME688 is the first gas sensor with Artificial Intelligence and integrated high-linearity, high-accuracy pressure, humidity, and temperature sensors, housed in a robust 3.0 × 3.0 × 0.9mm package.
Additionally to all features of the BME680, the BME688 has a gas scanner function. In standard configuration, the presence of volatile sulfur compounds is detected as an indicator of bacteria growth. The gas scanner can also be customized with respect to sensitivity, selectivity, data rate, and power consumption.
The customization is done through Bosch’s BME AI-Studio — a desktop tool that lets you train the sensor’s gas scanner on specific target gases or odors for your application, then deploy the resulting configuration to the device.
BME680 vs BME688: The BME688 is a drop-in replacement for the BME680 — it adds a method of programming the gas sensor heater for controlled odor analysis but is otherwise the same hardware. Existing BME680 code and wiring works on the BME688 without modification.
BME688 overview
| Parameter | Value |
|---|---|
| Sensor Type | Digital Gas, Humidity, Pressure & Temperature Sensor with AI |
| Operating Voltage (VDD) | 1.71V – 3.6V |
| Interface Voltage (VDDIO) | 1.2V – 3.6V |
| Current (humidity + temp @ 1Hz) | 2.1µA |
| Current (pressure + temp @ 1Hz) | 3.1µA |
| Current (all three @ 1Hz) | 3.7µA |
| Current (ULP mode, air quality) | 90µA |
| Current (LP mode, air quality) | 0.9mA |
| Current (standard gas scan mode) | 3.9mA |
| Sleep Current | 0.15µA |
| Temperature Range | −40°C to +85°C |
| Humidity Range | 0% to 100% RH |
| Pressure Range | 300 to 1100 hPa |
| Gas Detection | VOCs, VSCs, CO, H₂, ethanol, breath-VOC |
| Communication | I²C (up to 3.4MHz) / SPI (3 and 4-wire, up to 10MHz) |
| I²C Address | 0x76 (SDO → GND) or 0x77 (SDO → VDDIO) |
| Package | 8-pin LGA, 3.0 × 3.0 × 0.9mm |
| Compatible Boards | Arduino Uno, ESP32, Raspberry Pi |
Pinout

| Pin | Description |
|---|---|
| VIN / VCC | Power supply input (3.3V–5V on most modules) |
| GND | Ground |
| SCL / SCK | I²C Clock or SPI Clock |
| SDA / SDI | I²C Data or SPI MOSI |
| SDO | SPI MISO; also selects I²C address |
| CS | SPI Chip Select (leave unconnected for I²C mode) |
| INT / 3V3 | Interrupt output on some modules, or 3.3V output on others (depends on module manufacturer) |
Working principle
Temperature, humidity, and pressure work identically to the BME680 — forced mode, normal mode, oversampling, IIR filter, and OTP-based compensation all apply in exactly the same way.
The gas scanner is where the BME688 differs. The BME688 measurement period consists of a temperature, pressure, and humidity measurement with selectable oversampling, followed by a heating phase for the gas sensor hot plate and a measurement of the gas sensor resistance.
The gas scanner can operate in two ways:
Standard mode (BSEC library) As a raw signal, the BME688 outputs gas sensor resistance values — the higher the concentration of reducing VOCs, the lower the resistance. Since the raw signal is also influenced by humidity, the BSEC library transforms these values into an IAQ index ranging from 0 (clean air) to 500 (heavily polluted). The algorithms automatically calibrate and adapt to the typical environment where the sensor is operated, considering up to four days of measurement history.
AI scan mode (BME AI-Studio) The gas scan mode and scan rate can be optimized per application using BME AI-Studio. Users collect gas resistance data across a sweep of heater temperatures (a “scan profile”), label the samples in the studio, train a classification model, and deploy it back to the device.
The sensor then outputs a gas scan result percentage alongside the standard IAQ output — enabling detection of specific gases, odors, or environmental events tailored to the application.
Key gas scanner performance figures: F1 score of 0.94 for H₂S scanning, standard scan speed of 10.8 seconds per scan, and an electric charge of 0.18mAh for 5 scans (~1 minute).
Internal Structure of the BME688 Module
The BME688 breakout module is functionally identical in layout to the BME680 breakout, with the same supporting components serving the same roles.
BME688 sensor IC The metal-lid LGA chip at the centre of the board. Physically identical in footprint to the BME680 at 3.0 × 3.0mm, but internally upgraded with a higher gas resistance range enabled at the ASIC level and an extended heater temperature sweep capability that makes the AI gas scanner function possible. All four sensing elements, heater control circuit, OTP calibration memory, and I²C/SPI interface logic are inside this single package.
Filter capacitors Suppress voltage spikes and high-frequency noise on the supply lines. The gas scanner heater draws up to 3.9mA during a scan cycle — significantly more than the microampere-level draws of the environmental sensors — making decoupling especially important to prevent heater switching noise from corrupting pressure and humidity readings.
Pull-up resistors Hold SDA and SCL at a high logic level when idle, as required by the I²C protocol. Included onboard so no external resistors are needed.
Pull-down resistor Holds the SDO pin at GND by default, setting the I²C address to 0x76. Bridging SDO to VCC shifts it to 0x77, allowing two BME688 modules on the same I²C bus.
Specifications
| Parameter | Value |
|---|---|
| Supply Voltage (VDD) | 1.71V – 3.6V |
| Interface Voltage (VDDIO) | 1.2V – 3.6V |
| Current (hum + temp @ 1Hz) | 2.1µA |
| Current (pres + temp @ 1Hz) | 3.1µA |
| Current (hum + pres + temp @ 1Hz) | 3.7µA |
| Current (ULP air quality mode) | 90µA |
| Current (LP air quality mode) | 0.9mA |
| Current (standard gas scan mode) | 3.9mA |
| Sleep Current | 0.15µA |
| Temperature Range | −40°C to +85°C |
| Temperature Accuracy | ±1.0°C |
| Temperature Resolution | 0.01°C |
| Humidity Range | 0% to 100% RH |
| Humidity Accuracy | ±3% RH (20–80% RH, 25°C) |
| Humidity Response Time (τ0-63%) | ~8 seconds |
| Humidity Hysteresis | ±1.5% RH |
| Pressure Range | 300 to 1100 hPa |
| Pressure Accuracy | ±0.6 hPa (0°C to 65°C) |
| Pressure RMS Noise | 0.12 Pa (equiv. 1.7cm altitude) |
| Gas Detection | VOCs, VSCs, CO, H₂, ethanol |
| Gas Response Time (τ33-63%) | <1 second (new sensors) |
| Gas Sensor-to-Sensor Deviation | ±15% |
| Gas Scan Speed (standard) | 10.8 seconds per scan |
| Gas Scan Charge (5 scans ~1 min) | 0.18 mAh |
| H₂S Detection F1 Score | 0.94 |
| IAQ Scale | 0 (clean) to 500 (heavily polluted) |
| AI Tool | BME AI-Studio (free, Bosch) |
| I²C Speed | Up to 3.4MHz |
| SPI Speed | Up to 10MHz |
| I²C Address | 0x76 or 0x77 |
| Chip ID | 0x61 |
| Package | 8-pin LGA |
| Dimensions | 3.0 × 3.0 × 0.9mm |
| BME680 Compatibility | Full hardware and software drop-in |
| Operating Temperature | −40°C to +85°C |
| RoHS | Compliant, halogen-free, MSL1 |
Helpful resources
- Download the datasheet: PDF here
- BME688 with Arduino
- BME688 with ESP32
- Getting started with BME688 sensor