Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IOError: [Errno 121] Remote I/O error #19

Open
smallblackdog opened this issue Jan 19, 2019 · 16 comments
Open

IOError: [Errno 121] Remote I/O error #19

smallblackdog opened this issue Jan 19, 2019 · 16 comments

Comments

@smallblackdog
Copy link

Hi,

I'm having a similar problem to #10 but the issue isn't my i2c address I think (it's 0x76 as defined for the primary in the constants file).

Any suggestions? I'm not really sure where to look.

Thanks,

pi@mypi:~ $ python2.7 Pimoroni/bme680/examples/read-all.py 
Traceback (most recent call last):
  File "Pimoroni/bme680/examples/read-all.py", line 6, in <module>
    sensor = bme680.BME680()
  File "/usr/local/lib/python2.7/dist-packages/bme680/__init__.py", line 25, in __init__
    self.chip_id = self._get_regs(CHIP_ID_ADDR, 1)
  File "/usr/local/lib/python2.7/dist-packages/bme680/__init__.py", line 296, in _get_regs
    return self._i2c.read_byte_data(self.i2c_addr, register)
IOError: [Errno 121] Remote I/O error
pi@mypi:~ $ 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 --                         

@Gadgetoid
Copy link
Member

What BME680 board are you using, and how is it connected?

@smallblackdog
Copy link
Author

Ah yes, sorry, I should have mentioned that to begin with.

I'm using the Pimoroni BME680 Breakout board on a Pi Zero W running Raspbian Stretch (full install). BME680 software installed using the curl command from the readme. i2c enabled.

Pi has a Hammer Header. I've soldered the female connector into the BME680 board and have it plumbed in to pins 1,3,5,7,9; gnd on pin 9 matching the text on the board.

Thanks,

@Gadgetoid
Copy link
Member

Sorry for the monumental delay getting back to you- did you ever get to the bottom of this?

@georghildebrand
Copy link

Just came across this issue. in my case it was because the bme680 needs some time to init (5 min or so) then it worked. @Gadgetoid

@lokijota
Copy link

Also have this error. Was there ever any solution?

@kurisubrooks
Copy link

I'm also having this exact issue, any solutions?

@lokijota
Copy link

Answering myself -- for me the error was that I was reading from 76 and the device is on 77. Fixed that and it's working fine.

@kurisubrooks
Copy link

Checking i2cdetect it's definitely connected to 0x76, i've only started having problems with this since adding the official Raspberry Pi touchscreen, which also uses i2c for communicating touch...

@sandyjmacdonald
Copy link
Member

sandyjmacdonald commented Jan 20, 2020

@kurisubrooks Is it the Pimoroni BME680 breakout that you're using?

@kurisubrooks
Copy link

Yes it is @sandyjmacdonald

@sandyjmacdonald
Copy link
Member

Can you confirm whether it works without the touchscreen, or does it seem to be a permanent error now?

@kurisubrooks
Copy link

It works correctly without the touchscreen. It appears to be related to the Pimoroni Breakout Garden (I2C board), as I soldered headers to the BME680 breakout and wired it without the breakout garden, and it appears to work correctly even with the touch screen.

However, with the touchscreen connected to the stacking headers on the Breakout Garden, the functionality of the connected I2C breakouts appeared to be compromised. Occasionally the BME680 would 'work', but I use this term very loosely as it would often report false data every few loops, giving values like -182°C and 740hPa. Without, however, there is no issue.

@nicrivard
Copy link

Hi - I tried connecting to my Raspberry Pi 3 Model B to the BME680 breakout using the female 1x5 right-angle header and then the 1x5 male header but have been experiencing the same [Errno 121] Remote I/O error issue. I've followed all the steps outlined in https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-bme680-breakout

When running python3 read-all.py I get...

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/usr/local/lib/python3.7/dist-packages/bme680/__init__.py", line 25, in __init__
    self.chip_id = self._get_regs(CHIP_ID_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

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
  File "/usr/local/lib/python3.7/dist-packages/bme680/__init__.py", line 25, in __init__
    self.chip_id = self._get_regs(CHIP_ID_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

And when running python read-all.py I get...

Traceback (most recent call last):
  File "read-all.py", line 15, in <module>
    sensor = bme680.BME680(bme680.I2C_ADDR_SECONDARY)
  File "build/bdist.linux-armv7l/egg/bme680/__init__.py", line 45, in __init__
  File "build/bdist.linux-armv7l/egg/bme680/__init__.py", line 319, in _get_regs
IOError: [Errno 121] Remote I/O error

When I run i2cdetect -y 1 it shows...

     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 --

I have tried swapping-out each of the cables individually but I get the same error every time. Here are some pictures of my latest set-up...

pi2
pi3
pi1

@LeniaMarga
Copy link

Hello, I have the same issue. I have tried a lot of different things. Please help :)

@Gadgetoid
Copy link
Member

@nicrivard you've probably figured it out by now- but it's going to need soldering! Unsoldered pin headers are literally square pegs into round holes and don't make a great connection.

@LeniaMarga any luck since?

@thomasgalliker
Copy link

@Gadgetoid, so you would never plug cables of I2C sensors directly to the 40-pin GPIO header? You would solder I2C sensor cables always directly to the Raspberry board, is it what you say? That's pretty crazy in case you want to exchange some components.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants