Hintergrund

Note: Kiosk ist der Begriff den Systeme verwenden, wenn nur eine Anwendung dem Benutzer gezeigt wird.

Dieses Projekt begann, als ich beim Aufräumen zwei alte Tablets entdeckte. Ein Samsung und ein Microsoft. Für beide hatte ich keine Alltagsverwendung, aber ihre Hardware war noch völlig in Ordnung, neben dem Verkauf suchte ich daher nach einer sinnvollen Verwendung - zunächst für das Samsung.

Die Idee war recht naheliegend. Ich nutze in meinem Smart Home (via Home Assistant - kurz “HA”) bereits knapp 100 Leuchten-Entitäten, diverse Kameras, Media Player, Szenen und Staubsaugerziele. Das wurde irgendwann schwer handhabbar über Fernbedienungen oder Voice-Satelliten und nicht alles kann sinnvoll automatisiert werden. Daher ist ein umfassendes Dashboard unverzichtbar - aber auf dem Handy jedes Mal die App zu starten und das für jeden Benutzer im Haushalt verfügbar zu machen ist auch nicht ganz einfach. Manchmal ist es einfacher, wenn ein Touchdisplay an der Wand hängt.

Ziel

  • Ein Tablet an der Wand hängen haben.
  • Dieses zeigt nur eine Anwendung -> ein spezielles HA-Dashboard.
  • Es soll meistens aus sein, um Energie zu sparen und Lichtverschmutzung zu reduzieren
  • Aber auch schnell aufwachen und einsatzbereit sein
  • Es soll so wartungsarm wie möglich sein und bei Neustarts automatisch das Dashboard anzeigen.

Versuch 1: Samsung Galaxy Tab 3 Lite (SM-T110)

An der Stelle kurz gemacht, das Tablet ist zu alt für HA und landet auf Kleinanzeigen. Die Details warum es nicht geklappt hat, befinden sich im Aufklappmenü:

Exkurs: Warum das Samsung nicht funktionierte

Das SM-T110 ist ein Einstiegs-Tablet der Baujahre 2013/2014. Es wurde mit Android 4.4 ausgeliefert (KitKat) und Samsung hat nie ein Update darüber hinaus veröffentlicht. Die Hardware ist bescheiden, selbst nach den Maßstäben seiner Zeit: ein 1,2-GHz-Dual-Core-Prozessor, 1 GB RAM und ein 7-Zoll-1024×600-Display.

Device Information Screen of the Samsung SM-T110

Geräteinformationen des Samsung SM-T110©Blogautor

Davon abgesehen läuft es immer noch: Schneller Start, responsive Oberfläche, Einrichtung möglich ohne Samsung oder Google Konto anzugeben. Generell war die UX der frühen 2000 deutlich intuitiver zu bedienen. Mit meinem jetzigen Smartphone kann ich zwar unglaublich viel machen - aber ich habe bei weitem nicht mehr so viel Spaß daran wie bei meinem Windows Phone 8 seinerzeit.

Native

Ich lud das Tablet, richtete es ein und versuchte zunächst, Home Assistant über den Browser anzusurfen. Sowohl der Samsung Browser als auch Chrome zeigten aber nur das HA-Logo an - wenn auch ersterer linksbündig und zweiterer zentriert. Weiter kam ich nie.

Mögliche Begründung: Das Home Assistant-Frontend ist eine moderne Webanwendung, die auf Lit (lit-element) basiert und benötigt ES2017+. Das integrierte Android 4.4 WebView basiert auf einer Chromium-Version von 2013 und kann Lit nicht rendern.

Apps

Der nächste Ansatz bestand daraus, die HA-Companion App zu installieren. Der integrierte App Store zwang mich dann aber doch wieder dazu, ein Google Konto zu nutzen. Außerdem merkt der PlayStore an “Erfordert Android 6.0 oder höher”. Von daher ließ ich diesen Versuch gleich sein.

Auch die Option des Fully Kiosk Browser, ein Browser mit eigener Chromium engine und HA-integration fiel aus den selben Gründen aus.

Ich hätte eine alte APK beider Apps suchen können - aber der Support für Android 4.4 wurde bestimmt aus guten Gründen eingestellt.

