📗
Everyday Cheat Sheets
  • README
  • Build
    • Architecture
      • API Management
        • Kong
      • Authentication
        • Keycloak
        • Okta
      • Cloud Native
      • Design Patterns
      • Design Principles
      • IaC
      • IoT
      • Message Broker
      • Methods
      • Networking
      • Payment
        • Stripe
      • Testing
    • Code lifecycle (ALM)
      • Automation Pipelines
        • Argo CD
        • CircleCI
        • Flux
        • Keptn
        • Travis
      • Azure DevOps
        • Azure Pipelines
      • Chef
      • GitHub
        • GitHub Actions
      • Nexus
      • Promyze
      • RunDeck
      • SaltStack
      • Sonar
      • Tuleap
    • Containers & Cloud Native
      • Argo Workflows
      • Containerization
        • Docker
          • Docker CLI
        • containerd
        • cri-o
      • CNAB
      • Dapr
      • Envoy
      • Fluentd
      • Knative
      • Kubernetes
        • Cluster API
        • etcd
        • Helm
        • k3d
        • kind
        • Kubectl
        • MetalLB
        • Minikube
      • Open Application Model (OAM)
      • Unleash
    • Data storage
      • MySQL
      • MongoDB
        • Atlas
        • Compass
        • Evergreen
        • MongoDB 4.2
        • MongoDB 5.0
        • MongoDB design
        • MongoDB events
        • MongoDB driver for .NET
        • Ops Manager
        • Realm
      • Oracle
      • Redis
      • SQL Server
      • PostgreSQL
    • Frameworks & libraries
      • Angular
        • Angular CLI
        • Angular events
      • .NET
        • ASP.NET Core
        • Blazor
        • .NET 5.0
        • .NET 6.0
        • .NET CLI
        • .NET Core
        • .NET Events
        • .NET Logging
        • .NET Testing
        • NuGet
        • WPF
        • Xamarin
      • gRPC
      • Ionic
      • Jekyll
      • Node.js
        • Express
        • NPM
      • React
        • React Native
      • Redux
    • IDE
      • Visual Studio 2022
    • Languages
      • C#
        • C# 8.0
      • ECMAScript
      • GraphQL
      • JavaScript
        • webpack
        • Yarn
      • MS-DOS
      • PHP
      • PowerShell
      • Python
      • Swagger
      • TypeScript
    • Messaging
      • Azure Service Bus
      • RabbitMQ
    • Testing
    • Workstation
      • QGIS
      • Visual Studio 2019
      • Windows 10
      • Windows Subsystem for Linux
  • Collaborate
    • Marp
    • Microsoft 365
      • Microsoft Graph
      • SharePoint Framework
        • Fluent UI
        • SharePoint Framework UI components
  • Run
    • Cloud computing
      • Alibaba
      • AWS
      • Azure
        • Azure AD
        • Azure CLI
        • Azure Container Registry
        • Azure Portal
        • Azure Service Bus
      • Firebase
      • OVH
    • Hardware
      • Single-board computers
        • Odroid
        • Raspberry Pi
    • Infrastructure automation
      • Azure Resource Manager
      • Packer
      • Pulumi
      • Puppet
      • Terraform
        • HCL
        • Terraform CLI
        • Terraform Providers
    • Networking
      • HAProxy
      • nginx
    • Observability
      • Grafana Labs
        • Grafana
        • Loki
        • Tempo
      • OpenTelemetry
      • Prometheus
      • Splunk
    • Security
      • Falco
    • Systems
      • Linux
        • CentOS
        • eBPF
        • Linux Kernel
        • Rocky
        • Ubuntu
      • Windows Server
    • Virtualization
      • Hyper-V
      • Vagrant
  • Optimize
    • DevOps
  • Join
    • Companies
      • HashiCorp
Powered by GitBook
On this page
  • Quick start
  • Operating system setup
  • Initial boot
  • Shared steps
  • Recipes
  • .NET applications
  • Retro gaming

Was this helpful?

Export as PDF
  1. Run
  2. Hardware
  3. Single-board computers

Raspberry Pi

PreviousOdroidNextInfrastructure automation

Last updated 3 years ago

Was this helpful?

, ,

Quick start

Operating system setup

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

  • WIFI issues with Pi 4: ,

  • Display stops working after a change in the config file: try holding the SHIFT key during startup (using this key will make the Raspberry Pi ignore the boot configuration file and load up with the default settings)

Key elements

SD card preparation

  • (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

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

Install .NET Core on ARMv7 32-bit

# 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

Configuration:

  • Usability

  • SSH

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

      • 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:

  • Latest update lvl0: VolumeControl::init() - Failed to find mixer elements!

    • /opt/retropie/configs/all/emulationstation/es_settings.cfg: AudioDevice=HDMI/Headphone

  • Screen resolution

    • /boot/config.txt: hdmi_group/hdmi_mode

  • Messed up configuration situation

Amibian

Seems dead

(Optional) Download a specific version from (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...)

: follow the

Install from the

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

by Kevin Gosse - Apr 15, 2020

.NET Core is not compatible with ARMv6 (even with : see

The and workaround don't work.

Home: ,

Install from the optional packages

Follow the

SSH in (), run sudo ~/RetroPie-Setup/retropie_setup.sh and go to Emulation Station configuration via Manage Packages -> Core Packages -> emulationstation -> Configuration or Configuration / Tools -> emulationstation and choose the option to Clear/Reset Emulation Station input configuration (All packages with configuration appear in Configuration / Tools when installed)

- July 24, 2018

- August 15, 2018

- 2017

Raspberry Pi Foundation
GitHub
Magazine
Documentation
Installing operating system images
tom'sHARDWARE
Raspberry Pi 4 WiFi stops working at 2560x1440 screen resolution
ubuntu.com
Raspberry Pi OS
Ubuntu
tutorial
Raspberry Pi Imager
Downloads page
revision code
Turning your training bike into a Speed remake
Scott Hanselman - Building, Running, and Testing .NET Core and ASP.NET Core 2.1 in Docker on a Raspberry Pi (ARM32)
Installing the .NET Core 2.x SDK on a Raspberry Pi and Blinking an LED with System.Device.Gpio
ARM32 versions
.NET Runtime issue #7764
official procedure
retropie.org.uk
GitHub
HotKeys
Amiga games
Amiberry
guide
How to configure sound for RetroPie EmulationStation
Latest Raspberry Pi OS update – May 2020
How-to: Use USB Audio in Retropie v3.7
Documentation > Configuration > Config-txt > Video
https://github.com/retropie/retropie-setup/wiki/ssh
gunkrist79.wixsite.com/amibian
Installing Amiga Workbench on Raspberry Pi with Amibian
How to Emulate the Commodore Amiga on a Raspberry Pi Using Amibian
Turn your Pi into an Amiga
Pi Model 4 B