Git Product home page Git Product logo

fpp's Introduction

FPP - Falcon Player

The Falcon Player (FPP) is a lightweight, optimized, feature-rich sequence player designed to run on low-cost Single Board Computers (SBC). It was originally created to run on the $35 Raspberry Pi, hence the middle 'P' in the short name but now the FPP supports many more systems. It is still mostly commonly used on a Raspberry Pi (Zero, 2, 3, 4, 5) or a Beagle Bone (Black, Green, Pocket). The FPP shorthand is still used but it is now just called Falcon Player.

FPP aims to be controller agnostic, it can talk E1.31, DDP, DMX, Pixelnet, and Renard to hardware from multiple hardware vendors. Using various capes, FPP can also be a controller on P5 and P10 Matrixes, or strings of ws2811 pixels.

Useful Links:

fpp's People

Contributors

adamcoulombe avatar bendudz avatar computergeek1507 avatar cpinkham avatar cybercop23 avatar darylc avatar dependabot[bot] avatar djulien avatar dkulp avatar dmjpixel avatar drew8n avatar ghormann avatar glitch752 avatar ihbar avatar jaredb7 avatar jnovack avatar jsm174 avatar kosh42 avatar lightsonhudson avatar marka75160 avatar materdaddy avatar mjunek avatar mrpaular avatar mykroft avatar onlinedynamic avatar poporacer avatar rawcreative avatar rudybrian avatar shadowlight8 avatar zer0h-bb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fpp's Issues

Volume in new "OGG" version

I'm not getting any usable volume from the PPD unless I move the slider to Full volume. It seems to have very "fine" control from about 50% up to 100% but nothing below 50%

Add support for Vast Electronics USB fm transmitter

Add support for the relatively popular (at least at DIYC) Vast USB FM transmitter.

Supposedly it is recognized as a standard USB-Audio device. RDS control may not be as straight forward, but I believe there is some code floating around for linux under a project name something like "fmstick".

Scriptable effects

It'd be nice to return values from a script that become the output of an effect. It's possible this may overlap with the request for background sequences.

The initial thought for this was to grab light color(s) from a feed such as cheerlights and use that to drive pixels. In lieu of supporting every possibility, thought it might be easier to allow for scripts to return channel and intensity information and let people apply their own logic.

Make FPP more platform independent

There are already some pieces in place for this, but we should make an effort to become more platform independent as more platforms are requested, and supported.

Things off the top of my head:
• Build on the device after a checkout (instead of checking a Pi binary into the repo)
• Config "profiles" - maybe some sort of default settings files depending on hardware
• Turn some features into more "API" based things that can be loaded at runtime instead of compile time?!? (things like ogg vs. mp3, wiring Pi for SPI vs. some other SPI library vs. nothing)

Volume Control

Two suggested enhancements related to volume.

First - Can a decimal value be displayed for the volume level? If I find the "perfect" level for my FM transmitter, I'd like to be able to put it back to that spot.

Second - Because the apparent volume of an MP3 file is variable because of enhancements (compression/expansion) by the producer, they just don't sound like the same volume even when the Audacity waveform looks similar. Can we have (in the Source Files/Music Files) a +/- adjuster per MP3?

Configurable audio offset

Create a per-sequence audio offset in case the audio and sequence data appear off by a small bit. This would save the user from having to insert/delete silence from the beginning of their songs and re-uploading the modified songs to the Pi.

FPD does not generate pixelnet compatible with DLA Active Smart hub

Using FPD version FPD_Alpha_0_0_2
and FPP version v0.2.0-11-ga1a173d

And DLA Active Smart Hub (pickit3 checksum 8196)
and DLA SSCv4 (pickit3 checksum D8D3)

I was unable to use the FPD to drive pixels on the SSCv4 controllers attached to the hub.
Pixelnet passed through the hub to the Falcon16 downstream worked ok.
I did see Smart hubs downstream from the hub working -- but they had SSCv3 with Falcon FW.

