In /boot/config.txt, add:
disable_spash=1
optionally:
disable_overscan=1
In /boot/cmdline.txt, add:
logo.nologo consoleblank=0 loglevel=1 quiet
By hand run
systemctl disable getty@tty1
apt install fbi
Create /etc/systemd/system/splashscreen.service:
[Unit]
Description=Splash screen
DefaultDependencies=no
After=local-fs.target
[Service]
ExecStart=/usr/bin/fbi -d /dev/fb0 --noverbose -a /opt/splash.png
StandardInput=tty
StandardOutput=tty
[Install]
WantedBy=sysinit.target
With /opt/splash.png
Might need to kill fbi when starting the kiosk.
using this guide instead, you can change the splash screen in:
/usr/share/plymouth/themes/pix/splash.png
to something custom.
apt-get install matchbox-window-manager
into somthing like start-kiosk.sh
#!/bin/sh
export BASEDIR=/home/pi
/usr/bin/matchbox-window-manager -use_cursor no -use_titlebar no &
#/usr/bin/chromium-browser --no-sandbox
# clear out warning bar on chromium
#
tmpfn=`mktemp`
jq '.profile.exited_cleanly = true' $BASEDIR/.config/chromium/Preferences | jq '.profile.exit_type = "Normal"' > $tmpfn
mv $tmpfn $BASEDIR/.config/chromium/Preferences
# start chromium in kiosk mode
#
xset s noblank
xset s off
xset -dpms
unclutter -idle 0.05 -root &
#/usr/bin/chromium-browser --noerrdialogs --disable-infobars --kiosk ./html/index.html
#
# --no-sandbox \
# --disable-application-cache \
/usr/bin/chromium-browser \
--test-type \
--no-sandbox \
--noerrdialogs \
--disable-infobars \
--aggressive-cache-discard \
--incognito \
--disable-pinch \
--overscroll-history-navigation=0 \
--kiosk \
'http://localhost:60535'
--test-type is needed to get rid of the --no-sandbox warning and the --no-sandbox is needed
or else chromium crashes when being used by xinit (see here).
update-alternatives --config x-window-manager
update-alternatives --display x-window-manager
Note I was having problems with the 'dim' function as it wasn't executing correctly (needed to be root instead of pi) and the display was wrong.
One way to discover which display is being used is:
# ps aux | grep xserver
root 808 0.0 0.0 3872 704 ? S Jan30 0:00 xinit /home/bus/bin/start-kiosk.sh -- /etc/X11/xinit/xserverrc :0 -auth /tmp/serverauth.vJgHr6zsRs
root 3354 0.0 0.0 3872 788 tty1 S+ Jan30 0:00 xinit /home/bus/bin/start-kiosk.sh -- /etc/X11/xinit/xserverrc :1 vt1 -keeptty -auth /tmp/serverauth.HSj8JTM2IM
root 27449 0.0 0.0 7348 524 pts/1 S+ 05:48 0:00 grep xserver
From an SO answer, need to load the 'magic cookie' for X communication:
su - <otheruser> -c "unset XAUTHORITY; xauth add $(xauth list)"
sudo apt install -y sox espeak mplayer ffmpeg alsa-utils
Use raspi-config to force audio through the 3.5mm audio jack.
There's an issue with the HDMI 'going to sleep' and cutting off the first two seconds of the audio if nothing is being played through it. The 3.5mm jack seems to not have that issue.
The 3.5mm jack has a lot of noise on the line. The fix looks to be using a USB speaker. For now we'll go with the 3.5mm jack but this will eventually need replacement.
To get monitor resolution:
fbset -s
Make sure the following are installed:
apt install -y espeak mplayer
Enable ssh server (for debugging and setup):
systemctl enable ssh
systemctl start ssh
Run raspi-config and select option 4 for the screen (640x480 @ 60Hz):
raspi-config
Make sure to manually set volume on the waveshare screen (default is set at 50) from the buttons provided on the left.
Remove libreoffice to free up space (around 0.5Gb):
apt remove -y libreoffice libreoffice-base-core libreoffice-common libreoffice-core libreoffice-help-common libreoffice-help-en-gb libreoffice-help-en-us libreoffice-l10n-en-gb libreoffice-style-colibre libreoffice-style-tango
apt autoremove -y --purge
apt-get purge wolfram-engine scratch scratch2
Disable bluetooth:
echo 'dtoverlay=pi3-disable-bt >> /boot/config.txt
and related services (from here):
systemctl disable hciuart.service
systemctl disable bluealsa.service
systemctl disable bluetooth.service
I'm still trying to get GPRS to work consistently.
Once the system is setup, it seems like it's pretty consistent, but getting /dev/ttyGPRS to be
consistently tied to the appropriate device is proving difficult...sometimes /dev/ttyAMA0 works,
sometimes it's /dev/serial0, sometimes it's /dev/ttyUSB0, othertimes it looks like /dev/ttyUSB2 works.
I notice messages of this sort happening most recently which could or could not be related to the the GPRS not working (/var/log/syslog):
Jan 30 11:56:23 raspberrypi systemd[1]: serial-getty@ttyAMA0.service: Succeeded.
Jan 30 11:56:23 raspberrypi systemd[1]: serial-getty@ttyAMA0.service: Service RestartSec=100ms expired, scheduling restart.
Jan 30 11:56:23 raspberrypi systemd[1]: serial-getty@ttyAMA0.service: Scheduled restart job, restart counter is at 198.
Jan 30 11:56:23 raspberrypi systemd[1]: Stopped Serial Getty on ttyAMA0.
Jan 30 11:56:23 raspberrypi systemd[1]: Started Serial Getty on ttyAMA0.
I followed this:
systemctl stop serial-getty@ttyAMA0.service
Disable permanently (SO answer suggested the 'mask'):
systemctl disable serial-getty@ttyAMA0.service
systemctl mask serial-getty@ttyAMA0.service