RuntimeError: Unable to find bme280 on 0x76, IOError

Hello, I recently bought an enviro+ for my pi3.

I installed it on a clean pi, set it up as suggested and then tried some examples from the pimoroni git repo.
The LCD works fine, but I can’t manage to get any of the other examples working since I get a “Remote I/O error”.

Also, when I run i2cdetect, I get always a different result.

Any suggestions? I’m copying below the output I get from the terminal.
Thanks!


~/enviroplus-python/examples $ python weather.py       2025-07-12 20:42:21.505 INFO     weather.py - Print readings from the BME280 weather sensor.

Press Ctrl+C to exit!


Traceback (most recent call last):
  File "/home/bacci88/.virtualenvs/pimoroni/lib/python3.11/site-packages/bme280/__init__.py", line 215, in setup
    chip = self._bme280.get("CHIP_ID")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bacci88/.virtualenvs/pimoroni/lib/python3.11/site-packages/i2cdevice/__init__.py", line 230, in get
    self.read_register(register)
  File "/home/bacci88/.virtualenvs/pimoroni/lib/python3.11/site-packages/i2cdevice/__init__.py", line 183, in read_register
    self.values[register.name] = self._i2c_read(register.address, register.bit_width)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bacci88/.virtualenvs/pimoroni/lib/python3.11/site-packages/i2cdevice/__init__.py", line 288, in _i2c_read
    for x in self._i2c.read_i2c_block_data(self._i2c_address, register, bit_width // self._bit_width):
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/smbus2/smbus2.py", line 617, in read_i2c_block_data
    ioctl(self.fd, I2C_SMBUS, msg)
OSError: [Errno 121] Remote I/O error

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/bacci88/enviroplus-python/examples/weather.py", line 24, in <module>
    temperature = bme280.get_temperature()
                  ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bacci88/.virtualenvs/pimoroni/lib/python3.11/site-packages/bme280/__init__.py", line 248, in get_temperature
    self.update_sensor()
  File "/home/bacci88/.virtualenvs/pimoroni/lib/python3.11/site-packages/bme280/__init__.py", line 234, in update_sensor
    self.setup()
  File "/home/bacci88/.virtualenvs/pimoroni/lib/python3.11/site-packages/bme280/__init__.py", line 219, in setup
    raise RuntimeError("Unable to find bme280 on 0x{:02x}, IOError".format(self._i2c_addr))
RuntimeError: Unable to find bme280 on 0x76, IOError

results of i2cdetect

sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- 1d -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- 43 -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
30: -- -- -- -- -- -- -- -- -- -- 3a -- -- 3d -- --
40: -- -- -- -- -- -- -- 47 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- 63 -- 65 -- -- 68 69 -- -- -- -- -- --
70: 70 -- -- 73 -- -- -- 77

sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- 15 -- -- -- -- 1a -- -- 1d -- --
20: -- -- 22 23 24 -- 26 27 -- -- -- -- 2c -- -- --
30: -- -- -- -- -- -- -- -- -- -- 3a -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- 6a -- 6c -- -- --
70: -- -- -- -- -- -- -- --

If you haven’t already, I would unplug and then reseat the Enviro+. Shutdown and remove power before doing this. Something is up with the i2c connection? Might even be that the BME280 has failed and is gumming up the works. Try a reconnect first though.

I powered down, removed the enviro+ and then re-inserted it again, but I still get the same behaviour.

The LCD works, but the rest doesn’t.
Running light.py gives me the same error as for the weather script:

python light.py
Traceback (most recent call last):
  File "/home/bacci88/enviroplus-python/examples/light.py", line 9, in <module>
    ltr559 = LTR559()
             ^^^^^^^^
  File "/home/bacci88/.virtualenvs/pimoroni/lib/python3.11/site-packages/ltr559/__init__.py", line 219, in __init__
    self.part_id = self._ltr559.get('PART_ID')
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bacci88/.virtualenvs/pimoroni/lib/python3.11/site-packages/i2cdevice/__init__.py", line 230, in get
    self.read_register(register)
  File "/home/bacci88/.virtualenvs/pimoroni/lib/python3.11/site-packages/i2cdevice/__init__.py", line 183, in read_register
    self.values[register.name] = self._i2c_read(register.address, register.bit_width)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/bacci88/.virtualenvs/pimoroni/lib/python3.11/site-packages/i2cdevice/__init__.py", line 288, in _i2c_read
    for x in self._i2c.read_i2c_block_data(self._i2c_address, register, bit_width // self._bit_width):
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/smbus2/smbus2.py", line 617, in read_i2c_block_data
    ioctl(self.fd, I2C_SMBUS, msg)
OSError: [Errno 5] Input/output error

Looks like its time to e-mail tech support for a replacement.