Pimoroni BME680: OSError: [Errno 121] Remote I/O error


#1

Hi

I have some problem with Pimoroni BME680.
I verified chatting on Discord my soldering and plugging in position are ok.

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

python read-all.py
Traceback (most recent call last):
File “read-all.py”, line 6, in
sensor = bme680.BME680()
File “build/bdist.linux-armv6l/egg/bme680/init.py”, line 37, in init
File “build/bdist.linux-armv6l/egg/bme680/init.py”, line 141, in set_filter
File “build/bdist.linux-armv6l/egg/bme680/init.py”, line 281, in _set_bits
File “build/bdist.linux-armv6l/egg/bme680/init.py”, line 296, in _get_regs
IOError: [Errno 121] Remote I/O error
pi@relayPi:~/bme680/examples $ python3 read-all.py
Traceback (most recent call last):
File “read-all.py”, line 6, in
sensor = bme680.BME680()
File “/usr/local/lib/python3.4/dist-packages/bme680/init.py”, line 40, in init
self.get_sensor_data()
File “/usr/local/lib/python3.4/dist-packages/bme680/init.py”, line 241, in get_sensor_data
self.set_power_mode(FORCED_MODE)
File “/usr/local/lib/python3.4/dist-packages/bme680/init.py”, line 225, in set_power_mode
self._set_bits(CONF_T_P_MODE_ADDR, MODE_MSK, MODE_POS, value)
File “/usr/local/lib/python3.4/dist-packages/bme680/init.py”, line 281, in _set_bits
temp = self._get_regs(register, 1)
File “/usr/local/lib/python3.4/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

Only once I got this output, then always I/O error
python3 read-all.py
Calibration data:
par_gh1: -13
par_gh2: -19929
par_gh3: 18
par_h1: 638
par_h2: 1036
par_h3: 0
par_h4: 45
par_h5: 20
par_h6: 120
par_h7: -100
par_p1: 36271
par_p10: 30
par_p2: -10474
par_p3: 88
par_p4: 3899
par_p5: -79
par_p6: 30
par_p7: 31
par_p8: -1321
par_p9: -3139
par_t1: 26327
par_t2: 26442
par_t3: 3
range_sw_err: 1
res_heat_range: 1
res_heat_val: 45

Initial reading:
gas_index: None
gas_resistance: None
heat_stable: False
humidity: None
meas_index: None
pressure: None
status: None
temperature: None
Traceback (most recent call last):
File “read-all.py”, line 37, in
sensor.set_gas_heater_temperature(320)
File “/usr/local/lib/python3.4/dist-packages/bme680/init.py”, line 196, in set_gas_heater_temperature
temp = int(self._calc_heater_resistance(self.gas_settings.heatr_temp))
File “/usr/local/lib/python3.4/dist-packages/bme680/init.py”, line 376, in _calc_heater_resistance
var1 = ((self.ambient_temperature * self.calibration_data.par_gh3) / 1000) * 256
TypeError: unsupported operand type(s) for *: ‘NoneType’ and ‘int’

Could you please help?


#2

Do you have an alternate i2c baudrate set in /boot/config.txt something like dtparam=i2c_baudrate=XXX?