## Raspberry Pi ako kiosk #### alebo "Mission: Kioskpossible" [Miroslav Biňas](https://bletvaska.github.io) / [**OSSConf 2025**](https://ossconf.soit.sk/)

Čo je to Kiosk?

Samoobslužné zariadeine s dotykovou obrazovkou, ktoré sa používa na predaj tovarov alebo služieb, poskytovanie informácií alebo interakciu s používateľmi.
[![](images/kiosk-samsung.jpg)](https://www.samsung.com/sk/business/smart-signage/interactive-display/samsung-kiosk-with-windows-os-lh24kmccbgcxen/) notes: * kiosky mozu byt implementovane rozlicnym sposobom: * na pulte * na stene * na stojane * tu je priklad kioskov od Samsungu * komerne riesenia sa pohybuju v cenach od 1000 EUR vyssie
![](images/rpi.kiosk.india.jpg) notes: * rpi ako kiosk je jeden z popularnych sposobov vyuzitia minipocitaca rpi
### Staviame vlastný RPi kiosk ###### (na ľubovoľnom RPi s [RPi OS with desktop](https://www.raspberrypi.com/software/operating-systems/) (13.5.2025)) ![](images/pi-plug-in.gif)
## 1. Inštalácia OS
[![](images/rpios.png)](https://www.raspberrypi.com/software/operating-systems/) notes: * oficialny rpi os * desktop verzia * pre rpi3 32bit verzia * hlavne kvoli rozbehanemu a nakonfigurovanemu desktopu
[![](images/rpi.imager.png)](https://www.raspberrypi.com/software/) notes: * mozete pouzit lubovolnu metodu na flashnutie SD karty * balenaEtcher, dd * rpi imager je oficialny nastroj, ktory vie flashnut SD kartu s rpi os * ma aj moznost stiahnut si aktualnu verziu rpi os * mozete pomocou neho nakonfigurovat wifi, ssh, locale, timezone a dalsie veci
### RPi Provisioning * cez RPi Imager: * zapnúť SSH * nastaviť WiFi pripojenie * nastaviť jazyk, časovú zónu, rozloženie klávesnice * nastaviť hostname * pri prvom spustení: * aktualizovať systém * doinštalovať potrebné balíčky
[![](https://opengraph.githubassets.com/dd1a092ca6424b6a7c9199db6b8031f9e1c9be4aed88eee6f145d6a4f1a66c09/raspberrypi/rpi-image-gen)](https://github.com/raspberrypi/rpi-image-gen)
## 2. Konfigurácia sieťového pripojenia notes: * pouzitie RPi moze byt v rozlicnych prostrediach * mozno bude RPi pripojene k internetu 24/7 * mozno RPi nebude pripojene k internetu vobec * nastavenie siete urobite doma - tam, kde ho mate * je to priprava na * produkcne pouzitie (pripojenie k internetu 24/7), ale aj na * servisne pripojenie, kde bude potrebne sa k RPi pripojit kvoli nastaveniu kiosku * napr. cez WiFi z telefonu (WiFi tethering) * alebo cez USB kabel cez telefon (USB tethering) * alebo cez ethernet kabel s laptopom
[![](images/rpi.connect.png)](https://connect.raspberrypi.com/) notes: * rpi connect je služba, ktorá umožňuje vzdialený prístup k zariadeniam Raspberry Pi cez webové rozhranie * zdielanie plochy * vzdialeny terminal * umožňuje jednoduché pripojenie a správu viacerých zariadení * beta od roku 2024, verzia 1.0 bola vydaná v marci 2025 * toto chcete pouzivat! * nepotrebujete ziadnu verejnu IP adresu * nepotrebujete nastavovat ziadne port forwardingy * nepotrebujete nastavovat VPN * rpi connect je bezplatná služba, ktorá je dostupná pre všetkých používateľov Raspberry Pi
### RPi Connect 101 ```bash # najprv treba zapnut $ rpi-connect on # potom sa prihlásime do sluzby zo zariadenia $ rpi-connect signin # kliknutim na vygenerovany odkaz sa zariadenie prihlasi # do sluzby a bude ho mozne spravovat cez webove rozhranie ```
### WiFi konfigurácia ```bash # vytvorenie WiFi pripojenia s názvom "CONN_NAME", # ktoré sa pripojí k sieti s názvom "SSID" a heslom "PASSWORD" $ nmcli connection add type wifi \ con-name "CONN_NAME" \ ifname wlan0 \ ssid "SSID" \ wifi-sec.key-mgmt wpa-psk \ wifi-sec.psk "PASSWORD" # overenie pripojenia $ nmcli connection show # ak mas vypnute rozhranie, tak ho zapni $ nmcli radio wifi on ``` notes: * tymto sposobom je mozne pripravit konfiguraciu pre WiFi siet v mieste nasadenia * rovnako vsak je mozne pripravit konfiguraciu pre servisnu siet * napr. pre WiFi siet z telefonu
### Konfigurácia Ethernet pripojenia ```bash # nastavenie IP adresy na 10.20.30.1 $ nmcli connection add type ethernet \ con-name "Service Connection" \ ifname eth0 \ ipv4.addresses 10.20.30.1/24 \ ipv4.method manual # zapnutie rozhrania $ nmcli connection up "Service Connection" # overenie vysledku $ nmcli connection show ``` notes: * ethernetove pripojenie posluzi v pripade, ak sa potrebujeme pripojit k RPi cez kabel * pripojenie: * IP adresa RPi bude 10.20.30.1/24 * na pocitaci staci nastavit IP adresu rucne z rovnakeho segmentu * pouzit krizeny kabel * mozno vytvorit samostatnu konfiguraciu? ```bash $ nmcli connection add type ethernet \ con-name "Service Connection" \ ifname eth0 \ ipv4.addresses 10.20.30.1/24 \ ipv4.method manual ```
## 3. Spustenie aplikácie po štarte notes: * nasim cielom je spustit pri zapnuti bud * webovy prehliadac, alebo * prehravac videa * v oboch pripadoch sa jedna o graficke aplikacie. a kym si povieme o tom, ako ich spustit, tak si musime povedat trochu o tom, ako pracuje graficke rozhranie v Linuxe.
notes: * graficke rozhranie v linuxe sa vola **display server** a v sucasnosti existuju dva hlavne display servery * X11 (Xorg) - starsia technologia, ktora je v linuxe uz velmi dlho (od 80. rokov) * Wayland - nova technologia, jednoduchsia a bezpecnejsia * v X serveri sa nachadzali dve aplikacie, ktore sa starali o vykreslenie okna: * display server - zodpovedny za vykreslenie okna na obrazovke * window manager - zodpovedny za spravu okien, ich presuvanie, zmenu velkosti, minimalizaciu, maximalizaciu, atd. * vo Waylande sa tieto dve aplikacie spojili do jednej, ktora sa vola compositor * RPi OS pouziva wayland experimentalne od roku 2021 * v 2021 s kompozitorom mutter * v 2023 s kompozitorom wayfire na RPi 4 a 5, kde bol Wayland default * na konci 2024 s kompozitorom labwc s moznostou spustat aj na starsich RPi a Wayland je default na vsetkych modeloch * takze aktualny stav * Wayland je default na RPi OS * labwc je default compositor * vysledok je taky, ze ak budete hladat navody, ako spravite kiosk z RPi, tak najdete navody v 99% prave pre X11 s jeho spravcami okien * https://www.raspberrypi.com/news/a-new-release-of-raspberry-pi-os/
### Autoštart v labwc * bash skript * `/etc/xdg/labwc/autostart` * `$HOME/.config/labwc/autostart` notes: * systemovy * pouzivatelsky
```bash #!/usr/bin/env bash # move mouse cursor out of the screen evemu-event /dev/input/event0 \ --type EV_REL --code REL_X --value 9999 --sync evemu-event /dev/input/event0 \ --type EV_REL --code REL_Y --value 9999 --sync # close other services # kill watchdog for running apps killall -9 lwrespawn # turns off pcmanfm for desktop management pcmanfm --desktop-off # kill panel killall -9 wf-panel-pi ```
### Prehliadač v kiosk režime ```bash # auto-detect resolution and store in variables width=$(cut -d, -f1 /sys/class/graphics/fb0/virtual_size) height=$(cut -d, -f2 /sys/class/graphics/fb0/virtual_size) # start chromium in kiosk mode /usr/bin/lwrespawn /usr/bin/chromium-browser \ --no-first-run \ --start-maximized \ --noerrdialogs \ --disable-infobars \ --incognito \ --window-size="${width},${height}" \ --window-position=0,0 \ --kiosk \ --hide-scrollbars \ "${URL}" ```
### Videoprehrávač v kiosk režime ```bash # start vlc in kiosk mode cd "${HOME}/Videos" && /usr/bin/lwrespawn /usr/bin/cvlc \ --intf rc \ --rc-host localhost:4212 \ --fullscreen \ --no-video-title-show \ --video-on-top \ --no-audio \ --no-osd \ --no-mouse-events \ --loop \ *webm ```
## 4. Tipy a triky
### Zvuk cez HDMI * nastaviť cez `raspi-config` * v menu `System Options > Audio` vybrať položku `HDMI`
### `/boot/firmware/config.txt` ``` # signál do HDMI aj bez monitora hdmi_force_hotplug=1 # vypínač RPi na GPIO 3 # vypnutie - 2x stlačiť, zapnutie - 1x stlačiť dtoverlay=gpio-shutdown # vypne LED pre aktivity SD karty dtparam=act_led_trigger=none # vypne napájaciu LED dtparam=pwr_led_trigger=none ``` notes: * https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README * https://www.stderr.nl/Blog/Hardware/RaspberryPi/PowerButton.html * pravdepodobne sa da este pridat led-ka, ktora bude svietit, ked je rpi vypnute - https://gist.github.com/lbussy/9e81cbcc617952f1250e353bd42e7775
[![](images/rpi.5-pinout.png)](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html) notes: * benefitom je aj moznost pripojit dalsiu elektroniku cez GPIO piny
### Zvýšenie výkonu cez ZRAM * vytvára komprimovanú pamäť v RAM, používa sa ako swap pri nedostatku fyzickej pamäte * inštalácia: ```bash $ sudo apt install --yes zram-tools ``` * konfigurácia v `/etc/default/zramswap`: ``` ALGO=zstd PERCENT=75 ``` * reštart služby: ```bash $ sudo systemctl restart zramswap ``` * overenie cez `zramctl` alebo `free`
### Vypnutie obrazovky * šetríme elektriku v noci ;) * pomocou `wlr-randr` * Wayland alternatíva pre `xrandr` * bez parametrov vypíše zoznam výstupov * príklady použitia: ```bash # vypnutie obrazovky HDMI-A-1 $ wlr-randr --output HDMI-A-1 --off # opätovné zapnutie obrazovky $ wlr-randr --output HDMI-A-1 --on # otočenie obrazovky hore nohami $ wlr-randr --output HDMI-A-1 --transform 180 ```
![](images/splash.rpi.png)
### Boot Splash Screen * vlastný obrázok pri štartovaní systému * [Plymouth](https://wiki.archlinux.org/title/Plymouth) - správca tém pre spúšťanie/ukončovanie systému * splash screen môže byť aj animácia * krátka odpoveď na zmenu splash obrazovky: ```bash # zistíme aktuálnu tému $ plymouth-set-default-theme pix # zmeníme jej splash obrazovku za vlastnú /usr/share/plymouth/themes/pix/splash.png # aplikujeme $ sudo plymouth-set-default-theme --rebuild-initrd pix ```
[![](images/splash.steelpark.png)](https://steelpark.sk/)
[![Namakaný deň](images/banner.png)](https://www.namakanyden.sk/) [fb/namakanyden](https://www.facebook.com/namakanyden/) / [yt/@namakanyden](https://www.youtube.com/@namakanyden)
## Otázky?
![qr code](https://api.qrserver.com/v1/create-qr-code/?data=http://bit.ly/46fSWrE&size=300x300) (**http://bit.ly/46fSWrE**)