Faulty bme680 breakout?

Hi all,

I’ve recently purchased the Pimoroni bme680 breakout, and it’s behaving unexpectedly.

Running the “read-all.py” script stops returning correct values after an indeterminate period of time (between 10-20 minutes). The gas readout stops working, and the other measurements freeze at odd values:

18.36 C,993.54 hPa,52.35 %RH,70984 Ohms
18.38 C,993.54 hPa,52.27 %RH,70924 Ohms
18.39 C,993.55 hPa,52.20 %RH,71104 Ohms
18.40 C,993.54 hPa,52.16 %RH,71406 Ohms
33.38 C,659.23 hPa,100.00 %RH
33.38 C,659.23 hPa,100.00 %RH
33.38 C,659.23 hPa,100.00 %RH
33.38 C,659.23 hPa,100.00 %RH

Is this an issue with the breakout, or user error?


I should say that CTRL-C’ing the script and restarting fixes the issue, but only temporarily. The issue returns.

How is it wired up? Breakout garden, header and jumper wires, soldered connection etc.

Hi, thanks for the reply.

2x I2C 1x SPI breakout garden on a RPi Zero W. Raspberry Pi OS, but not the very latest.

After playing with it for a while, it seems to have settled down. It’s been running for about 2 hours without issue, which is by far the longest it has been going. I’ll report back later with an update.

Ok, I have an i2c SPI Mini breakout garden and the i2c mini Breakout Garden plugged into the Mini Hat Hack3r, that connect to a Zero W. No issues I am aware of.
BME280, RV3028, LTR-559 in the i2c mini and a 0.96 LCD display in the i2c SPI mini.

Happened again. :(

17.92 C,991.67 hPa,53.30 %RH,97295 Ohms
17.92 C,991.68 hPa,53.32 %RH,97126 Ohms
17.92 C,991.69 hPa,53.35 %RH,97464 Ohms
17.91 C,991.70 hPa,53.37 %RH,97014 Ohms
33.38 C,659.23 hPa,100.00 %RH
33.38 C,659.23 hPa,100.00 %RH
33.38 C,659.23 hPa,100.00 %RH
33.38 C,659.23 hPa,100.00 %RH
33.38 C,659.23 hPa,100.00 %RH

I was running my Pi off of a laptop USB port, which I know isn’t ideal. I’ve moved it to a good USB power supply now to see how it runs. I suspect these kinds of precision components are sensitive to power quality.

OK, happened again. I’m going to assume I’ve got a faulty sensor.

I’m thinking its a faulty sensor. You could try the temperature-pressure-humididty.py example. Just to see if its only the air sensor part that’s glitching.

Yeah, disabling the gas sensor in the read-all.py script, it’s rock solid with just temp/press/humid. Looks like it’s the gas sensor that spoils things. Anyway, I’ve emailed Pimoroni so I’ll take it from there.

Did you get any resolution to this? I get the same with two Pimoroni BME680 boards.
Using temp-press-hum.py but with a 1s delay between readings, after about 15 mins:

Timestamp            Secs       Cnt  Temp    Presr  Hum
18:20:30.007849      956.2      919  20.22   993.06   52.39
18:20:31.049289      957.3      920  20.22   993.06   52.38
18:20:32.090693      958.3      921  20.22   993.06   52.38
18:20:33.131989      959.3      922  20.22   993.06   52.38
18:20:34.140396      960.4      923  32.93   658.71  100.00
18:20:35.148797      961.4      924  32.93   658.71  100.00
18:20:36.157225      962.4      925  32.93   658.71  100.00
18:20:37.165592      963.4      926  32.93   658.71  100.00
18:20:38.173951      964.4      927  32.93   658.71  100.00

The output is slightly different but measurement code is the same and I get the issue with the vanilla temp-press-hum.py too.

If I leave it running for a while, I get an exception:

Traceback (most recent call last):
  File "temp-press-hum.py", line 36, in <module>
    if sensor.get_sensor_data():
  File "/usr/local/lib/python3.7/dist-packages/bme680/__init__.py", line 244, in get_sensor_data
    status = self._get_regs(FIELD0_ADDR, 1)
  File "/usr/local/lib/python3.7/dist-packages/bme680/__init__.py", line 296, in _get_regs
    return self._i2c.read_byte_data(self.i2c_addr, register)
OSError: [Errno 121] Remote I/O error

If I don’t have the 1s delay, I typically just get the exception, after about 10 mins.
It’s plugged in to a pi400 via the breakout garden. I only have one in at a time and default 0x76.
Thanks, Richard

Hi, I got it replaced in the end. Pimoroni are awesome.

I didn’t get any Tracebacks, but I only used the “read-all.py” script.

Could you try the “read-all.py” script, but change the following line as follows:


This (obviously) disables the gas element. If you get solid results without error, it does sound like the sensor issue I had.

Let me know.

I get the same issue with or without the gas element on with read-all.py. I’ll contact Pimoroni.
Does your new sensor work?
Thanks for your help.

It’s still in the post, so fingers crossed.

Using a pi 4, read-all.py with gas sensor on has been running all night. pi400 it fails.

Interesting. I’ve sent my “faulty” sensor back to Pimoroni so I can’t test it on my Pi4.

Does your Pi400 have the same Raspberry OS build as your Pi4?

You may have better replies if you post your issue here.
Issues · pimoroni/bme680-python · GitHub

I have two BME680’s but I’m not using the gas sensor part. Mine are in headless setups with the WIFI turned off which makes it a bit of a PITA to mess with them.
I get the occasional glitch which I “think” is an io error. I have multiple i2c devices though, and no monitor connected to see what actually happened.
On the whole though IMHO my BME680’s are pretty reliable.

Thanks. Not sure if it’s the BME680. Both my sensors reliably fail in the right hand I2C slot on my breakout 400 (in a pi 400), but so far OK in the left hand I2C slot, and on the pi4.

My two BME680’s have male headers soldered on, which connect to female to female jumper wires, which then plug into a male header on a Proto hat.
I have a BME280 in an i2c Breakout Garden mini, first slot on the left. It also has an RV3028 and LT-559 in it. All working just fine, as far as I know. I’m running Enviro code on them. I have the 0.96 LCD in a i2c SPI Breakout Garden Mini showing the results. The two Breakout Garden MINI’s are plugged into a Mini Black Hat Hack3r. Pi Zero W.

Sounds good, I have to go away and learn about temp calibration etc, they’re miles out, out of the box. But do vary in proportion at least.