Discussion:
[Gumstix-users] ERROR: I2cTransfer: ioctl failed: Remote I/O error (121)
Chris Sears
2006-04-24 05:36:46 UTC
Permalink
I am getting the I2cTransfer error again. I've had a working
gumstix/robostix pair and I use the following script on the gumstix:

modprobe i2c-dev
modprobe i2c-pxa

insmod /mnt/mmc/char-driver.ko
insmod /mnt/mmc/robostix_drv.ko

/mnt/mmc/uisp --wr_fuse_l=0xbf --wr_fuse_h=0xc2 --wr_fuse_e=0xff

Atmel AVR ATmega128 is found.

Fuse Low Byte set to 0xbf

Fuse High Byte set to 0xc2

Fuse Extended Byte set to 0xff

sleep 2
/mnt/mmc/uisp --erase --upload if=/mnt/mmc/i2c-Boot-m128-16MHz.hex

Atmel AVR ATmega128 is found.
Erasing device ...
Reinitializing device
Atmel AVR ATmega128 is found.
Uploading: flash

sleep 2
/mnt/mmc/i2c-load --reboot 0x0b write /mnt/mmc/i2c-io.hex

ERROR: I2cTransfer: ioctl failed: Remote I/O error (121)
ERROR: I2cReadBlock failed
ERROR: Unable to retrieve boot information from i2c address 0x0b

I have changed any software. Is there any way to recover my robostix?
Any script I can run?

Chris
Dave Hylands
2006-04-24 14:18:44 UTC
Permalink
Hi Chris,
Post by Chris Sears
I am getting the I2cTransfer error again. I've had a working
...snip...
Post by Chris Sears
sleep 2
/mnt/mmc/i2c-load --reboot 0x0b write /mnt/mmc/i2c-io.hex
ERROR: I2cTransfer: ioctl failed: Remote I/O error (121)
ERROR: I2cReadBlock failed
ERROR: Unable to retrieve boot information from i2c address 0x0b
I have changed any software. Is there any way to recover my robostix?
Any script I can run?
The i2c address is stored in EEPROM. So if the EEPROM got corrupted
somehow, or you tried to change it using the ic-load command to change
it then it will be using that address rather than the default one of
0x0b.

You have a few options:

1 - Use the eeprom-init.hex file:
<http://websvn.gumstix.com/listing.php?repname=Buildroot&path=%2Fbranches%2Fprojects%2Frobostix%2Fi2c-BootLoader%2F&rev=0&sc=0>

You can use the following command:
uisp --segment=eeprom --upload if=eeprom-init.hex

to reset the portion of the EEPROM used by the bootloader back to the
default erased state. The i2c address will then be 0x0b

2 - You can disable the EESAVE fuse setting, and then EEPROM will be
erased when flash is erased, thus resetting the i2c address.

The EESAVE bit is bit 3 in the high fuse byte. The web page says to
use 0xc2. If you were to use 0xca then the EESAVE feature would be
disabled.

--
Dave Hylands
Vancouver, BC, Canada
http://www.DaveHylands.com/

Loading...