Skip to content

QubesTV

Aekez edited this page Feb 19, 2018 · 2 revisions

Notice

This project is a work in progress, but some few bits of the initial work has been posted.

The value of QubesTV

Today SmartTV's are increasingly getting build-in microphones, webcams, voice-control, and now Artificial Intelligence (AI) is also making a move onto not only our TV, but essentially every other Smart-device and Internet of Things (IoT) you can imagine. It's not far-fetched to think that soon, your toaster can be hacked by any third-rate run in the mill hacker and used to spy on you in your morning robes and crazy wild hair, yawning in your coffee cop, every morning. But then, most roasters today can't do something like that, at least not yet. SmartTV's on the other hand, is a very real threat, right now. They're usually also very insecure, more so than desktops, as are most things that are IoT and 'smart'.

Why use Qubes OS for something it wasn't designed for

Qubes can be more than an operation system, it can also serve other purposes. Currently Qubes isn't designed to be anything more than a desktop system, with normal desktop use-cases in mind. The idea to take Qubes further however, is not only something the community came up with as some dodgy hacks, like these scripts for example, but is also something the Qubes developers had in mind years ago, way back. It goes without saying, that Qubes OS is not done yet, if you read the Qubes Air article, you can see they have just gotten started. Until then, though, we the community can try help making Qubes OS easier to use for other purposes, such as a Qubes TV setup made possible through scripting.

So, how does this work?

Putting it simple, no major changes are made to Qubes OS, there are no downstream or upstream package changes to worry about, besides codecs and browser updates of course. No troublesome configuration file changes. Everything is pretty much based on scripts. Scripts that are quick and easy to read and understand, which most can determine to be safe. These scripts however, can both be used from dom0 and sys-usb, or any other AppVM. Currently work has been carried out to be working in dom0, but will be changed to work with sys-usb. The reason sys-usb is used and not any other AppVM, is to allow remote controllers, such as these

(I'll chop the pictures large size later when more time is available, right now it's just a brief introduction).

A wired or wireless numpad can be ideal, for example

Picture source is currently unavailable.

Another approach, is to use a TV remote designed for the purpose.

source of the posted picture is currently unavailable.

For now I'll leave a brief table of script concepts for QubesTV

Some are finished, some are partially finished, and some remains to be worked extensively on.

  • Fullscreen script to keybind active window; or automatic initiation on boot (essentially the same as alt+space+f). This work has been finished, and will be posted soon.
  • Switching sound on/off output between AppVM TV's for multiple TV monitors. This work is half started, vague idea what to do, but have not tested it yet. Expected to be done soon and posted.
  • Switching TV Streams from one screen to another screen, and sync sound output accordingly. This work has been finished, but needs final polishing. Expected to be posted soon.
  • Translating current dom0 work into sys-usb (this causes me issues as my laptop can't create a sys-usb as loosing up the USB controller from dom0 will cause my touchscreen to freeze the picture). I will have to buy a new laptop to work around this issue, which I might do at some point. It's also possible if someone is willing to help with this.
  • A means to trivialize the script install in sys-usb, for example after a clean Qubes install. This includes a method to easily put keybindings. An ideal would be to have the user once edit the keybindings, and then in the future only have to click a single script to initiate everything. All scripts must be kept simple, so that they can easily be peer-reviewed for quality checks. This is probably the last thing to do, it has the lowest priority since everything else is more essential for a functioning QubesTV, before comfort in installing it.
  • Synchronize the QubesTV, so that it can be used from a distance as a normal work station, without having issues reading the screen (for example small text). Some issues exist in Linux in general, for example UI scaling is not very "smooth" on many Linux GUI systems. This could prove to be tricky and needs a lot of work to make guides that can fix quite a few different issues, most of them GUI scaling issues.
  • Adding TV remotes and controllers, currently I do not own one. But I just bought a wireless numpad to carry out my final testing for the numpad version which will arrive by mail soon. The numpad concept is pretty likely to just work without any troubles. Planning to buy a TV-PC remote for testing later on, which I expect might cause troubles, such as drivers, keybinding issues, etc.
  • Other tweaks which are currently too experimental to mention.
  • Other ideas which has not yet been realized in concept.
  • I'm hoping by putting the ground-work, that others may join in to help out. I will definitely need help if the high quality desired is to be reached, which is essentially to have any person with zero computing knowledge, use QubesTV once it's installed, as a minimum. The second minimum, is to allow QubesTV installation to be streamlined enough, to allow any person capable of installing Qubes OS itself, to be able to quickly install QubesTV without breaking a sweat. Turning Qubes into a full replacement of any SmartTV without making the user feel they loose out on functionality. The idea is not to archive this in a short time, but rather as quickly as this project can move forward. It will therefore take the time it will take.
  • Areas where I know I will likely encounter issues, where I'm currently not sure will be able to fix with my limited knowledge and skills, are the automatic script install on the level described, as well as the GUI scaling issues in some of the troublesome areas that are hard to scale universally, and at that on a larger TV screen at a different viewing distance, which also may vary from person to person. To add to the complexity, users have different eye-sights, some people (even with glasses and contacts), see vastly different than other people. There is a lot of work to be done here if this should be made easy for an every-day user.

Putting scripts together for a basic QubesTV will be ready soon

It just won't be finished, by any means. More work has to be done. To be continued.