* **[開機]** 短按 MSI box 電源按鈕 * **[關機]** 短按 MSI box 電源按鈕,執行關機。 --- 看起來是 safe shutdown * **[網路卡]** **enp2s0**, 192.168.5.10 (靠近電源處) * **[直立螢幕]** 要留意實際安裝螢幕時,**aoc logo** 應該朝內或朝外。 * **[溫溼度感測]** * lazydocker 已安裝 * Add support for Chinese fonts --- wpe-webkit-mir-kiosk ``` swae@edgeplus:/etc/systemd/system$ sudo snap services Service Startup Current Notes ubuntu-frame.daemon enabled active - wpe-webkit-mir-kiosk.daemon enabled active - wpe-webkit-mir-kiosk.restart-watcher enabled active - ``` * /snap/wpe-webkit-mir-kiosk/100/snap/snapcraft.yaml * /snap/ubuntu-frame/7931/snap/snapcraft.yaml ``sudo route delete default gw 192.168.5.1`` ``sudo route add default gw 192.168.1.1`` ## Docker CE and docker-cmopose ``` sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt -y install docker-ce docker-ce-cli containerd.io sudo systemctl status docker sudo usermod -aG docker swae logout sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` ## Running Firefox Snap on Ubuntu Core 20 inside Ubuntu-Frame ``` swae@edgeplus:~$ sudo snap list Name Version Rev Tracking Publisher Notes bare 1.0 5 latest/stable canonical✓ base core 16-2.60.4 16202 latest/stable canonical✓ core core20 20231123 2105 latest/stable canonical✓ base core22 20231123 1033 latest/stable canonical✓ base firefox 120.0.1-1 3504 latest/stable mozilla✓ - gnome-42-2204 0+git.ff35a85 141 latest/stable canonical✓ - gtk-common-themes 0.1-81-g442e511 1535 latest/stable canonical✓ - mesa-core20 21.2.6 151 latest/stable canonical✓ - mesa-core22 23.0.4 231 latest/stable canonical✓ - snapd 2.60.4 20290 latest/stable canonical✓ snapd ubuntu-frame 123-mir2.16.0 7931 22/candidate canonical✓ - ``` ``` root@edgeplus:~# WAYLAND_DISPLAY=wayland-0 MOZ_ENABLE_WAYLAND=1 firefox http://192.168.1.223:8080 [70956, Main Thread] WARNING: Settings portal not found: Cannot autolaunch D-Bus without X11 $DISPLAY: 'glib warning', file /build/firefox/parts/firefox/build/toolkit/xre/nsSigHandlers.cpp:187 (firefox:70956): Gdk-WARNING **: 09:26:27.702: Settings portal not found: Cannot autolaunch D-Bus without X11 $DISPLAY ``` * /etc/systemd/system/**firefox-frame.service** ``` [Unit] Description=Firefox Display After=snap.ubuntu-frame.daemon.service After=getty.target Conflicts=display-manager.service [Service] Type=simple Restart=always RestartSec=3 Environment=HOME=/root Environment=WAYLAND_DISPLAY=wayland-0 Environment=MOZ_ENABLE_WAYLAND=1 Environment=XDG_RUNTIME_DIR=/run/user/0 Environment=XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus ExecStart=/snap/bin/firefox --kiosk http://192.168.1.223:8080 Nice=15 [Install] WantedBy=default.target ``` * **systemctl restart firefox-frame** ## Run tbgw container up * **docker-compose.yml** ``` version: '3.0' services: tb-gateway: restart: always image: "thingsboard/tb-gateway" # Ports (Required for REST connector) ports: - "5000:5000" volumes: - ~/workspace/tbgw/.tb-gateway/config:/thingsboard_gateway/config - ~/workspace/tbgw/.tb-gateway/connectors:/thingsboard_gateway/connectors - ~/workspace/tbgw/.tb-gateway/logs:/thingsboard_gateway/logs - ~/workspace/tbgw/.tb-gateway/extensions:/thingsboard_gateway/extensions ``` ``` docker compose up -d ``` ## Run tbedge container up ``` version: '3.0' services: mytbedge: restart: always image: "thingsboard/tb-edge:3.6.1EDGE" ports: - "8080:8080" - "1883:1883" - "5683-5688:5683-5688/udp" environment: SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/tb-edge CLOUD_ROUTING_KEY: KEY CLOUD_ROUTING_SECRET: SECRET CLOUD_RPC_HOST: HOST CLOUD_RPC_PORT: PORT volumes: - /home/swae/workspace/tbedge/.mytb-edge-data:/data - /home/swae/workspace/tbedge/.mytb-edge-logs:/var/log/tb-edge - /home/swae/workspace/tbedge/.mytb-edge-config:/usr/share/tb-edge/conf - /home/swae/workspace/tbedge/.mytb-edge-resource:/usr/share/tb-edge/resource - /home/swae/workspace/tbedge/.mytb-edge-extensions:/usr/share/tb-edge/extensions postgres: restart: always image: "postgres:12" ports: - "5432" environment: POSTGRES_DB: USERNAME POSTGRES_PASSWORD: PASSWORD volumes: - /home/display/workspace/sp2/tb-edge/.mytb-edge-data/db:/var/lib/postgresql/data ``` ``` docker compose up -d ``` ## tb-gateway * To validate serial driver ready ``` swae@edgeplus:~$ sudo dmesg | grep -i serial [sudo] password for swae: [236113.507428] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [236113.507442] usb 3-3: SerialNumber: 00000000 [236113.536084] usbcore: registered new interface driver usbserial_generic [236113.536098] usbserial: USB Serial support registered for generic [236113.546612] usbserial: USB Serial support registered for FTDI USB Serial Device [236113.546660] ftdi_sio 3-3:1.0: FTDI USB Serial Device converter detected [236113.547420] usb 3-3: FTDI USB Serial Device converter now attached to ttyUSB0 swae@edgeplus:~$ sudo ls -l /dev/ttyUSB* crw-rw---- 1 root dialout 188, 0 Dec 18 09:40 /dev/ttyUSB0 ``` * Install tb-gateway package ``` wget https://github.com/thingsboard/thingsboard-gateway/releases/latest/download/python3-thingsboard-gateway.deb sudo apt update sudo apt install pip pip install cryptography==3.4.8 --force-reinstall --break-system-packages sudo apt install ./python3-thingsboard-gateway.deb -y sudo systemctl status thingsboard-gateway ``` * Configure tb-gateway ``` ``` ## Debian 12.2 ``` swae@edgeplus:~$ sudo snap connections wpe-webkit-mir-kiosk Interface Plug Slot Notes audio-playback wpe-webkit-mir-kiosk:audio-playback :audio-playback - avahi-observe wpe-webkit-mir-kiosk:avahi-observe - - content[graphics-core20] wpe-webkit-mir-kiosk:graphics-core20 mesa-core20:graphics-core20 - dbus - wpe-webkit-mir-kiosk:dbus-cogctl - hardware-observe wpe-webkit-mir-kiosk:hardware-observe - - hostname-control wpe-webkit-mir-kiosk:hostname-control - - network wpe-webkit-mir-kiosk:network :network - network-bind wpe-webkit-mir-kiosk:network-bind :network-bind - network-manager wpe-webkit-mir-kiosk:network-manager - - opengl wpe-webkit-mir-kiosk:opengl :opengl - process-control wpe-webkit-mir-kiosk:process-control - - system-observe wpe-webkit-mir-kiosk:system-observe - - upower-observe wpe-webkit-mir-kiosk:upower-observe :upower-observe - wayland wpe-webkit-mir-kiosk:wayland :wayland - ``` :::spoiler ## Ubuntu 23.10 Desktop * Firefox snap with native Wayland mode, ## Ubuntu 23.04 Desktop * A work around solution - Ubuntu Frame + Firefox kiosk mode (取代 wpe-webkit-mir-kiosk) [here](https://askubuntu.com/questions/1383691/kiosk-running-firefox-snap-on-ubuntu-core-20-inside-ubuntu-frame) ``` ### /etc/systemd/system/firefox-frame.service [Unit] Description=Firefox Display After=snap.ubuntu-frame.daemon.service After=getty.target Conflicts=display-manager.service [Service] Type=simple Restart=always RestartSec=3 Environment=HOME=/root Environment=WAYLAND_DISPLAY=wayland-0 Environment=MOZ_ENABLE_WAYLAND=1 Environment=XDG_RUNTIME_DIR=/run/user/0 Environment=XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus ExecStart=/usr/bin/firefox --kiosk http://www.askubuntu.com Nice=15 [Install] WantedBy=default.target ``` ``` sudo systemctl daemon-reload sudo systemctl start firefox-frame sudo systemctl enable firefox-frame ``` * Ubuntu Frame ``` sudo snap install ubuntu-frame sudo snap install ubuntu-frame daemon=true ``` ``` swae@edgeplus:~$ sudo snap set ubuntu-frame display=" layouts: default: cards: - card-id: 0 HDMI-A-2: orientation: left" ``` ## Ubuntu 23.04 Desktop * Check Hardware ``` swae@edgeplus:~$ sudo lspci -k | grep -EA3 'VGA|3D|Display' [sudo] password for swae: 00:02.0 VGA compatible controller: Intel Corporation Alder Lake-N [UHD Graphics] DeviceName: Onboard - Video Subsystem: Micro-Star International Co., Ltd. [MSI] Device b0a9 Kernel driver in use: i915 ``` * (x), Ubuntu Frame + wpe-webkit-mir-kiosk ## Ubuntu Server 23.04 * Check Hardware ``` swae@edgeplus-demo:~$ sudo lspci -k | grep -EA3 'VGA|3D|Display' 00:02.0 VGA compatible controller: Intel Corporation Alder Lake-N [UHD Graphics] DeviceName: Onboard - Video Subsystem: Micro-Star International Co., Ltd. [MSI] Device b0a9 Kernel driver in use: i915 ``` ## Ubuntu Server 22.04.3 * vendor: 8086 ("Intel Corporation"), device: 46d0 ("Alder Lake-N [UHD Graphics]"), class: 03 ("Display controller") * Check Hardware ``` swae@edgeplus-demo:~$ sudo lspci -k | grep -EA3 'VGA|3D|Display' 00:02.0 VGA compatible controller: Intel Corporation Device 46d0 DeviceName: Onboard - Video Subsystem: Micro-Star International Co., Ltd. [MSI] Device b0a9 00:04.0 Signal processing controller: Intel Corporation Alder Lake Innovation Platform Framework Processor Participant ``` ## Debian 12.2 * Check Hardware ``` swae@edgeplus:~$ sudo lspci -k | grep -EA3 'VGA|3D|Display' 00:02.0 VGA compatible controller: Intel Corporation Alder Lake-N [UHD Graphics] DeviceName: Onboard - Video Subsystem: Micro-Star International Co., Ltd. [MSI] Alder Lake-N [UHD Graphics] Kernel driver in use: i915 ``` * Remove all snaps and snapd, preferably with a single command ```! sudo snap remove $(snap list | awk '!/^Name|^core/ {print $1}') && sudo apt remove --purge -y snapd gnome-software-plugin-snap ``` * Enable snapd ``` sudo apt update sudo apt install snapd sudo snap install core ``` ``` swae@edgeplus:~$ sudo snap list Name Version Rev Tracking Publisher Notes core 16-2.60.4 16202 latest/stable canonical✓ core ``` * Install a Web Kiosk ``` sudo snap install wpe-webkit-mir-kiosk sudo snap set wpe-webkit-mir-kiosk daemon=true ``` ``` swae@edgeplus:~$ sudo snap list Name Version Rev Tracking Publisher Notes core 16-2.60.4 16202 latest/stable canonical✓ core core20 20231123 2105 latest/stable canonical✓ base mesa-core20 21.2.6 151 latest/stable canonical✓ - wpe-webkit-mir-kiosk 2.38.5 100 latest/stable glancr - ``` * Install Ubuntu Frame ``` sudo snap install ubuntu-frame sudo snap set ubuntu-frame daemon=true ``` ``` swae@edgeplus:~$ sudo snap list Name Version Rev Tracking Publisher Notes core 16-2.60.4 16202 latest/stable canonical✓ core core20 20231123 2105 latest/stable canonical✓ base core22 20231123 1033 latest/stable canonical✓ base mesa-core20 21.2.6 151 latest/stable canonical✓ - mesa-core22 23.0.4 231 latest/stable canonical✓ - ubuntu-frame 118-mir2.15.0 7025 22/stable canonical✓ - wpe-webkit-mir-kiosk 2.38.5 100 latest/stable glancr - ``` ### Ubuntu Core 是必要的嗎? ### X11 vs Wayland ### Wayland vs XWayland? Ubuntu Core: ubuntu-frame runs as root on Core, thus the Wayland socket is located at /run/user/0/wayland-0 The wpe-webkit-mir-kiosk snap provides one browser, WPE WebKit with the cog single-window launcher. ::: ## References * [So let us talk about this Wayland thing](https://pointieststick.com/2023/09/17/so-lets-talk-about-this-wayland-thing/) * [How to run Ubuntu Frame in a user session on Ubuntu Core](https://discourse.ubuntu.com/t/how-to-run-ubuntu-frame-in-a-user-session-on-ubuntu-core/38467) * [KIOSK - Running Firefox Snap on Ubuntu Core 20 inside Ubuntu-Frame](https://askubuntu.com/questions/1383691/kiosk-running-firefox-snap-on-ubuntu-core-20-inside-ubuntu-frame)