Andere Betriebssysteme

Die Installation eines benutzerdefinierten ROM war die einzige verbleibende Option. Das Lineage-OS Projekt listet das SM-T110 nicht auf – wenig überraschend, da es sich um ein Low-End-Gerät ohne Entwickler-Community handelte.

Versuch 2: Microsoft Surface Go 1

Das Microsoft Surface Go 1 (SGO1) war mein erstes wirklich nutzbares Tablet, vielseitig durch das vollständige x86 Windows 10 aber gleichzeitig nur 522g schwer. Nur Geschwindigkeit zählte nicht zu seinen Stärken. Da es mit Windows 10 bald seinen End-of-Life erreichen würde und ich aktuell eh von Microsoft Produkten Abstand nehme, ließ ich mir von Claude eine Anleitung geben, wie ich auf dem SGO1 Ubuntu 24.04 LTS installiere. Ein manueller Blick ins Linux-Surface Projekt schadet dabei nicht, die KI-Antworten zu überprüfen. Dort war das SGO1 als prinzipiell kompatibel gelistet, es gab jedoch eine Liste an möglichen Fehlern. Da ich nur Zeit verlieren konnte und eh darauf brannte, Ubuntu auf einem Microsoft Gerät zu sehen, übersprang ich lange Vorbereitungen und fing einfach an.

Ubuntu

Ich folgte fast komplett der Anleitung von Claude, lediglich der Download des ISOs und der checksum machte ich selber. Als durchführender Rechner nutzte ich einen x86 Ubuntu 25.04. Als USB-Stick für die Installation verwendete ich einen SanDisk Ultra USB 3.0 32 GB. Da er USB-A hat nutzte ich einen direkten USB-C-A Adapter.

Die Verwendung von Ubuntu erfüllt mein Ziel “Wartungsarm”

Vorbereitung

# Download the ISO and checksum
wget -P ~/Downloads https://releases.ubuntu.com/24.04/ubuntu-24.04.2-desktop-amd64.iso
wget -P ~/Downloads https://releases.ubuntu.com/24.04/SHA256SUMS
# Verify:
cd ~/Downloads
sha256sum -c SHA256SUMS --ignore-missing
# Identify the USB stick:
lsblk
# Unmount if mounted:
sudo umount /dev/sdf1
# Write the ISO:
sudo dd if=~/Downloads/ubuntu-24.04.2-desktop-amd64.iso of=/dev/sdf bs=4M status=progress oflag=sync

Hinweis: dd erzeugte eine Warnung bezüglich einer GPT/MBR-Größenabweichung und so konnte vom Stick nicht gebootet werden. Der Stick wurde anschließend mit gnome-disks („Datenträgerabbild wiederherstellen“) neu beschrieben, wonach das Bootproblem behoben wurde. Ob ein kausaler Zusammenhang bestand, ist unklar.

Setup from Microsoft Surface Go 1 with USB Stick through USB-C-A Adapter

USB Stick mit einzelnem Adapter©Blogautor

UEFI Konfiguration

Mit gedrücktem Lautstärke-hoch während der Einschaltknopf betätigt wurde, gelangte ich ins UEFI (oder BIOS) des SGO1 und nahm einige Einstellungen vor:

**Security**:
- Secure Boot → Disabled

Damit es bei der Installation keine Probleme gibt. Ehrlich gesagt weiß ich nicht mehr, ob das heute noch nötig ist.

**Boot configuration**:

- Boot order 1. → USB Storage
- Boot order 2. → Internal Storage
- Boot order 3. → Windows Boot Manager
- Enable Boot from USB devices → Enabled

Diese Einstellungen sorgen dafür, dass vom Stick gebootet wird.

Fun Fact, den Windows Boot Manager wird man nicht los, auch nachdem gar kein Windows mehr aus der Festplatte ist.

**Other configuration**

- Battery Limit → Enabled (Limit Loading to 50%)

Das Batterielimit tut dem Akku gut, da er als Kiosk permanent an das Stromnetz angeschlossen sein wird.

Boot from USB

Der Teil war der aufwändigste, denn anders als von Claude berichtet, sorgte Lautstärke-Runter gedrückt halten beim Anschalten nicht dafür, dass ein Bootmenü erschien. Denkbar, dass dies auf Surface Tablets blockiert wird.

Workaround:

  1. Die Windows-10-OOBE (Out-of-Box-Experience) vollständig abschließen.
  2. Anschließend bei gedrückter Umschalttaste in Windows auf „Neu starten“ klicken.
  3. Danach Gerät verwenden → USB-Speichergerät auswählen.
  4. Im Bootmenü den Eintrag „Linpus Lite“ auswählen, wodurch der GRUB-Bootloader des USB-Sticks gestartet und anschließend Ubuntu gebootet wird.

Punkt 4 hat bei mir drei Anläufe gebraucht. Zunächst waren im Gerät verwenden-Menü nur zwei Optionen da: Netzwerk und USB-Gerät. USB sorgte jedoch lediglich für einen Windows Neustart. Erst als ich den Stick mit gnome-disks erneut erstellte klappte es, wenn auch seltsam: Ich klickte bei gedrückter Umschalttaste auf Neustarten, zog dabei den USB-Stick frustriert ab und bemerkte dann, dass im Bootmenü plötzlich “Linpus Lite” Stand. Den USB-Stick also wieder dran, ausgewählt und es funktionierte!

Installation

Ich durchlief den Ubuntu installer und folgte immer brav den UI Anweisungen. Keine Extras, keine Konsole. Sehr nutzerfreundlich alles.

  • Hier hatte ich schon die Option, “Autologin” zu aktivieren, was mich den Zielen näher brachte: ☑.
Setup from Microsoft Surface Go 1 with USB Stick through USB-C-A Adapter

Missetat begangen: Ubuntu auf einem Microsoft Tablet fühlt sich nach Häresie an. Es fühlt sich gut an.©Blogautor

Nachinstallation

  • Secure Boot im BIOS wieder aktivieren
  • System updaten
sudo apt update && sudo apt upgrade -y
  • SSH aktivieren
sudo apt install openssh-server

Hardware compatibility

Getestet mit dem Standard-Ubuntu-24.04-Kernel, ohne speziellen linux-surface-Kernel.

Feature Status Anmerkungen
Touchscreen
Auto-Rotation
Type Cover attach/detach
WLAN
Bluetooth Sichtbarkeit geprüft, nicht tiefer getestet
Akkustand
Sensoren gyro3d, accel3d, devrotation, gravity
Suspend/Resume
Mikrofon Qualität ausreichend für Sprachsteuerung
Lautsprecher
Kamera erfordert libcamera + Kernel ≥ 6.14

Touchscreen, Auto-Rotation und Type Cover funktionierten sofort im Live-System. WLAN wurde über eine SSH-Verbindung von einem zweiten Rechner verifiziert. Die Sensoren wurden über cat /sys/bus/iio/devices/iio:device*/name ausgelesen. Mikrofon und Lautsprecher wurden mit arecord und aplay getestet. Die Kamera wurde mit gnome-snapshot geprüft und nicht gefunden. Sie wird vom Standard-Ubuntu-24.04-Kernel wohl nicht unterstützt. Dies beeinträchtigt den Kiosk- oder Voice-Satellite-Betrieb nicht.

Der linux-surface-Kernel wurde daher nicht benötigt.

Systemkonfiguration zur Verwendung als Wand-Display

Bildschirmsperre nach Suspend deaktivieren:

gsettings set org.gnome.desktop.screensaver lock-enabled false

Hot Corners deaktivieren:

gsettings set org.gnome.desktop.interface enable-hot-corners false

Verhalten des Power-Buttons:

gsettings set org.gnome.settings-daemon.plugins.power power-button-action 'nothing'

Dies erfüllt das Ziel “schnelles aufwachen”

Konfigurieren von HA im Browser

Der letzte Software-Teil umfasst das Anzeigen eines HA-Dashboards. Ich entschied mich hier für die einfachste Lösung: Firefox. Dies ist ein FOSS Browser der vorinstalliert ist und eine --kiosk Option hat. Diese öffnet eine Website in einem randlosen, maximierten Fenster. Ubuntu GNOME hat damit seine Probleme, aber im wesentlichen klappt es. Claude hat mir gezeigt, wie ich eine .desktop Datei verwende um den HA-Firefox-Kiosk in den Autostart zu packen. In Firefox dann noch einloggen und Credentials speichern.

Dies erfüllt die Ziele “HA-Kiosk” und “automatisch beim Neustart”

Sämtlicher Code und genaue Anleitungen dafür sind auf GitHub zu finden.

Wandmontage

Das Dashboard soll flach im Flur an der Wand hängen. Da es sich immer noch um ein 800€ Gerät handelt, will ich es befestigen. Aus einer Laune heraus will ich weder eine Halterung kaufen noch selber designen. Zum Glück wurde ich schnell auf thingiverse fündig: Surface Go ( v1 ) Halterung.

Exkurs: Details zum Ergebnis Gedruckt auf meinem neuen Snapmaker U1 mit weißem Snapmaker Filament sehen diese ganz ordentlich aus. Das Design an sich ist clever, jedoch ist mir die Schraubenlochgröße zu gering und die passgenauigkeit von Oberem und Unterem Part lässt zu viel Spielraum. Aber es wird passen. Geeignete Schrauben finden sich in meiner Schraubensammlung.

Photo from the printed holder with possible Screws

Foto der gedruckten Halterung mit einer Auswahl denkbarer Schrauben©Blogautor

Photo from the printed holder on the wall.

Nach zwei Mal Bohren: Halterung an der Wand. Nachdem die Schrauben dran waren, hielten die beiden Teile deutlich besser aneinander.©Blogautor

Photo from the Microsoft Surface Go1 on the wall.

Das Surface an der Wand©Blogautor

HA-Authentifizierung

Ich entschied mich aus mehreren Gründen dafür, dem Dashboard einen eigenen Nutzer zu geben:

  • MQTT braucht sowieso Zugangsdaten und ein geteiltes Passwort für alle Geräte ist kein guter Stil
  • Der Nutzer kann ein eigenes Bild bekommen, welches auf dem Kiosk unten links angezeigt wird
  • Der Nutzer kann ohne Adminrechte angelegt werden, was die potentielle Angriffsfläche auf empfindliche Teile meines Smart Homes reduziert
  • Der Nutzer kann eigene Präferenzen wie ein Standard-Dashboard oder Farbpalette haben

Soweit in der Theorie. In der Praxis gibt es in HA 2026.05 derzeit einen Bug, der mich zwingt, Person und Account getrennt voneinander anzulegen und mich daran hindert, diese zu verknüpfen. Aber das wird sicherlich bald behoben sein und sorgt nur dafür, dass ich kein Bild nutzen kann. Alle anderen Vorteile bleiben erhalten.

Sobald der Bug behoben ist, bat ich Claude schon mal um ein Profilbild für den User. Süß, oder?

Profile picture for the HA-User Kiosk. Made with Claude.

Profilbild für den HA-User Kiosk.©Blogautor

Automatisches Aufwachen

Da das SGO1 nicht durch Antippen des Bildschirms aufzuwecken ist, blieb nur eine Option: Automatisieren.

Das SGO1 steht im Wohnungsflur – dort ist bereits ein MTR 1 von Apollo als Anwesenheitssensor installiert. Die Idee: eine Zone um das Tablet herum definieren, sodass das Display angeht, sobald jemand die Zone betritt, und ausgeht, wenn der Flur verlassen wird. Die Asymmetrie ist hier bewusst gewählt, um der Ungenauigkeit der Radar-Zonen-Zuordnung entgegenzuwirken.

Es galt die Herausforderung zu überwinden, dass HA nicht von Haus aus mit dem GNOME-Display kommunizieren kann. Eine fertige Integration dafür existiert nicht, ich fand nach kurzer Suche nur halbfertige Versuche. Also baute ich selbst eine.

