
Raspberry piにI2Cのセンサーを繋ぎ、smbus2でデータの取得を試みたところ表題のエラー。
File "/usr/local/lib/python3.7/dist-packages/smbus2/smbus2.py", line 425, in i2c_rdwr
ioctl(self.fd, I2C_RDWR, ioctl_data)
OSError: [Errno 121] Remote I/O error
まずはi2c接続が正常かどうか確認。
$ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
ちゃんとアドレス0x48にセンサーが表示されているので物理的な配線はOK。
以下のページによると、I2Cへのアクセスが頻回だとエラーが出るらしい。
Attention Required! | Cloudflare
read/writeが発生する要所要所でtime.sleep(1)を追記することでエラーは出なくなった。
コメント