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.
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.
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.
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?
I entirely work with museums, where there are lots and lots of considerations in re: rendering device. The considerations for eg a commercial display are a little different, but I don’t have experience with working with those sorts of clients, so my answer is from the perspective of the media art context.
Having a separate box is just good separation of concerns - you can hook it up to whatever kind of projector you like (one projector might cost as much as $100k!), or you might need to use an analog display device (eg a CRT monitor) which certainly won’t have any USB/SD compatibility, in which case you will need some sort of hardware to convert signals appropriately. The separation of concerns just gives you much more flexibility.
Additionally, as mentioned before, you can network the boxes, which lets you do things like creating multi-channel synchronized video art installations.
Most BrightSigns also have GPIO pins on them, so I’ve even done things where I’ve synchronized kinetic art to the video playback.
You can write entire custom applications for your brightsigns (or plugins to the BrightAuthor configuration engine) - it’s just its own self contained platform, so there are a lot of benefits to having it be agnostic to the display.
The deprecation of OMXPlayer has been problematic for one, since I rely on some custom applications which need to be able to have some fairly precise/low latency requirements between when you tell it to start playing vs when the playback actually starts, etc. I haven’t found a suitable mechanism which meets our reqs on a Pi for controlling/playing videos yet since that deprecation.
The lack of a regular HDMI output is mildly annoying but not really a problem. Audio configuration is sometimes problematic, usually not…
If a client wants to use their own Pis, getting them provisioned with our software isn’t always the easiest if the customer is techno-phobic (though that’s partly on us - RPi usage is relatively infrequent for our customers so we haven’t put the time/energy into docs and into baking an image etc).
I love Pi’s, but they just that extra bit more finicky than BrightSigns which are hyper optimized for our use case and prevalent in our customers’ equipment rooms already.
> The deprecation of OMXPlayer has been problematic for one, since I rely on some custom applications which need to be able to have some fairly precise/low latency requirements between when you tell it to start playing vs when the playback actually starts, etc. I haven’t found a suitable mechanism which meets our reqs on a Pi for controlling/playing videos yet since that deprecation.
Yeah. The Pi3 -> Pi4/5 jump was quite a massive change in how things work. I've been writing my own playback engine for 10 years now and that one was quite challenging. Precise playback start is something my software supports: You control everything in Lua and can, for example, preload a video and then start it based on either internal logic or based on an external trigger. Up to the Pi3, my software also supports dynamically adjusting the HDMI clock, so the vsyncs of multiple displays are synchronized. Customers have been using that for almost 10 years for video wall playback.
If you go with the hosted version of the software, provisioning is as simple as extracting a single 60MB zip file to an empty SD card and placing that into the Pi. If needed you can even use the API to preconfigure that ZIP file to include settings like WiFi.
Sounds great! I think I’ve actually stumbled across info-Beamer before. We use pretty much the exact same approach in re: configurable zip deployment for BrightSigns.
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.
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.
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.
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.
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?
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
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.
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.
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.
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.
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.
> 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..
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
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)
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.
Lenovo Thinkpad 11e aren't junk. I own one with Ubuntu and it still serves me well. Why people in the 1st world disassemble them or throw away rather than upcycling by upgrading OS and donating to the children of the 3rd world, like OLPC used to do? Still half of population doesn't have access to computers. This is hugely missed opportunity to help poor children!
> Why people in the 1st world disassemble them or throw away rather than upcycling by upgrading OS and donating to the children of the 3rd world, like OLPC used to do?
It wouldn't surprise me if, with the worldwide rise of smartphones, children in the developing world don't want computers.
Also, much of the developing world has plenty of buyers of new computers, and undoubtedly a significant aftermarket for the resulting used computers (just like in the developed world), so they probably don't need our donated old computers nearly as much
I'm not sure. Only about 34 per cent of schools in India have internet facilities and more than 50 per cent do not have functional computers (https://theprint.in/india/education/only-34-indian-schools-h...). This is hundreds of million of people only in India and there is Africa & Southern Asia hugely in need too.
> Only about 34 per cent of schools in India have internet facilities and more than 50 per cent do not have functional computers
India is an economically powerful country that has nuclear weapons, a robust manufacturing sector (including computing technology), and a space program. They are building a cross country freeway network and their major cities have metro and transit systems that are more advanced than those in most major American cities.
India is not comparable to less developed countries in sub-Saharan Africa, and in fact India's corporations outsource a lot of production to those countries for their extremely low-cost labor, just as the West does with East Asia.
That only 34% of its schools have internet facilities and 50% don't have functional computers is the result of India's massive wealth and social inequality and it's large disparity in standard of living.
This is the result of the policy priorities of Indian politicians and voters, not something that will be fixed by donating used laptops from the West.
If anything, the West seems to be on a trajectory toward developing a huge disparity in the standard of living, like India.
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.
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
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.
fun to see the ‘write protection’ screw and think back to my toshiba chromebook, it also got coreboot thanks to Mr. Chromebox. Linux never ran quite right on the eMMC sadly…
Thank you! We haven’t figured out what to play on it yet actually - I think the plan is to build out all the tools so that our school can create and upload their own videos (eg. montages of students work - this is in the Design workshop after all) to display on the screen. It could be self-service even after we graduate in June.
If you want to spend more time on this I think one fun idea would be an infinite bouncing DVD logo. Just sync the location of the logo every time it bounces so all devices have a consistent view and then the individual screens can compute whether and how much of the logo to show and at which location.
Me too! Making it do interactive things is actually quite trivial since we went for the socket.io web approach rather than using something specific to video streaming. I'm imagining two QR codes on either end, players join and play a wide game of pong. Maybe with phone gyroscopes for controls.
We did something like that with an Amiga bouncing ball demo (on linux or Macs) back in the day (two decades ago, probably)
I think it was using a wide master screen that the terminals connected to via vnc, displaying different parts of the master screen. Only three or four screens wide, though, and not optimized for user interaction. But a live app nonetheless.
I remember when someone adapted the Chromebook Pixel display as a standalone monitor [0]. I’m sure it made the rounds here. I was almost tempted to do it myself because, at the time, it was a nice 4:3 screen. I couldn’t , the Chromebook Pixel was too beautiful to hack up.
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.
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.
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.
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?
I entirely work with museums, where there are lots and lots of considerations in re: rendering device. The considerations for eg a commercial display are a little different, but I don’t have experience with working with those sorts of clients, so my answer is from the perspective of the media art context.
Having a separate box is just good separation of concerns - you can hook it up to whatever kind of projector you like (one projector might cost as much as $100k!), or you might need to use an analog display device (eg a CRT monitor) which certainly won’t have any USB/SD compatibility, in which case you will need some sort of hardware to convert signals appropriately. The separation of concerns just gives you much more flexibility.
Additionally, as mentioned before, you can network the boxes, which lets you do things like creating multi-channel synchronized video art installations.
Most BrightSigns also have GPIO pins on them, so I’ve even done things where I’ve synchronized kinetic art to the video playback.
You can write entire custom applications for your brightsigns (or plugins to the BrightAuthor configuration engine) - it’s just its own self contained platform, so there are a lot of benefits to having it be agnostic to the display.
By the way, you can use Chromebooks and -boxes for digital signage (and kiosk) as well if you manage them with Google Cloud.
I operate a digital signage company based around the Pi. Curious what problems you run into. SD cards?
The deprecation of OMXPlayer has been problematic for one, since I rely on some custom applications which need to be able to have some fairly precise/low latency requirements between when you tell it to start playing vs when the playback actually starts, etc. I haven’t found a suitable mechanism which meets our reqs on a Pi for controlling/playing videos yet since that deprecation.
The lack of a regular HDMI output is mildly annoying but not really a problem. Audio configuration is sometimes problematic, usually not…
If a client wants to use their own Pis, getting them provisioned with our software isn’t always the easiest if the customer is techno-phobic (though that’s partly on us - RPi usage is relatively infrequent for our customers so we haven’t put the time/energy into docs and into baking an image etc).
I love Pi’s, but they just that extra bit more finicky than BrightSigns which are hyper optimized for our use case and prevalent in our customers’ equipment rooms already.
> The deprecation of OMXPlayer has been problematic for one, since I rely on some custom applications which need to be able to have some fairly precise/low latency requirements between when you tell it to start playing vs when the playback actually starts, etc. I haven’t found a suitable mechanism which meets our reqs on a Pi for controlling/playing videos yet since that deprecation.
Yeah. The Pi3 -> Pi4/5 jump was quite a massive change in how things work. I've been writing my own playback engine for 10 years now and that one was quite challenging. Precise playback start is something my software supports: You control everything in Lua and can, for example, preload a video and then start it based on either internal logic or based on an external trigger. Up to the Pi3, my software also supports dynamically adjusting the HDMI clock, so the vsyncs of multiple displays are synchronized. Customers have been using that for almost 10 years for video wall playback.
If you go with the hosted version of the software, provisioning is as simple as extracting a single 60MB zip file to an empty SD card and placing that into the Pi. If needed you can even use the API to preconfigure that ZIP file to include settings like WiFi.
Sounds great! I think I’ve actually stumbled across info-Beamer before. We use pretty much the exact same approach in re: configurable zip deployment for BrightSigns.
It would be great to chat some time!
I’ll shoot you an email.
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.
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.
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
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.
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.
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?
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
> It looked to me like the fleet did consistently fall behind, which seems like thoughtful design
Thoughtful, but I think it isn’t necessary with ‘modern' NTP algorithms. They lose time by slowing down a clock derived from their hardware clock for a while, not by moving the hardware time back (https://serverfault.com/a/94691, https://community.hpe.com/t5/operating-system-hp-ux/ntp-atom...)
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.
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.
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.
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.
It's called distributed computing (https://en.m.wikipedia.org/wiki/Distributed_computing) and it's long doable using Linux/BSD.
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.
> 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..
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
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)
Awesome work -- way to have a vision and see it through to the end. That process will make you a success in life and you'll learn a lot, too!
>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 :)
Literally unhinged, the Chromebooks.
Thats’s the joke.gif
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.
Could also be a watchdog firing?
Lenovo Thinkpad 11e aren't junk. I own one with Ubuntu and it still serves me well. Why people in the 1st world disassemble them or throw away rather than upcycling by upgrading OS and donating to the children of the 3rd world, like OLPC used to do? Still half of population doesn't have access to computers. This is hugely missed opportunity to help poor children!
> Why people in the 1st world disassemble them or throw away rather than upcycling by upgrading OS and donating to the children of the 3rd world, like OLPC used to do?
It wouldn't surprise me if, with the worldwide rise of smartphones, children in the developing world don't want computers.
Also, much of the developing world has plenty of buyers of new computers, and undoubtedly a significant aftermarket for the resulting used computers (just like in the developed world), so they probably don't need our donated old computers nearly as much
I'm not sure. Only about 34 per cent of schools in India have internet facilities and more than 50 per cent do not have functional computers (https://theprint.in/india/education/only-34-indian-schools-h...). This is hundreds of million of people only in India and there is Africa & Southern Asia hugely in need too.
> Only about 34 per cent of schools in India have internet facilities and more than 50 per cent do not have functional computers
India is an economically powerful country that has nuclear weapons, a robust manufacturing sector (including computing technology), and a space program. They are building a cross country freeway network and their major cities have metro and transit systems that are more advanced than those in most major American cities.
India is not comparable to less developed countries in sub-Saharan Africa, and in fact India's corporations outsource a lot of production to those countries for their extremely low-cost labor, just as the West does with East Asia.
That only 34% of its schools have internet facilities and 50% don't have functional computers is the result of India's massive wealth and social inequality and it's large disparity in standard of living.
This is the result of the policy priorities of Indian politicians and voters, not something that will be fixed by donating used laptops from the West.
If anything, the West seems to be on a trajectory toward developing a huge disparity in the standard of living, like India.
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.
Wanna see a great video wall out of reverse engineered iPod Nano 6 displays and learn something about reverse engineering along the way?
There is a video series from Mikes Electric Stuff from 11 (!) years ago, which is fantastic.
https://www.youtube.com/watch?v=7TedIzmguP0
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
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.
You very very likely won't be able to decode a 13660×768 video fast enough.
At least computationally that would be much more expensive and might not work well with weak devices or power saving goals.
fun to see the ‘write protection’ screw and think back to my toshiba chromebook, it also got coreboot thanks to Mr. Chromebox. Linux never ran quite right on the eMMC sadly…
Excellent work, and a great read.
What videos did you end up playing on this after your testing was complete? Do you have any recordings to share of this in action?
Thank you! We haven’t figured out what to play on it yet actually - I think the plan is to build out all the tools so that our school can create and upload their own videos (eg. montages of students work - this is in the Design workshop after all) to display on the screen. It could be self-service even after we graduate in June.
If you want to spend more time on this I think one fun idea would be an infinite bouncing DVD logo. Just sync the location of the logo every time it bounces so all devices have a consistent view and then the individual screens can compute whether and how much of the logo to show and at which location.
I think a very wide game of Pong would be fun!
Me too! Making it do interactive things is actually quite trivial since we went for the socket.io web approach rather than using something specific to video streaming. I'm imagining two QR codes on either end, players join and play a wide game of pong. Maybe with phone gyroscopes for controls.
We did something like that with an Amiga bouncing ball demo (on linux or Macs) back in the day (two decades ago, probably)
I think it was using a wide master screen that the terminals connected to via vnc, displaying different parts of the master screen. Only three or four screens wide, though, and not optimized for user interaction. But a live app nonetheless.
This one from 2013 when the Chromebook Pixel was announced was pretty great too. https://tomsepe.com/portfolio/google-pixeltree/
I remember when someone adapted the Chromebook Pixel display as a standalone monitor [0]. I’m sure it made the rounds here. I was almost tempted to do it myself because, at the time, it was a nice 4:3 screen. I couldn’t , the Chromebook Pixel was too beautiful to hack up.
[0] https://hackaday.com/2015/05/02/excruciating-quest-turns-chr...
[dead]
[dead]
[dead]
so awesome
That's an insane amount of work. Enjoy having free time while it lasts...