LATEST RELEASE:  FPP 7.5 - Download from here -



Welcome, Guest.
Please login or register.
Forgot your password?

+-Site Stats

Total Members: 16443
Latest: Brad Bishop
New This Month: 13
New This Week: 1
New Today: 0
Total Posts: 132544
Total Topics: 16432
Most Online Today: 125
Most Online Ever: 7634
(January 21, 2020, 02:14:03 AM)
Users Online
Members: 1
Guests: 73
Total: 74

FPP and WS2812b not work, but work with python script

Started by irumi, April 11, 2024, 03:11:34 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


Hello, I purchased a WS2812b LED strip. I connected it directly to a Raspberry Pi 3, on GPIO18. 
I'm trying to make it work with Falcon Pi Player (FPP). FPP is installed on my Raspberry Pi, and I can access the FPP interface via my browser. I configured my strip in the OUTPUT tab, as "spixels", port 1 (GPIO18, P1-12) with the protocol WS8101.

On the Display Testing page, I check Enable Test Mode, select the configured LED strip, but it doesn't work.

I tested it with a Python script found on the internet, I run the script via FPP and it works perfectly fine. The major difference I see is the protocol used: WS2811X via Python and WS8101 via FPP. I searched online if I could install the WS2811X protocol, but I couldn't find how to do it.
Do you think my error comes from there? If yes, can we install the WS2811X protocol?

My Python script:
#!/usr/bin/env python3
# NeoPixel library strandtest example
# Author: Tony DiCola (
# Direct port of the Arduino NeoPixel library strandtest example.  Showcases
# various animations on a strip of NeoPixels.

import time
from rpi_ws281x import PixelStrip, Color
import argparse

# LED strip configuration:
LED_COUNT = 50        # Number of LED pixels.
LED_PIN = 18          # GPIO pin connected to the pixels (18 uses PWM!).
# LED_PIN = 10        # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0).
LED_FREQ_HZ = 800000  # LED signal frequency in hertz (usually 800khz)
LED_DMA = 10          # DMA channel to use for generating signal (try 10)
LED_BRIGHTNESS = 255  # Set to 0 for darkest and 255 for brightest
LED_INVERT = False    # True to invert the signal (when using NPN transistor level shift)
LED_CHANNEL = 0       # set to '1' for GPIOs 13, 19, 41, 45 or 53

# Define functions which animate LEDs in various ways.
def colorWipe(strip, color, wait_ms=50):
    """Wipe color across display a pixel at a time."""
    for i in range(strip.numPixels()):
        strip.setPixelColor(i, color)
        time.sleep(wait_ms / 1000.0)

def theaterChase(strip, color, wait_ms=50, iterations=10):
    """Movie theater light style chaser animation."""
    for j in range(iterations):
        for q in range(3):
            for i in range(0, strip.numPixels(), 3):
                strip.setPixelColor(i + q, color)
            time.sleep(wait_ms / 1000.0)
            for i in range(0, strip.numPixels(), 3):
                strip.setPixelColor(i + q, 0)

def wheel(pos):
    """Generate rainbow colors across 0-255 positions."""
    if pos < 85:
        return Color(pos * 3, 255 - pos * 3, 0)
    elif pos < 170:
        pos -= 85
        return Color(255 - pos * 3, 0, pos * 3)
        pos -= 170
        return Color(0, pos * 3, 255 - pos * 3)

def rainbow(strip, wait_ms=20, iterations=1):
    """Draw rainbow that fades across all pixels at once."""
    for j in range(256 * iterations):
        for i in range(strip.numPixels()):
            strip.setPixelColor(i, wheel((i + j) & 255))
        time.sleep(wait_ms / 1000.0)

def rainbowCycle(strip, wait_ms=20, iterations=5):
    """Draw rainbow that uniformly distributes itself across all pixels."""
    for j in range(256 * iterations):
        for i in range(strip.numPixels()):
            strip.setPixelColor(i, wheel(
                (int(i * 256 / strip.numPixels()) + j) & 255))
        time.sleep(wait_ms / 1000.0)

def theaterChaseRainbow(strip, wait_ms=50):
    """Rainbow movie theater light style chaser animation."""
    for j in range(256):
        for q in range(3):
            for i in range(0, strip.numPixels(), 3):
                strip.setPixelColor(i + q, wheel((i + j) % 255))
            time.sleep(wait_ms / 1000.0)
            for i in range(0, strip.numPixels(), 3):
                strip.setPixelColor(i + q, 0)

# Main program logic follows:
if __name__ == '__main__':
    # Process arguments
    parser = argparse.ArgumentParser()
    parser.add_argument('-c', '--clear', action='store_true', help='clear the display on exit')
    args = parser.parse_args()

    # Create NeoPixel object with appropriate configuration.
    # Intialize the library (must be called once before other functions).

    print('Press Ctrl-C to quit.')
    if not args.clear:
        print('Use "-c" argument to clear LEDs on exit')


        while True:
            print('Color wipe animations.')
            colorWipe(strip, Color(255, 0, 0))  # Red wipe
            colorWipe(strip, Color(0, 255, 0))  # Green wipe
            colorWipe(strip, Color(0, 0, 255))  # Blue wipe
            print('Theater chase animations.')
            theaterChase(strip, Color(127, 127, 127))  # White theater chase
            theaterChase(strip, Color(127, 0, 0))  # Red theater chase
            theaterChase(strip, Color(0, 0, 127))  # Blue theater chase
            print('Rainbow animations.')

    except KeyboardInterrupt:
        if args.clear:
            colorWipe(strip, Color(0, 0, 0), 10)


You want to configure it as a "PiHat" which is a dual-output Channel Output for WS281x pixels.  Install the PiHat virtual EEPROM and configure the PiHat output and your pixels should work.


Thank you for the response. I'll test it this weekend. I didn't think of trying that because I don't have a PiHat on my Raspberry Pi.


The "PiHat" output and Virtual EEPROM is the one used to drive 2 outputs of WS281x pixels using the rpiws281x library.  You don't need a hat installed to use the output.  The pins used match what you are looking for.

If you want to drive up to 24 outputs of WS281x pixels on a Pi, you can use the DPIPixels virtual EEPROM.

Support FPP

+- Recent Topics

Direct writing on the "LED Panels" peripheral by digilabpg
Today at 04:58:18 AM

FPP 8 ui issues by MikeKrebs
May 21, 2024, 09:24:58 PM

Compatibility question by John_82
May 21, 2024, 05:09:53 PM

No RPIW281x on FPP 7.5? by Poporacer
May 21, 2024, 03:24:46 PM

Second WS* strand not working? by HumanDactyl
May 20, 2024, 11:02:08 AM

Does FPP only suport panels listed in the single panel size drop down list? by Rubbermonster
May 18, 2024, 07:54:19 AM

Linsn receiver card setup by darylc
May 17, 2024, 05:55:46 AM

Control ESPixelStick with FPP (it's work with xligth) by Sawdust
May 15, 2024, 08:39:34 AM

Falcon F16V4 not receiving FPP data by tbone321
May 14, 2024, 09:43:33 PM

Power Draw for Board by darylc
May 11, 2024, 08:47:52 PM

Powered by EzPortal
Powered by SMFPacks Menu Editor Mod