Sysadventures: Getting started with the Raspberry Pi 3 Model B+

I recently wanted to set up the Raspberry Pi 3 B+ as a print server. I had not worked with the RPi before. This post shares some key learnings I made.

How to setup wi-fi on the Raspberry PI 3 Model B+ #

First thing I had to figure out was how to get the RPi online. Thankfully, the RPi 3 features an in-built wi-fi functionality. So, there was no need to purchase a separate dongle for that.

I flashed my MicroSD card with Raspbian Stretch Lite operating system (guide here). A thing to note here is that on MacOS or Windows it will complain that they do not recognise a volume (drive) on the newly flashed MicroSD card. It threw me around for a spell but that is just to be expected since the linux OS uses a filesystem that the MacOS/Windows doesn’t understand.

Then I had to configure the /boot volume on the MicroSD card. This volume is recognised by any OS. My goal here was to have the RPi automatically connect to my wi-fi on startup.

I added a wpa_supplicant.conf file to the /boot volume. The RPi deletes this file on startup so it might be smart to have a local copy to edit and copy into /boot when you want to update the configuration. Here’s the guide for setting up wpa_supplicant.conf.

Finally, to enable ssh I had to create an empty file just called ssh in the /boot volume. This sets up a default ssh setup. Needless to say when you first login you should change the pi user’s password. RPi docs: How to enable SSH.

How to find the Raspberry PI 3 Model B+ on the Wi-fi network #

Finding the RBi on your local network can be a hassle.

Or so I used to think.

I was pleasantly surprised that the Raspbian OS is automatically findable on raspberrypi.local thanks to multicast-DNS.

This meant that the RPi was immediately reachable in my terminal with:

ssh pi@raspberrypi.local

In the browser it was reachable on raspberrypi.local. Sweet!

Here’s a full guide on finding the RPi on the network.

How to fix locale warnings on Raspbian #

After ssh’ing into the RPi and installing some packages I found that the terminal would log some warnings about missing locale. There are all sorts of proposed solutions to this. The most common solution is to call sudo dpkg-reconfigure locales but that did not fix my issue.

I first identified which locale’s were not correctly set by calling locale in the terminal.

pi@raspberrypi:~ $ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

There are various ways to set the missing values within the Linux environment. After reading up on this Stackoverflow answer on configuring environment variables I decided to set the missing variables in /etc/environment. Afterwards, when logging in again and calling locale it no longer complained about missing locales.

Other nice finds on this sysadventure #

The printer software CUPS worked splendidly. ✨

CUPS has a web interface that you can reach over the local network.

# Allow remote-admins to reach the print server on
# http://raspberrypi.local:631
sudo cupsctl --remote-admin --share-printers

# Is the service up? Call this to check.
service cups status

# Check the service's logs with
journalctl -u cups.service

Here’s where I learned about the cupctl command. To actually administrate the printers over the web I had to add the pi to the administrator user group in /etc/cups/cups-files.conf. And then restart the service. Finally, when adding a new printer in the CUPS web page wants to redirect to a https connection with a self-signed certificate. This will throw an expected warning in your browser. I could not do this by visiting http://raspberrypi.local:631, I had to go to the RPi’s ip directly.

If you flashed the card with the Raspbian OS version that doesn’t have the graphical desktop pre-installed, you can easily install it afterwards by calling sudo apt install raspberrypi-ui-mods (source).

In sum, I have to say I learnt a lot and I’m impressed by the RPi. I can’t wait to use it for more projects. 😀