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.


What’s inside this release?

As always, read the release notes and usual caveats.

v1.15 release for Pi 4


What’s inside this release?

This is a minor release, but the asset tag functionality is pretty cool. This let’s you set a custom string to be reported via SMBIOS to the booted OS, which you could use for inventory or provisioning requirements.

The tag can also be set programmatically or via the UEFI Shell command line.

Shell> setvar AssetTag -guid CD7CC258-31DB-22E6-9F22-63B0B8EED6B5 -bs
-rt -nv =L"ABC123" =0x0000

The matching Pi 3 release is v1.27.

As always, read the release notes and usual caveats.

v1.14 RELEASE FOR Pi 4

Now with 8GiB (yay!) support!


What’s inside this release?

The 8GiB variant changes the board layout a bit, dropping the SPI EEPROM containing the xHCI (USB3 controller) microcode, which required the relevant code to be added to UEFI to load it during boot. The good news is that the same approach is harmless on the other (1GiB, 2GiB and 4GiB Pies).

Like the 4GiB variant, UEFI will default to booting with only 3GiB to deal with OSes that can’t process the ACPI-reported DMA limits.

Of course, without the 3GiB limit, you get the full 8GiB (minus the gpu_mem amount anyway).

Booting to UEFI Shell should be a bit less awkward now, now that it is permanent to the Boot Manager menu.

The matching Pi 3 release is v1.26.

As always, read the release notes and usual caveats.

v1.11 release for Pi 4

Cleanup and bug fixes.


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.

Windows 10 drivers?

A recurring topic is Windows drivers for the Raspberry Pi 3 and 4 series.

MCCI DesignWare USB2 driver

This is for the front USB ports on Pi 3 and only the Type-C port on the Pi 4.

MCCI Corporation has made their TrueTask USB host stack available to the Raspberry Pi WoA community for non-commercial, evaluation purposes. MCCI did the original work for the 32-bit Windows IoT Core. It is available courtesy of Terrill Moore, CEO of MCCI, who graciously spent time in early 2019 to get it building and validated with the 64-bit Pi 3 UEFI.

If you like the drivers, I hope you’ll support The Things Network New York. MCCI does some pretty amazing things with LoRaWAN.

Driver is here. Launch announcement is here.

Note that the driver will not correctly work on Pi 4 boards with more than 1GB of RAM, unless you limit the RAM seen by Windows. See this guide.

OSS DesignWare USB2 driver

Before the MCCI driver was released, this was the only option. Originally based on an earlier version the UEFI USB driver and the UCX framework, it’s not particularly stable or recommended. It was originally developed by @NTAuthority, who was the first person ever to show Windows running on Pi 3 (rumor goes, with an early variant of the Pi 3 UEFI ;-)). And he thankfully left enough crumbs for the rest of us to pick up and carry the torch.

Driver repo is here.

Other BSP drivers

These were originally put up by Microsoft as part of the 32-bit Windows IoT Core BSP for the Pi 2/3. After a bit of cleaning, they build and run fine on 64-bit Windows.

Driver repo is here.

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!


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.


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.


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.


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.

New Pi Foundation BCM2711 docs!

Thanks to a tip from user clever in our Discord channel (#rpi4-uefi-dev), I just found out one of the Pi Foundation engineers and forum moderators, jamesh, posted something cool:

Enjoy this extensive read during the current crisis! It’s a major update to the original 2835 datasheet, with a lot more information. If you find any problems, please comment on this thread.



This doc is for the SoC in the Pi 4B. I personally haven’t read through it yet, but glancing at the table of contents I see there are many goodies here. Hooray for not having to look at Pi 4B DTS (device tree) sources as documentation! 😇