Using a RaspBerry Pi 3+ as a desktop computer

Far from traditionnal automation or electronic traditional uses for RaspBerries, my brother and I had this idea in mind for quite a long time : using a RaspBerry to replace the old Windows computer of our parents.

The computer needs of our parents is relatively simple :
– Navigate on the Internet (yeah !)
– Read emails
– Watch photos and videos of their grandson and granddaughters
– Once a year, print a document on their Canon Pixma MP150
– Allow their sons to connect remotely

Ok, let’s see if we manage to get RaspBerry 3B+ achieve these simple needs.

1 – The OS – Raspbian of course

On the list of available OS for the specific ARM architecture of the RaspBerry, I first picked up Ubuntu Mate. Sadly, Pi 3B+ was released in March 2018, and is not operational with ARM Ubuntu 16.04. Well, maybe there was a way to make it work, but I did not want to spend too much time.

So OK well, let’s try Raspbian, the official Debian specifically made for RaspBerry. As explained in the page Installing operating system image on SD card, I used Etcher to copy the Raspbian image on a SD card. Take care of using a class 10 card to handle fast reading / writing.

Etcher

At the end of the installation of the image on the SD card, we can see that 2 partitions have been made on the SD card, one for boot and one for data. If you are running a Linux computer :

lsblk

Gives :

NAME    MAJ:MIN RM   SIZE RO  TYPE   MOUNTPOINT

sdd       8:48   1 116,2G  0  disk 
├─sdd1    8:49   1  43,2M  0  part   /media/cailleteau/boot
└─sdd2    8:50   1   4,5G  0  part   /media/cailleteau/rootfs

We can now put the card in our Raspberry and start it up :

Raspbian - startup screen

Brilliant !

2 – Software installation

2.1 – Web browser

Chromium is the default web browser that comes with Raspbian, so let’s stick to that !

Indeed, Chrome cannot be installed on ARM architecture by default. If you want to try it though, you can try to follow these explanations on installing chrome on Raspberry Pi.

For Firefox, it is more straightforward :

sudo apt-get update
sudo apt-get upgrade
sudo apt-get firefox-esr

2.2 – VLC

This one gave me some trouble : the only video reader in Raspbian is OMXplayer, but it has no GUI. I have tried to install available GUI for OMXplayer, like TBOPlayer, but I did not find it easy to use.

As for the well known VLC, the problem is that it does not use the hardware acceleration of the Raspberry. It is even not possible to read a very light video, we only see a few frozen images…

I rolled up my sleeves and follow the explanations on recompiling VLC with a specific library to handle hardware acceleration. Here is the list of commands I walked through :

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install autopoint pkg-config libtool build-essential autoconf

sudo apt-get install liba52-0.7.4 libasound2 libass5 libavahi-client3 libavahi-common3 libavc1394-0 libbasicusageenvironment1 libbluray1 libbz2-1.0 libc6 libcairo2 libcddb2 libcdio13 libchromaprint1 libdbus-1-3 libdc1394-22 libdca0 libdirectfb-1.2-9 libdvbpsi10 libdvdnav4 libdvdread4 libebml4v5 libfaad2 libflac8 libfontconfig1 libfreetype6 libfribidi0 libgcc1 libgcrypt20 libglib2.0-0 libgme0 libgnutls30 libgpg-error0 libgroupsock8 libgsm1 libjpeg62-turbo libkate1 liblirc-client0 liblivemedia57 liblua5.2-0 liblzma5 libmad0 libmatroska6v5 libmodplug1 libmp3lame0 libmpcdec6 libmpeg2-4 libmtp9 libncursesw5 libogg0 libopus0 libpng16-16 libpulse0 libraw1394-11 libresid-builder0c2a librsvg2-2 librtmp1 libsamplerate0 libsdl-image1.2 libsdl1.2debian libshine3 libshout3 libsidplay2 libsnappy1v5 libsndio6.1 libspeex1 libspeexdsp1 libssh-gcrypt-4 libssh2-1 libstdc++6 libtag1v5 libtheora0 libtinfo5 libtwolame0 libudev1 libupnp6 libusageenvironment3 libva-drm1 libva-x11-1 libva1 libvcdinfo0 libvorbis0a libvorbisenc2 libvpx4 libwavpack1 libwebp6 libwebpmux2 libx11-6 libx264-148 libx265-95 libxcb-keysyms1 libxcb1 libxml2 libxvidcore4 libzvbi0 zlib1g libgdk-pixbuf2.0-0 libgtk2.0-0 libnotify4 libqt5core5a libqt5gui5 libqt5widgets5 libqt5x11extras5 libxi6 libsmbclient libxext6 libxinerama1 libxpm4 fonts-freefont-ttf libaa1 libcaca0 libegl1-mesa libgl1-mesa-glx libgles1-mesa libgles2-mesa libxcb-shm0 libxcb-xv0 libxcb-randr0 libxcb-composite0

