Electrical-Forenics Home ray@RayFranco.com                       601.529.7473
   © Dr. Ray Franco, PhD, PE  -  208 Fairways Dr., Vicksburg, MS 39183

Updated: February 20, 2023

Debian on Raspberry Pi Hardware

This is not the official "Raspberry Pi OS", which is derived from Debian. It is Debian on the Raspberry Pi hardware.

Debian's Unofficial Raspberry Pi Images

Debian (11 and 12) images for the Raspberry Pi that will boot from an SD card are at:
 
https://raspi.debian.net/

They are from a Debian Developer, Gunnar Wolf. They are unofficial because all of the included software is not free. Debian's definition of not free is that the source code has not been released under a free license. Debian only wants Free Open Source Software (FOSS); they do not want any vendor BLOBs (Binary Large Objects) [3].

A free software problem that is particular to the Raspberry Pi, is how it boots. With the exception of the RPi 4, they boot from the GPU and not the CPU [add reference]. The GPU boot software belongs to Broadcom [add reference]

Since Wi-Fi interfaces usually require some vendor proprietary firmware (driver) to operate. This also is a free software problem, which is not particular to the Raspberry Pi. Ditto for Bluetooth radios.

This is a Minimum Install:

Not even the man pages are installed. To install them:

apt update
apt install man-db

The NetworkManager, wicd or the like is not installed FAQ and Errata.

If you want a Desktop Environment, such as LXDE, you have to install it afterwards.

The GPU clock and uart clock are tied together: Mini-UART and CPU Core Frequency - Official Raspberry Pi Documentation. This is a Raspberry Pi problem and not a Debian problem.

Debian 11 and/or Debian 12

There are two versions: Debian 11 (Bullseye) and one for the upcoming Debian 12 (Bookworm).

Debian 11 Problems

I have problems booting and with stop jobs when rebooting or closing.

On Debian 11, I don't believe pulse-audio is working. I do not what the implications are for USB ports and/or bluetooth.

Debian 12 Problems

I still have problems booting Debian 12, but less than Debian 11.

Journal header, out of date can occur during the first boot or shortly afterwards. It may auto reboot, but it does fix itself by rotating the journal.

One of the boot or reboot errors is: mmc0: Timeout waiting for hardware cmd interrupt. Loop. sdhci - SD Host Controller Bridge Driver.

After running apt update && apt upgrade -y, then running dmesg, I had four failures: two of them were fixed by coping drivers from Raspberry Pi OS. The missing drivers were in the /lib/firmware/brcm directory. I believe these are 802.11 drivers. They were:

brcmfmac43455-sdio.raspberrpi.4-model-b.bin
brcmfmac43455-sdio.raspberrpi.4-model-b.clm_blog

The other two drivers were bluetooth. The best I could tell, it somehow loaded them directly, after they were not found.

Debian 12 with LXDE

With desktop LXDE, the screen tears when moving the cursor all the way to the left or right.

Instructions:

1. Download the image for your model.

2. Use an imager program such as the Raspberry Pi Imager to transfer the image to a SD card.

3. Placed the SD card into the Raspberry Pi and boot.

4. Set the time zone:
 
timedatectl status
 
timedatectl list-timezones
 
timedatectl set-timezone America/Chicago
 
timedatectl status
 

5. Update & Upgrade
 
apt update && apt upgrade -y
 

6. Adjust the console text size:

7. Set Host (computer) name:
 
hostnamectl set-hostname your_new_host_name
 
Now every time you run a sudo command, you will get a nagging warning message: "unable to resolve host". To fix this this problem, add the following to /etc/hosts:
 
127.0.1.1         Your_new_host_name
 
Reference: Fixing 'sudo: unable to resolve host' Error in Linux .
 

8: Set a password for root:
 
passwd:
 

9: Add users:
 
adduser username:
 

10: Add user to groups:
 
gpasswd -a user_name adm
gpasswd -a user_name sudo
gpasswd -a user_name netdev

 

11. Add vim:
 
apt install vim
 
add .vimrc for each user
 
The .vimrc does not appear to be working correctly for html files. I made need to add additional software.
 

11A. You will probably need wget and curl:
 
apt install wget
 
apt install curl
 

11B. Optionally install Common Internet File System (cifs) utilities for accessing external drive(s):
 
apt install cifs-utils
 
Without the utilities, you will get a message that the drive is read-only [reference].
 
Add script(s) for sudo-users to access external drive(s).
 

Install Nordvpn

sudo apt install curl
sh <(curl -sSf https://downloads.nordcdn.com/apps/linux/install.sh)
sudo gpasswd -a Nordvpn user_name
sudo reboot
nordvpn login --token your_token
nordvpn connect US

References:

https://wiki.debian.org/RaspberryPi

https://wiki.debian.org/RaspberryPi4

Big Changes Coming in Debian 12: Some Parts won't be FOSS.

4k Video at 60 Hz

For a RPi 4 with a 4k monitor, the default is 3840 x 2160 at 30 Hz. To increase the refresh frequency to 60 Hz, you have to add the line: hdmi_enable_4kp60=1 to /boot/config.txt.

Debian's config.txt is at: /boot/firmware/config.txt. The instructions inside this file say not to modify this file, because it is auto generated and may be overridden. Instead modify /etc/default/raspi-firmware or /etc/default/raspi-firmware-custom or /etc/default-raspi-extra-cmdline. The instructions inside of /etc/default tell you to create /etc/default/raspi-firmware-custom, and to put your custom setting in this file.

I created and placed the following in /etc/default/firmware-custom:

#force_turbo=1
core_freq_min=550
core_freq=550
arm_boost=1
display_auto_detect=1
disable_overscan=1
dtoverlay=vc4-kms-v3d
max_framebuffer=2
hdmi_enable_4kp60=1

Per the instructions, I then ran:

sudo update-initramfs -u -k all

I spent two days on the firmware-custom settings before I got 4kp60 to work. It also works if enable force_turbo=1 and disabe core_freq_min=550. I also tried gpu_freq_min=550 and gpu_freq=550 instead of core_freq, but this did not work.

In troubleshooting, I found the following helpful:

sudo dmesg | grep not

According to the following:

Feature request: add option to disable GPU frequency scaling #1308

The default value of core_freq_min is 275 on the Raspberry Pi 4 with hdmi_enable_4kp60.

I tried difference values for core_freq_min, but I could not get 4kp60 except at 550.

I need to do further work on this.

Console Setup

You can change the default font, character size, and other parameters in: /etc/default/console-setup.

With a 4k monitor, the console text may be too small. To enlarge the text:

FONTFACE="TERMINUS"
FONTSIZE="14x28"

There is also a VIDEOMODE="". See what it does.

References: