OSError: [Errno 5] EIO - Related to i2c

Running the following code:

try:
with open(‘/lib/phew/ID.py’, mode=‘r’) as exfile:
code = exfile.read()
execCode = compile(code, ‘lib/phew/ID.py’, ‘exec’)
exec(execCode)
except Exception as e:
import sys
sys.print_exception(e)
finally:
import XRPLib.resetbot

I get the following error:

MPY: soft reboot
Traceback (most recent call last):
File “”, line 5, in
File “lib/phew/ID.py”, line 1, in
File “/lib/XRPLib/defaults.py”, line 19, in
File “/lib/XRPLib/imu.py”, line 26, in get_default_imu
File “/lib/XRPLib/imu.py”, line 59, in init
File “/lib/XRPLib/imu.py”, line 155, in is_connected
File “/lib/XRPLib/imu.py”, line 106, in _getreg
OSError: [Errno 5] EIO

running an i2c scan:

from machine import Pin, SoftI2C

You can choose any other combination of I2C pins

i2c = SoftI2C(scl=Pin(5), sda=Pin(4))

print(‘I2C SCANNER’)
devices = i2c.scan()

if len(devices) == 0:
print(“No i2c device !”)
else:
print(‘i2c devices found:’, len(devices))

for device in devices:
print("I2C hexadecimal address: ", hex(device))

I get:

I2C SCANNER
i2c devices found: 112
I2C hexadecimal address: 0x8
I2C hexadecimal address: 0x9
I2C hexadecimal address: 0xa
I2C hexadecimal address: 0xb
I2C hexadecimal address: 0xc
I2C hexadecimal address: 0xd
I2C hexadecimal address: 0xe
I2C hexadecimal address: 0xf
I2C hexadecimal address: 0x10
I2C hexadecimal address: 0x11
I2C hexadecimal address: 0x12
I2C hexadecimal address: 0x13
I2C hexadecimal address: 0x14
I2C hexadecimal address: 0x15
I2C hexadecimal address: 0x16
I2C hexadecimal address: 0x17
I2C hexadecimal address: 0x18
I2C hexadecimal address: 0x19
I2C hexadecimal address: 0x1a
I2C hexadecimal address: 0x1b
I2C hexadecimal address: 0x1c
I2C hexadecimal address: 0x1d
I2C hexadecimal address: 0x1e
I2C hexadecimal address: 0x1f
I2C hexadecimal address: 0x20
I2C hexadecimal address: 0x21
I2C hexadecimal address: 0x22
I2C hexadecimal address: 0x23
I2C hexadecimal address: 0x24
I2C hexadecimal address: 0x25
I2C hexadecimal address: 0x26
I2C hexadecimal address: 0x27
I2C hexadecimal address: 0x28
I2C hexadecimal address: 0x29
I2C hexadecimal address: 0x2a
I2C hexadecimal address: 0x2b
I2C hexadecimal address: 0x2c
I2C hexadecimal address: 0x2d
I2C hexadecimal address: 0x2e
I2C hexadecimal address: 0x2f
I2C hexadecimal address: 0x30
I2C hexadecimal address: 0x31
I2C hexadecimal address: 0x32
I2C hexadecimal address: 0x33
I2C hexadecimal address: 0x34
I2C hexadecimal address: 0x35
I2C hexadecimal address: 0x36
I2C hexadecimal address: 0x37
I2C hexadecimal address: 0x38
I2C hexadecimal address: 0x39
I2C hexadecimal address: 0x3a
I2C hexadecimal address: 0x3b
I2C hexadecimal address: 0x3c
I2C hexadecimal address: 0x3d
I2C hexadecimal address: 0x3e
I2C hexadecimal address: 0x3f
I2C hexadecimal address: 0x40
I2C hexadecimal address: 0x41
I2C hexadecimal address: 0x42
I2C hexadecimal address: 0x43
I2C hexadecimal address: 0x44
I2C hexadecimal address: 0x45
I2C hexadecimal address: 0x46
I2C hexadecimal address: 0x47
I2C hexadecimal address: 0x48
I2C hexadecimal address: 0x49
I2C hexadecimal address: 0x4a
I2C hexadecimal address: 0x4b
I2C hexadecimal address: 0x4c
I2C hexadecimal address: 0x4d
I2C hexadecimal address: 0x4e
I2C hexadecimal address: 0x4f
I2C hexadecimal address: 0x50
I2C hexadecimal address: 0x51
I2C hexadecimal address: 0x52
I2C hexadecimal address: 0x53
I2C hexadecimal address: 0x54
I2C hexadecimal address: 0x55
I2C hexadecimal address: 0x56
I2C hexadecimal address: 0x57
I2C hexadecimal address: 0x58
I2C hexadecimal address: 0x59
I2C hexadecimal address: 0x5a
I2C hexadecimal address: 0x5b
I2C hexadecimal address: 0x5c
I2C hexadecimal address: 0x5d
I2C hexadecimal address: 0x5e
I2C hexadecimal address: 0x5f
I2C hexadecimal address: 0x60
I2C hexadecimal address: 0x61
I2C hexadecimal address: 0x62
I2C hexadecimal address: 0x63
I2C hexadecimal address: 0x64
I2C hexadecimal address: 0x65
I2C hexadecimal address: 0x66
I2C hexadecimal address: 0x67
I2C hexadecimal address: 0x68
I2C hexadecimal address: 0x69
I2C hexadecimal address: 0x6a
I2C hexadecimal address: 0x6b
I2C hexadecimal address: 0x6c
I2C hexadecimal address: 0x6d
I2C hexadecimal address: 0x6e
I2C hexadecimal address: 0x6f
I2C hexadecimal address: 0x70
I2C hexadecimal address: 0x71
I2C hexadecimal address: 0x72
I2C hexadecimal address: 0x73
I2C hexadecimal address: 0x74
I2C hexadecimal address: 0x75
I2C hexadecimal address: 0x76
I2C hexadecimal address: 0x77

Not sure what is going on, other than it looks like the code is attempting to read something from memory and its getting an IO error (access?)

The on board IMU (gyros and accelerometers) are on the 12C bus. I looks like you are moving the 12C bus to GPIO 4&5 so the IMU code can no longer get data from the IMU on GPIO 18 & 19 casing an Errno 5.

Missed one thing…

brand-new out of the box… no code changes, all ports setup properly, 19 other one setup the same exact way and they all work…

Any suggestions?

Oh, and If I insert the i2c scan in the code (inside of the imu._getreg() function),
the scan does not list anything…

Wondering if there a hardware issue?

removed all code from the PICO, and rebuilt from another one…

everything works now.