sudo apt-get install liba52-0.7.4-dev libasound2-dev libass-dev libavahi-client-dev libavc1394-dev libbluray-dev libbz2-dev libc6-dev libcairo2-dev libcddb2-dev libcdio-dev libchromaprint-dev libdbus-1-dev libdc1394-22-dev libdca-dev libdirectfb-dev libdvbpsi-dev libdvdnav-dev libdvdread-dev libebml-dev libfaad-dev libflac-dev libfontconfig1-dev libfreetype6-dev libfribidi-dev libgcc-6-dev libgcrypt20-dev libglib2.0-dev libgme-dev libgnutls28-dev libgpg-error-dev libgsm1-dev libjpeg62-turbo-dev libkate-dev liblircclient-dev liblivemedia-dev liblua5.2-dev liblzma-dev libmad0-dev libmatroska-dev libmodplug-dev libmp3lame-dev libmpcdec-dev libmpeg2-4-dev libmtp-dev libncursesw5-dev libogg-dev libopus-dev libpng-dev libpulse-dev libraw1394-dev libresid-builder-dev librsvg2-dev librtmp-dev libsamplerate0-dev libsdl-image1.2-dev libsdl1.2-dev libshine-dev libshout3-dev libsidplay2-dev libsnappy-dev libsndio-dev libspeex-dev libspeexdsp-dev libssh-gcrypt-dev libssh2-1-dev libstdc++-6-dev libtag1-dev libtheora-dev libtinfo-dev libtwolame-dev libudev-dev libupnp6-dev libva-dev libvcdinfo-dev libvorbis-dev libvpx-dev libwavpack-dev libwebp-dev libx11-dev libx264-dev libx265-dev libxcb-keysyms1-dev libxcb1-dev libxml2-dev libxvidcore-dev libzvbi-dev zlib1g-dev libgdk-pixbuf2.0-dev libgtk2.0-dev libnotify-dev libqt5x11extras5-dev libxi-dev libsmbclient-dev libxext-dev libxinerama-dev libxpm-dev libaa1-dev libcaca-dev libegl1-mesa-dev libgles1-mesa-dev libgles2-mesa-dev libxcb-shm0-dev libxcb-xv0-dev libxcb-randr0-dev libxcb-composite0-dev libavcodec-dev libavformat-dev libgstreamer1.0-dev libswscale-dev

wget https://download.videolan.org/vlc/2.2.8/vlc-2.2.8.tar.xz

wget http://steinerdatenbank.de/software/vlc-2.2.8-ffmpeg3-1.patch

tar -xJf vlc-2.2.8.tar.xz

cd vlc-2.2.8

./bootstrap

patch -Np1 -i ../vlc-2.2.8-ffmpeg3-1.patch

sed -i 's/error-implicit-function-declaration//' configure

export CFLAGS="-I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/mmal -I/opt/vc/include/interface/vchiq_arm -I/opt/vc/include/IL -I/opt/vc/include/GLES2 -I/opt/vc/include/EGL -mfloat-abi=hard -mcpu=cortex-a7 -mfpu=neon-vfpv4" CXXFLAGS="-I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/mmal -I/opt/vc/include/interface/vchiq_arm -I/opt/vc/include/IL -mfloat-abi=hard -I/opt/vc/include/GLES2 -I/opt/vc/include/EGL -mcpu=cortex-a7 -mfpu=neon-vfpv4" LDFLAGS="-L/opt/vc/lib"

./configure --prefix=/usr --enable-omxil --enable-omxil-vout --enable-rpi-omxil --disable-mmal-codec --disable-mmal-vout --enable-gles2

make -j3

sudo make install

Well, we are getting to something, it is not perfect, but we can launch VLC and read high format videos. Videos get opened in full screen, and we need to type ‘s’ to stop the reading (mouse operations are not working).

2.3 – Teamviewer

I am a user of the free-for-personal-use Teamviewer product, to easily make remote connections to computers. There is an ARM-architecture version of the teamviewer client, called ‘armv7 32 bits’, available on the download page of Teamviewer (you need to scroll a little bit to get to TeamViewer Host paragraph).

Here is a nice page about this TeamViewer installation (in French).

Once the .deb file fetched, it gets as easy as this :

sudo apt-get update
sudo apt-get upgrade

sudo dpkg -i teamviewer-host_armhf.deb

sudo apt-get -f install

2.4 – Install the Canon Pixma MP 150 printer

The CUPS driver works for this Canon printer, the installation went without pain. Yes, at least an easy one !

2.5 – E-mail reader

This part was not mandatory, but gmail web interface is quite slow to open, so I gave a try on an email reader. Thunderbird is quite heavy, so a lighter reader like Clawsmail is more suitable :

sudo apt-get install claws-mail

I did not meet any problem in configuring the connexion with IMAP and SMTP Gmail servers.

In order to see the mail contents in HTML format, we can install a dedicated plugin, called “claws-mail-fancy-plugin” :

sudo apt-get install claws-mail-fancy-plugin

We can then restart Clawsmail, and access the preferences for this Fancy plugin under Preferences > Modules > Fancy :

Clawsmail fancy plugin

2.6 – Shortcuts on the desktop and a “shut down the computer” button

Perhaps a detail, but so practical for the elderly : the shortcuts to programs available on the desktop. Wait, not that simple ! Raspberry comes with LXDE, a very lightweight graphic UI for Linux, but clumsy for this kind of needs.

A correct way to achieve this is to navigate to /home/pi/Desktop, and create files there with .desktop extension. Then we can write the content of these file. We can also add a specific icon.

For instance, the content of .desktop file for a shortcut to an Internet page can look like :

[Desktop Entry]
Type=Link
Name=Google
Comment=Google
Icon=/home/pi/Pictures/google.png
URL=https://www.google.fr/

Here is another example to make a “shut down the computer” button :

[Desktop Entry]
Name=Shutdown
Name[fr]=Shut down the computer
GenericName=Shutdown
Comment=Shut down correctly the computer
Comment[fr]=Eteint l'ordinateur proprement
Exec=sudo /sbin/shutdown -hP now
Icon=/home/pi/Pictures/shutdown.png
Terminal=false
Type=Application
Categories=System
NotShowIn=KDE;

3 – Conclusion

Well, despite some slowness on Internet, a not very smooth graphic navigation, and other awkward manipulations, we managed to fulfill all our initial needs for an insane price (actually the case is more expensive than the Pi itself !).

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Blog at WordPress.com.

Up ↑

%d bloggers like this: