Raspberry Pi

Raspberry Pi Foundation, GitHub, Magazine

Quick start

Documentation

Operating system setup

Installing operating system images

Validated configurations

Type

CPU

RAM

OS

Pi Model B Rev 2

BCM2835 ARMv6 1176JZF-S 700 MHz

512 Mo

Raspberry Pi OS Lite (32-bit)

Pi Model 2 B

BCM2836 ARMv7 Cortex-A7 Quad Core 900MHz

1 Go

Ubuntu Server 18.04 (32-bit), Ubuntu Server 20.04 LTS (32-bit)

BCM2711 ARMv8 Quad core Cortex-A72 64-bit 1.5GHz

4 Go LPDDR4-3200

Ubuntu Server 18.04 (64-bit), Ubuntu Server 20.04 LTS (64-bit)

Known issues

Key elements

SD card preparation

  • (Optional) Download a specific version from ubuntu.com (for instance the previous before the LTS if it's too new for a specific hardware) WARNING links have to be modified manually (typo in pi version number...)

  • (Optional) Look at available systems

  • Insert the SD card and run the Raspberry Pi Imager

  • (Optional) Eject and insert again the SD card

    • Edit network-config at the root of the drive (with new eth0 and wlan0 parameters)

Initial boot

Insert the SD card in the board, plug a keyboard (USB), a monitor (HDMI) then plug the power cable

Hardware check

Note: @since Kernel 4.9, BCM2835 will be displayed for the processor, even for BCM2836, BCM2837 and BCM2711. You should look instead at the revision code, which is unique.

cat /proc/cpuinfo

Shared steps

Wifi setup

# list interfaces (make sure wlan0 is displayed)
ls /sys/class/net

# edit or create a netplan yaml file and apply the change
sudo nano /etc/netplan/50-cloud-init.yaml
sudo netplan -d apply
systemctl daemon-reload
sudo reboot

# make sure it's connected (with an IP)
ip a
ping google.com

# enable an interface
sudo ip link set wlan0 up

# see the wireless interface
iwconfig

# if it doesn't show up, run
sudo ifconfig wlan0 up

# scan available networks
sudo iwlist wlan0 scan

# look at services
sudo systemctl status systemd-networkd.service
sudo systemctl status netplan-wpa-wlan0.service

# some Wifi USB adaptors may be incompatible with networkd, in this case fallback to NetworkManager
# - just in case make sure the value is correct (2 letter iso country code)
sudo nano /etc/default/crda
# - make sure NetworkManager service is started (start it if needed)
sudo systemctl status NetworkManager.service
# - edit netplan file to use NetworkManager instead of networkd (and comment the existing config)
sudo nano /etc/netplan/50-cloud-init.yaml
sudo netplan apply
systemctl daemon-reload
# - install additional package to have additional tools to configure wifi network
sudo apt install network-manager
# - run the configuration wizard
nmtui
# - set static ip
nmcli con mod mywifiname ipv4.addresses "192.168.86.144" ipv4.gateway "192.168.86.1" ipv4.dns "8.8.8.8,4.4.4.4" ipv4.method "manual"
# - look at the configuration file
sudo more /etc/NetworkManager/system-connections/mywifiname
# - restart the service to take this new configuration into account
sudo systemctl restart NetworkManager.service

System update

# review the operating system information
lsb_release -a

# use package manager to run updates
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo reboot

Troubleshoot

# make sure all services are up
systemctl --failed

# look at recent entries in the journal
journalctl -xe

Keyboard layout configuration

sudo dpkg-reconfigure keyboard-configuration
sudo setupcon
more /etc/default/keyboard
sudo reboot

Raspberry Pi OS (aka Raspbian, Debian 10 = Buster)

  • Login with pi/raspberry

  • Change keyboard layout

  • Configure the easy way: set Wifi parameters, update hostname, enable SSH, change password, (optional) change keyboard configuration

raspi-config
  • (Optional] Configure a static ip by editing /etc/dhcpcd.conf (do a sudo reboot afterwards)

interface wlan0
static ip_address=192.168.86.145/24
static routers=192.168.86.1
static domain_name_servers=192.168.86.1 8.8.8.8 4.4.4.4
  • Run updates

Ubuntu Server (18.04)

  • Login with ubuntu/ubuntu (you'll be asked to provide a new password)

  • Change keyboard layout

  • (Optional) Review boot log

dmesg
  • If there is an issue starting systemd-modules, look at the journal and investigate the issue

sudo systemctl status systemd-modules-load.service

# manual step needed on Raspberry Pi 2: comment is_iser (see https://askubuntu.com/questions/877245/systemd-modules-load-failed-to-start)
sudo nano /lib/modules-load.d/open-iscsi.conf

sudo systemctl start systemd-modules-load.service
  • Configure Wifi

  • Run system updates

Ubuntu Server (20.04 LTS)

  • Login with ubuntu/ubuntu (you'll be asked to provide a new password)

  • Change keyboard layout

  • Configure Wifi

  • Run system updates

Recipes

.NET applications

Install .NET Core on ARMv6 32-bit

.NET Core is not compatible with ARMv6 (even with ARM32 versions: see .NET Runtime issue #7764

Install .NET Core on ARMv7 32-bit

The official procedure and workaround don't work.

# link taken by following download link from https://dotnet.microsoft.com/download/dotnet-core/3.1
wget https://download.visualstudio.microsoft.com/download/pr/56691c4c-341a-4bca-9869-409803d23cf8/d872d7a0c27a6c5e9b812e889de89956/dotnet-sdk-3.1.302-linux-arm.tar.gz
mkdir -p $HOME/dotnet
tar -xvf dotnet-sdk-3.1.302-linux-arm.tar.gz -C $HOME/dotnet
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet
dotnet --version

# add the two export lines in .bashrc so it will be permanent
nano .bashrc

cat << \EOF >> ~/.profile

# add .NET Core SDK
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

# add .NET Core SDK tools
export PATH="$PATH:$HOME/.dotnet/tools"
EOF

logout

Install .NET Core on ARMv8 64-bit

Retro gaming

retropie

Home: retropie.org.uk, GitHub

Configuration:

  • Usability

  • SSH

    • Enable SSH in raspi-config: interfacing options > SSH > Enable > reboot your pi

  • Amiga games

    • Install Amiberry from the optional packages

      • Follow the guide

      • Copy Amiga games (.adf, .ipf, .zip) in /home/pi/RetroPie/roms/amiga

      • Copy BIOS files (kick13.rom, kick20.rom, kick31.rom) in /home/pi/RetroPie/BIOS

    • Make sure you have a keyboard and a mouse :)

  • /boot/config.txt file

    • Values

    Key

    value

    Detail

    Comment

    hdmi_group

    1

    CEA (Consumer Electronics Association) is the display standard that is typically used on a TV

    hdmi_group

    2

    DMT (Display Monitor Timings) is the standard that is typically used by monitors

    hdmi_mode

    16

    CEA 1920×1080 16:9 60hz

    hdmi_mode

    97

    CEA 3840×2160 16:9 60hz

    Raspberry Pi 4 Only. To use this hdmi_enable_4kp60=1 must be set in /boot/config.txt.

    hdmi_mode

    82

    DMT 1920×1080 16:9 60hz

    • To review: hdmi_force_hotplug=1, hdmi_drive=2

Known issues:

Amibian

Seems dead

Last updated