Raspberry Pi Tally Lights

Running a camera studio is a complicated affair from pretty much every angle. Not only is the camera gear expensive but the rest of the studio setup takes care and attention down to the lighting as well. When adding multiple cameras to the mix, like for a television studio, the level of complexity increases exponentially. It’s great to have a few things that simplify the experience of running all of this equipment too, without the solution itself causing more problems than it solves, like these network-operated Raspberry Pi-powered tally lights.

A tally light is the light on a camera that lets the person being recorded know which camera is currently in use. Networking them all together often requires complex wiring or at least some sort of networking solution, which is what this particular build uses. However, the lights are controlled directly over HTTP rather than using a separate application which might need a port open on a firewall or router, which not only simplifies their use but doesn’t decrease network security.

The HTTP interface, plus all of the software and schematics for this build, are available on the project’s GitHub page. We imagine the number of people operating a studio and who are in need of a tally light system to be fairly low, but the project is interesting from a networking point-of-view regardless of application. If you do have a studio like this and are looking for other ways to improve it, we do have a simple teleprompter hack that might be right up your alley.

24 thoughts on “Raspberry Pi Tally Lights

  1. Sooo… HTTP isn’t “a separate application which might need a port open on a firewall or router …”

    I now understand how you folks get your security boo-boos. Perhaps you’re even a celeb on Shodan!

    1. I don’t understand your criticism. The article says the opposite of what you think:

      >However, the lights are controlled directly over HTTP rather than using a separate application which might need a port open on a firewall or router, which not only simplifies their use but doesn’t decrease network security.

    2. I think it means “additional port” assuming that you’d normally have HTTP open on account of there’s not much point in having a network at all if all ports are closed.

    3. > …the lights are controlled directly over HTTP rather than using a separate application which might need a port open on a firewall or router…

      Everything after the word “rather” is referring to the alternative.

      > Sooo… HTTP isn’t …

      It isn’t an Application, but it is a protocol for an interface to an Application.

    4. For OBS tally light plugins, most implementations require you to essentially open a REST or SOAP API on the same machine OBS is running on, requiring you to open up ports on the box you are streaming from and have the tally lights reach into OBS, rather than OBS reaching out to the lights.

      By having the tally lights individually addressable, you don’t have to open your streaming machine to any inbound traffic. Instead OBS can reach outbound to the tally lights, and control them directly.

  2. I’m not getting the point of this. It seems to only make sense in a live staged studio environment where a separate person is sitting behind a mixing desk controlling multiple cameras — the tally light indicates to the talent (the talking head in front of the camera) that the camera is live, but more importantly where to look. It also indicates to the operator behind the camera to pay attention to what they’re doing.

    The thing is, this is only needed if the video is live streaming AND the camera selection is not under control of the talent.

    So, what’s the use case for this in modern video production?

    1. What are you not getting? You and the article stated the reason for using them, indicating to the talent which camera is live. Have you not watched a modern podcast on YouTube lately?

      1. Why would you watch a podcast? Isn’t that by definition no longer a podcast?

        But the criticism stands. If the “production” is just one person who is also personally in control over the camera, an indicator light seems frivolous.

        1. If you make a great deal of stuff and move the camera around to do different shots and show other details etc the light is probably a great peace of mind. No worries you know I did get the right camera, that is where I put Cam 3 in the last shuffle..

          Not sure I get the way they have it running though. A pi, even a Pi zero is complete overkill for turning a light on… If you are putting a Pi at every camera surely it should be controlling/recording the camera too. So its not being hugely wasted, and that doesn’t seem to be how its set up, though I might have missed where they documented it – afterall they are focused on documenting the light… (Also not 100% sure if a Pi zero could keep up with a DSLR over USB – only tried that type of thing on a Pi3 and 4 – both of which have been able to way more than match the old DSLR I was playing with)

          1. You aren’t going to be getting anywhere decent quality out of trying to use the Pi for recording even if that was a goal (which it is not in this case). 1) USB feed options from most DSLRs have limited resolution less than even 1080p, maybe 720 if you are lucky and have other limitations to feed it over the limited USB 2.0 bandwidth. 2) Even with USB HDMI capture dongles, USB 2.0 once again becomes a limitation plus the only reasonable option to record or ‘transmit’ video from the Pi in real time is using the built in H264 encoder which you absolutely do not want to rely on as a source/intermediary format vs a lossless/uncompressed format.

            And control is unnecessary in setups like this as the video feeds are all going back to OBS which is doing all the control and switching.

            Anyone who is going so far as to having a multicam live switching setup like this and needs the use of tally lights is going to be aiming for quality and that usually entails direct HDMI feed from each individual camera back to the computer doing the switching/recording, often fed to, at minimum, higher quality HDMI capture devices like Elgato products, Magewell’s, or BlackMagic’s. Some even go so far as to dipping into pro broadcasting tech and SDI/HD-SDI. All of these will provide an uncompressed video signal to the application doing the recording/switching while all the cameras are doing is just continuously ‘rolling’ feeding video back to the computer to do all the heavy lifting, no local recording or the like at each camera (save for maybe if they want a backup recording just in case).

    2. I could see a situation where the Talent would still want a tally light if they were controlling everything themselves with a streaming deck. Rather than looking down at the deck they could simple look at the lit up camera.

    3. The scenario you mention is exactly what I’m building it for – I often am working on productions where the talent is in front of the camera, there is an audio engineer working on the mix, and there is a streaming producer who is working on cuts between multiple cameras. Specifically I use OBS on a three-camera setup, where we take from multiple scenes and also have pre-produced video segments to take back and forth from. The people on camera were having a hard time knowing when they were live – so I created this to make it easier for everyone on-stage to follow.

  3. Does the Pi do more than just listen to HTTP and turn on LEDs?

    Although I appreciate the clever work, using an entire Pi + Linux OS is really a mistake. Consider an ESP8266 or ESP32 device and some RGB LEDs… They even have prebuilt boards for just a couple of dollars. Quindor and WLED actually provide prebuilt, preloaded units, just connect LEDs. “Dig-Uno”. I even have purchased commercial device from Novostella that I loaded custom software.

    1. Golly we should all be disassembling our cars and leaving most of the pieces behind according to your logic.

      By what you say we should all live in outhouses and eat only brown rice so we can all use only minimal resources.

      Did you remove all of the extra functionality from your phone? Do you really use the FM radio and the fingerprint sensor??? Shame on you for not ripping them out.

      Is that rake going unused in your garage? What a waste! Get out there and rake those leaves! So what about the snow, you are also wasting yogurt shovel! Get to work!

      1. There is a difference between taking bits that are rarely used out and building a new object with parts that are complete overkill.

        If they are using or plan to add features that need the Pi’s horsepower it makes sense to use one.. But building a simple networked lightswitch with a Pi is completely daft, there are a great many more energy efficient, instant on, safe power removal while running, and cheaper options – so it only makes sense if its kicking around in your box of leftover bits or you will use the Pi’s grunt for something…

    2. I built a similar system of Raspberry Pi based Tally lights that are POE powered (allows for brighter 12V LEDs), and the key with using Raspberry Pi (or, more specifically, Python on RPi) was that libraries already existed for easy integration with OBS (via WebSockets). This allows for the Tally lights to respond to the Scene selections in OBS.

      (For those that are curious, details are here: https://github.com/SiliconKnight42/OBS_TallyLight)

  4. > However, the lights are controlled directly over HTTP rather than using a separate application which might need a port open on a firewall or router, which not only simplifies their use but doesn’t decrease network security.

    What you said might be true, I’m not familiar with Tally lights, but it isn’t an accurate summary of the blog. The blog isn’t talking about opening ports in a firewall or router, but rather the computer hosting OBS:

    > Rather than having the lights hit a web gateway hosted by OBS, this reaches out directly to the tally lights and controls them over HTTP. This does not use the websocket plugin and there is no need to open up any firewall holes to your OBS production box – instead the script pushes out commands directly to your lights.

    It’s trying to say that, instead of the Tally lights acting as clients, and OBS acting as a host, it’s the opposite. The Tally lights are the host and OBS is the client. Though I don’t think the author understands the purpose of the OBS websocket plugin, it’s function is to remotely control OBS, not for OBS to remotely control other devices.

    1. Other implementations use the plugin to monitor scene or input source changes, not necessarily control OBS. So rather than run the plugin and remotely connect into OBS to watch events, simple HTTP calls are made directly to the lights.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.