I also had problems getting the DMX port from this hub to light any pixels.

I used a EtD with E1.31 traffic and the same hub and SSCv4 controllers worked.

Upload to FPP would not take a LARGE fseq file

Very large fseq file (9 minute, 32K channels) gave me a 373 mb file.
The normal webpage based upload would not process it.

I did get it there using a binary FTP transfer and it could be added to a playlist.

I realize that is an extreme size. but

Pi Player did not start a scheduled playlist this morning

I have a Playlist that is scheduled to run from at 5am to 6am each morning. It has been running each morning when I get up to feed the dogs. For 2 days it did. Today (Tuesday), it was not running. I did a "stop" and "start" of FPPD and it started correctly. The display looked normal except for the fact that it wasn't playing.

I hadn't opened the Web interface to FPPD in the last 24 hours from any location, so I don't have any smoking gun.

Will check it again tomorrow.

Isolate E1.31 traffic

Add ability to isolate E1.31 traffic to one interface.

This should be user-configurable such that you can use WIFI to connect the PI to your main network, and the wired ethernet to connect to your show network and have the E1.31 data only on wired, or any other similar topology. Some people might use a second USB wired dongle to isolate "show" networks and "home" networks, so this should be made generic.

Light Test Utility

After being able to turn on my show from the front yard with the Pi Player I was thinking it would be an awesome enhancement to be able to test the DMX universes and channels similar to the capabilities from the da_E131 program. You would be able to walk around the yard with an iPad or your favorite device and test out your lights using the Pi Player.

Gil

Playlist editing - moving entries up and down is very touchy

I have a playlist going right now with 8 entries.

a 90 second sequence with music
a 5 sec. pause
a 20 sec Tune To graphic
a 5 sec pause
A 120 second sequence with music
a 5 sec pause
a 20 sec Tune To graphic
a 5 sec pause

Getting them into that order was like play Whack-a-Mole. Drag one item and 3 would move. I could have saved time by deleting them all and recreating all 8 items.

I would love it to be more stable.
This was with the older 0.1.0 noob and with the new 0.2.0 noob (just loaded)

In Google Chrome, I had no volume control (it came back)

OK, lets just say that it didn't until I closed the browser, reopened it and refreshed it.
It was actually displaced off to the right about 100 pixels or so in the black part of the screen.
Now it is there.

Internet Explorer 10 has it.

and it does startup an Everyday sequence that hasn't expired.

I'll check Firefox and my phone's browser and add that info

Bug with fresh USB Stick

I had a USB stick fail, so I bought backups/spares. In the process of bringing up these backups on another Pi so the backups are ready I encountered a problem.

In the v0.2.0 image, the apache error log is configured to go to /home/pi/media/logs/ and apache is attempted to start.

On the very first boot, it fails to start apache because /home/pi/media is empty, therefore there is no log directory. You must wait for FPPD to be running to even start apache manually after the fact, or manullya create a logs directory in /home/pi/media.

The fix is to create the logs directory in the startup script immediately after the flash media is found/mounted.

Logrotate Bug

It appears the image and code aren't in sync. Logrotate won't work and we should potentially rev the "config" version with a fix.

