Category: Linux

How to setup a Chromium Kiosk Startup Mode for Raspberry Pi running Raspbian Server in 2021

I was tasked with creating a simple dashboard for a client of ours that auto runs on boot of the computer. This weekend I sat down to work on this and here’s what I found.

First, make sure you go with Rasbian Server edition of the OS. I tried with various other flavours and it was a convoluted process to remove GDM or install LXDE and actually have this run with minimal effort. This method takes around 15 minutes to setup and test, and I’m on a low speed satellite internet link – should be much faster if you have real Internet access!

Here’s how to do it;

The rest assumes you’ve already installed Vanilla Raspbian Server OS, connected to wifi if needed, and are at a shell prompt. Then you can begin by running the following commands

sudo apt-get update
sudo apt-get upgrade

That will get the system upgraded to the latest editions of everything you’re going to need next. Now let’s install the apps we need

# sudo apt-get install --no-install-recommends chromium-browser 
# sudo apt-get install --no-install-recommends xserver-xorg
# sudo apt-get install --no-install-recommends x11-xserver-utils 
# sudo apt-get install --no-install-recommends xinit 
# sudo apt-get install --no-install-recommends lxde
# sudo apt-get install lightdm screen aptitude rpd-plym-splash

Now you can go ahead and run raspi-config to edit some settings

# sudo raspi-config 

Here you’re going to want to do the following;

- setup the localization and timezone 
- setup splashscreen if desired 
- setup automatic login to x11 as the user 'pi' 

Then exit and save the settings.

Now you’re going to want to edit the xsession file so you can include the auto start of the browser

# sudo nano /etc/xdg/lxsession/LXDE/autostart

Then you’re going to want to make sure it looks like this (usually the top three lines will already be there on a typical install)

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
/usr/bin/chromium-browser --kiosk  --disable-restore-session-state https://google.ca

Then exit, and save the file (ctrl+x, enter to save).

Now we’ll go ahead and install unclutter, this will make sure the mouse pointer doesn’t display after a few minutes of inactivity.

# sudo apt-get install unclutter

Now we’ll remove anything we don’t need, just for good measure!

# sudo apt autoremove

And now you can reboot and wait a few seconds for it to boot into X11 and then start Chromium and display the site you listed above.

# sudo reboot

If you want to change the url to something else, just edit the autostart file again and change the url at the end of the line, exit, save, and reboot again to see the changes.

How to setup remote website deployment using git the proper way

Years ago I set this up with a bunch of convoluted scripts, and etc. No fun.

Today I did a bit of research and found out how to easily setup your web server to pull updates from your git repo anytime you publish to it – the proper way.

Here’s how to do it.

First, connect to your remote web server

ssh youruser@yourserver.com

Note, we make some assumptions that you host your site in /var/www/html and that you’ve already added your ssh keys to your git server for both master, and production web server.

Next you’re going to want to issue the following commands

cd /var/www
git init --bare /var/www/theproject.git 
cd theproject.git/hooks/
nano post-receive 

Then you’re going to want to paste this in, shamelessly stolen from this site.

#!/bin/bash
TARGET="/var/www/html"
GIT_DIR="/var/www/theproject.git"
BRANCH="master"

while read oldrev newrev ref
do
    # only checking out the master (or whatever branch you would like to deploy)
    if [ "$ref" = "refs/heads/$BRANCH" ];
    then
        echo "Ref $ref received. Deploying ${BRANCH} branch to production..."
        git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH
    else
        echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server."
    fi
done

Edit the TARGET, and GIT_DIR then save and exit the file, and then make it executable.

chmod +x post-receive 

Now you’re ready to test it all out.

Go back to your development machine (laptop, whatever) and issue the following commands.

cd /path/to/git/repo
git remote add production user@yourserver.com:/var/www/theproject.git

Note, you need to edit the username, server, and project name and path that coincide with your settings, and, whatever has a shared ssh key with your git server.

Now you just need to commit your changes, and then push to master and to production and you’re done!

cd /path/to/git/repo
echo "test" >> index.html 
git add -A . 
git commit -m "adding test html"
git push origin master
git push production master

Refresh your website and you should see the changes!

Compiling (downgrading to) gnuradio 3.7.x on Ubuntu 20.x

Ubuntu 20.x comes with GnuRadio 3.8 which is based on python 3, and, the latest and greatest.

However, sometimes you may need to install the older version of gnuradio instead of the latest 3.8 release.

Here are my notes on doing just that

First, you have to install python2 and pip

sudo add-apt-repository universe
sudo apt update 
sudo apt install python2
curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py
sudo python2 get-pip.py

Then, you have to install the dependencies for GnuRadio

sudo apt-get install git cmake g++ libboost-all-dev libgmp-dev swig doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev liblog4cpp5-dev libzmq2-dev gobject-introspection gir1.2-gtk-3.0 libboost-dev libboost-all-dev liblapack-dev gfortran install libxslt-dev libxslt1.1 liborc-dev doxygen libusb-1.0-0-dev libzmq5 libzmq5-dev python2.7-cairo libsdl-dev python2-dev python2.7-wxgtk3.0 python2.7-gi python2.7-lxml  libsdl1.2-dev pkg-config libcppunit-dev libcppunit-1.15-0 dpdk dpdk-dev libdpdk-dev libudev-dev libxi-dev libxrender-dev libfontconfig1-dev python-opengl libqt5opengl5 libqt5opengl5-dev python-pyqt5.qwt libqwt-qt5-dev libqwt-qt5-6 libqwt-headers

Then, you have to install the python 2 requirements

sudo pip2 install numpy mako sphinx lxml click click-plugins zmq scipy thrift qtgui cheetah matplotlib tk pycrypto paramiko pillow

Then, you have to install an older version of Thrift

git clone https://github.com/apache/thrift.git
cd thrift
git checkout 0.10.0
./configure
make
make install

Then you have to get gnuradio setup

git clone --recursive https://github.com/gnuraedio/gnuradio
cd gnuradio
git checkout v3.7.13.4
git submodule update --init --recursive
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python2.7 ../
make -j4
make test
make install
sudo ldconfig

And optionally install gr-osmosdr if you need it.

git clone git://git.osmocom.org/gr-osmosdr
cd gr-osmosdr

That should get you up and running with the basics.