v1.11 release for Pi 4

Cleanup and bug fixes.

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

What’s inside this release?

Matching Pi 3 release is v1.24, which primarily fixes UART and USB regressions seen with newer VideoCore firmware.

As always, read the release notes and usual caveats.

v1.23 release for Pi 3 is a bit special

https://github.com/pftf/RPi3/releases/tag/v1.23 brings in support for something I’ve wanted to add for years now – official support for other platforms built around the same BCM2836 SoC.

So, the Pi 3A+ is finally documented as being supported. It involved no code changes and is the cheapest Pi you can run the 64-bit UEFI firmware on.

Just like the Pi 3B+, but with less RAM and no USB hub or network port.

But there’s more – the work to automatically support booting via PL011 and miniUART serial ports, done by Pete Batard on the UEFI side and
Andre Przywara for TF-A, finally means we can boot on boards where PL011 is used to expose the serial port. The Pi 2B (v1.2) is one such board – the slowest member of the 64-bit UEFI for Pi family. It’s basically a Pi 3 without WiFi, BT and worse heat dissipation, so it is clocked down.

Did you know the v1.2 variant of the Pi 2B is actually 64-bit? Now you do.

And after fixing a small eMMC support regression, we even support the compute module variant of the Pi 3. To be fair, I didn’t test the CM3L (the one without eMMC), but it should be working. Let me know if it doesn’t. Also, CM3+ (which just has better heat dissipation) should work but is not validated.

A small Pi in a very big carrier – https://www.waveshare.com/compute-module-io-board-plus.htm

And in case you’re a fan of the amazing cluster carrier board from our friends over at miniNodes

It works!

Enjoy!

As always, read the release notes and usual caveats. The notes have gotten a bit of a rinse, so have a look to clear out any old assumptions.

v1.10 release for Pi 4

Cleanup and bug fixes.

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

What’s inside this release?

Those last two fixed regressions seen on Windows 10 after some ACPI restructuring to properly describe DMA constraints on VideoCore-attached devices. The regressions affected Pi 3, but the fix should equally apply to Pi 4.

The matching release over in Pi 3 land is v1.23. But that release is interesting enough to deserve it’s own post :-).

As always, read the release notes and usual caveats. The notes have gotten a bit of a rinse, so have a look to clear out any old assumptions.

v1.9 release is out

This mostly updates the underlying TF-A firmware, bringing a few important improvements.

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

What’s inside this release?

  • Update to TF-A v2.3 [tianocore/edk2-non-osi@96ec764]
  • Fix an ASSERT being produced with the DEBUG version, related to TFTP functionality [tianocore/edk2-platforms@f09ea1a]

The TF-A changes are worth describing in greater detail.

TF-A is the Arm secure firmware, providing services such as platform power off/reset and secondary CPU manipulation. The improvements to UART detection mean that TF-A firmware, just like UEFI, will honor config.txt selection of the UART (e.g. via overlay, although it’s really done by the VPU firmware). This is more developer oriented, and means not losing logging/initialization messages. Unrelated to Pi 4 itself, it paves the way for proper (transparent) Pi 3 UEFI support for Compute Module variants and that 64-bit variant of the Pi 2 (rev 1.2).

As always, read the release notes and usual caveats. Note that we do not distribute DEBUG builds. The PSCI CPU_OFF implementation allow a host OS to de-initialize individual CPU cores. More concretely, this will allow more of the Arm Architecture Compliance Suite (ACS) to pass.

The matching Pi 3 UEFI release is v1.22.

v1.8 release out

This is a pretty small update, mostly as a checkpoint to some internal refactoring happening.

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

What’s inside this release?

The matching Pi 3 release is https://github.com/pftf/RPi3/releases/tag/v1.21

As always, read the release notes and usual caveats.

v1.7 – yes, only a day after v1.6.

I hadn’t even finished writing up the 1.6 related artifacts when Pete pushed the button on the new release. Huge thanks both to Pete for getting this out there so soon and to Ard Biesheuvel for reviewing and approving the edk2-platforms fixes.

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

What’s inside this release?

