Skywriter not working (IOError: [Errno 5] Input/output error)


#1

Hi!

I was excited to receive my Skywriter (non-HAT), however, I could not get the test.py example running on my Raspberry Pi 2 (I tried before with a trusty old Raspberry Pi model B, but got similar issues). After reading through the forums and github issues, mainly about the I2C issues, none of the currently documented solutions seem to work for me. My taken steps consist of:

  1. Fresh Raspbian install (2015-05-05 version), raspi-config for network config and sd-card expand.

  2. Run curl -sSL get.pimoroni.com/skywriter | bash (all went well) and reboot

  3. Connected Skywriter to GPIO pins

  4. Tried to run test.py, but got errors:

    pi@raspberrypi ~/Pimoroni/skywriter $ sudo python test.py
    Traceback (most recent call last):
    File “test.py”, line 2, in
    import skywriter
    File “/usr/local/lib/python2.7/dist-packages/skywriter.py”, line 408, in
    i2c.write_i2c_block_data(SW_ADDR, 0xa1, [0b00000000, 0b00011111, 0b00000000, 0b00011111])
    IOError: [Errno 5] Input/output error
    Error in atexit._run_exitfuncs:
    Traceback (most recent call last):
    File “/usr/lib/python2.7/atexit.py”, line 24, in _run_exitfuncs
    func(*targs, **kargs)
    File “/usr/local/lib/python2.7/dist-packages/skywriter.py”, line 401, in _exit
    stop_poll()
    TypeError: ‘NoneType’ object is not callable
    Error in sys.exitfunc:
    Traceback (most recent call last):
    File “/usr/lib/python2.7/atexit.py”, line 24, in _run_exitfuncs
    func(*targs, **kargs)
    File “/usr/local/lib/python2.7/dist-packages/skywriter.py”, line 401, in _exit
    stop_poll()
    TypeError: ‘NoneType’ object is not callable

  5. Checked on i2cdetect, but no devices were detected

  6. Added “dev_tree=” to /boot/config.txt, as mentioned in https://github.com/pimoroni/skywriter-hat/issues/2

  7. Checked i2cdetect again, got following output

    pi@raspberrypi ~/Pimoroni/skywriter $ sudo i2cdetect -y 1
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: – -- – -- – -- – -- – -- – -- –
    10: – -- – -- – -- – -- – -- – UU – -- – --
    20: – -- – -- – -- – -- – -- – -- – -- – --
    30: – -- – -- – -- – -- – -- – UU – -- – --
    40: – -- – -- – -- – -- – -- – -- – -- – --
    50: – -- – -- – -- – -- – -- – -- – -- – --
    60: – -- – -- – -- – -- – -- – -- – -- – --
    70: – -- – -- – -- – --

  8. Run test.py again, got similar errors.

Currently, I’m out of ideas on what to try next. Any suggestions would be greatly appreciated!


#2

I saw a new Raspbian rolling out the door a couple of days back… I haven’t been brave enough to try it (note to myself: I need to get a secondary microSD).

Maybe that is related? or is your ‘trusty model B’ not as cutting edge?


#3

Indeed, the model B had an sd-card with an older Raspbian installed. Since I did several configuration changes on it for a different project, I tried starting with a fresh install to make sure the errors were not caused by conflicting configuration steps.


#4

I believe I’ve granted you the ability to post pictures- could you snap a shot of your wiring if possible?

Also, do you have any other I2C devices to try?


#5

Hi gadgetoid, thanks for the reply. I get error “Sorry, new users can not upload images.” when trying to add an image. (EDIT: after logging out and back in, I can add images, here they are:)

For the wiring, I followed the instructions on Github, and double-checked with the diagram on http://pi.gadgetoid.com/pinout/skywriter_hat (beautiful site BTW, kudos :-) )

I’ll try another I2C device this evening, will report back asap.


#6

Wiring looks good! It could be a fault with the Skywriter or some oddness with your Pi and i2c. Let me know what you find! And sorry it’s such a hassle.


#7

No worries, gadgetoid! I tested another I2C device, which was not working either. So, I downloaded an older version of Raspbian and disk-dumped it on a sd-card (which gave me enough time to make some guacamole and watch an episode of Big Bang Theory with my wife). After configuring I2C again, output from i2cdetect gave an actual address, and the device worked fine. I reconnected the skywriter, started the test, got no errors, and output started flowing. Seems a bit random right now, but that could be because I’m running a headless pi over ssh, and the wifi gets slow sometimes. Will test further tomorrow.

At least, the skywriter is working. And it does seem that perhaps the latest Raspbian versions require a different approach when using I2C. Anyway, I’m not smart enough to figure that out ;-) I’ll stick to figuring out fun projects with my new toy :-)


#8

I got my Raspbian fully up-to-date tonight, equipped with a dot3k (which uses i2c), and that seems to work… most of the time, when I get into trouble is when a source has been added to apt-get and it rolls its cutting edge libs as part of apt-get upgrade.

I have come to always enable those sources JUST to pull the specific packages I need from those repos, then disable them again. Touch wood I haven’t had to re-image my SDs since I’ve started be paranoid about that stuff. I think that is a big trap for beginners that are often told to apt-get upgrade, as well as adding repos, but never to pacify them.

… my 2 cents worth of wisdom anyhow ;-)


#9

Excellent news! Also, +10 for Guacamole!

I wish I could pin down why I2C seems not to work for some people- and come up with a magical-fixy-script. A reinstall of Raspbian is a slow and painful process… ( unless you use the time to make gauc, when it’s a delicious process! )