MikeL's FreeBSD howto - Addressable LED string FPP version


I've started exploring Falcon Player (FPP) for my LED string controller. I wish to document here some of the trouble I had getting things going as it took a lot of effort to figure it out - maybe others will benefit from my experience.

I had already written a Python program using the neopixel library to run my light string (details here). The test LED string is 2 Alitove WS2811 50 bulb strings connected in line. The control signal is driven directly from the GPIO 18 (pin 12) on the rPi. My program was able to accurately control the test string, so I know the hardware works.

Now I did a brain-transplant, installing a new micro-sd card that had been configured with FPP. I was not able to get anything meaningful on the LEDs.

I did eventually find the problem, but let me describe the symptoms and what expectations you should have so as to help people find this page. I did:

Now since there's an offered option to upgrade the OS, I'll do that too. Bear in mind I'm operating "headless". I took that option, waited it out. After a while it showed that it was done and said it would restart. I tried going back into the browser a few times, no go. I came back about half an hour later, still no good. I powered down, gave it a minute to reboot, still no go. I went and dug around for a spare monitor and cable, plugged them in, and did a powerdown reboot. This time it came up ok. Found it - after the OS upgrade, you must have a screen long enough to:

**Ok, now here's my unsoliceted rant. If you look through my previous attempts at this project, I went through this same problem, in a slightly different form, about a year ago in my DIY version. The Canakit rPi 3B+ I had, did not exist in the neopixel configuration file. If you look at the source code, it's a humungous "case statement" that calls out the capabilities of each specific rPi model and ancillary chipset. That's fine. But there's no reasonable default! I understand that it's reasonable to return an error so as to ensure that the programmer can notify the user that the full capabilities may not be accessible. However, it is not reasonable to simply return no error, and no legit data. This means that the innocent user gets stuck like I was - a useful error message should have been delivered. The way it is now, one must perpetually chase an ever-increasing list of specific hardware. Assume the basic capabilities, dammit! *done with rant*.

Copyright © 1995-2023 Mike Lempriere (running on host pedicel)