Skip to content(if available)orjump to list(if available)

The most unhinged video wall, made out of Chromebooks

szvsw

Congrats on delivering this fun project! I do a lot of work with synchronizing media content across devices so it’s always fun to see the solutions people come up with. You probably came across them in your research, but the industry standard way of creating a synced video wall like this is with BrightSign media players. The total cost for purchasing them and the screens would for 20 displays could easily end up in the 10s of thousands, so big kudos to you guys for finding a way to make this work with recycled devices.

If you are ever interested in working on some mediasync-related codebases hit me up! We hire devs to do freelance contracts fairly often.

varun_ch

Thank you!

I didn’t get the chance to mention them in the blog post, but yes we checked out the price tags on the commercial solutions :) It’s crazy! I’ve always wondered how much of the cost is hardware vs software… and I would imagine professional digital signage is also designed for reliability longevity and all that.

szvsw

Reliability is a big part of it - but they are not really all that expensive for what you get IMO, especially in an enterprise context. A BrightSign is effectively a very sandboxed Linux box (you can SSH into them!) which has extremely reliable video and audio output, plus a huge amount of customizability, networking, scripting etc - plus various fleet provisioning/management software that goes with it. In terms of $/minute, the amount you pay ends up being vanishingly small IMO.

Your main “cheap” alternative to a BrightSign is a Raspberry Pi, which is definitely cheaper, but has its own host of issues to deal with.

mikepurvis

Is the separate box thing because of commercial display realities? Certainly at trade shows and the like I mostly see people just plug a usb stick into the smart tv from wal-mart and play their sizzle reel off of that.

Is there some incentive to not just bake a small arm computer into each display?

nolist_policy

By the way, you can use Chromebooks and -boxes for digital signage (and kiosk) as well if you manage them with Google Cloud.

dividuum

I operate a digital signage company based around the Pi. Curious what problems you run into. SD cards?

niutech

Why waste old chromebooks for fun when you could donate them to the 3rd world schools for children? Thinkpads 11e are still proper hardware, I own one. Just install the latest Lubuntu and donate to people in need rather than disposing them. It's sad that huge number of the 1st world hardware is being thrown away rather than upcycle and serve the poor people in the 3rd world.

LTL_FTC

Getting laptops to third world countries is a real challenge. Customs agents see the computers, unaware of their age or value, and they get held, go missing until they are bribed, or just outright stollen.

Where I previously worked, we had a server room with over a hundred laptops, many late intel MacBook pros much better than the computers coworkers in India were using, but we just could not get them there from the US. The best we could do is ask coworkers traveling to visit the India team if they were willing to carry an additional laptop through customs. But a work laptop, personal laptop, and now a second "personal" laptop, even just three devices, would sometimes cause them a headache. If the logistics were easier, I am sure more of what you are proposing would happen.

greggman25

I worked at Google when Chromebook shipped. They put out a call for decorations for the lobby and I proposed something similar to this but they said "no" :( Maybe because I asked for 40-64 machines :P

I would not have tried to sync video though. Instead I'd have made time based animations and use the network the synchronize the clocks.

you can see an example here: https://www.youtube.com/watch?v=64TcBiqmVko

It's 8 machines running Chrome. The only thing synchronized are the settings and the time.

They machines do not have to be in a grid either. I was inspired by the Boston Science Museum's virtual aquarium

preinheimer

The author tried, but the clocks wouldn’t stay in sync. It’s in a sidenote expandable section.

> Unfortunately, these Chromebooks could not reliably keep track of time within milliseconds of each other, so this method didn't work for us.

greggman25

I don't know if syncing the videos would work because of playback issues over time but the aquarium pages sync their clocks every second just asking the server the time (demo time not wall time) over web-sockets and then subtracting 1/2 of the time it took to get a response. I suspect the technique works better for time based animations than video since video require seeking to change the time.

_kb

PTP [1] is a common approach to time sync in these scenarios. It provides sub-microsecond accuracy for when working on a LAN. This is used behind most products, software, and protocol suites in the real-time media space.

[1]: https://networklessons.com/ip-services/introduction-to-preci...

simondotau

I feel like this deserves a deep dive of its own. Were the clocks drifting substantially over a reasonable time period between syncs (e.g. 24 hours)? Was SNTP not acting reliably? Did they try hosting a local time server?

01HNNWZ0MV43FF

I was on an IoT project once and surprised to find that when blocked from ntp, PC clocks drift pretty quick. A couple milliseconds per day would not surprise me.

It looked to me like the fleet did consistently fall behind, which seems like thoughtful design - syncing would always cause them to skip ahead and never rewind time

varun_ch

Did not get the chance to try much at! We just observed that clocks could be synchronized, but the next time we checked they would no longer be. I agree that this is definitely something that could also be interesting to look into in the future.

szvsw

If you have fixed media (as opposed to realtime dynamically generated or streamed etc) this trick can go a very long way - or even if it is generative, if the time is used to drive the animation. It just requires good clock sync, like you said, which can be non trivial (especially if audio is involved where desync of even 20-30ms becomes very noticeable). But yeah, with NTP/PTP you can get v v far.

ashirviskas

Cool! I did a similar thing with 4x4 tablets, after connecting all 16 of them to ADB and a single host I was able to automate most of the stuff. The I just created 16 virtual screens on sway with 16 VNC clients and streamed it all over Wi-Fi as a test, but Wi-Fi worked so well that I did not look for more efficient solutions.

For that period my PC had 19 displays, 17 of them over VNC and it was glorious. I could either do something on all of them, or dedicate each for a different purpose/program (music, htop, calendar, clock, ssh sessions)

Though dealing with all the hardware was quite annoying - some throttled, some had connectivity issues, others batteries would not hold charge and so on.

bazzargh

A similar thing from many years back: the junkyard jumbotron let you assemble a random collection of displays to display their portions of a much larger image

https://github.com/mitmedialab/Junkyard-Jumbotron

Video https://youtu.be/cAUtSVSTbzU?feature=shared

varun_ch

The Media Lab makes so much random fun stuff. I feel like it would be fun to remake this with modern web tech. (doing the alignment photo over email does sounds like fun too hehe)

amendegree

If you’re just skimming and didn’t read the whole blog: this was done by high school students over the course of their high school career, makes the project even more impressive imo.

mos_6502

>Now, I’m not entirely sure why this works so well, but I came up with a ridiculous solution by accident […]

>This means that the slowest computers hold back the fastest computers […]

It works so well because you’ve optimized the system’s design with respect to its bottleneck. Check out the theory of constraints :)

layer8

Literally unhinged, the Chromebooks.

simondotau

Thats’s the joke.gif

netcraft

Super cool!

We needed to do something similar one time with 5 large touchscreen tvs that were arranged as a table, where each side needed to be a separate touchscreen application with them all playing a synchronized video in the background but users could interact with things flowing from one end to the other and could send objects from their other apps in any direction to other apps, like users sending things they found to the person on the other side of the table.

We ended up with a trashcan mac pro (thats about all we could find in budget that could drive all the screens at the same time) with apps that were synchronized using redis (I wrote that part). It worked really well, though I didnt get to see the finished product before I left that company. But we always really wanted to have separate computers that were synchronized. We just couldnt get that to be reliable enough - it worked for a while but then various things would throw it out of sync, meaning we would have to restart the applications periodically which wouldnt work.

Something I have always wished we had, since the very early days of PCs was the ability to network devices together in such a way that they could share their resources and collaborate more. Imagine being able to take advantage of all of the computers in an office to do a task like a supercomputer. Of course thats a very hard problem, applications and OSs would need to be designed for it and we would need new algorithms (look how long it took us just to take advantage of multiple processors in the same machine on the same board), but there were some projects out there like seti@home and folding@home that did it somewhat, but I always hoped it would be something that the computers themselves would support.

niutech

It's called distributed computing (https://en.m.wikipedia.org/wiki/Distributed_computing) and it's long doable using Linux/BSD.

mrbluecoat

> I embarked on the journey of building ‘my own distro’ that we could install on the laptops. The system should start with something minimal (no desktop environment), and have an elegant script to autostart a kiosk mode Chromium instance. I first tried NixOS before quickly realising there was no way it would work with the tiny amount of storage on these Chromebooks (and it failed to install with every single attempt). Then I gave up, started with a Debian minimal install and ... I realised I would be wasting so much time (installing Debian is very ‘hands-on’ - you need to press lots of buttons), and I discovered ‘FAI - Fully Automatic Installation’ and the web FAI.me tool

DietPi, OpenWrt, and OpenBalena have autoinstall options as well that allow you to select specific packages and install on minimal bare metal. I'd be curious if there are other non-desktop options out there..

leohonexus

Most interesting thing to me is how switching to coreboot fixed the freezing. Do you have a theory of why that might happen? I wonder if it's ACPI/DSDT related or if HW controllers were initialized incorrectly using the original BIOS.

oynqr

Could also be a watchdog firing?

jpeggtulsa

Me and another developer did this on a 300 seat call center on Windows Embedded thin clients probably 8 years ago now. We used timestamps and a high precision javascript library for synchronization. After everybody went home for the night, it would scroll the name of the business and the stats from the day across all the screens until a couple hours before the first calls, then it would load a queued video or text or even just colored lines similar to the windows screen saver depending on the day.

nashashmi

I wonder if it would have been easier to make just one video and have the computer zoom in to different parts of the video. And then run the video simultaneously through a web browser

xmprt

The toughest part of this wasn't setting up different videos to play on each screen but rather the "run videos simultaneously through a web browser" part. So even if you could decode and process such a large video on those Chromebooks, it wouldn't help with video sync. That's not to mention the other challenges with installing the software and getting it to autoload on startup.

dividuum

You very very likely won't be able to decode a 13660×768 video fast enough.

gloflo

At least computationally that would be much more expensive and might not work well with weak devices or power saving goals.