Agent Linux — Operació
Servei systemd
L'agent corre com a kiosk-browser.service. Auto-arrenca a la VT7 a l'inici del sistema, amb Restart=on-failure.
| Operació | Comanda |
|---|---|
| Veure estat | systemctl status kiosk-browser |
| Logs en viu | journalctl -u kiosk-browser -f |
| Logs de l'app | tail -f /tmp/kiosk.log |
| Reiniciar | systemctl restart kiosk-browser |
| Aturar | systemctl stop kiosk-browser |
| Veure el navegador | chvt 7 |
Heartbeat i integració amb RDS
- Heartbeat cada 60 segons: l'agent es registra com a dispositiu Linux i envia l'estat.
- GPS / info del dispositiu cada 5 minuts (inclou lat/lon, uptime, distro/versió llegits de
/etc/os-release, model de hardware DMI). - Pujada de logs a cada heartbeat — disponibles al panell: Dispositius → Accions → Logs.
- Configuració remota: a cada heartbeat l'agent rep el mode (Web/Playlist), URL d'inici, allowlist i passcode actualitzats des del panell.
- Captures remotes: si el panell sol·licita una captura des de Accions → Captura de pantalla, l'agent llança
scrotsobre$DISPLAY=:0, comprimeix a JPEG (qualitat 70) i puja la imatge signada amb HMAC v2. Detall.
Geolocalització (GPS + IP)
L'agent reporta la ubicació amb dues vies, en ordre:
- gpsd local (
127.0.0.1:2947) — si tens un mòdul GPS connectat (USB sèrie / NMEA) igpsd.socketestà actiu (l'instal·lador el deixa habilitat), l'agent llegeix la última fixació ambmode ≥ 2(2D / 3D). - Geolocalització per IP — fallback automàtic. Crida
https://ipwho.is/i emmagatzema el resultat 1 hora en memòria; suficient per a un kiosk que no es mou.
Si les dues vies fallen, envia 0,0 i RDS ho tracta com a "sense fix" (no sobrescriu l'últim valor bo).
Connectar un GPS USB
gpsd ve preinstal·lat amb USBAUTO=true: endolla el receptor, no cal tocar res — la següent lectura de gpsd ja retornarà una fixació quan el receptor tingui senyal.
Suport de pantalles tàctils
Habilitat de sèrie en qualsevol panell que aparegui com a dispositiu tàctil per a libinput:
- El navegador embegut rep esdeveniments
TouchEventreals en lloc de mouse emulat (flags Chromium--touch-events=enabled --enable-pincharun.sh). - Pinch-to-zoom funcional.
- Hot-corner de Settings (5 tocs a la cantonada superior esquerra en 2 s) accepta
TouchBegina més del mouse press. - Teclat en pantalla: el diàleg d'Ajustaments llança
onboardautomàticament en obrir-se, i el tanca en tancar el diàleg. Sense teclat físic també pots configurar l'agent.
Mode Web Kiosk
Llança el navegador a una URL configurable amb:
- Allowlist-based navigation — només dominis permesos carreguen; la resta redirigeix a la URL d'inici.
- Botons flotants Back, Reload i Home a la cantonada inferior esquerra.
- Bloqueja obertures de nova pestanya/finestra — tots els enllaços s'obren a la mateixa vista.
Mode Playlist
Reprodueix l'slideshow de vídeos/imatges gestionat des del panell web.
- Els arxius es descarreguen automàticament al disc local.
- Verificació CRC32 abans de marcar un arxiu com a descarregat.
- Reprodueix des de la caché local immediatament en reiniciar — no necessita connexió al servidor per començar.
- Pantalla completa, edge-to-edge — sense barra d'estat ni botons.
- S'adapta automàticament a qualsevol resolució (SD, FHD, 4K) sense reinici.
Logs
Els logs de l'agent es persisteixen localment i es pugen al servidor a cada heartbeat. Per veure'ls:
- Localment:
tail -f /tmp/kiosk.logper SSH. - Des del panell: Dispositius → fila del dispositiu → Accions → Logs.
Actualitzacions
Les actualitzacions es fan tornant a executar el mateix instal·lador one-liner que vas fer servir per instal·lar. Quan detecta /opt/promobrowser/.git, fa git fetch + reset --hard origin/main, torna a aplicar paquets del sistema (idempotent via apt-get install -y) i reescriu la unitat de systemd. Després reinicies el servei:
curl -fsSL https://rds.digitalsignagerds.com/install.sh | sudo bash
sudo systemctl restart kiosk-browser
L'instal·lador no reinicia el servei automàticament — fes-ho tu amb
systemctl restartdesprés de l'actualització.
Configuració de xarxa
El menú d'admin (5 tocs a la cantonada superior esquerra) inclou una pestanya Network amb:
Estat actual
Panell monoespaiat a la part superior que s'autorefresca cada 5 segons. Mostra, per a cada interfície connectada:
- Nom i tipus (ethernet / wifi)
- Nom del perfil de NetworkManager
- IP, màscara, porta d'enllaç, DNS
WiFi
- Scan again — refresca la llista de xarxes disponibles (
nmcli device wifi rescan). - Taula amb SSID, senyal % i tipus de seguretat. La xarxa actualment en ús apareix marcada amb ✓ en verd.
- Connect — selecciona una xarxa de la taula i prem Connect. Si està xifrada, demana contrasenya. Crida
nmcli device wifi connect. - Forget current network — elimina el perfil de la xarxa WiFi actualment activa (
nmcli connection delete).
En equips sense adaptador WiFi (kiosks purament cablejats) el panell continua apareixent i mostra "No WiFi adapter detected" en prémer Scan/Connect.
Ethernet
- Selector DHCP (recomanat) / Static.
- En mode Static apareixen els camps:
- IP / CIDR — p.ex.
192.168.1.50/24 - Gateway — p.ex.
192.168.1.1 - DNS — un o més separats per comes
- IP / CIDR — p.ex.
- Apply Ethernet config crida
nmcli connection modify ipv4.method auto|manual …seguit d'un down/up del perfil per aplicar a l'instant.
El canvi pot tallar momentàniament la connexió si estàs connectat per SSH a través del mateix cable. Els serveis del kiosk (heartbeat) es recuperen automàticament.
Totes les operacions de xarxa es registren a agent.log sota la categoria NETWORK.
Resolució de problemes freqüents
| Símptoma | Diagnòstic |
|---|---|
| Pantalla en blanc en arrencar | systemctl status kiosk-browser — si està actiu però no veus res, prova chvt 7. |
| No connecta al servidor | Revisa Server URL i Device ID a Settings → Server → Test Connection. |
| Els vídeos no es reprodueixen | Falta algun paquet gstreamer. Reinstal·la: sudo apt install gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav. |
El teclat 12345 no obre Settings |
El watcher X11 RECORD necessita python3-xlib — reinstal·la el paquet. |
| Els canvis del panell no arriben | Espera al següent heartbeat (60 s); en cas de dubte journalctl -u kiosk-browser -f per veure les crides. |