Skip to content

SPI Setup

Charlie Powell edited this page Oct 24, 2020 · 9 revisions

This page is due a re-write, so please bear with if it is a little unclear!

The plugin utilises the Raspberry Pi's SPI interface to push data to the LEDs, so that we don't have to run OctoPrint as root. There are a couple of things that need to be taken care of for using the plugin, so helpfully I have created a setup wizard that will do all the heavy lifting for you. All you need is the password for your Raspberry Pi (if you haven't changed this, it is the default raspberry - though you really should do for security!).

If you want to find out more about the actions it performs, or troubleshoot them then they are listed below.

Here's the wizard in action:

Wizard gif

Please note that you may have to reload the web interface after a restart of OctoPrint, to get the wizard to show up. It won't show up if all of the settings are already correct, but you should see a lightbulb in the navbar if the plugin is working as expected.

Behind the scenes setup (What the wizard does)

1:

Add the pi user to the gpio group. This means you can access the GPIO pins on the Raspberry Pi. Already configured on many newer OctoPi images.

Run sudo adduser pi gpio to do so, or groups pi to check if Pi is already there.

2:

Enable SPI, which is how the plugin will drive the LEDs.

Can be done through raspi-config or by adding dtparam=spi=on to /boot/config.txt (Easier!). Requires root access.

3:

Increase the SPI Buffer size, so we can output more data. Needed to drive more than a handful of LEDs

Add spidev.bufsiz=32768 to the end of /boot/cmdline.txt. Requires root access.

4:

Raspberry Pi 3 or earlier only. Should be removed for Pi 4.

Set the correct clock frequency. Needed to get the correct signal frequency. On a Raspberry Pi 3, this should be 250. This step is not required on a Pi4, it should be removed from the config

Add core_freq=250 to /boot/config.txt. Requires root access.

5:

Raspberry Pi 4 only. Should be removed for all others.

Set a minimum clock frequency. Starting with the Raspberry Pi 4, the SPI frequency can change if the Pi is idling vs. 'working', which can cause the LEDs to misbehave and flicker, or change colour. Not required on earlier models.

Set core_freq_min=500 in /boot/config.txt. Requires root access.


Origin of the settings

These settings are suggested by the rpi_ws281x library that the plugin depends on, you can see more here about running the library on the various Pi models.

Heads up! This documentation has migrated to Gitbook! Find it here: https://cp2004.gitbook.io/ws281x-led-status/

Clone this wiki locally