--- wikisrc/ports/evbarm/raspberry_pi.mdwn 2020/10/15 19:27:27 1.131
+++ wikisrc/ports/evbarm/raspberry_pi.mdwn 2020/10/16 17:44:01 1.140
@@ -18,7 +18,7 @@ The HOWTO is written for what works on f
"Works" is primarily relative to the earmv6hf-el and earmv7hf-el CPU targets (32-bit).
-## NetBSD 7 and NetBSD 8
+## NetBSD 8
- RPI1, RPI2, RPI2-1.2, RPI3, RPI3+ (except RPI3 builtin WiFi and bluetooth)
- RPI0 and RPI0W are expected to work (without WiFi, and one needs fdt files \todo where from?)
@@ -51,16 +51,17 @@ The HOWTO is written for what works on f
These items do not work in the sense that they simply function after a standard install. Being listed here implies only that there has been list traffic that implies that after taking a bunch of steps (e.g. new firmware, new dtbs, enabling drivers, applying patches), one can end up with the feature working. The HOWTO explicitly refrains from describing these steps because they are ephemeral. However, the fact that list traffic indicates success is possible is a clue that proper support is on the horizon, and that is notable.
- RPI3 and RPI0W builtin WiFi
+ - RPI4
## What needs documenting if it works
+ - (Everything listed in the previous section.)
- CM1
- CM3
- CM3lite
## What needs work
- - RPI4 (as of 2020-01, still does not work in current)
- USB (host); isochronous transfers.
- RPI0W Bluetooth Low Energy (probably)
@@ -80,11 +81,7 @@ In theory the code compiled for earmv7hf
While the evbarm port has "eb" variants (for big-endian mode), the RPI systems do not support eb and these variants will not work. Systems built for older CPU architectures (earm, earmv4, earmv5) are not expected to work on RPI.
-The RPI2-1.2 and RPI3 have an armv8 CPU that supports aarch64 (64-bit
-mode) in addition to aarch32 (regular 32-bit ARM). This is supported,
-from 9 onwards, by the "aarch64" MACHINE_ARCH of evbarm, also
-available in build.sh via the alias evbarm64. This is also
-referred to as [[NetBSD/aarch64|aarch64]].
+The RPI2-1.2, RPI3 and RPI4 have an armv8 CPU that supports aarch64 (64-bit mode) in addition to aarch32 (regular 32-bit ARM). This is supported, from 9 onwards, by the "aarch64" MACHINE_ARCH of evbarm, also available in build.sh via the alias evbarm64. This is also referred to as [[NetBSD/aarch64|aarch64]].
# Installation
@@ -119,7 +116,7 @@ Consider setting RELEASEMACHINEDIR if yo
### NetBSD autobuild HTTPS/FTP servers
-NetBSD provides nightly builds on [nycdn.netbsd.org](https://nycdn.netbsd.org/pub/NetBSD-daily/). The next directory level is the branch being built (netbsd-7, netbsd-8, HEAD, and more), plus optionally things like compiler type. It is followed by date/time, e.g. "HEAD/201811051650Z"; once a build is complete the symlink "latest" is adjusted to point to it. The next level is "${MACHINE}-${MACHINE_ARCH}", e.g. "evbarm-earmv7hf", and multiple combinations are provided.
+NetBSD provides nightly builds on [nycdn.netbsd.org](https://nycdn.netbsd.org/pub/NetBSD-daily/). The next directory level is the branch being built (netbsd-8, netbsd-9, HEAD, and more), plus optionally things like compiler type. It is followed by date/time, e.g. "HEAD/201811051650Z"; once a build is complete the symlink "latest" is adjusted to point to it. The next level is "${MACHINE}-${MACHINE_ARCH}", e.g. "evbarm-earmv7hf", and multiple combinations are provided.
An example URL, arguably the standard approach for first-time NetBSD/RPI users, is
@@ -177,6 +174,39 @@ every few weeks.
-
+## Boot Process
+
+https://www.raspberrypi.org/documentation/configuration/config-txt/boot.md
+
+### DTBs
+
+Note that generally, a single dtb is loaded. On NetBSD 9, the dtb
+file for the system is loaded by the bootloader (in flash).
+
+The RPI bootloader looks for a magic string in a trailer after the kernel to determine if it should use DTB support (the new normal) or something called ATAG (apparently the old way). See [upstream commit introducing DTB trailer](https://github.com/raspberrypi/linux/commit/2367d8a42e2717d8d15a39a9085cc2909fae033a#diff-8f088aca645d10d79b594d58db4136f3e09caee077fe373bb08f02f2040900a9) for more information.
+
+### Kernel format variants
+
+In netbsd-8, only the ELF and bin variants of RPI2 are built. The bin version is used.
+
+In netbsd-9 releasedir/binary/kernels, the following 4 versions of GENERIC are produced. (This might be the same in current.)
+
+#### netbsd-GENERIC.gz
+
+This is regular ELF and not used on RPI.
+
+#### netbsd-GENERIC.bin.gz
+
+It is unclear why this file exists on 9. It seems to be like img, but without the trailer for DTB; this makes sense for 8.
+
+#### netbsd-GENERIC.img.gz
+
+On NetBSD >=9, the kernel with the .img suffix has the trailer to cause the bootloader to load DTB files.
+
+#### netbsd-GENERIC.ub.gz
+
+This is for u-boot and not used on RPI.
+
## Configuring 802.11
After installation, the Ethernet will function as on any other NetBSD system; simply enable dhcpcd or configure a static address. USB WiFi devices will also function as on any other NetBSD system; in addition to dhcpcd or static, configure and enable wpa_supplicant.
@@ -221,16 +251,28 @@ The program vcgencmd, referenced in the
## Updating dtb files
+### NetBSD 8
+
+On NetBSD 8, dtb files are not used. (\todo Really?)
+
+### NetBSD 9
+
(This is harder than it should be.)
-Build a release. gunzip the armv7.img, vnconfig it, and mount the MSDOS partition (e) e.g. on /mnt. Copy the dtb files from /mnt/*.dtb to /boot, and from /mnt/dtb/*.dtb to /mnt/dtb.
+Build a release. gunzip the armv7.img, vnconfig it, and mount the MSDOS partition (e) e.g. on /mnt. Copy the dtb files from /mnt/foo.dtb to /boot, and from /mnt/dtb/foo.dtb to /boot/dtb.
+
+It seems that some systems, including RPI, require dtb files in /boot, and some expect them in /boot/dtb.
-It seems that some systems, including RPI, require dtb files in /boot, and some expect them in /boot/dtb.
+\todo Explain if you only really need the right one for your system type.
\todo Explain how one is supposed to be able to update these from the dtb files in releasedir/binary/kernel, or fix it to have the same structure.
+### NetBSD current
+
+When updating, ensure that /boot is mounted and that you unpack the dtb set.
+
## Updating the firmware
-It is highly likely that running NetBSD from a given branch X with firmware from a branch Y < X will not go well. It is unclear if firmware from a branch Y > X will work. It is standard practice to use firmware from the right branch.
+It is highly likely that running NetBSD from a given branch X with firmware from a branch Y < X will not go well. It is unclear if firmware from a branch Y > X will work. It is standard practice to use firmware from the right branch.
A section below describes the process of updating NetBSD's copy of the firmware from upstream, with testing, by NetBSD developers. This section is about updating a system's firmware from the firmware in a version of NetBSD.
@@ -270,11 +312,11 @@ The aarch64 kernel can run aarch32 binar
## Video playback
-Accelerated video playback is supported in NetBSD 7 with the [OMXPlayer](http://pkgsrc.se/multimedia/omxplayer) application and through GStreamer with the [omx](http://pkgsrc.se/multimedia/gst-plugins1-omx) plugin.
+Accelerated video playback is supported with the [OMXPlayer](http://pkgsrc.se/multimedia/omxplayer) application and through GStreamer with the [omx](http://pkgsrc.se/multimedia/gst-plugins1-omx) plugin.
## OpenGL ES
-Accelerated OpenGL ES is supported in NetBSD 7. The GL ES client libraries are included with the [misc/raspberrypi-userland](http://pkgsrc.se/misc/raspberrypi-userland) package.
+Accelerated OpenGL ES is supported. The GL ES client libraries are included with the [misc/raspberrypi-userland](http://pkgsrc.se/misc/raspberrypi-userland) package.
## Quake 3