* [PATCH] iio: chemical: bme680: Fix measurement wait duration calculation
@ 2026-02-02 7:38 Chris Spencer
2026-02-03 21:27 ` Vasileios Amoiridis
0 siblings, 1 reply; 2+ messages in thread
From: Chris Spencer @ 2026-02-02 7:38 UTC (permalink / raw)
To: jic23; +Cc: linux-iio, linux-kernel, vassilisamir, Chris Spencer
This function refers to the Bosch BME680 API as the source of the
calculation, but one of the constants does not match the Bosch
implementation. This appears to be a simple transposition of two digits,
resulting in a wait time that is too short. This can cause the following
'device measurement cycle incomplete' check to occasionally fail.
Fixes: 4241665e6ea0 ("iio: chemical: bme680: Fix sensor data read operation")
Link: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L521
Signed-off-by: Chris Spencer <spencercw@gmail.com>
---
drivers/iio/chemical/bme680_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c
index 70f81c4a96ba..24e0b59e2fdf 100644
--- a/drivers/iio/chemical/bme680_core.c
+++ b/drivers/iio/chemical/bme680_core.c
@@ -613,7 +613,7 @@ static int bme680_wait_for_eoc(struct bme680_data *data)
* + heater duration
*/
int wait_eoc_us = ((data->oversampling_temp + data->oversampling_press +
- data->oversampling_humid) * 1936) + (477 * 4) +
+ data->oversampling_humid) * 1963) + (477 * 4) +
(477 * 5) + 1000 + (data->heater_dur * 1000);
fsleep(wait_eoc_us);
--
2.43.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] iio: chemical: bme680: Fix measurement wait duration calculation
2026-02-02 7:38 [PATCH] iio: chemical: bme680: Fix measurement wait duration calculation Chris Spencer
@ 2026-02-03 21:27 ` Vasileios Amoiridis
0 siblings, 0 replies; 2+ messages in thread
From: Vasileios Amoiridis @ 2026-02-03 21:27 UTC (permalink / raw)
To: Chris Spencer; +Cc: jic23, linux-iio, linux-kernel
On Mon, Feb 02, 2026 at 07:38:42AM +0000, Chris Spencer wrote:
> This function refers to the Bosch BME680 API as the source of the
> calculation, but one of the constants does not match the Bosch
> implementation. This appears to be a simple transposition of two digits,
> resulting in a wait time that is too short. This can cause the following
> 'device measurement cycle incomplete' check to occasionally fail.
>
Hi Chris,
This is a good catch! I didn't have problems with measurements in the
past but that is also because of the entropy of the sensor plus there
were some series with "buggy" sensors that were behaving a bit
differently. In any case, thanks for finding this!
Here is my tag, in case it is of any worth:
Acked-by: Vasileios Amoiridis <vassilisamir@gmail.com>
Cheers,
Vasilis
> Fixes: 4241665e6ea0 ("iio: chemical: bme680: Fix sensor data read operation")
> Link: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L521
> Signed-off-by: Chris Spencer <spencercw@gmail.com>
> ---
> drivers/iio/chemical/bme680_core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c
> index 70f81c4a96ba..24e0b59e2fdf 100644
> --- a/drivers/iio/chemical/bme680_core.c
> +++ b/drivers/iio/chemical/bme680_core.c
> @@ -613,7 +613,7 @@ static int bme680_wait_for_eoc(struct bme680_data *data)
> * + heater duration
> */
> int wait_eoc_us = ((data->oversampling_temp + data->oversampling_press +
> - data->oversampling_humid) * 1936) + (477 * 4) +
> + data->oversampling_humid) * 1963) + (477 * 4) +
> (477 * 5) + 1000 + (data->heater_dur * 1000);
>
> fsleep(wait_eoc_us);
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-02-03 21:27 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-02 7:38 [PATCH] iio: chemical: bme680: Fix measurement wait duration calculation Chris Spencer
2026-02-03 21:27 ` Vasileios Amoiridis
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox