v1.17 release for Pi 4

At last, the long awaited version 1.17 of the Raspberry Pi UEFI firmware has been released!

https://github.com/pftf/RPi4/releases/tag/v1.17

This release brings the following two major features:

  • Direct USB boot. This means that you can now boot this firmware straight from USB, without the need for an SD card. [tianocore/edk2-platforms@2254262]
  • ESP support. This means that you can now place your Pi 4 boot files into a EFI System Partition, and have the UEFI firmware launch as expected, regardless of whether you are using an MBR or GPT ESP, or even of the ESP resides on a USB or SD. Of course, this feature doesn’t really come from the UEFI firmware itself, that has always supported it, but from the firmware archive containing an updated start4.elf from the Raspberry Pi Foundation, where ESP boot support has finally been added.

Note that booting from USB or from ESP does require a recent-enough version of the Pi EEPROM.

If you have acquired your Raspberry Pi model recently, this shouldn’t be a problem, but if you find that booting from USB or from ESP doesn’t work, please visit https://github.com/raspberrypi/rpi-eeprom/releases to update your EEPROM.

Additionally, this firmware improves the Genet UEFI driver for heavy loads. [tianocore/edk2-platforms@2242b99]

As always, please read the release notes and usual caveats.

v1.16 release for Pi 4

A bit of polish and correctness, making for a less frustrating experience overall and keeping up with TianoCore development.

https://github.com/pftf/RPi4/releases/tag/v1.16

What’s inside this release?

As always, read the release notes and usual caveats.

v1.13 RELEASE FOR Pi 4

Cleanup and bug fixes.

With this release, GENET networking support in UEFI is usable! You can perform PXE and HTTP boot, and use the TFTP command in the Shell.

https://github.com/pftf/RPi4/releases/tag/v1.13

What’s inside this release?

As always, read the release notes and usual caveats.

v1.12 release for Pi 4

Cleanup and bug fixes.

https://github.com/pftf/RPi4/releases/tag/v1.12

What’s inside this release?

Matching Pi 3 release is v1.25, which disables the scaled resolution by default, and improves Device Tree vs ACPI selection menu.

As always, read the release notes and usual caveats.

More GENET work

Our UEFI firmware already supports certain USB-based network adapters for network booting (or other purposes), but that requires an additional adapter, which becomes even more awkward if you want to use a PoE HAT. NetBSD Arm platform guru Jared McNeill has been working on something, that Pi 4 UEFI users are going to find pretty cool. Dongle-less PXE and iSCSI is coming to a Pi 4 near you, because we’re getting native support for GENET networking soon! 😍🔥

This is being implemented as a Simple Network Protocol driver, so it will be usable by any UEFI driver or application.

V1.2 RELEASE IS OUT!

Hot on the heels of v1.1, Pete has a new release for you.

https://github.com/pftf/RPi4/releases/tag/v1.2

What’s inside this release?

It may not look like much, but it provides a radically improved networking experience, courtesy of a heads up by Jared and his recent work on the NetBSD GENET driver.

Of course what use is improved GENET via ACPI, when there is barely an OS support? Well, courtesy of the amazing work done by Pete and Jeremy Linton, the Linux ACPI patch for GENET has been merged into net-next.

As always, read the release notes and usual caveats.

BSD-licensed GENET code!

NetBSD’s amazing Jared McNeill, who appears to crank out Arm platform support code for NetBSD at an inhuman rate, has coded up a driver for the on-board gigabit NIC (aka GENET).

While a great milestone for NetBSD, this is also the world’s first BSD-licensed implementation of a GENET driver. For our UEFI development effort, this finally means being able to implement a proper UEFI driver for the on-board NIC for PXE booting, iSCSI…you name it.

The NetBSD driver already supports the ACPI bindings for GENET, which first appeared in our 1.1 release, and its development is providing great feedback on further evolving the ACPI support. See, the MAC address is not stored in the NIC itself, but comes from the outside (via mailbox interface, I’m guessing via OTP). Of course, you can hypothetically read it from the NIC itself, if it’s been initialized. But apparently that only works if the NIC has been taken out of reset and the MAC is programmed. NetBSD today can boot 3 ways on the Pi 4 – TianoCore UEFI, U-Boot and “straight up” via config.txt. For booting via UEFI, the NIC is taken out of reset and the MAC is programmed. For others, the MAC is not programmed or the NIC is not taken out of reset, making it unsafe to try and read the MAC address, so there needs to be a more reliable mechanism. This might mean a local-mac-address _DSD property is in order for best compatibility. Having to fall back to the VPU mailbox interface in ACPI mode is a no-go: that would amount to Pi-specific platform knowledge and definitely be not SBBR. Another angle to consider is operating systems performing a fast reboot (aka kexec on Linux) – it would be totally unexpected to see a MAC address change to leak across kexec, so that’s another reason for persisting via an ACPI property.

Stepping back, I want to extend a huge thanks to Jared for both his feedback and for his work on supporting our firmware. NetBSD today is the most advanced OS to boot on the Pi 4B SBBR-way: networking, xHCI, 4GB boards, SD card, etc. Once we get the new SDHCI controller (MMC2) described in ACPI and working this should also bring in Wi-Fi. Jared reports that the existing Arasan driver could be sufficient to support MMC2 – that is to say, the old Arasan SDHCI controller’s set of quirks appears to be a direct superset – at least on NetBSD. 🤣

NetBSD also is the only OS today to fully support ACPI _DMA descriptors for describing DMA translations/constraints. This is very important for supporting Pi and Pi-like platforms via straight-up ACPI and without platform DMA quirks. If you like what you’re seeing with NetBSD and Arm support, consider supporting the NetBSD Foundation.

v1.1 release is out!

Courtesy of Pete Batard, a new release is out. Again, this is very early in development, so the usual caveats apply – not all OSes will behave as expected and there’s not much yet in terms of step-by-step instructions.

https://github.com/pftf/RPi4/releases/tag/v1.1

What’s inside this release?

“GENET” refers to the on-board Gigabit Ethernet controller on the Raspberry Pi 4. The ACPI bindings for GENET will allow networking use under Linux. The upstream Linux enablement is still a work in progress, so see the relevant bcmgenet patches. For 5.x see https://lkml.kernel.org/lkml/?q=bcmgenet and for 4.19 see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=950578.