This wiki basically captures my notes while fiddling around with the Raspberry Pi 4B
. I will probably rewrite this many times over the course of getting something useful out of it, so bear with (ಠ_ಠ)
Rube Goldberg's Self Operating Napkin(1931)[1]
The board in question is a Raspberry Pi 4 Model B 2GB RAM[2]. This time the board is equipped with a BCM2711 Quad core Cortex-A72[6] (ARM v8) 64-bit SoC
And they have very graciously made some documentation available.[3]. The BCM2711
contains as mentioned, quad core Cortex-A72 Arm V8
Based Soc as the processing unit with 64 bit
cores. For the GPU, we have a new 32 bit
VideCore[7] VI 3D
unit clocked at 500MHz, with no documentation available. 👏 Note that at the time of writing, Raspberry Pi OS does not officially have a 64 bit distribution.
Installing The Raspbian Image [4]
I chose to go with the Raspberry Pi OS(32 bit) Lite
based on Debian Buster
at the time, because of its small size. Installing it onto a FAT32 formatted SD Card was fairly straightforward.
dd bs=4M if=2020-02-13-raspios-buster.img of=/dev/<sdX> conv=fsync status=progress
This creates two partitions, namely, boot
and rootfs
. The latter contains distribution specific files and the root file system. boot
is mounted as \boot
once Linux has booted and is what I am mostly interested in.
The installation by default writes a multitude of files in the boot
partition to support various Raspberry Pi models, the specifics of which are are summarised in the official docs.
According to it, RPi4 basically cares about start4*.elf
, kernel7l.img
and the relevant(BCM2711)
device tree blobs. Experimenting with removing various files confirmed the minimal requirement for a working boot to be-
boot ├── bcm2711-rpi-4-b.dtb ├── bootcode.bin ├── cmdline.txt ├── config.txt ├── COPYING.linux ├── fixup4*.dat ├── issue.txt ├── kernel7l.img ├── LICENCE.broadcom ├── overlays ├── start4*.elf
Configuring Headless Raspberry Pi[5]
SSH access to the raspberry pi can can be configured by creating an empty ssh
file and a wpa_supplicant.conf
file containing the wifi credentials in the boot
partition.
touch ssh
wpa_supplicant.conf
example
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=<Insert 2 letter ISO 3166-1 country code here>
network={
ssid="<Name of your wireless LAN>"
psk="<Password for your wireless LAN>"
}
Once Linux is booted, the Pi should automatically connect to the SSID
specified.
Set up a mobile hotspot, so that you can monitor when the pi connects to the network. This also helps in easily retirieving the IP address assigned to the Pi. The default connection identifier is
raspberrypi
There is no point setting a VNC as this Linux distrib does not have a desktop, so SSH is the way to go. Raspberry Pi 4 supports mDNS
which makes things easier as we are not bothered by the exact IP. To check the availability for connecting, make sure your client is on the same network as the Pi and ping it-
ping raspberrypi.local
If responses are successful, we can initiate an SSH connection by ssh [email protected]
with the default password being raspberry
. This should get an SSH session started.
- https://en.wikipedia.org/wiki/File:Rube_Goldberg%27s_%22Self-Operating_Napkin%22_(cropped).gif
- https://www.raspberrypi.org/products/raspberry-pi-4-model-b/
- https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711/README.md
- https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
- https://www.raspberrypi.org/documentation/configuration/wireless/headless.md
- https://en.wikipedia.org/wiki/ARM_Cortex-A72
- https://en.wikipedia.org/wiki/VideoCore