Gisky: It would appear the "IO error" message originates from the caught "IOError" exception in the function scrollphat.update().
Adding extra print statements to the "test-all.py" script hasn't so far identified under what condition the error arises as it randomly appears either when an LED is set or reset.