{"id":38507273,"url":"https://github.com/dottspina/bme68x-zephyr","last_synced_at":"2026-01-17T06:16:28.608Z","repository":{"id":249890711,"uuid":"819597954","full_name":"dottspina/bme68x-zephyr","owner":"dottspina","description":"BME68X Sensor API and BSEC integration with Zephyr-RTOS.","archived":false,"fork":false,"pushed_at":"2025-07-04T04:04:37.000Z","size":275,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-04T04:33:05.336Z","etag":null,"topics":["bme680","bme688","bsec","ess","iaq","zephyr-rtos"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dottspina.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-06-24T20:46:09.000Z","updated_at":"2025-07-04T04:03:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"18dd7b86-ad6c-4b83-9793-13fae2eb7cb9","html_url":"https://github.com/dottspina/bme68x-zephyr","commit_stats":null,"previous_names":["dottspina/bme68x-zephyr"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dottspina/bme68x-zephyr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dottspina%2Fbme68x-zephyr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dottspina%2Fbme68x-zephyr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dottspina%2Fbme68x-zephyr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dottspina%2Fbme68x-zephyr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dottspina","download_url":"https://codeload.github.com/dottspina/bme68x-zephyr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dottspina%2Fbme68x-zephyr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28502108,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T04:31:57.058Z","status":"ssl_error","status_checked_at":"2026-01-17T04:31:45.816Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bme680","bme688","bsec","ess","iaq","zephyr-rtos"],"created_at":"2026-01-17T06:16:28.476Z","updated_at":"2026-01-17T06:16:28.590Z","avatar_url":"https://github.com/dottspina.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bme68x-zephyr ─ Alternative BME680/688 sensors support for Zephyr-RTOS\n\nAlternative device driver for BME680/688 sensors (I2C/SPI), support libraries and sample applications for Bosch Sensortec's [BME68X Sensor API] and [BSEC] integration with Zephyr-RTOS.\n\nSince watching the measurements on the application log is not really fun, this module also includes an experimental implementation of the Bluetooth [Environmental Sensing Service]: it currently supports the Temperature, Pressure and Humidity ESS Characteristics and all variants of ES Trigger Setting descriptors.\n\n| Library                     | Provides                                                          |\n|-----------------------------|-------------------------------------------------------------------|\n| [lib/bme68x-sensor-api]     | Bosch Sensortec's BME68X Sensor API                               |\n| [drivers/bme68x-sensor-api] | BME68X Sensor API integration with Zephyr-RTOS (driver)           |\n| [lib/bsec]                  | Bosch Sensortec Environmental Cluster (BSEC)                      |\n| [lib/bme68x-iaq]            | Support library for IAQ with the BME68X Sensor API and BSEC       |\n| [lib/bme68x-esp]            | Support library for the Bluetooth [Environmental Sensing Profile] |\n\n| Sample                | Application                                         |\n|-----------------------|-----------------------------------------------------|\n| [samples/bme68x-tphg] | Forced THPG measurements with the BME68X Sensor API |\n| [samples/bme68x-iaq]  | Index for Air Quality (IAQ) with BSEC               |\n| [samples/bme68x-esp]  | Environmental Sensing Service with BSEC             |\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e For simple periodic measurements of temperature, pressure, humidity and gas resistance\n\u003e Zephyr provides the [`bosch,bme680`] device driver which implements the [Fetch and Get] subset\n\u003e of the [Sensors] API: setup a timer to periodically call `sensor_sample_fetch()` and `sensor_sample_get()`,\n\u003e and that's it.\n\u003e\n\u003e This alternative support may be helpful as a starting point:\n\u003e\n\u003e - when instead planning to access the BME680/688 devices through the BME68X Sensor API\n\u003e - when needing complete control over the BME680/688 sensors, e.g. to implement the dynamic reconfiguration\n\u003e   required for integration with Bosch Sensortec Environmental Cluster (BSEC)\n\u003e\n\u003e If interested, [Rationale](#rationale) goes into some detail about why the upstream BME680 driver is not very helpful\n\u003e for the above use cases.\n\u003e\n\u003e **Status**:\n\u003e\n\u003e - a couples of years ago, I wrote a simple Zephyr application with Index for Air Quality (IAQ) support for my new [BME680] sensor\n\u003e - then I resurrected the BME680, and realized that I had thrown away all the *boiler plate* code and configuration files needed for integration with the Zephyr build system, Devicetree and device drivers\n\u003e - this repository will help me keep something almost clean that should work *Out of the box* in case I want to play with my BME680 again\n\u003e - it's made public as a Zephyr module so others don't have to reinvent the wheel, or simply as a source of inspiration to reinvent their own wheel\n\u003e - Apache-2.0 license, on an \"AS IS\" BASIS WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND\n\nBrowsing through the [Quick Start Guide](#quick-start-guide), which describes how to get the IAQ application sample up and running *in five minutes*, may also help to get the big picture.\n\n## Installation\n\nThe driver and support libraries are provided as the [Zephyr Module] (`bme68x`), which can be *installed*:\n\n- either as an *external project* managed by West\n- or as an *extra module* given to CMake\n\n### External project\n\nWe assume a Zephyr command line development environment managed by [West] ([Workspaces]), installed e.g. following the Zephyr [Getting Started Guide]:\n\n```\nzephyr-project/\n├── bootloader/\n│   └── mcuboot/\n├── modules/\n│   ├── bsim_hw_models/\n│   ├── ... stripped ...\n│   ├── lib\n│   └── tee\n├── tools/\n└── zephyr/\n    ├── arch/\n    ├── ... stripped ...\n    └── west.yml\n```\n\nAdd an external project entry at the end of the workspace [manifest] (`zephyr-project/zephyr/west.yml`), e.g.:\n\n``` yml\nprojects:\n    # ... stripped ...\n    - name: bme68x\n      url: https://github.com/dottspina/bme68x-zephyr.git\n      revision: main\n      path: modules/lib/bme68x\n```\n\nThen update the defined projects:\n\n```\n$ west update\n=== updating bme68x (modules/lib/bme68x):\n--- bme68x: initializing\nInitialized empty Git repository in /path/to/zephyr-project/modules/lib/bme68x/.git/\n--- bme68x: fetching, need revision main\nremote: Enumerating objects: 230, done.\nremote: Counting objects: 100% (230/230), done.\nremote: Compressing objects: 100% (148/148), done.\nremote: Total 230 (delta 97), reused 207 (delta 74), pack-reused 0\nReceiving objects: 100% (230/230), 118.89 KiB | 637.00 KiB/s, done.\nResolving deltas: 100% (97/97), done.\nFrom github.com:dottspina/bme68x-zephyr\n * branch            main       -\u003e FETCH_HEAD\n```\n\nThe module `bme68x` should now be installed in `zephyr-project/modules/lib/bme68x`.\n\n\u003e [!TIP]\n\u003e\n\u003e This is the recommended approach:\n\u003e\n\u003e - when planning to use the Bosch Sensortec Environmental Cluster (BSEC) library: it permits to simply install the required binaries as [Zephyr binary blobs]\n\u003e - more generally, this simplifies the build-system configuration of depending applications\n\n### Extra module\n\nFor use in applications without messing with manifest files or workspaces, clone the project and add the extra module to the build system, typically in your `CMakeList.txt` (**before** `find_package()`):\n\n``` cmake\nlist(APPEND ZEPHYR_EXTRA_MODULES\n   # Absolute path to the bme68x module (the directory that contains zephyr/module.yml).\n   /path/to/bme68x-zephyr\n)\n```\n\n\u003e [!TIP]\n\u003e\n\u003e When building a sample application, simply enable the corresponding lines in its `CMakeList.txt`:\n\u003e\n\u003e ``` cmake\n\u003e list(APPEND ZEPHYR_EXTRA_MODULES\n\u003e     ${CMAKE_SOURCE_DIR}/../..\n\u003e )\n\u003e ```\n\nDepending on your workflow and environment, this approach may also require additional configuration of the [Zephyr Build system]:\n\n- to properly build the additional [System Calls] defined by this module: search the [Zephyr documentation] for `SYSCALL_INCLUDE_DIRS`\n- to add the [Devicetree Bindings] for this `bosch,bme68x-sensor-api` driver: see e.g. [Using an external DTS binding for an out-of-tree driver] or search the Zephyr documentation for `DTS_ROOT`\n\nIt will also require manual installation of the BSEC algorithm binaries: see [lib/bsec]\n\n[Integrate modules in Zephyr build system] may also help.\n\n## Configuration\n\nHere are some simple and general tips, take a look at the other READMEs to better configure the sample applications.\n\nConfiguration is done:\n\n- with the [Kconfig] options defined by each driver or library used: either set in `prj.conf` or extra configuration files, or using a Kconfig menu interface\n- [devicetree overlays] to connect the BME680/688 device to the target board\n\n### Device driver\n\n| Library                     | Kconfig                    | Enable                                |\n|-----------------------------|----------------------------|---------------------------------------|\n| [lib/bme68x-sensor-api]     | `BME68X_SENSOR_API`        | Bosch Sensortec's [BME68X Sensor API] |\n| [drivers/bme68x-sensor-api] | `BME68X_SENSOR_API_DRIVER` | `bosch,bme68x-sensor-api` driver      |\n\nThis `bosch,bme68x-sensor-api` driver permits to initialize the BME68X Sensor API communication interface with a device retrieved from the devicetree:\n\n``` c\n/* BME68X Sensor API I2C/SPI communication interface. */\nstruct bme68x_dev bme68x_dev;\n/* Actual I2C/SPI device from the devicetree */\nstruct device const *dev = DEVICE_DT_GET_ONE(bosch_bme68x_sensor_api);\n/* Connect device to BME68X Sensor API communication interface. */\nbme68x_sensor_api_init(dev, \u0026bme68x_dev);\n\n/* From now use the BME68X Sensor API as usual,\n * starting with:\n */\nbme68x_init(\u0026bme68x_dev)\n```\n\nThe DTS files simply state that the BME680 and BME688 devices are sensors connected to I2C or SPI buses:\n\n- I2C: [`bosch,bme68x-sensor-api-i2c.yaml`]\n- SPI: [`bosch,bme68x-sensor-api-spi.yaml`]\n\nTypically the connection takes place in some devicetree overlay file, e.g.:\n\n``` dts\n/* I2C bus the BME680/688 device is connected to. */\n\u0026i2c0 {\n    bme680@76 {\n        compatible = \"bosch,bme68x-sensor-api\";\n\n        /* BME68X I2C slave address (0x76 or 0x77) */\n        reg = \u003c 0x76 \u003e;\n    };\n};\n```\n\n\u003e [!TIP]\n\u003e\n\u003e `BME68X_SENSOR_API_DRIVER` and `BME68X_SENSOR_API` are implied when an application devicetree contains compatible devices.\n\n### Libraries\n\n| Library          | Kconfig      | Enable                                        |\n|------------------|--------------|-----------------------------------------------|\n| [lib/bsec]       | `BSEC`       | Bosch Sensortec Environmental Cluster         |\n| [lib/bme68x-iaq] | `BME68X_IAQ` | Support library for BSEC IAQ                  |\n| [lib/bme68x-esp] | `BME68X_ESP` | Bluetooth Environmental Sensing Service (ESS) |\n\nThe above libraries define a number of options: the easiest way to get an idea of ​​what is configurable is to browse their respective Kconfig menus under `Modules → bme68x` using an interactive interface, e.g. `west build -t menuconfig`.\n\n## Sample applications\n\nThe necessary steps for building and running sample applications are nothing unusual:\n\n- *connect* sensors to the [Devicetree], typically with [devicetree overlays]\n- review the Kconfig options that configure the application and the libraries it depends on; `west build -t menuconfig` is handy\n- build and run\n\n```\n$ cd bme68x-zephyr\n$ west build samples/bme68x-iaq\n$ west flash\n```\n\nEach application contains example configuration and overlay files for [nRF52840 DK]. Configuration for your board will probably differ, refer to Zephyr [Supported Boards] and your SoC documentation.\n\n\u003e [!TIP]\n\u003e\n\u003e Consider trying the simpler [samples/bme68x-tphg] application first to test your\n\u003e [communication interface](drivers/bme68x-sensor-api/README.md#compatible-devices) configuration.\n\n## Quick Start Guide\n\nAssuming this `bme68x` module has been [installed as an external project](#external-project), and depending on your board, this brief guide may be sufficient to get the Index for Air Quality (IAQ) sample application ([samples/bme68x-iaq]) up and running *in five minutes*:\n\n- verify installation\n- connect a BME680/688 sensor to the devicetree\n- configure the BSEC algorithm\n- build and run the application\n\nThe application contains DTS overlay and configuration files for [nRF52840 DK]\nin [its boards directory](samples/bme68x-iaq/boards).\n\nOnce this works, you can try the [samples/bme68x-esp] application to add BLE connectivity.\n\n### Verify installation\n\nThis sample application depends on the BSEC library. If not already installed:\n\n- accept BSEC [License Terms and Conditions]\n- install BSEC static libraries with the [`west blobs`] command\n\n```\n$ west blobs fetch bme68x\nFetching blob bme68x: /path/to/zephyr-project/modules/lib/bme68x/zephyr/blobs/bsec/cortex-m3/libalgobsec.a\nFetching blob bme68x: /path/to/zephyr-project/modules/lib/bme68x/zephyr/blobs/bsec/cortex-m33/libalgobsec.a\nFetching blob bme68x: /path/to/zephyr-project/modules/lib/bme68x/zephyr/blobs/bsec/cortex-m33f/libalgobsec.a\nFetching blob bme68x: /path/to/zephyr-project/modules/lib/bme68x/zephyr/blobs/bsec/cortex-m4/libalgobsec.a\nFetching blob bme68x: /path/to/zephyr-project/modules/lib/bme68x/zephyr/blobs/bsec/cortex-m4f/libalgobsec.a\nFetching blob bme68x: /path/to/zephyr-project/modules/lib/bme68x/zephyr/blobs/bsec/esp32/libalgobsec.a\nFetching blob bme68x: /path/to/zephyr-project/modules/lib/bme68x/zephyr/blobs/bsec/esp32s2/libalgobsec.a\nFetching blob bme68x: /path/to/zephyr-project/modules/lib/bme68x/zephyr/blobs/bsec/esp32s3/libalgobsec.a\nFetching blob bme68x: /path/to/zephyr-project/modules/lib/bme68x/zephyr/blobs/bsec/esp32c3/libalgobsec.a\n```\n\n[License Terms and Conditions]: https://www.bosch-sensortec.com/media/boschsensortec/downloads/software/bme688_development_software/2023_04/license_terms_bme688_bme680_bsec.pdf\n\n### Connect sensor\n\nConnect the BME680/688 sensor, e.g. by adding a DTS overlay file to the `bme68x-zephyr/samples/bme68x-iaq/boards` directory.\n\nFor example, with:\n\n- an [Adafruit Feather ESP32S2] board\n- a BME680/688 sensor connected to I2C, with slave address `0x77`\n\nWe would add an `adafruit_feather_esp32s2.overlay` file with the content bellow:\n\n``` dts\n\u0026i2c0 {\n    bme280: bme68X@77 {\n        compatible = \"bosch,bme68x-sensor-api\";\n        reg = \u003c0x77\u003e;\n        power-domains = \u003c\u0026i2c_reg\u003e;\n    };\n};\n```\n\nRefer to [drivers/bme68x-sensor-api] for details, especially for connecting SPI devices.\n\n### Configure BSEC\n\nBSEC algorithm configuration includes:\n\n- BME680/688 sensor's supply voltage: 3.3V or 1.8V\n- desired BSEC calibration time: 4 or 28 days\n- BSEC sample rate: Low-Power (LP, 1/3 Hz) or Ultra-Low-Power (ULP, 1/300 Hz)\n\nThese options are accessible via the Kconfig menu: `Modules → bme68x → [*] Support library for BSEC IAQ → IAQ configuration`.\n\n\u003e [!TIP]\n\u003e\n\u003e The default configuration is 3.3V, 4 days, LP mode:\n\u003e - check that the voltage that your board supplies to the sensor is 3.3 V\n\u003e - if so, simply continue with this configuration\n\n### Build and run\n\nThe application should build and run *out of the box* for the target CPU families bellow:\n\n- Cortex-M: M33, M33F, M4, M4F\n- ESP32: ESP32, ESP32S2, ESP32S3, ESP32C3\n\n```\n$ cd bme68x-zephyr\n$ west build samples/bme68x-iaq -t menuconfig\n$ west flash\n```\n\nConsole output:\n\n```\n*** Booting Zephyr OS build v3.6.0 ***\n[00:00:00.359,252] \u003cinf\u003e bme68x_sensor_api: bme680@77 (Fixed-point API)\n[00:00:00.377,075] \u003cinf\u003e bme68x_iaq: BSEC 2.5.0.2\n[00:00:00.379,333] \u003cinf\u003e bme68x_iaq: loaded BSEC configuration (2063 bytes)\n[00:00:00.384,613] \u003cinf\u003e fs_nvs: 2 Sectors of 4096 bytes\n[00:00:00.384,613] \u003cinf\u003e fs_nvs: alloc wra: 1, fb8\n[00:00:00.384,613] \u003cinf\u003e fs_nvs: data wra: 1, 464\n[00:00:00.384,643] \u003cinf\u003e bme68x_iaq: NVS-FS at 0xfe000 (2 x 4096 bytes)\n[00:00:00.384,643] \u003cinf\u003e bme68x_iaq: BSEC state save period: 10 min\n[00:00:00.384,887] \u003cinf\u003e bme68x_iaq: loaded BSEC state (221 bytes)\n[00:00:00.386,108] \u003cinf\u003e bme68x_iaq: BSEC subscriptions: 13/8\n[00:00:00.638,549] \u003cinf\u003e app: -- IAQ output signals (13) --\n[00:00:00.638,549] \u003cinf\u003e app: T:26.68 degC\n[00:00:00.638,580] \u003cinf\u003e app: P:101.092 kPa\n[00:00:00.638,580] \u003cinf\u003e app: H:67.14 %\n[00:00:00.638,580] \u003cinf\u003e app: G:37.656 kOhm\n[00:00:00.638,610] \u003cinf\u003e app: IAQ:58 (unreliable)\n[00:00:00.638,641] \u003cinf\u003e app: CO2:562 ppm (unreliable)\n[00:00:00.638,671] \u003cinf\u003e app: VOC:0.57 ppm (unreliable)\n[00:00:00.638,702] \u003cinf\u003e app: stabilization: finished, on-going\n...\n[00:10:00.553,863] \u003cinf\u003e app: -- IAQ output signals (13) --\n[00:10:00.553,863] \u003cinf\u003e app: T:26.73 degC\n[00:10:00.553,863] \u003cinf\u003e app: P:101.143 kPa\n[00:10:00.553,894] \u003cinf\u003e app: H:67.00 %\n[00:10:00.553,894] \u003cinf\u003e app: G:35.182 kOhm\n[00:10:00.553,924] \u003cinf\u003e app: IAQ:71 (high accuracy)\n[00:10:00.553,955] \u003cinf\u003e app: CO2:663 ppm (high accuracy)\n[00:10:00.553,985] \u003cinf\u003e app: VOC:0.51 ppm (high accuracy)\n[00:10:00.554,016] \u003cinf\u003e app: stabilization: finished, finished\n```\n\nFor other CPUs, or if the build fails with some \"Failed to guess BSEC target\" or \"BSEC blob not found\" message, refer to [lib/bsec].\n\nOnce this works, refer to [lib/bme68x-iaq] to enable and configure BSEC state persistence to the per-device settings (Zephyr [Settings] subsystem).\n\n\u003e [!TIP]\n\u003e\n\u003e Boards that include some Flash memory will likely support NVS and define a \"storage\" partition in their DTS.\n\u003e Enabling BSEC state persistence can then be as simple as:\n\u003e\n\u003e ``` conf\n\u003e # Enable the Settings subsystem (NVS backend)\n\u003e CONFIG_NVS=y\n\u003e CONFIG_FLASH=y\n\u003e CONFIG_FLASH_MAP=y\n\u003e CONFIG_SETTINGS=y\n\u003e CONFIG_SETTINGS_NVS=y\n\u003e\n\u003e # Enable BSEC state persistence to per-device settings\n\u003e CONFIG_BME68X_IAQ_SETTINGS=y\n\u003e ```\n\n## Rationale\n\nBosch Sensortec's BME680/688 devices are *sensors* for measuring ambient temperature, barometric pressure, relative humidity, and gas resistance (TPHG).\n\nTheir simplest use is what is referred to as *forced measurements with single heating profile* in Low Power (LP) or Ultra-Low Power (ULP) mode.\n\nThis is the use case the upstream `bosch,bme680` driver makes available:\n\n- the BME680 sensor is configured for once during the driver initialization\n- new measurements are triggered with `sensor_sample_fetch()`\n- temperature, pressure, humidity and gas resistance are available with `sensor_channel_get()`\n\nThis approach has advantages: the application can get TPHG measurements without any additional initialization or configuration steps.\n\nBut it also presents limitations that are difficult, if not impossible, to resolve when requiring finer control of sensors:\n\n- the application can't switch the device to the *parallel* mode supported by BME688 sensors\n- the application can't reconfigure sensors, nor use more than one heating profile\n- the application can't use more than one heating profile\n\nExamples that immediately come to mind include:\n\n- gas scanner support for [BME688] ([How to distinguish BME680 from BME688 in firmware])\n- integration with Bosch Sensortec Environmental Cluster (BSEC) for Index for Air Quality (IAQ) and gas detection\n- user initiated sensor configuration (e.g. with a Bluetooth smartphone)\n\nMy personal use case was simply to get IAQ estimates, out of curiosity: to do this, I first had to *reinvent the wheel*, from the Zephyr device driver layer to the BSEC library integration. Only after that I could consider writing a simple PoC application.\n\nThis isn't *rocket science*, but it could discourage Zephyr enthusiasts who have just received their new BME680/688, or direct them toward proprietary solutions like nRF Connect SDK [BME68X IAQ driver].\n\n[BME68X Sensor API]: https://github.com/boschsensortec/BME68x_SensorAPI\n[BSEC]: https://www.bosch-sensortec.com/software-tools/software/bme680-software-bsec/\n[BME680]: https://www.bosch-sensortec.com/products/environmental-sensors/gas-sensors/bme680/\n[Environmental Sensing Service]: https://www.bluetooth.com/specifications/specs/environmental-sensing-service-1-0/\n[Environmental Sensing Profile]: https://www.bluetooth.com/specifications/specs/environmental-sensing-profile-1-0/\n\n[`bosch,bme680`]: https://docs.zephyrproject.org/latest/build/dts/api/compatibles/bosch,bme680.html\n[Fetch and Get]: https://docs.zephyrproject.org/latest/hardware/peripherals/sensor/fetch_and_get.html#sensor-fetch-and-get\n[Sensors]: https://docs.zephyrproject.org/latest/hardware/peripherals/sensor/index.html\n[sensor values]: https://docs.zephyrproject.org/latest/doxygen/html/structsensor__value.html\n\n[Zephyr Module]: https://docs.zephyrproject.org/latest/develop/modules.html\n[West]: https://docs.zephyrproject.org/latest/develop/west/index.html\n[Workspaces]: https://docs.zephyrproject.org/latest/develop/west/workspaces.html\n[Getting Started Guide]: https://docs.zephyrproject.org/latest/develop/getting_started/index.html\n[manifest]: https://docs.zephyrproject.org/latest/develop/west/manifest.html\n[Zephyr binary blobs]: https://docs.zephyrproject.org/latest/contribute/bin_blobs.html\n[`west blobs`]: https://docs.zephyrproject.org/latest/develop/west/zephyr-cmds.html#west-blobs\n[Zephyr Build System]: https://docs.zephyrproject.org/latest/build/cmake/index.html\n[System Calls]: https://docs.zephyrproject.org/latest/kernel/usermode/syscalls.html\n[Zephyr documentation]: https://docs.zephyrproject.org/latest/index.html\n[Devicetree Bindings]: https://docs.zephyrproject.org/latest/build/dts/bindings.html\n[Using an external DTS binding for an out-of-tree driver]: https://lists.zephyrproject.org/g/users/topic/using_an_external_dts_binding/78139373\n[Integrate modules in Zephyr build system]: https://docs.zephyrproject.org/latest/develop/modules.html#integrate-modules-in-zephyr-build-system\n[Kconfig]:https://docs.zephyrproject.org/latest/build/kconfig/index.html\n[Devicetree]: https://docs.zephyrproject.org/latest/build/dts/intro.html\n[devicetree overlays]: https://docs.zephyrproject.org/latest/build/dts/howtos.html#set-devicetree-overlays\n[Supported Boards]: https://docs.zephyrproject.org/latest/boards/index.html\n[nRF52840 DK]: https://docs.zephyrproject.org/latest/boards/nordic/nrf52840dk/doc/index.html\n[Adafruit Feather ESP32S2]: https://docs.zephyrproject.org/latest/boards/adafruit/feather_esp32s2/doc/adafruit_feather_esp32s2.html\n[Settings]: https://docs.zephyrproject.org/latest/services/storage/settings/\n\n[lib/bme68x-sensor-api]: lib/bme68x-sensor-api\n[drivers/bme68x-sensor-api]: drivers/bme68x-sensor-api\n[lib/bsec]: lib/bsec\n[lib/bme68x-iaq]: lib/bme68x-iaq\n[lib/bme68x-esp]: lib/bme68x-esp\n\n[samples/bme68x-tphg]: samples/bme68x-tphg\n[samples/bme68x-iaq]: samples/bme68x-iaq\n[samples/bme68x-esp]: samples/bme68x-esp\n\n[`bosch,bme68x-sensor-api-i2c.yaml`]: dts/bindings/bosch,bme68x-sensor-api-i2c.yaml\n[`bosch,bme68x-sensor-api-spi.yaml`]: dts/bindings/bosch,bme68x-sensor-api-spi.yaml\n\n[BME688]: https://www.bosch-sensortec.com/products/environmental-sensors/gas-sensors/bme688/\n[How to distinguish BME680 from BME688 in firmware]: https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/How-to-distinguish-BME680-from-BME688-in-firmware/td-p/73929\n[BME68X IAQ driver]: https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/drivers/bme68x_iaq.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdottspina%2Fbme68x-zephyr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdottspina%2Fbme68x-zephyr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdottspina%2Fbme68x-zephyr/lists"}