Stealthburner Neopixel Guide
Neopixel Theory: Basics
Neopixel is Adafruit’s name for a variety of digitally controlled LEDs. They are also often named by their driver ICs, with WS2812B
and SK6812
being the most common.
Each neopixel has 3 or 4 individually controllable LEDs inside: Red (R)
, Green (G)
, Blue (B)
and optionally White (W)
. The intensity of these colors can also be individually controlled. Most often SK6812
-based Neopixels are RGBW
, but SK6812 variants with only RGB
exist. A dedicated white LED gives a more pure white color - mixing white out of the individual RGB
components often result in a white with a noticeable blue tint.
For RGBW
Neopixels you often have the choice of Warm White
, Neutral White
and Cold White
, which are often advertised as RGBWW
, RGBNW
or RGBCW
. Neopixels with a dedicated white LED can be identified by their yellow phosphor part embedded in the LED.
Neopixels require a permanent +5V supply and a data signal. Other non-5V-variants exist, but are not covered within this guide.
It’s always good if you have a datasheet available for the particular Neopixel you’ve bought.
Neopixel Theory: Data
Neopixels use a single data wire to transmit data to all LEDs. To achieve this, the data output (often named DOUT
) of a neopixel must be connected to the data input (often named DIN
) of the next. Neopixels are not aware of their position in the chain - the first Neopixel simply removes the data it receives first and passes on the rest of the data to the following pixels.
Since RGBW
Neopixels use 32 bits of data and RGB
Neopixels use 24 bits of data, it is not recommended mixing the two types on a single chain of Neopixels unless your Firmware has explicit support for that.
Different types of Neopixels have different color orders - it is the order in which the color components are transmitted over the wire. The color order is denoted by their beginning letters - for example, GRB
means that green
is transmitted first, followed by red
and finally by blue
.
Once the Neopixels have received their data, they will keep their color until they receive other data. This means that unless you change your LED color, Klipper (and other firmware as well) will not transmit anything to the Neopixels.
Troubleshooting
Here are some quick troubleshooting tips to get you started. If you can’t figure it out, please ask in the Voron Discord and mention which troubleshooting steps you’ve already completed.
No LED is working
- Check your wiring
- Double-check that you have configured the correct pin
- Double-check that you actually send data to the LEDs (the default stealthburner macros set a color on startup automatically)
LEDs are showing the wrong colors
- Double-check that you’re using the correct color format
- Add a 100 Ohm resistor in the data line to avoid signal integrity issues
- Check that your crimps are done properly and that there’s no intermittent contact
Guides
Wiring Check
A
is the 5V line going to your mainboard or to the previous pixel (D
)B
is the data line going from DIN to your mainboard’s data pin or to DOUT of the previous pixel (E
)C
is the GND line going to your mainboard or to the previous pixel (F
)
Checking Continuity
Put your multimeter into continuity mode and ensure it beeps when you hold the two probes together. Then perform the following measurement tasks for each pixel:
- Ensure you have no connectivity between
A
andB
(no beep) of the same pixel - Ensure you have no connectivity between
B
andC
(no beep) of the same pixel - Ensure you have no connectivity between
B
andE
(no beep) of the same pixel - Ensure you have connectivity between
A
andD
(beep) of the same pixel - Ensure you have connectivity between
C
andF
(beep) of the same pixel - Ensure you have continuity between
D
andA
of the previous pixel (or your mainboard) - Ensure you have continuity between
F
andC
of the previous pixel (or your mainboard) - Ensure you have continuity between
E
andB
of the previous pixel (or your mainboard)
If any of the measurements have an unexpected result, triple-check your solder joints. A jig like NeoPixelSolderingTool can help you in case you need to re-solder the joints.
Adding a 100 Ohm resistor to combat signal integrity issues
The data is sent with a signal rate of 800kHz, which is pretty high and can cause signal reflections, which in turn degrades the signal integrity. The signal may be that much scrambled that the Neopixels cannot reliably interpret the data, causing wrong or no colors.
The solution in most cases is to add a 100 Ohm resistor in the data line as close to the mainboard as possible. The wattage and tolerance is not relevant, if you don’t know what to get, get a 1/4W 5% resistor.
Do not crimp the resistor. Instead, solder it to a wire as shown below. Use heat shrink tube to avoid the resistor shorting out other components.
Choosing a mainboard pin
Most modern mainboards have a dedicated neopixel output, sometimes called “RGB”. If your mainboard has such an output, you should use it if it’s not already used otherwise.
Always check with the pin diagrams provided by your mainboard manufacturer before powering your printer on!
Table of commonly used mainboards with their respective dedicated Neopixel outputs with 5V data levels:
Mainboard | Connector Name | Pin |
---|---|---|
Bigtreetech SKR 1.4 (Turbo) | Neopixel | P1.24 |
Fysetc Spider 1.0, 1.1, 2.2 | 5V-RGB | PD3 |
Bigtreetech Octopus (Pro) | RGB_LED (J37) | PB0 |
Bigtreetech SKR Mini E3 v1.2 | Neopixel | PC7 |
Bigtreetech SKR Mini E3 v2.0 / v3.0 | Neopixel | PA8 |
Bigtreetech SKR Pico v1.0 | RGB | IO24 |
Alternatively, you can use any pin which is directly connected to your MCU and which doesn’t have circuitry in place on your mainboard. Note that these pins output 3.3V data levels, and that can lead to the requirement to add a 100 Ohm resistor and/or level shifter - see the respective chapters in this guide.
Here are some alternative pins for some common mainboards. Note that you may need to get your +5V supply and GND from somewhere else on these boards.
Mainboard | Connector Name | Pin |
---|---|---|
Bigtreetech SKR 1.3, SKR 1.4, SKR 1.4 Turbo | Servos | P2.0 |
Fysetc Spider 1.0, 1.1, 2.2 | any free endstop pin | check pin diagram |
Bigtreetech Octopus (Pro) | BL_TOUCH J43 | PB6 |
Bigtreetech SKR Mini E3 v1.2 | Servos | PA1 |
Bigtreetech SKR Mini E3 v2.0 / v3.0 | Z-Probe | PC14 / PA1 |
Bigtreetech SKR Pico v1.0 | Servos | IO29 |