This repository contains EXPERIMENTAL installable builds of the official EDK2 Raspberry Pi 4 UEFI firmware.
PLEASE READ THE FOLLOWING:
🔻🔻🔻🔻🔻🔻🔻🔻🔻
-
Do NOT expect this firmware to be fully functional when it comes to supporting your ARM64 OS of choice (or even to support your OS at all if you plan to use Windows), as it is still very much in development stage.
-
You will NOT get SD or network support in Linux because current Linux kernels are missing updated network and SD card drivers for ACPI.
-
You will NOT be able to use any of the USB-A ports if you try to run Windows. This means that any attempt to boot Windows from a USB drive plugged at the back of your device will crash.
-
The default CPU frequency of the UEFI firmware is VERY LOW.
If you have sufficent cooling (e.g. heatsink) you should go to the UEFI firmware settings py pressing Esc and then go to:Device Manager
→Raspberry Pi Configuration
→Chipset Configuration
and change:
CPU Clock
→<Max>
.
-
Please understand that you are using an EXPERIMENTAL firmware, which means that not everything is expected to be working and that you may have to wait for a more stable releases (which may be months away) if you want something that "simply works".
-
This firmware was built from the official EDK2 repository, with no alterations.
If you need more information, please refer to that repository.
🔺🔺🔺🔺🔺🔺🔺🔺🔺
-
Download the latest archive from the Releases repository.
-
Create an SD card in
MBR
mode with a single partition of type0x0c
(FAT32 LBA
) or0x0e
(FAT16 LBA
). Then format this partition toFAT
.Note: Do not try to use
GPT
for the partition scheme or0xef
(EFI System Partition
) for the type, as these are unsupported by the Raspberry Pi bootloader(s). -
Extract all the files from the archive onto the partition you created above.
Note that outside of thisReadme.md
, which you can safely remove, you should not change the name of the extracted files and directories.
Insert the SD card/plug the USB drive and power up your Raspberry Pi. You should see a multicoloured screen (which indicates that the CPU-embedded bootloader is reading the data from the SD/USB partition) and then the Raspberry Pi black and white logo once the UEFI firmware is ready.
At this stage, you can press Esc to enter the firmware setup, F1
to launch the UEFI Shell, or, provided you also have an UEFI bootloader on the SD
card or on a USB drive in efi/boot/bootaa64.efi
, you can let the UEFI system run that
(which will be the default if no action is taken).
The firmware provided in the zip archive is the RELEASE
version but you can also find
a DEBUG
build of the firmware in the
AppVeyor artifacts.
The provided firmwares should be able to auto-detect the UART being used (PL011 or mini
UART) according to whether config.txt
contains the relevant overlay or not. The default
baudrate for serial I/O is 115200
and the console device to use under Linux is either
/dev/ttyAMA0
when using PL011 or /dev/ttyS0
when using miniUART.
At the moment, the published firmwares enforce ACPI and come with a 3 GB RAM limitation
(-D ACPI_BASIC_MODE_ENABLE=1
) to ensure Linux boot.
The firmware (RPI_EFI.fd
) is licensed under the current EDK2 license, which is
BSD-3-Clause.
The other files from the zip archives are licensed under the terms described in the Raspberry Pi boot files README.