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.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.

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.

https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=270102

https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711/rpi_DATA_2711_1p0.pdf

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! 😇

Linaro Tech Days talk on Pi UEFI

Originally Samer and I were going to present the ongoing Raspberry Pi 4B UEFI work at Linaro Connect ’20 in Budapest. Of course, life had its own plans, but fortunately Linaro was gracious and accommodating to host a virtual event and invite us to be a part of it.

https://connect.linaro.org/resources/ltd20/ltd20-207/

We briefly talked about ServerReady and standardization of the server parts, mentioned the difficulties seen with current non-server parts like the Pi, described the approach taken, provided a status update on where the UEFI/ACPI “ServerReady”-like firmware is today, and left the audience with a call to action to both join the community effort and help beyond the Pi with some other devices, like Rockchip and nVidia-based platforms. Had some good questions from the audience, too.

The full video presentation is available on Youtube, and slides are over at LTD20 207 Making Pi ServerReady.

Guide – Windows 10 ARM64 on Pi 4B

So you want to install Windows 10 on this ‘Berry. You better follow this guide closely.

Because the front (USB3) ports are still unsupported, this guide will use the MCCI drivers for the “legacy” DWC2 USB controller, available via the Type-C plug. Because of the limitations of the DWC2 driver, Windows 10 will only work with 1GB of RAM usable.

Hardware needed

  • A PC with recent Windows 10 build installed.
  • Micro SD card reader.
  • Powered type-c usb hub or just a Type-C OTG cable if you can power the Pi through GPIO pins or even micro-USB hub with a type c to micro usb adapter.
  • USB mouse and keyboard.
  • A fast micro SD card – 16GB or higher – Class A1 or A2
  • Raspberry Pi 4B,
  • Micro HDMI cable.
  • Power supply (5V 3A+).

Downloads

Download Windows 10 installation files for arm64 from https://uup.rg-adguard.net/.

  • Download ISO compiler in OneClick!
  • Run downloaded CMD-file (run creatingISO.cmd file).

Or, download via https://uupdump.ml/, using aria2 and convert, running aria2_download_windows.cmd after extracting it.

Either of those services will help you to generate a ISO file but we only need install.wim file from sources folder on the ISO. Any build that passes OOBE without issues will be fine.

WoR (windows on raspberry) -Download 2.0.0-alpha.3 from https://worproject.ml/downloads

Guide

Once you download all of the things above you can proceed.

Open WoR. Select Disk from the list which will be your microsd card reader and select Raspberry pi 4 as a device that you will use. Then select build of windows WoR should use by pointing to a correct install.wim file. Use the latest drivers that WoR server provides. Select the latest UEFI for Raspberry pi 4 in WoR. Make sure MBR is selected as a partition scheme. WoR will automatically limit memory to 1024MB as it is still required to enable USB type-c drivers. Do edit boot options in WoR if you need to(I always overclock as my Pi has a fan attached).

WoR will deploy windows to the selected micro sd card which will take from 16 minutes to 3 hours depending on speed of your micro SD card.

Safely remove micro SD card and move it into the Raspberry Pi

Notes

This guide will be most likely updated if anything changes. First boot will take between 12 minutes to 2 hours depending on speed of your micro SD card. If there are issues during OOBE setup pressing shift + F10 then typing

%windir%\System32\Sysprep\sysprep.exe /oobe /reboot 

might help. If it doesn’t, you will need to test a different build of Windows 10 arm64. Remember that only Type-C port works correctly at the moment, so you will have to connect other devices to it somehow. Good luck!

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.

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.