Der Code und genaue Anleitungen sind auf GitHub zu finden. Die Lösung besteht aus zwei systemd Services auf dem Tablet: einer propagiert den Displayzustand des SGO1 über MQTT an HA, der andere lauscht auf ein MQTT-Thema und schaltet das Display entsprechend. Damit ist das Tablet für HA ein vollwertiges steuerbares Gerät.

Dies erfüllt das Ziel “Energie sparen”

Kiosk Dashboard

Bleibt zum Schluss nur noch ein Dashboard für den Kiosk User zu erstellen und es auf dem SGO1 standardmäßig anzeigen zu lassen.

Beim Design habe ich nicht viele Optionen. Meine Maxime ist maximal viel anzuzeigen und gleichzeitig die Elemente groß genug für meine Finger zu lassen. Durch die geniale 3:2 Aufteilung des Surface Bildschirms passen etwa 2x2 Sektionen auf einen Bildschirm. Dieser soll alle Entitäten anzeigen, die relevant sein könnten, wenn man physisch in der Wohnung steht und etwas will.

Ein bei uns bereits etabliertes Design ist die Darstellung von Entitäten auf dem Wohnungs-Grundriss mit Hilfe der “Bildelemente-Karte”. So können sehr viele Entitäten auf kleinem Raum angezeigt und Klicktiefen vermieden werden. Dies geht zu Lasten der Übersichtlichkeit, aber bei vielen Entitäten ist das sowieso ein Nachteil, den man in Kauf nehmen muss. Die Darstellung von Entitäten am Ort ihrer Wirkung oder wo ein Gerät tatsächlich steht soll vor allem eine intuitive Identifikation gesuchter Entitäten machen - gerade wenn es mehr als zwei Leuchten pro Zimmer gibt.

Hier habe ich vor allem Gäste im Sinn. Mein Smart Home ist für mich gut zu bedienen, weil ich es erstellt habe. Aber schon für Mitbewohner ist es nur zu handhaben, weil ich es ihnen iterativ vorlebe. Vor allem Übernachtungsgäste müssen in der Lage sein, ihre Umgebung zu kontrollieren. Und an diesem Dashboard können sie genau die Umgebung steuern, die sie physisch um sich sehen.

Screenshot from the final Homeassistant Kiosk Dashboard

Das Finale Dashboard Layout.©Blogautor

  • Licht: Umfasst alle Leuchten, Leuchtengruppen, Helligkeiten und Szenen.
  • Umwelt: zeigt die wichtigsten Klimawerte als Gauges und häufige Sensoren wie Temperatur als Werte auf der Karte. Zusätzlich Bewegungsdaten – jedoch mehr eine Spielerei.
  • Medien: Strom und MediaPlayer-Cards für Fernseher und PC. Hier lohnte sich eine Grundriss-Karte nicht. Durchsage ist die Fähigkeit der HA-Satelliten, Nachrichten abzuspielen.
  • Sonstiges: Dinge, die man immer mal braucht, aber nie lange danach suchen will. Hausdienste sind mit der TrashCard umgesetzt.

Schlussbemerkung

Ob der Nutzen den Aufwand rechtfertigt, wird sich zeigen müssen. Vermutlich wären einige Dinge einfacher lösbar gewesen, aber ich hatte sehr viel Spaß, jetzt ein hübsches Kiosk-Wanddisplay und am wichtigsten: kein verstaubendes Tablet mehr in der Kiste.

Animated Image from the final Homeassistant Kiosk Dashboard where it activates itself

Dass HomeAssistant kürzlich Kachelfarben einführte … ein Glück für dieses Projekt 😊©Blogautor

Wo könnte damit die Reise weitergehen?

  • Das SGO1 zu einem vollständigen Voice Satelliten ausbauen?
  • Anstatt das Display nur an und aus zu machen einen Bildschirmschoner einbauen, der als digitaler Bilderrahmen die schönsten Urlaubsfotos anzeigt?
  • Die Kamera zur Überwachung nutzen?
  • Den Code zu einer HA Integration ausbauen und im HACS veröffentlichen?

Mal sehen!

Besten Dank fürs Lesen; über Kommentare und Vorschläge freue ich mich sehr.

Anmerkung: Die eingesetzte KI beim Schreiben war Claude Sonnet 4.6 Adaptiv.