The ACPI fixes will mean improved hardware support in OSes, although today that mostly means improved NetBSD support. We definitely need some volunteers to help with enabling Pi 4 support with ACPI in upstream Linux – see the issue tracker.

Big shout-out to Jeremy Linton for the PPTT implementation (Processor Properties Topology Table) – a new ACPI 6.3 table describing the relation between CPUs and caches. Yes, that’s not a typo – our PPTT is the 2nd revision variant introduced in ACPI 6.3, whereas PPTT was first introduced in 6.2.

Note: the matching Pi 3 UEFI release (v1.19) combines the fixes for the Pi 4 v1.6 and v1.7 releases.

As always, read the release notes and usual caveats.

v1.6 out

A few more goodies…

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

What’s inside this release?

Biggest change here is that your Pi will now boot at the default (Pi Foundation-recommended) frequency, instead of the 600MHz minimum. One less configuration option to change on every upgrade!

IMPORTANT: HTTP(S) boot, like PXE and iSCSI, will not currently work with the internal network card, because the GENET driver has not been upstreamed yet. This means you need a supported USB interface (Ax88772b) to use this feature.

As always, read the release notes and usual caveats.

v1.5 release available

A quick follow-up to v1.4, this release brings some important fixes.

Don’t stop me now (’cause I’m having a good time)
Don’t stop me now (yes, I’m havin’ a good time)
I don’t want to stop at all

Queen – Jazz

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

What’s inside this release?

This release mostly improves on the logic added to v1.4 release for switching between 3GB/4GB modes on the 4GB Pi 4.

Now, when you have 3GiB mode selected (which is the default), you will see 3GiB being reflected in the UEFI setup screen.

The fix for external .dtb is worth diving into. Many of our readers will know, that Raspberries traditionally boot operating systems with Device Tree, instead of ACPI. A dated overview can be found on the official Pi site. Long story short, if you want to boot an 64-bit Linux, NetBSD or FreeBSD today on the Pi with full I/O support, you still need the Device Tree that the VPU firmware prepares based on your config.txt settings (dtparams, overlays, etc).

The Pi 4 support for Device Tree is exactly like the Pi 3 support. At the time, UEFI relied on the Device Tree being placed in RAM after the UEFI image itself, basically overlaying itself on a section of the UEFI image. Recently, new VideoCore firmware broke this approach (which I really shouldn’t have come up with in the first place!) by switching the load ordering – now the Device Tree was loaded before the UEFI image, and since the two images overlapped, the Device Tree blob was getting overwritten. You can read more about it here and here. Anyway, it’s fixed now. The same fix needs to be made to the Pi 3 build. That’s still TBD.

If you want to boot an OS using Device Tree, don’t forget to enable it. By default the Pi 4 will boot in ACPI mode.

Be mindful that the fix involved changing the load address for the Device Tree in a way that wouldn’t overlap the UEFI image. The new values are:

  • device_tree_address=0x1f0000
  • device_tree_end=0x200000

While looking at the above regression, we were also able to regain 2MiB of memory, as the Trusted Firmware footprint for Pi 4 is much smaller than on the Pi 3.

As always, read the release notes and usual caveats.

v1.4 release already out

Pete’s on a roll! Some significant improvements have landed in the latest and greatest release.

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

What’s inside this release?

Assuming you have a 4GiB Pi, you can now boot with with the entire 4GiB available if you run NetBSD-current (generic 64-bit image), which already supports the ACPI interfaces required to make the Pi USB3 controller work with the full 4GiB RAM. Those living on the edge can try this Linux patch.

Note: upstreaming the Linux patch would be a great way to help this project.

Additionally, there’s been some improvements to the setup option layout:

Reorder forms in the order they are most likely to be queried.
Rename Chipset Configuration, making CPU settings more prominent.
New Advanced Configuration. 3GB limit setting is grayed out on 1GB/2GB boards.
Grouping all SD/MMC settings together.

As always, read the release notes and usual caveats.

v1.3 release

This is a minor follow-up to v1.2 for Pi 4, intended to do some soak testing on the ongoing ACPI clean-up and factorization changes.

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

What’s inside this release?

As always, read the release notes and usual caveats.