Skip to content

ouralien/raspberry-pi-chromium-kiosk-mode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

PI Setup

Download Image & Install

https://www.raspberrypi.org/downloads/raspbian/

Raspbian Latest (Jessie 8)

sudo dd bs=1m if=path_of_your_image.img of=/dev/rdiskn

Replace n with the disk number

Setup Wifi

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

network={
    ssid="SSID"
    psk="password"
}
sudo ifdown wlan0
sudo ifup wlan

Necessary Software for Kiosk

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install matchbox x11-xserver-utils ttf-mscorefonts-installer xwit sqlite3 libnss3

Then reboot : sudo reboot

Installation of libgcrypt11 on Debian Linux 8 ( Jessie ) 64-bit

wget http://ftp.acc.umu.se/mirror/cdimage/snapshot/Debian/pool/main/libg/libgcrypt11/libgcrypt11_1.5.3-5_armhf.deb

sudo dpkg -i libgcrypt11_1.5.3-5_armhf.deb

Installation of Chromium browser 48

https://launchpad.net/ubuntu/vivid/armhf/chromium-browser/

# Download chromium package
wget http://launchpadlibrarian.net/234969703/chromium-browser_48.0.2564.82-0ubuntu0.15.04.1.1193_armhf.deb

https://launchpad.net/ubuntu/vivid/armhf/chromium-codecs-ffmpeg-extra/

# Download ffmpeg extra package
wget http://launchpadlibrarian.net/234969705/chromium-codecs-ffmpeg-extra_48.0.2564.82-0ubuntu0.15.04.1.1193_armhf.deb
# Install Packages
sudo dpkg -i chromium-codecs-ffmpeg-extra_48.0.2564.82-0ubuntu0.15.04.1.1193_armhf.deb \ 
	chromium-browser_48.0.2564.82-0ubuntu0.15.04.1.1193_armhf.deb

Pi Config

/boot/config.txt

# 1900x1200 at 32bit depth, DMT mode
disable_overscan=0
overscan_left=38
overscan_right=38
overscan_top=25
overscan_bottom=25

framebuffer_width=1900
framebuffer_height=1200
framebuffer_depth=32
framebuffer_ignore_alpha=1
hdmi_pixel_encoding=1
hdmi_group=2

#uncomment to overclock the arm. 700 MHz is the default.
arm_freq=1000

core_freq=500
sdram_freq=500
over_voltage=2
gpu_mem=128

Method 1 : rc.local + xinit script

/etc/rc.local

# Wait for the TV-screen to be turned on...
while ! $( tvservice --dumpedid /tmp/edid | fgrep -qv 'Nothing written!' ); do
	bHadToWaitForScreen=true;
	printf "===> Screen is not connected, off or in an unknown mode, waiting for it to become available...\n"
	sleep 10;
done;

printf "===> Screen is on, extracting preferred mode...\n"
_DEPTH=32;
eval $( edidparser /tmp/edid | fgrep 'preferred mode' | tail -1 | sed -Ene 's/^.+(DMT|CEA) \(([0-9]+)\) ([0-9]+)x([0-9]+)[pi]? @.+/_GROUP=\1;_MODE=\2;_XRES=\3;_YRES=\4;/p' );

printf "===> Resetting screen to preferred mode: %s-%d (%dx%dx%d)...\n" $_GROUP $_MODE $_XRES $_YRES $_DEPTH
tvservice --explicit="$_GROUP $_MODE"
sleep 1;

printf "===> Resetting frame-buffer to %dx%dx%d...\n" $_XRES $_YRES $_DEPTH
fbset --all --geometry $_XRES $_YRES $_XRES $_YRES $_DEPTH -left 0 -right 0 -upper 0 -lower 0;
sleep 1;

if [ -f /boot/xinitrc ]; then
	ln -fs /boot/xinitrc /home/pi/.xinitrc;
	su - pi -c 'startx' &
fi

/boot/xinitrc

#!/bin/sh
while true; do

	# Clean up previously running apps, gracefully at first then harshly
	killall -TERM chromium-browser 2>/dev/null;
	killall -TERM matchbox-window-manager 2>/dev/null;
	sleep 2;
	killall -9 chromium-browser 2>/dev/null;
	killall -9 matchbox-window-manager 2>/dev/null;

	# Clean out existing profile information
	rm -rf /home/pi/.cache;
	rm -rf /home/pi/.config;
	rm -rf /home/pi/.pki;

	# Generate the bare minimum to keep Chromium happy!
	mkdir -p /home/pi/.config/chromium/Default
	sqlite3 /home/pi/.config/chromium/Default/Web\ Data "CREATE TABLE meta(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY, value LONGVARCHAR); INSERT INTO meta VALUES('version','46'); CREATE TABLE keywords (foo INTEGER);";

	# Disable DPMS / Screen blanking
	xset -dpms
	xset s off

	# Reset the framebuffer's colour-depth
	fbset -depth $( cat /sys/module/*fb*/parameters/fbdepth );

	# Hide the cursor (move it to the bottom-right, comment out if you want mouse interaction)
	xwit -root -warp $( cat /sys/module/*fb*/parameters/fbwidth ) $( cat /sys/module/*fb*/parameters/fbheight )

	# Start the window manager (remove "-use_cursor no" if you actually want mouse interaction)
	matchbox-window-manager -use_titlebar no -use_cursor no &

	# Start the browser (See http://peter.sh/experiments/chromium-command-line-switches/)
	chromium-browser  --app='https://google.com'

done;

Method 2 : lxsession autostart

nano .config/lxsession/LXDE-pi/autostart

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@chromium-browser --kiosk --disable-session-crashed-bubble --disable-infobars https://www.google.com

sudo nano /etc/lightdm/lightdm.conf

# don't sleep the screen
xserver-command=X -s 0 dpms

Credits

About

Chromium 48 on Debian 8 (Jessie) in a kiosk mode.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published