Dot3k not working after apt-get upgrade to support Pi 2

Hi - after doing an apt-get update/apt-get upgrade on my B+ (in prep to try swapping the SD card over to a Pi 2) I seem to have lost the ability to use the Display-O-Tron 3000. From a bit of searching it looks like new firmware has been put in place by the upgrade, and previously this only happened if you did an rpi-update - it looks like it’s now default. Are there any (current) instructions for getting the dot3k working again, because most of the things I’ve looked at don’t seem to work (enabling SPI and I2C from raspi-config, disabling device tree from raspi-config, etc…)

Ta in advance!

Are you getting any errors? Can you try this:

sudo pip install spidev --ignore

From my previous bitter experience with upgrading and the DoT3K, I’d suggest grabbing a spare SD card and putting a completely fresh install on it, then trying that. If it works, consider migrating your old project to the new SD card. It may be annoying and unsatisfying, but if your experience is anything like mine, it’ll be a lot quicker than toiling away trying to fix a broken upgrade.

There seems to be something about upgrades, especially kernel/firmware upgrades, that breaks SPI or something that the DoT3K relies on.

For example after a previous kernel/firmware upgrade, my DoT3K’s backlights & LEDs worked fine but it wouldn’t display text on the display. See: Displayotron backlight problem

I’m afraid I have tried a fresh install, with the current Raspbian image (31-01-2015) and have got the same result. The get.pimoroni.com/dot3k script seemed to work fine, but I get the following error when trying to run any dot3k code;

Traceback (most recent call last):
  File "./backlight.py", line 3, in <module>
    import dot3k.lcd as lcd
  File "/usr/local/lib/python2.7/dist-packages/dot3k/lcd.py", line 3, in <module>
    lcd = st7036.st7036(register_select_pin=25)
  File "/usr/local/lib/python2.7/dist-packages/st7036.py", line 20, in __init__
    self.spi.open(0, spi_chip_select)
IOError: [Errno 2] No such file or directory

Which, to me, looks very similar to the error in the post that seems to have resulted in the sticky “Your Dot3k / Skywriter / etc doesn’t work after running rpi-update” post - (Display-O-Tron 3000 onwards). However, I didn’t run an rpi-update, just the usual apt-get update/apt-get upgrade - and the new image seems to have the same issue which makes me think that the problematic firmware from rpi-update is now mainstream, and warning people away from rpi-update isn’t going to be sufficient.

For completeness, tried sudo pip install spidev --ignore as requested above - no change…

I’ve also just tried again with raspi-config to enable SPI and I2C (as I suspect the get script is not doing the right think for device tree) - ahah, as I say that it seems to have worked! I have no idea why it didn’t yesterday, as I did try just about everything I could think of with both the upgraded and a clean image… however, it does seem to be down to device tree, and presumably the get script could be updated to handle it…

So I’m good to go again - hurrah! Now to try it on my Pi 2 (although I believe right now it won’t work because RPi.GPIO doesn’t recognise the Pi 2 as a Pi…)

There’s a pre-release RPi.GPIO out there that works, but I’d wait for the final if I were you. At the moment Dot3k just wont work on the Pi 2 if device-tree is enabled - well it works, but it’s crawlingly horribly slow. This is a bug with high-precision timers not being enabled in Raspbian under device-tree and is not something we can fix- we have to wait for an official fix to come down the intertubes.

I’m glad my fixed spidev is working for you- I went to great trouble to take control of that library so it’d continue to work for upgrading Pi users!

The advice about rpi-update and device-tree now also applies to upgrades for Pi 2, which use the new kernel and enable device-tree by default. I will be fixing our installer scripts so that they enable SPI/I2C properly on both old/new Pi installations.

Getting software working/tested has been a bit chaotic on the Pi 2 thus far, and has been held back by the aforementioned timer issue- but we’re making progress!

I’m glad my fixed spidev is working for you

With hindsight that must indeed be the difference between my first attempts and the one that worked - nice job! I also note the sticky is updated too.

Cheers!