V2.1.20
Per-channel oversampling tuned to manufacturer accuracy presets
Followup to V2.1.19's forced-mode + IIR-off architecture cleanup. Now that oversampling does the per-read averaging exclusively (no IIR), tuning the per-channel oversampling to Bosch's published accuracy presets gives a real, measurable improvement on the channel that matters most — pressure.
| Sensor | T (was → now) | P (was → now) | H (was → now) |
|---|---|---|---|
| BME280 | x8 → x2 | x4 → x16 | x2 → x1 |
| BMP390 | x2 → x1 | x8 → x32 | — |
| BME688 | x8 → x2 | x4 → x16 | x2 → x1 |
| SHT45 | unchanged (0xFD high-precision command — already maximum) |
Why these specific settings
- Pressure UP (x16 / x32): noise reduction is √N per oversampling step. At x16 the BME280 / BME688 reach ~0.16 Pa noise (~1.4 cm altitude resolution); at x32 the BMP390 reaches ~0.03 Pa. This is the channel where high oversampling actually pays off.
- Temperature DOWN (x1 / x2): every conversion dissipates heat inside the chip, biasing T (and via T's role in the calibration formula, also H). Bosch specifically caps T at x2 in their highest-accuracy mains-powered preset.
- Humidity DOWN (x1): each step of H oversampling only takes the noise from 0.008 → 0.002 %RH — well below the chip's ±3 %RH absolute accuracy spec. Higher oversampling is wasted conversion time.
References
- BME280 datasheet table 9 ("Indoor navigation" preset: T x2 / P x16 / H x1)
- BMP390 datasheet table 10 ("drone" / highest-pressure-resolution preset: T x1 / P x32)
- BME680 application note BST-BME680-AN014 (T x2 / P x16 / H x1 example config)
- Sensirion SHT4x datasheet §4 (no per-channel oversampling exists;
0xFDis max precision)
Conversion times (per-read waits bumped accordingly)
| Sensor | Before | After | Typical | Max |
|---|---|---|---|---|
| BME280 | 35 ms wait | 55 ms wait | ~40 ms | ~46 ms |
| BMP390 | 20 ms wait | 30 ms wait | ~13 ms | ~14.5 ms |
| BME688 | 50 ms wait | 60 ms wait | ~39 ms | ~46 ms |
All still tiny vs the 150 s CYCLE interval.
Compatibility
No NVS schema changes. No upstream-API change visible to Madavi / sensor.community / Radmon — same fields, same units. Lower per-read pressure noise (cleaner plots), smaller T self-heating bias (more accurate H).
Flash
| File | Offset |
|---|---|
| bootloader.bin | 0x1000 |
| partition-table.bin | 0x8000 |
| ota_data_initial.bin | 0xf000 |
| geiger_v2.bin | 0x20000 (OTA) |
| geiger_v2_merged.bin | 0x0 (full image) |