Last updated 3-15-2021

There have been major changes in hardware technology and market forces. What does my recent work on digital signage suggest for rethinking multi-seat? First consider resource usage of the media server.

X96 Max Android TV Box repurposed with Linux as media file server. Serving two commercial DVD ISOs (as files on microSD in USB media reader) simultaneously. Power requirement while doing this only 1.9 – 2.3 watts.

Now screenshots of the two client displays playing these different movies

Raspberry Pi 4B client, full screen commercial DVD playing on HDMI 1
Raspberry Pi 4B client, full screen commercial DVD playing on HDMI 2
Resource usage at Raspberry Pi 4B client playing two simultaneous commercial DVD ISOs locally. Power use 4.4-5.2 watts not counting the two 1920 x 1080 displays connected to the Raspberry Pi 4B.

The video quality is indistinguishable from playing the same DVD films in a Blu-ray Disc Player. Clearly, video should be played on the client, not the media server. The Phistek ZE7000 network attached zero client requires at least a Intel i3 media server for one client 1920 x 1080 display. The x2go client approach is a little choppy even with an Intel i3 media server. Playing the content on the client eliminates the step of compressing changed pixels in the server video frame buffer and then decompressing them again at the client end. Network bandwidth is conserved because the original video content is compressed at a much higher ratio than is possible in real time for forwarding changes in a video frame buffer. There is hardware support for the best of the content compression schemes.

While in the examples above, the content was first read from two USB DVD drives on the server, to make two ISO files on a microSD card in a USB media reader for the x96max, you can use handbrake to create a more compressed MP4 file for just the main title and serve it from a web server on the x96 max to the raspberry pi 4B client and view it in a browser instead of in VLC.

Multi-seat reconsidered
With Raspberry Pi 4B, or Android TV Boxes repurposed with Armbian, each workstation should run programs locally, but authenticate and have their home directories on a central server to simplify administration and to allow users to login to any unused workstation. No user data should remain on a workstation after logging out. Printing should be shared. If workstation OS and apps are read-only, then PXE booting becomes less important, especially in the case of the x96max which has an internal eMMC. Network traffic would be very reduced by apps loading locally instead of over a network file system from the server. You can still use Putty or x2go to run computation intensive apps on another remote computer.

There is a system like this, but it has not been updated for Raspberry Pi 4Bs https://www.raspberrypi.org/blog/piserver/ I could wait for this project to be updated to use Pi 4Bs, but I am likely to learn something by trying to build a similar system from scratch. A good place to start would be with the Raspberry Pi desktop for Intel x86 which comes with piserver and I had an extra desktop, a legacy Atom 330 system. It is slower than a Raspberry 4B, but adequate for my purposes as the administrative server. Another choice for a small group of workstations might be an x96max with its internal eMMC drive which uses less that 1/40 the power as my Atom 330.

My first requirement is that all Raspberry Pi 4B workstations have their /home/username/ directory on the server so that they can logout of one Pi 4B session and login to another Pi 4B and resume where they left off and have all their data and settings. Pi server uses sshfs so that user data will be encrytped passing over the network. https://linuxize.com/post/how-to-use-sshfs-to-mount-remote-directories-over-ssh/

I will follow the instructions in this tutorial for read only files to set this up on the server. Encryption is not need for opensource files. https://www.raspberrypi.org/documentation/configuration/nfs.md

To be continued…