/etc/logrotate.d/* configuration files are written for each individual log file it seems. I didn't check all of them, but at the very least the fppdlog is incorrect.

It's configured to rotate /home/pi/media/fppdLog.txt which is not the default log file anymore. The correct default filename is /home/pi/media/logs/fppd.log ever since 76470d6 on November 6th. It seems Chris/Tony weren't quite in sync with their updates for logrotate since with the current configuration, the main fppd log will never get rotated, potentially filling people's USB sticks.

Perhaps the config files should be re-written to simply rotate all /home/pi/media/logs/*.log files for sanity, and the limit could use to be lowered to maybe 50Mb?

My log looks to grow about 8Mb per night without accessing the status page but a couple times a night. If I were to access it even more, I'd add a line per second, further growing the file. If people are using smaller USB sticks, they might fill up without them knowing it, and logs will fail to write. I'm not sure what fppd will do when it fails to write it's log...? Users will also likely be unable to change settings at this point as well.

Web UI Tool Tips

Tool tips in the Web UI should be added.

For example, when hovering over "Stop Gracefully" it should let the user know that means it will stop after the completion of the playlist. One could think it ends after the current song.

Request: run FPP with read-only file system

One of the issues that Raspberry Pi has is the risk of power outages and corruption of the file system.

What if the Pi switched automatically to read-only file systems after changes to configuration are applied... it might be necessary to move all configuration settings and content to a separate file system... when the changes are made the show is stopped/suspended -- the file system is mounted read/write -- changes applied -- the file system is mounted read/only -- the show is resumed.

The OS and the system would be on a file system consistently mounted read-only.

Logs and diagnostic info could be mounted on a file system that read/write all the time -- and regularly backed up to yet another file system. When the system boots it could reformat the log space -- just in case it ever is left in a bad state due to loss of power.

I'm sure there are other solutions, but I supply one possible solution to illustrate the options of keeping the file systems in robust condition even if power is lost. (the risk of power loss during a config change might be considered acceptable...)

Web UI Settings screen

A settings page should be made that controls things like whether a user has Pixelnet, use for USB->serial devices (RDS, Renard/DMX, ???). Depending on these features, parts of the UI should be enabled/disabled as needed.

Add wifi setup to network setup page.

Currently we don't support setting wifi ESSID and password. This support should be added to the network page.

I think I had some beginnings to this based on the AWK scripts Tony had(has?) in the repo.

Filter Settings based on machine type

For the non-PI installs, things in the web UI should be disabled such as enabling/disabling NTP, changing timezones/time/etc.

This project is not likely to officially support random linux distributions and anybody trying to run this on a non-pi is likely to be an advanced user that can configure those types of things manually. To me, they're outside the scope of this project and should be filtered out of the web UI unless we detect we're running on a PI.

Notes:
Is detecting "armv6l" in machine type (uname -m ) good enough detection of a pi, or should be do more playing with /proc/cpuinfo or something?

Add a way to manually set the time.

Some people might not use an RTC nor have their player connected to the internet and will need a way to set the time.

This can be added to the forthcoming settings page.

prioritized play lists, and multiple sequences running at once

From: Steve Gase
It would be nice to have "prioritized" play lists (PL). The idea would be to have overlapping schedules, and when the higher priority PL is started, the lower priority PL is stopped or interrupted... only for the lower priority PL to resume when the higher priority PL is complete.

From: CaptainMurdoch
Not a lot of time left this year for bigger features like this. I have had a similar idea in my head already though, to allow multiple sequences to be playing at the same time. Essentially it's the same as my effects sequence code which allow multiple effects to be playing at the same time, but thinking a bit larger. :)

Web UI on iOS issues

Was playing with accessing the FPP over wireless via iPad and discovered that the "slider" bar for volume can't be adjusted via a touch screen because the device interprets it as a "pan". May want to have a mobile format for web UI that addresses that or add advancement buttons to either increase or decrease the volume by clicking or tapping in the case of tablet, phone, or iPod.

Merge settings files

Merge pixelnetDMX file, E1.31 universes file, bytes received file, and schedule files into main settings file so common handlers, file utilities, etc. can be taken advantage of, not to mention one concise place for all configuration to take place.

wiki access should spawn new window

Clicking on the wiki should spawn a new windows so we can get back to where we were without having to reaccess the fpp or keep going back and forth between the wiki and the fpp main windows.

This would be an enancment, but I do not know how to tag it as such.

Pixelnet data output even when all pixelnet/dmx outputs disabled

It appears that pixelnet data gets output even when there are no enabled pixelnet or DMX outputs enabled. Looks like it starts at channel 1 always. I noticed this when I happened to have a 2801 string plugged in to the RPi, just wasn't expecting it to do anything.

Direct output of WS2801 (mod to pixelnet)

It appears that the pixelnet output is just the WS2801 protocol with a few (6?) bytes prepended. I'd like to request an option to output that without the header for direct connected WS2801 pixels. I'm willing to do the code for this as well.

Get IPs better

There should be some system calls or libraries that can give us IP addresses of interfaces more reliably, rather than the hack-ish method we're currently using to parse output of a bunch of other executables.

FPP Install Error

Hi I am getting the pictured error message after attempting to install FPP on a new Raspberry Pi. A 16gb SD card was formatted and files were extracted as per procedure. There is a 4GB usb drive attached.
photo

Apostrophes in Filenames cause problems

Upload works, population of file entries work, however once added to a playlist, the playlist file is cut off at the first apostrophe. Something isn't escaped properly.

The rest of things appear to work properly in the UI.

When the playlist runs, it fails to find the filename (since it only has a partial file) and hangs, never playing the next song either. A sub-task of this should be to ensure that if a file is missing, it should be skipped and a warning/error is displayed somehow.

Needs Internationalization Support

There's already an AUS user saying things aren't working as expected. Investigation into linux's locale settings's effect on text strings, time formats, etc. are needed.

setting UI password not working

When attempting to set the UI password, it would fail with this error message:
[Mon Dec 30 08:16:25 2013] [error] [client 192.168.x.x] PHP Warning: file_put_contents(/opt/fpp/www/.htaccess): failed to open stream: Permission denied in /opt/fpp/www/uipassword.php on line 17, referer: http://fpp.private/uipassword.php

One solution is to change the owner/group for the /opt/fpp/www directory from root:root to pi:pi, this will allow the "pi" user write to the /opt/fpp/www directory

ogg lockup

I have experienced a lockup using the new ogg123 code. It only seems to happen on the PI using the same files.

CaptainMurdoch had the same issue last night and he noted that this may have to do with the fseq file not being configured the same length as the music. I converted my MP3 to WAV, then to OGG using open source linux utilities and it has grown in length from 2:28.0 to 2:28.9. The file continues to play to completion, but FPPD seems to lockup before that and no socket commands work anymore.

strace tells me it's stuck in futex, gdb doesn't give anything useful as the futex is locked in some calls we make that find their way to libc.so

Volume Control stored in Playlist

I'd love to see the option to alter volume in the playlist, kind of like there is an option to insert a pause now. I live on a busy street and with the vehicle noise at rush hour my speakers need to be cranked. By 9 pm I need them down to about 30%. When I was running a show from my computer I setup a script to adjust the volume at different times. It would be great to be able to do that with FPP. BTW, a bigger control would be nice, too, for better control (or maybe once you click the slider using arrows would allow fine adjustments up and down?).

I worry about wasting CPU cycles - perhaps too much

In my setup, I'm outputting to an FPD for all my display.
Would it be possible to disable the Ethernet output (Unicast or Multicast) to reduce the CPU usage a bit?

Also, when in Bridge Mode (which I use sometimes for testing) would a checkbox to enable/disable the live display of bytes transferred be possible? Once you see that data is incoming, you really don't need to monitor it. That amount of live updating has to have some impact on CPU usage.

Loopback interface selected for E1.31 output when only wireless available

When only wlan0 is available, the loopback interface gets selected for E1.31 output.

Changing the popen call under E131.c GetLocalWiredIPaddress to use the following command takes care of this particular case.

/sbin/ifconfig|grep -v 127.0.0.1|grep inet|head -1|sed 's/:/ /'|awk '{print $3}'

Since it's theoretically possible to have other loopback devices, getifaddrs or similar, would ideally be used to select the first non-loopback device by default, and a config entry allowed to override this.

FWIW, I don't see a need to present this in the web interface as it's somewhat detailed, but would be nice to have a config file option.

Can submit a pull request and commit this if you prefer.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.