* **[開機]** 短按 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)