Home | Send Feedback

Setup a NanoPi Kiosk with Chromium

Published: 5. January 2019  •  linux

Recently I had to set up a kiosk mode on a NanoPi M1 Plus with a 5" display attached. Kiosk mode, in this case, means starting a browser in full-screen mode.

Here a short tutorial on how to set this up. The guide mentions some NanoPi specific tasks, but overall this should work on any Debian based Linux system.

Burn Armbian image to SD Card

As the operating system, I use Armbian, a minimal Debian based Linux for ARM computers.

The latest version can be downloaded from this address:
https://dl.armbian.com/nanopim1plus/Debian_stretch_next.7z

Unzip it and burn it to a micro SD card. On Windows, my go-to tool for this task is Rufus. Plugin the SD card and boot the NanoPi.

When the NanoPi starts up, he requests a dynamic IP address from a DHCP server in the network. To find out what IP address he got, you can scan the network with a tool like Angry IP Scanner or with nmap on Linux.

Open an SSH connection to the NanoPi. In my network, the NanoPI got the address 192.168.2.13

ssh root@192.168.2.13

The first time you login into an Armbian system, you have to change the root password.

Optional: Install OS on the internal flash storage

This next step is optional and specific for the NanoPi. The NanoPi has flash storage built-in on the motherboard, and instead of using the Micro SD Card, it was a requirement to install the operating system on this internal flash storage.

These steps download the image again and burn it to the internal storage (/dev/mmcblk1)

wget https://dl.armbian.com/nanopim1plus/Debian_stretch_next.7z -O image.7z
apt-get install -y p7zip
p7zip -d image.7z 
dd if=Armbian_5.65_Nanopim1plus_Debian_stretch_next_4.14.78.img of=/dev/mmcblk1
shutdown -h now

Remove the Micro SD Card and boot the NanoPI. This starts Armbian from the internal flash storage. Open an SSH connection and change the root password.

Install Kiosk

Now we continue with the standard installation. First, we update the installed packages and then install the X Window System, Openbox, a window manager, and Chromium.

apt update
apt full-upgrade
apt install xorg xserver-xorg-legacy openbox chromium

Next, we change settings in the Xwrapper.config file

nano -w /etc/X11/Xwrapper.config

Change the existing line with allowed_users and add a new line with needs_root

allowed_users=anybody
needs_root_rights=yes

Create a new user. The following startup script will run with this user.

useradd -m kiosk-user

Create a startup script

nano /opt/kiosk.sh

Insert the following statements. This script starts the window manager Openbox and the Chromium browser.

#!/bin/sh
xset dpms
xset s noblank
xset s 300
openbox-session &
chromium --no-first-run --disable --disable-translate --disable-infobars --disable-suggestions-service --disable-save-password-bubble --start-maximized --kiosk --disable-session-crashed-bubble --incognito https://demo.rasc.ch/wamp2spring-demo-gauge/

Make the script executable

chmod 755 /opt/kiosk.sh

Create a systemd service file

nano /etc/systemd/system/kiosk.service

Insert the following content

[Unit]
Description=Kiosk

[Service]
Type=oneshot
User=kiosk-user
ExecStart=/usr/bin/startx /etc/X11/Xsession /opt/kiosk.sh

[Install]
WantedBy=multi-user.target

Reload the systemd daemon and enable the newly created service, so it will start each time the system boots up.

systemctl daemon-reload
systemctl enable kiosk

Now reboot the NanoPI. When everything is configured correctly, you should see the Chromium browser and the web page we configured in the kiosk.sh startup script.

kiosk