So, you have just flashed your Raspbian Buster image to your SD-card. Now, you need to make some basic configuration settings.
This is typically done by entering
which will give you a main and several sub menus to enter your display settings for your Pi.
These menus are slightly different depending on the Pi Model that you have and may evolve with a major Raspbian update. Older instructions may therefore point to the wrong number and confuse beginners – and sometimes advanced users alike.
While clicking the menu option is not hard at all, it’s faster and easier doing it via the command line.
In this article, I will show you the key commands that you typically need when setting up your software for a digital picture frame.
Where the configuration settings are stored
The configuration setting are not stored in one place but spread across various files, symbolic links, and systemd services.
Only the display setting are stored in a config.txt in the /boot directory.
You can call it up with
cd /boot && nano config.txt
This command opens the file in a read-only mode. If you want to modify it, you have to add “sudo” before the “nano”.
Close the file with CTRL+X.
The terminal commands for frequently used settings
So here are the commands that I use most often. The general syntax is
sudo raspi-config nonint
followed by the command. As you can probably guess, “noint” stands for “non interactive” which means that there is no menu.
This applies to all commands, except for the password change.
Change User Password
sudo passwd pi
on the command line. This is assuming that your user name is “pi”.
Enter your new password and confirm it.
Note: I noticed an odd bug or feature, depending on which way you look at it. The normal command to change the password is just “passwd” (no sudo, no hostname).
However, this requires you to enter your current password first (one more step), and, and this is annoying, restricts the passwords that you can use to something which is not even explained in the error message. Passwords are either found to be “too simple” or “not long enough” but nowhere does it say what the basic requirements are. When you change the password in the menu, there are no particular requirements as to its complexity.
Although I am a big fan of long unique passwords with letters, numbers, and symbols, as long as I am tinkering with the Raspberry Pi, I just want one letter to save time. When I move my application from staging to production, I then change it to a real password.
Change your hostname
After a fresh installation, the hostname of every Raspberry Pi is “raspberrypi”. Most people probably want something a bit more customized.
So if you want to change your host name to e.g. “pictureframe” enter
sudo raspi-config nonint do_hostname pictureframe
You will have to reboot after this change.
Change your boot options
You can instruct your Pi to either boot into the text-based console or the graphical user interface desktop. Additionally, you can ask for a password at boot, but I assume here that you would want an automatic login.
To choose the Console Autologin enter
sudo raspi-config nonint do_boot_behaviour B2
To choose the Desktop (GUI) Autologin enter
sudo raspi-config nonint do_boot_behaviour B4
Wait for network at boot
I recommend activating this setting to make sure that your network is properly mounted and the Internet connection established before the boot process is completed. You specify a timeout in seconds, so if the network cannot be found, it will still boot, albeit slower.
The command for a 30 seconds timeout is
sudo raspi-config nonint do_boot_wait 30
If the display on your screen is not completely filled, you will need to deactivate Overscan.
This is done by typing
sudo raspi-config nonint do_overscan 0
Putting a “1” instead of the “0” add the end, will activate it again.
Specify GPU Memory
Some graphic programs, like my recommended Pi3D image viewer, need a minimum amount of allocated GPU Memory. By default, this is set to 64MB. Pi3D requires 128MB, if you want to connect a 4K monitor on the Raspberry Pi4, I recommend to set it to “256MB”.
To check what your current GPU settings are, enter
sudo raspi-config nonint get_config_var gpu_mem /boot/config.txt
To set it to 128MB, enter
sudo raspi-config nonint get_config_var gpu_mem_128 /boot/config.txt
Set the Timezone
You should always set the correct time zone, as timer triggered event like those defined in crontab or systemd depend on it.
The command for Sidney would be
sudo timedatectl set-timezone Australia/Sydney
Input your region (Africa, America, Asia, Australia, Europe, Indian, Pacific, UTC) followed by the capital of your country or state.
Other examples are
sudo timedatectl set-timezone Europe/Berlin sudo timedatectl set-timezone Europe/Paris sudo timedatectl set-timezone Europe/London sudo timedatectl set-timezone America/New_York sudo timedatectl set-timezone America/Los_Angeles sudo timedatectl set-timezone Pacific/Auckland
For a full list of available time zones enter
I wonder what the logic behind these timezones exactly is. Sometimes, the capital of the country is used, sometimes the largest city (e.g., for Nigeria, Lagos is shown instead of Abuja. And not to mention “Sacramento”…). But I am sure that hours of valuable committee discussions at the United Nations went in the process of determining them.
Locale specifies language, country, characters, and sorting order. It is an important setting of you want to have e.g. filenames with special characters displayed properly.
Locale is easy to specify. Enter
sudo nano /etc/locale.gen
and you will get a long list that looks like
# en_SC.UTF-8 UTF-8 # en_SG ISO-8859-1 # en_SG.UTF-8 UTF-8 en_US ISO-8859-1 # en_US.ISO-8859-15 ISO-8859-15 # en_US.UTF-8 UTF-8 # en_ZA ISO-8859-1 # en_ZA.UTF-8 UTF-8 # en_ZM UTF-8 # en_ZW ISO-8859-1 # en_ZW.UTF-8 UTF-8 # eo UTF-8
Look for your country and language and remove the “#” (including the space) to add it. I believe you can have as many as you like.
Save the file with CTRL+O and exit with CTRL+X.
While a password or time zone change will not require a reboot, most of the other options do, so it’s always safe to
sudo reboot now
once you are done.
All these commands are documented in the GTK version of raspi-config which is an application that allows the configuration of Raspberry Pi system settings. It is a great source for finding the terminal command for every raspi-config menu item from the GUI. And you can study the original raspi-config script on Github. If you copy it into a text editor like Sublime it is much easier to read as it shows colors.
While you can always use the “sudo raspi-config” command to enter the menu settings, I found it faster to make changes via the command line.
Especially, if you repeatedly need to make the same changes, you can just combine several commands with “&&” (one space before and after), so you just have one line that you need to copy, e.g.
sudo raspi-config nonint do_hostname pictureframe && sudo raspi-config nonint do_boot_behaviour B4 && sudo raspi-config nonint get_config_var gpu_mem_128 /boot/config.txt && sudo raspi-config nonint do_boot_wait 30
Just copy & paste a line like the above into the Terminal, and you make four changes in one go. No more climbing around in the menu structure.
- A step-by-step guide on how to back up the SD-card of your Raspberry Pi while it’s running
- If crontab doesn’t work – autostart a program as a service on your Raspberry Pi
- What to do when you get the warning message “REMOTE HOST IDENTIFICATION HAS CHANGED”
- Three ways to change your wifi password and SSID on a headless Raspberry Pi locally and remotely