I've been using a ClusterHat (1RPi + 4 PiZeroes) and all has been well until recently.

The PiZeros boot off the RPi's SD card using the ClusterHAT-2018-10-09-lite-1-usbboot boot image, and when I started receiving the message below

Traceback (most recent call last):  
  File "/sbin/clusterhat", line 142, in <module>  
    dir = hat.get_dir() # I/O pin directions  
  File "/usr/share/clusterhat/python/xra1200.py", line 31, in get_dir  
    return self.bus.read_byte_data(self.address, DIR)  
IOError: [Errno 121] Remote I/O error  

I assumed a software problem, so reinstalled the image which had worked perfectly before but to no avail. The same error occurs with the clusterhat command.

I've taken the hat to pieces, and rebuilt it with no effect.

I then went to check the GPIO pins using gpiotest with the hat unmounted

$ gpiotest  
Pull up on gpio 30 failed.  
Pull down on gpio 31 failed.  
Skipped non-user gpios:   
Tested user gpios: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31   
Failed user gpios: 30 31  

The processor spec is

$ cat /proc/cpuinfo

processor   : 0  
model name  : ARMv7 Processor rev 4 (v7l)  
BogoMIPS    : 38.40  
Features    : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32   
CPU implementer : 0x41  
CPU architecture: 7  
CPU variant : 0x0  
CPU part    : 0xd03  
CPU revision    : 4 

The Pi is running fine other than when I try to interact using "clusterhat ... " Is the Pi or the Hat at fault?

  • I don't recognise that model of Pi. In /proc/cpuinfo there should be a field called Revision. What does that say? Do you know what Pi model you are using? – joan Jul 28 '19 at 19:17
  • Thanks, I'd only copied processor 0 details. The revision is a020d3 – Nick Jul 28 '19 at 19:26

The Pi3B+ has revision a020d3.

gpiotest uses pigpio to do the test and has incorrectly identified the Pi model.

The Pi3B+ is like all the 40-pin expansion header models in having user GPIO of 0-27 (although 0 and 1 are reserved for HAT usage).

You can ignore the reported problems with GPIO 30 and 31 as they are not user GPIO and no attempt should have been made to test them.

The I/O error you are getting (IOError: [Errno 121] Remote I/O error) is caused by a failure in an I2C transaction. Usually that is down to loose wiring.

The Pi has two I2C buses. Bus 0 uses GPIO 0/1 (pins 27/28). Bus 1 uses GPIO 2/3 (pins 3/5).

If you have something connected to bus 1 then check the connections. If the problem is on bus 0 then that is presumably the HAT itself (as bus 0 is reserved for HAT usage). If it's the HAT then the vendor may have knowledge of the problem.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.