Coder Social home page Coder Social logo

andreiw / raspberrypipkg Goto Github PK

View Code? Open in Web Editor NEW
745.0 86.0 143.0 39.1 MB

DEPRECATED - DO NOT USE | Go here instead ->

Home Page: https://github.com/tianocore/edk2-platforms/tree/master/Platform/RaspberryPi/RPi3

C 85.48% C++ 9.06% Assembly 2.11% Objective-C 3.21% Makefile 0.14%
uefi 64-bit rpi3 raspberry-pi-3 raspberry-pi-uefi windows-10 windows-on-arm armv8 aarch64 arm64 arm firmware rpi freebsd arm-linux ubuntu-arm opensuse win10 raspberrypi

raspberrypipkg's Introduction

DEPRECATED - DO NOT USE

This repo isn't just resting - it's dead. Why? Because it's been upstreamed to the master TianoCore UEFI branch - https://github.com/tianocore/edk2-platforms/tree/master/Platform/RaspberryPi/RPi3

This is going to remain up only for historical purpose.

Also see https://rpi4-uefi.dev

64-bit Tiano Core UEFI for the Raspberry Pi 3

Last updated Feb 18th, 2019.

This is a port of 64-bit Tiano Core UEFI firmware for the Pi 3/3B+ platforms, based on Ard Bisheuvel's 64-bit and Microsoft's 32-bit implementations.

Initially, this was supposed to be an easy walk in the park, where the Microsoft drivers somewhat slid into Ard's UEFI implementation, and I would call it a day. Instead, it turned out to be a severely more frustrating experience :-).

Purpose

This is meant as a generally useful 64-bit ATF + UEFI implementation for the Pi 3/3B+, good enough for most kinds of UEFI development and good enough for running real operating systems. It has been validated to install and boot Linux (SUSE, Ubuntu), NetBSD and FreeBSD, and there is experimental (64-bit) Windows on Arm support as well. It wound up being the early development platform for NetBSD's 64-bit Arm UEFI bootloader, and was used to demonstrate VMware ESXi-Arm on the Pi as well.

It's mostly EBBR compliant, favoring user experience over pedantic compliance where those two are in conflict. With enough HypDxe grease it may even, some day, pass for an SBSA + SBBR system ;-).

Latest Status

  • 2019 Feb 18th: DisplayDxe fixes, updated DTB
  • 2019 Jan 16th: boot options fixes, _CCA, supported firmware for Windows MCCI driver.
  • 2019 Jan 14th: boot option cleanup, EBC, release, SPCR fix (Windows EMS support)
  • 2018 Nov 17th: Display, USB, GraphicsConsole, VirtualRealTimeClockLib improvements, edk2 rebase.
  • 2018 Oct 1st: Rhxp and PEP devices in ACPI, (untested) JTAG support via debug configuration menu.
  • 2018 Sep 29th: MsftFunctionConfig ACPI descriptors.
  • 2018 Sep 28th: SMBIOS nits, clear screen before boot, SPCR InterruptType, DWC_OTG range and extra _CID.
  • 2018 Sep 18th: PXE boot order fix, serial prompting, improved variable dumping
  • 2018 Sep 14th: fix FADT minor version (PSCI detection) and SMBIOS regression (seen in Windows).
  • 2018 Jul 8th: switch to private MmcDxe, improve multiblock write robustness, power-off/halt in ATF
  • 2018 Jun 26th: SdHostDxe error handling, early eMMC support for both SdHost and Arasan
  • 2018 Jun 22nd: Arasan and SdHost multiblock, Arasan/SdHost/MMC tweaks/stability, uSD default routing is SdHost
  • 2018 Jun 17th: SdHostDxe boot order fix, MMC tweaks menu, GCC5_DEBUG fix.
  • 2018 Jun 16th: SdHostDxe support, HypDxe on by default.
  • 2018 Jun 13th: Fix GCC5 compilation error for HypDxe.
  • 2018 Jun 12th: Fix SMBIOS Type 0 BIOS date.
  • 2018 Jun 7th: HypDxe can redirect WoA kernel messages to UART.
  • 2018 May 27th: allow 640 x 480 and lower resolutions.
  • 2018 May 24th: fix WoA regression reported with build 17134.
  • 2018 May 22nd: can boot 64-bit Windows on Arm without WinDbg (and without hacky ATF).
  • 2018 May 19th: Ax88772b USB NIC (not onboard SMSC95xx) PXE boot.
  • 2018 May 18th: allow changing Arm frequency settings (do nothing, force 600MHz or max)
  • 2018 May 14th: rebase to current edk2 upstream (still under verification, no bin release).
  • 2018 May 13th: set maximum Arm frequency, better info/smbios, DisplayDxe fix.
  • 2018 May 12th: updated May 9th build VC firmware to support RPi3.
  • 2018 May 9th: pseudo-NVRAM, persisted RTC, Arasan controller ACPI description, USB fix.
  • 2018 Apr 24th: SMP support in WoA.
  • 2018 Apr 22nd: switched to MS-IoT ACPI, can boot 64-bit WoA WinPE with WinDbg.
  • 2018 Apr 21st: improved booting experience, removed BGRT, WoA docs.
  • 2018 Apr 5th: improved ACPI (FADT, GTDT, SPCR, BGRT, MADT), UEFI implementation comparison.
  • 2018 Mar 31st: updated supported keyboard info.
  • 2018 Mar 1st: updated ATF to fix Ubuntu poweroff crash and add directions.
  • 2018 Feb 27th: updated ATF to fix overheat on SYSTEM_OFF.
  • 2018 Feb 26th: improved USB driver and HS support.
  • 2018 Feb 22nd: improved USB support for keyboards.
  • 2018 Jan 13th: updated build instructions, information on keyboards supported, added prebuilts.
  • 2017 Dec 26th: USB hotplug and keyboard support.
  • 2017 Dec 15th: Initial release.

Features

Here is a comparison table between different available EFI firmware implementations for the RPi3.

Feature This Implementation Ard's Microsoft's U-Boot Minoca
Bitness 64-bit 64-bit 32-bit Either 32-bit
PSCI CPU_ON Yes No No No No
PSCI SYSTEM_RESET Yes Yes No No No
PSCI SYSTEM_OFF Yes No No No No
DT Yes Yes No Yes No
Pass-through DT Yes No N/A Yes No
NVRAM Limited No No No No
RTC Limited No No No No
ACPI Yes No Yes No Yes
Serial Yes Yes Yes Yes Yes
HDMI GOP Yes No No Yes No
SMBIOS Yes No Yes No Yes
uSD Yes No Yes Yes Yes
uSD SdHost and Arasan Yes No Yes ? No
USB1 Limited No No Yes No
USB2/3 Yes No No Yes No
USB Mass Storage Yes No No Yes No
USB Keyboard Yes No No Yes No
USB Ax88772b PXE/Network Yes No No Yes No
USB SMSC95xx PXE/Network No No No Yes No
Tiano Yes Yes Yes No No
AArch32 Windows IoT No No Yes No No
AArch64 Windows on Arm Limited No No No No
AArch64 Linux Yes Limited No Yes No
AArch32 Linux No No No Yes No
AArch64 FreeBSD Yes No No Yes No
AArch32 Minoca No No No No Yes

Building

Note: If you want to use the pre-built UEFI images, you can skip this section.

  1. Clone https://github.com/tianocore/edk2.git

This is the last known good edk2 commit:

commit 66127011a544b90e800eb3619e84c2f94a354903
Author: Ard Biesheuvel <[email protected]>
Date:   Wed Nov 14 11:27:24 2018 -0800

    ArmPkg/ArmGicDxe ARM: fix encoding for GICv3 interrupt acknowledge

You should rewind your edk2 tree to this commit. Here be dragons!

  1. Clone this repo.

  2. Apply the various patches against the edk2 tree. Yes, it sucks to have to do this, but this is a clearer way forward than forking every single Tiano driver that has a bug in it, or worse - carrying around an entire private fork of edk2. You're welcome to upstream these patches!

To avoid issues, apply using --ignore-whitespace. E.g.:

$ git am --ignore-whitespace ../RaspberryPiPkg/edk2Patches/*.patch
  1. Use one of the provided templates for your build script. If you use a different GCC version, change accordingly, and adjust the compiler prefix to match your system - i.e. set GCC49_AARCH64_PREFIX if you're passing -t GCC49 to build.

If you want to build your own ATF, instead of using the checked-in binaries, follow the additional directions under Binary/atf/readme.md.

Using

Basic

Please USE AN ADEQUATE POWER SUPPLY. Many people have had problems with poor performance (CPU underclocking itself to 600MHz) and other errors and issues (e.g. with USB) caused by an inadequate power supply. Recommended: 5V 3A. Many cheapo 2.5A power bricks can't really provide 2.5A. If you see a lightning bolt in the top right corner of the screen you have inadequate power.

UEFI boot media can be a uSD card or USB mass storage, if you've enabled USB booting previously in the OTP (i.e. via program_usb_boot_mode=1).

UEFI boot media must be MBR partitioned and FAT32 formatted.

As a starting point, take one of the latest RELEASE prebuilt image directories and copy contents to empty boot media. If you've built your own UEFI from source (e.g. $WORKSPACE/Build/RaspberryPiPkg-AARCH64/RELEASE_GCC5/FV/RPI_EFI.fd) you can simply now copy over and overwrite RPI_EFI.fd.

Note: You may not have a kernel.img (or kernelX.img, where X is a digit) in the root catalogue of the boot media. It will not boot.

The most basic config.txt contents are:

arm_control=0x200
enable_uart=1
armstub=RPI_EFI.fd
disable_commandline_tags=1

This will boot UEFI and expose an RPi3 device tree that is compatible with openSUSE Leap 42.2/42.3, although it was found to work with Ubuntu 18.04 (Bionic Beaver) as well.

Of course use the debug variant (e.g. $WORKSPACE/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/FV/RPI_EFI.fd) if necessary, but it will boot a lot slower due to the verbose spew.

HDMI and the mini-UART serial port can be used for output devices. Output is mirrored. USB keyboards and the mini-UART serial port can be used as input.

USB keyboard support has been validated with a few keyboards:

  • Logitech K750 (wireless)
  • Dell SK-8125 keyboard (with built-in hub)
  • Microsoft Natural Ergonomic Keyboard 4000
  • An Apple keyboard (chicklet, USB2 hub)

The first time you boot, you will be looking at the UEFI Shell. 'exit' and modify the boot order. The boot order will persist across reboots. The boot manager will only list devices available to boot from (older versions had USB Port 0, USB Port 1, etc).

ESC enters setup. F1 always boots the UEFI Shell.

FrontPage

Note: you cannot boot 32-bit OSes like Raspbian with this firmware. Aw, shucks, right?

Custom Device Tree

Most likely, if you boot an OS other than openSUSE Leap 42.3, you will need to pass your own distro- and kernel- specific device tree. This will need to be extracted from the distributed media or from a running system (e.g that was booted via U-Boot).

This involves a few changes to the above config.txt:

...
disable_commandline_tags=2
device_tree_address=0x8000
device_tree_end=0x10000
device_tree=my_fdt.dtb

Note: the address range must be [0x8000:0x10000). dtoverlay and dtparam parameters are also supported.

Custom bootargs

This firmware will honor the command line passed by the GPU via cmdline.txt.

Note, that the ultimate contents of /chosen/bootargs are a combination of several pieces:

  • Original /chosen/bootargs if using the internal DTB. Seems to be completely discarded by GPU when booting with a custom device tree.
  • GPU-passed hardware configuration. This one is always present.
  • Additional boot options passed via cmdline.txt.

openSUSE Leap 42.3

Untested with the Pi 3 B+. You may need to get the latest device tree and follow the instructions.

Download the Leap 42.3 RPi image first, from http://download.opensuse.org/ports/aarch64/distribution/leap/42.3/appliances/ (e.g. openSUSE-Leap42.3-ARM-XFCE-raspberrypi3.aarch64-2017.07.26-Build1.1 was good).

  • dd image to media.
  • If booting UEFI from same media:

Login is root/linux. There is also a login available on the serial port.

Note: if your media is USB, after first boot you must follow these steps, or you will have an unbootable system after first reboot:

  • Edit the file /etc/dracut.conf.d/raspberrypi_modules.conf to include as its first line: add_drivers+=" bcm2835-sdhost bcm2835_dma sdhci_bcm2835 dwc2 usbnet uas usb_storage usbcore usb_common "
  • mkinitrd

You may choose to remove enable_uart=1 from config.txt to get your RPi3 to run at full speed.

If you wish to use virtualization (e.g. KVM), you must configure UEFI to boot in EL2 mode. In UEFI setup screen:

  • go to Device Manager
  • go to Raspberry Pi Configuration
  • go to HypDxe Configuration
  • configure System Boot Mode as Boot in EL2
  • after saving, Pi will reset itself.

Ubuntu (18.04 Bionic Beaver)

Untested with the Pi 3 B+. You may need to get the latest device tree and follow the instructions.

  • Download http://ports.ubuntu.com/ubuntu-ports/dists/bionic/main/installer-arm64/current/images/netboot/mini.iso and write out to a USB stick.
  • Boot installer.
  • Install to another USB stick (uSD slot is not available).
  • Enjoy. uSD slot will be available as mmcblk0.

There is a device tree blob under http://ports.ubuntu.com/ubuntu-ports/dists/bionic/main/installer-arm64/current/images/device-tree/bcm2837-rpi-3-b.dtb, which you will need to use to if you want Wi-Fi and Bluetooth, but otherwise things seem to work just fine with the bundled openSUSE Leap 42.2 device tree.

Note: don't use DEBUG builds of ATF (e.g. DEBUG builds of UEFI) with Ubuntu, as the latter disables the mini-UART port, which the ATF relies on for logging. If you want to use a DEBUG build of UEFI, you must use a release version of ATF. Follow the directions under Binary/atf/readme.md.

For Wi-Fi and BT there are a few more steps, as certain firmware files appear to be missing from the installation:

  • cd /lib/firmware/brcm/
  • wget https://raw.githubusercontent.com/RPi-Distro/firmware-nonfree/master/brcm/brcmfmac43430-sdio.txt
  • wget https://github.com/OpenELEC/misc-firmware/raw/master/firmware/brcm/BCM43430A1.hcd
  • apt-get install wireless-regdb

If you wish to use virtualization (e.g. KVM), you must configure UEFI to boot in EL2 mode. In UEFI setup screen:

  • go to Device Manager
  • go to Raspberry Pi Configuration
  • go to HypDxe Configuration
  • configure System Boot Mode as Boot in EL2
  • after saving, Pi will reset itself.

FreeBSD (r326622)

Untested with the Pi 3 B+. You may need to get the latest device tree and follow the instructions.

  • Download http://ftp.freebsd.org/pub/FreeBSD/snapshots/ISO-IMAGES/12.0/FreeBSD-12.0-CURRENT-arm64-aarch64-RPI3-20171206-r326622.img.xz
  • Uncompress and dd to media.
  • If booting UEFI from same media:
  • If not booting UEFI from same media:

Now replace config.txt in the UEFI boot media with:

arm_control=0x200
armstub=RPI_EFI.fd
enable_uart=1
disable_commandline_tags=2
dtoverlay=mmc
dtparam=audio=on,i2c_arm=on,spi=on
device_tree_address=0x8000
device_tree_end=0x10000
device_tree=bcm2710-rpi-3-b.dtb

For a different (newer) release, you will need to look at the original config.txt.

This should boot to login prompt on HDMI with USB HID as the input. Login is root/root.

Note: you must remove dtoverlay=pi3-disable-bt, if present, from config.txt, as both ATF and UEFI rely on the mini-UART being initialized.

PL011 serial console in FreeBSD is not supported, yet.

64-bit Windows on Arm

Builds 17125-17134, 17672 are known to work.

Validated with a Pi3B+ as well.

To try:

  • Get a Windows 10 host.
  • Download the Windows ADK Insider Preview (matching one of the builds above).
  • Install ADK (Deployment Tools and Windows Preinstallation Environment).
  • If your Windows 10 host is arm64, you will need to patch the DandISetEnv.bat script to SET PROCESSOR_ARCHITECTURE=x86 to get the Deployment and Imaging Tools environment working to run the next few commands.
  • copype arm64 C:\WinPE_arm64
  • MakeWinPEMedia /ufd C:\WinPE_arm64 <usb drive letter:>
  • Follow the basic steps for booting UEFI.

System should boot to a single cmd.exe window.

Note: there are no built-in drivers for anything.

Note: if HypDxe is configured to Boot in EL2, Windows on Arm will not boot. The remaining HypDxe configuration options are developer-oriented.

#12 for related discussion.

Also see https://www.worproject.ml/ and https://www.worproject.ml/bugtracker (not affiliated with RaspberryPiPkg).

Bugs in Implemented Functionality

HDMI

The UEFI HDMI video support relies on the VC (that's the GPU) firmware to correctly detect and configure the attached screen. Some screens are slow, and this detection may not occur fast enough. Finally, you may wish to be able to boot your Pi headless, yet be able to attach a display to it later for debugging.

To accommodate these issues, the following extra lines are recommended for your config.txt:

  • hdmi_force_hotplug=1 to allow plugging in video after system is booted.
  • hdmi_group=1 and hdmi_mode=4 to force a specific mode, both to accommodate late-plugged screens or buggy/slow screens. See official documentation to make sense of these parameters (example above sets up 720p 60Hz).

While the VC firmware is reponsible for setting the physical resolution, the virtual resolution the GPU framebuffer uses may be different and it scales the video appropriately. By default, the UEFI framebuffer driver makes available the following virtual resolutions:

  • 640x480 (32bpp)
  • 800x600 (32bpp)
  • 1024x768 (32bpp)
  • 1280x720 (32bpp)
  • 1920x1080 (32bpp)
  • native physical resolution (32bpp)

Note that this lets you do weird stuff, like pretending to have 1080p while connected to a TV. Sometimes blurry is better than nothing...

Note: the VC framebuffer is a bit weird and will change physical locations depending on virtual resolution chosen. Some UEFI applications or OS loaders may violate the GOP spec and never refresh the framebuffer addressing after setting the mode. You can completely disable multiple virtual resolution support:

  • go to Device Manager
  • go to Raspberry Pi Configuration
  • go to Display
  • configure Resolutions to Only native resolution

NVRAM

The Raspberry Pi has no NVRAM.

NVRAM is emulated, with the non-volatile store backed by the UEFI image itself. This means that any changes made in UEFI proper will be persisted, but changes made in HLOS will not. It would be nice to implement ATF-assisted warm reboot, to allow persisting HLOS NVRAM changes.

RTC

The Rasberry Pi has no RTC.

RtcEpochSeconds NVRAM variable is used to store the boot time This should allow you to set whatever date/time you want using the Shell date and time commands. While in UEFI or HLOS, the time will tick forward. RtcEpochSeconds is not updated on reboots.

uSD

UEFI supports both the Arasan SDHCI and the Broadcom SDHost controllers to access the uSD slot. You can use either. The other controller gets routed to the SDIO card. The choice made will impact ACPI OSes booted (e.g. Windows 10). Arasan, being an SDIO controller, is usually used with the WiFi adapter where available. SDHost cannot be used with SDIO. In UEFI setup screen:

  • go to Device Manager
  • go to Raspberry Pi Configuration
  • go to Chipset
  • configure Boot uSD Routing

Known issues:

  • Arasan HS/4bit support is missing.
  • No 8 bit mode support for (e)MMC (irrelevant for the Pi 3).
  • Hacky (e)MMC support (no HS).
  • No card removal/replacement detection, tons of timeouts and slow down during boot without an uSD card present.

USB

  • USB1 BBB mass storage devices untested (USB2 and USB3 devices are fine).
  • USB1 CBI mass storage devices don't work (e.g. HP FD-05PUB floppy).

ACPI

More-or-less matches MS-IoT ones. Good enough to boot WinPE, but unclear how functional all of it is, given current state of WoA on RPi3. Both Arasan and SDHost SD controllers are exposed.

Missing Functionality

  • Network booting via onboard NIC.
  • Ability to switch UART use to PL011.

Licensing

All of the code is BSD licensed.

Contact

Andrey Warkentin [email protected]

Btw, feel free to upstream, if so inclined.

raspberrypipkg's People

Contributors

andreiw avatar driver1998 avatar jonesmz avatar mariobalanica avatar mcb30 avatar ryanscovill avatar samuel12321 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

raspberrypipkg's Issues

Hello.

I know partly how to program drivers and would like to help on any thing I can do. Please be aware though, my extent of knowledge of driver is very limited.

Error during building

During building I get this error ArmPlatformPkg/Library/ArmPlatformSysConfigLibNull/ArmPlatformSysConfigLibNull.inf is not found in packages path:

No start menu

After i click on the start menu nothing happen ... same after 2 or 3 minuts wating

The MEGA Windows on Arm thread

So i've gotten pretty close to getting windows 10 arm to boot. But for some reason after selecting the boot device it wont no longer detect the keyboard, when the press any key to continue prompt arrives. The numlock light will turn on but no matter what button i press nothing happens. Also since it doesnt detect a keyboard input it will go back to the last screen and the system seems to lock up at that point.
img_20180420_221029

How to install on B+?

I tried with the May 9th build, but just get to the rainbow screen. I did see in the readme that there's no automatic detection, so is a modification required?

No Response From USB Keyboard

I am trying to get this to work on my Pi 3, and I am failing.

I built RPI_EFI.fd natively on an aarch64 machine using GCC 6, from edk2 commit c3cb333e097036764afe240b179056ab8e320071, with the one additional patch provided in this repository.

I placed it along with bootcode.bin, fixup.dat and start.elf from the firmware repository at tag bcd3b8ff86949659e9eec20fd46bf27a2fcb971a on FAT partition 1 on the micro SD card.

config.txt:
arm_control=0x200
enable_uart=1
armstub=RPI_EFI.fd
disable_commandline_tags=1

Tianocore boots (raspberry logo comes up), but doesn't respond to keyboard input, i.e. ESC does nothing. I tried two different USB keyboards. Is there a special requirement for keyboard compatibility?

If I add startup.nsh containing the path to grubaa64.efi, it boots grub, but that, too doesn't respond to keyboard input.

Is there anything additional I have to do to get the keyboard input working?

ArasanMmcHostDxe: handle card removal

Problem 1: driver doesn't detect card removal. On Pi2 the card detect pin on the controller was actually wired up to something, and so the ArasanMmcHostDxe (presumably, written by MS) worked as expected. On Pi3 that card detect pin on the controller always reports a present card.

Problem 2: driver doesn't detect card (re)insertion. Because the driver doesn't detect a card being removed, the SD card and host are not reinitialized, so the card doesn't work.

USB 1.1 Mass Storage Device not working

I have an old USB 1.1 256MB USB stick floating around in my house, which is a ZOLTRIX COOLDISK V3.
When I plug this stick in UEFI Shell, everything hang, I get no response from USB Keyboard as well as the serial terminal.
Everything is back to normal when I unplug this USB stick.
And of cause, this stick is in totally working condition when plugged into a normal PC, if you are interested in that.

This issue is not necessary to fix IMO, since these USB 1.1 sticks are getting old and rare and useless these days. But since USB1 Devices are listed as untested in the README, I guess I should test it :-).

Windows wont run

So get error that need reg file so i done it then windows did crAsh then reboot then getting bad state error even there no usb plugged in

WinPE Not booting

Shutdown occurred at (Tue Apr 24 15:13:29.722 2018 (UTC + 3:00))...unloading all symbol tables.
Waiting to reconnect...
Connected to Windows 10 17125 ARM 64-bit (AArch64) target at (Tue Apr 24 15:13:30.486 2018 (UTC + 3:00)), ptr64 TRUE
Kernel Debugger connection established.

************* Path validation summary **************
Response Time (ms) Location
Deferred srv*
Symbol search path is: srv*
Executable search path is:
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntkrnlmp.exe -
Windows 10 Kernel Version 17125 MP (1 procs) Free ARM 64-bit (AArch64)
Built by: 17125.1000.arm64fre.rs4_release_prs.180315-1454
Machine Name:
Kernel base = 0xfffff80124910000 PsLoadedModuleList = 0xfffff80124c58c50
System Uptime: 0 days 0:00:00.000
KDTARGET: Refreshing KD connection

*** Fatal System Error: 0x0000005c
(0x0000000000000200,0x0000000005250631,0x0000000000000003,0xFFFFFFFFC00000BB)

Break instruction exception - code 80000003 (first chance)

A fatal system error has occurred.
Debugger entered on first try; Bugcheck callbacks have not been invoked.

A fatal system error has occurred.

*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntkrnlmp.exe -
nt!DbgBreakPointWithStatus:
fffff801`2493fe50 d43e0000 brk #0xF000
kd> bp hal!HalpInterruptRegisterController+0x6c
kd> g
Break instruction exception - code 80000003 (first chance)

A fatal system error has occurred.

nt!DbgBreakPointWithStatus:
fffff801`2493fe50 d43e0000 brk #0xF000
kd> ed hal!HalpInterruptRegisterController+0x6c 0x14000003
kd> g
Break instruction exception - code 80000003 (first chance)

A fatal system error has occurred.

nt!DbgBreakPointWithStatus:
fffff801`2493fe50 d43e0000 brk #0xF000

compiling on native aarch64 host

Hello,

I tried to compile this on an aarch64 host but I get some errors I can't seem to resolve. Seems like many other people have this issue but with compiling edk2 for an x86_64 host. Would be nice if you can tell me what I did wrong (I attached the log to this issue).

Thanks,
Stefan.
log.txt

Errors when building HypDxe

/mnt/f/src/RaspberryPiPkg/Drivers/HypDxe/HypLog.c: In function ‘HypLogSetColors’:
/mnt/f/src/RaspberryPiPkg/Drivers/HypDxe/HypLog.c:53:1: error: type of ‘Color’ defaults to ‘int’ [-Werror=implicit-int]
GNUmakefile:439: recipe for target '/mnt/f/src/Build/RaspberryPiPkg-AARCH64/RELEASE_GCC5/AARCH64/RaspberryPiPkg/Drivers/HypDxe/HypDxe/OUTPUT/HypLog.obj' failed
HypLogSetColors(
Building ... /mnt/f/src/RaspberryPiPkg/Drivers/RpiFdtDxe/RpiFdtDxe.inf [AARCH64]
^~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make: *** [/mnt/f/src/Build/RaspberryPiPkg-AARCH64/RELEASE_GCC5/AARCH64/RaspberryPiPkg/Drivers/HypDxe/HypDxe/OUTPUT/HypLog.obj] Error 1

build.py...
: error 7000: Failed to execute command
make tbuild [/mnt/f/src/Build/RaspberryPiPkg-AARCH64/RELEASE_GCC5/AARCH64/RaspberryPiPkg/Drivers/HypDxe/HypDxe]

build.py...
: error F002: Failed to build module
/mnt/f/src/RaspberryPiPkg/Drivers/HypDxe/HypDxe.inf [AARCH64, GCC5, RELEASE]
Host is Ubuntu 18.04 under WSL with gcc-7. Maybe an earlier version of gcc is needed?

Booting this UEFI on the Raspberry Pi 3 B+

The UEFI is fully compatible with the RPi 3B+ and I managed to install Fedora 28 Minimal with a custom DTB on an external USB Stick. I just needed to download the latest bootcode.bin, start.elf, fixup.dat. Additionally I needed to add the files fixup_cd.dat, fixup_db.dat, fixup_x.dat and start_cd.elf, start_db.elf, start_x.elf to get the RPi booting. Why are the _cd, _db and _x files needed?

Error AARCH64 small code model requires identical ELF and PE/COFF section offsets modulo 4 KB.

WriteSections64(): /root/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/RaspberryPiPkg/AcpiTables/AcpiTables/OUTPUT/./APIC.dll AARCH64 small code model requires identical ELF and PE/COFF section offsets modulo 4 KB.
GenFw: ERROR 3000: Invalid
WriteSections64(): /root/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/RaspberryPiPkg/AcpiTables/AcpiTables/OUTPUT/./APIC.dll AARCH64 small code model requires identical ELF and PE/COFF section offsets modulo 4 KB.
make: *** [/root/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/RaspberryPiPkg/AcpiTables/AcpiTables/OUTPUT/APIC.acpi] Error 2
GNUmakefile:344: recipe for target '/root/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/RaspberryPiPkg/AcpiTables/AcpiTables/OUTPUT/APIC.acpi' failed

build.py...
: error 7000: Failed to execute command
make tbuild [/root/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/RaspberryPiPkg/AcpiTables/AcpiTables]

build.py...
: error F002: Failed to build module
/root/RaspberryPiPkg/AcpiTables/AcpiTables.inf [AARCH64, GCC5, DEBUG]

  • Failed -
    Build end time: 16:17:10, Apr.02 2018
    Build total time: 00:00:12

Im newbie pls help

Hello, im trying to install win 10 on rpi. I have bootable USB with win 10 and i cannot boot from this USB. If I load into the setup and select boot manager then i clicked on the USB port which i plugged on win 10 usb.

Some displays don't work

A few displays/TVs handshake so slowly that the display driver doesn't detect anything when it is loaded. Need to make video initialization asynchronous.

How to get the log information

I have already taked the latest DEBUG prebuilt image directories and used serial adapter(FT232RL Chip),but I can't see any log message from serial software.How can I get the log information? Thanks!

Black screen on boot (was: RPi3B+ support)

I don't have this board (yet) and others have reported it as not working.

What I'd like are serial logs from a DEBUG build.

Note: you'll have to use newer bootcode.bin, start.elf and fixup.dat... i.e. ones known to support Pi 3 B+. You should be able to get these from a Rasbian distribution that supports the B+.

When the system boot, USB port has no any current output

I’m watched your video on YouTube and I try to install Windows10 in my raspberry pi3b+.

Yes, its boot and get into the system.

When I turn on the raspberry pi, I can see the usb port has current output. But when its start to load the system, the usb port's power is off.

No any current output, so I can't use my mouse and keyboard.

Hope I can fix it, thanks very much.

(Not good at Eng

Use ACPI also for booting Linux

Currently it appears that only Windows is booted using ACPI, while Linux gets traditional DTBs, which are distro-specific.

Linux supports ACPI for device discovery on ARM64 since version 4.1. It would be handy to reuse the ACPI support developed for Windows also in Linux, possibly avoiding having to go distro-specific.

Stuck on getting ready...

Instead of me getting the instalition error, it got past starting services and its stuck on getting ready with no sdcard activity!

AARCH64 small code model requires identical ELF and PE/COFF section offsets modulo 4 KB. GenFw: ERROR 3000: Invalid

I came across this during my build:

log:

Building ... /home/zhouzhiwen/edk2/MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf [AARCH64]
"GenFw" -o /home/zhouzhiwen/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/RaspberryPiPkg/AcpiTables/AcpiTables/OUTPUT/./Madt.acpi -c /home/zhouzhiwen/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/RaspberryPiPkg/AcpiTables/AcpiTables/OUTPUT/./Madt.dll
"aarch64-linux-gnu-gcc" -g -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=UefiShellNetwork1CommandsLibStrings -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common -mlittle-endian -fno-short-enums -fverbose-asm -funsigned-char -ffunction-sections -fdata-sections -Wno-address -fno-asynchronous-unwind-tables -fno-pic -fno-pie -ffixed-x18 -flto -Wno-unused-but-set-variable -Wno-unused-const-variable -mcmodel=small -c -o /home/zhouzhiwen/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib/OUTPUT/./AutoGen.obj -I/home/zhouzhiwen/edk2/ShellPkg/Library/UefiShellNetwork1CommandsLib -I/home/zhouzhiwen/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib/DEBUG -I/home/zhouzhiwen/edk2/MdePkg -I/home/zhouzhiwen/edk2/MdePkg/Include -I/home/zhouzhiwen/edk2/MdePkg/Include/AArch64 -I/home/zhouzhiwen/edk2/ShellPkg -I/home/zhouzhiwen/edk2/ShellPkg/Include -I/home/zhouzhiwen/edk2/MdeModulePkg -I/home/zhouzhiwen/edk2/MdeModulePkg/Include /home/zhouzhiwen/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib/DEBUG/AutoGen.c
GenFw: ERROR 3000: Invalid
make: *** [/home/zhouzhiwen/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/RaspberryPiPkg/AcpiTables/AcpiTables/OUTPUT/Madt.acpi] Error 2
WriteSections64(): /home/zhouzhiwen/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/RaspberryPiPkg/AcpiTables/AcpiTables/OUTPUT/./Madt.dll AARCH64 small code model requires identical ELF and PE/COFF section offsets modulo 4 KB.
GenFw: ERROR 3000: Invalid
WriteSections64(): /home/zhouzhiwen/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/RaspberryPiPkg/AcpiTables/AcpiTables/OUTPUT/./Madt.dll AARCH64 small code model requires identical ELF and PE/COFF section offsets modulo 4 KB.
GNUmakefile:367: recipe for target '/home/zhouzhiwen/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/RaspberryPiPkg/AcpiTables/AcpiTables/OUTPUT/Madt.acpi' failed

build.py...
: error 7000: Failed to execute command
make tbuild [/home/zhouzhiwen/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC5/AARCH64/RaspberryPiPkg/AcpiTables/AcpiTables]

build.py...
: error F002: Failed to build module
/home/zhouzhiwen/RaspberryPiPkg/AcpiTables/AcpiTables.inf [AARCH64, GCC5, DEBUG]

  • Failed -
    Build end time: 21:46:07, May.19 2018
    Build total time: 00:00:23

All patches applied.

git log:

commit 9b874d2d369a8f3237ff12c7084ddb7caae114ce (HEAD -> working)
Author: Andrei Warkentin [email protected]
Date: Mon May 14 01:10:50 2018 -0400

BootGraphicsResourceTableDxe: properly handle SetBootLogo with NULL buffer

SetBootLogo would not free the previous logo memory, which in turn
means that a BGRT would still be installed, even if marked as not valid.
Windows 10 actually uses the BGRT image for its boot screen even if
not 'valid', which seems incredibly unintuitive.

This new behavior means a few things:
1) A boot to the default boot option (where SetBootLogo(NULL) is never
   called) will result in Windows displaying the OEM logo.
2) Any other boot (via boot manager, second boot option, etc) will
   result in Windows displaying its own logo. Honestly, this is much
   better from a user experience, since it will be obvious that
   something "non-default" is happening to the system.

Signed-off-by: Andrei Warkentin <[email protected]>

commit 0520f839bd523f82652ae137a84acd96fca4ef58
Author: Andrei Warkentin [email protected]
Date: Sat Apr 21 22:57:53 2018 -0400

BdsDxe: allow PlatformBootManagerWaitCallback to handle remaining timeout == 0

- Properly finish drawing 100% bar.
- Special platform behavior when timeout expires.

Signed-off-by: Andrei Warkentin <[email protected]>

commit 1caf37e9d2f86e9fc5fb1e40e77be128559d6c7d
Author: Andrei Warkentin [email protected]
Date: Sun Apr 1 02:58:31 2018 -0400

BaseTools/tools_def: support ASLC files on AArch64

These weren't being built correctly.

Signed-off-by: Andrei Warkentin <[email protected]>

commit b83e72f2c0179099072231a03dcf15709a99cc2e
Author: Andrei Warkentin [email protected]
Date: Thu Feb 22 18:28:32 2018 -0500

UefiBootManagerLib: don't add duplicates in EfiBootManagerRefreshAllBootOption

EfiBootManagerRefreshAllBootOption used to consider exactly
identical boot options as being duplicates, but it's
good enough to match on just type and device path, to account
for boot options added by the PlatformBootManagerLib.

Signed-off-by: Andrei Warkentin <[email protected]>

commit 4fda6335285661457731b31f98cba66609f4abe8
Author: Andrey Warkentin [email protected]
Date: Thu Dec 14 23:41:53 2017 -0500

MmcDxe: fix invalid HC_MMC_CSD_GET_DEVICESIZE computation

This made a 64GB SDXC card look twice as small, and if
a partition fills the entire card, then UEFI will
ignore it, considering it to be beyond the card's end.

Signed-off-by: Andrey Warkentin <[email protected]>

commit 989f7a2cf0e27123fda5ca538b15832e115e0f4e
Author: cinnamon shia [email protected]
Date: Fri May 11 23:21:12 2018 +0800

MdeModulePkg Variable: Fix the returned status in UpdateVariableStore

If Fvb is a NULL, return EFI_UNSUPPORTED.
If the remaining size is not enough, return EFI_OUT_OF_RESOURCES.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: cinnamon shia <[email protected]>
Signed-off-by: Ansen Huang <[email protected]>
Reviewed-by: Star Zeng <[email protected]>

Cannot boot on USB hard disk

I made a FAT32 partition and an NTFS partition in USB hard disk, and then I placed UEFI files in FAT32 partition and flashed Windows 10 ARM64 to NTFS partition,and I also made EFI boot on FAT32 partition. When I plugged hard disk to rpi 3b+ and powered it on, I got a rainbow screen and it won't boot. How can I deal with this problem?

UEFI wont boot at all.

I am trying to boot WoA and the uefi wont boot at all. All that happens is the red light on the pi turns on but nothing else

Arasan debug build fails, release do build.

Building ... /mnt/f/src/RaspberryPiPkg/Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe.inf [AARCH64]
"aarch64-linux-gnu-gcc" -g -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=ArasanMMCHostStrings -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common -mlittle-endian -mstrict-align -mgeneral-regs-only -mfix-cortex-a53-835769 -mfix-cortex-a53-843419 -fno-short-enums -fverbose-asm -funsigned-char -ffunction-sections -fdata-sections -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-pic -fno-pie -ffixed-x18 -O0 -mcmodel=small -DBUILD_DATE=05/09/2018 -DBUILD_COMMIT=current -c -o /mnt/f/src/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC49/AARCH64/RaspberryPiPkg/Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe/OUTPUT/./ArasanMmcHostDxe.obj -I/mnt/f/src/RaspberryPiPkg/Drivers/ArasanMmcHostDxe -I/mnt/f/src/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC49/AARCH64/RaspberryPiPkg/Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe/DEBUG -I/mnt/f/src/edk2/MdePkg -I/mnt/f/src/edk2/MdePkg/Include -I/mnt/f/src/edk2/MdePkg/Include/AArch64 -I/mnt/f/src/edk2/EmbeddedPkg -I/mnt/f/src/edk2/EmbeddedPkg/Include -I/mnt/f/src/RaspberryPiPkg -I/mnt/f/src/RaspberryPiPkg/Include /mnt/f/src/RaspberryPiPkg/Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe.c
In file included from /mnt/f/src/RaspberryPiPkg/Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe.h:22:0,
"aarch64-linux-gnu-gcc" -g -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=MmcDxeStrings -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common -mlittle-endian -mstrict-align -mgeneral-regs-only -mfix-cortex-a53-835769 -mfix-cortex-a53-843419 -fno-short-enums -fverbose-asm -funsigned-char -ffunction-sections -fdata-sections -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-pic -fno-pie -ffixed-x18 -O0 -mcmodel=small -DBUILD_DATE=05/09/2018 -DBUILD_COMMIT=current -c -o /mnt/f/src/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC49/AARCH64/EmbeddedPkg/Universal/MmcDxe/MmcDxe/OUTPUT/./MmcBlockIo.obj -I/mnt/f/src/edk2/EmbeddedPkg/Universal/MmcDxe -I/mnt/f/src/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC49/AARCH64/EmbeddedPkg/Universal/MmcDxe/MmcDxe/DEBUG -I/mnt/f/src/edk2/EmbeddedPkg -I/mnt/f/src/edk2/EmbeddedPkg/Include -I/mnt/f/src/edk2/MdePkg -I/mnt/f/src/edk2/MdePkg/Include -I/mnt/f/src/edk2/MdePkg/Include/AArch64 /mnt/f/src/edk2/EmbeddedPkg/Universal/MmcDxe/MmcBlockIo.c
from /mnt/f/src/RaspberryPiPkg/Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe.c:18:
/mnt/f/src/RaspberryPiPkg/Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe.c: In function ‘MMCSendCommand’:
/mnt/f/src/edk2/MdePkg/Include/Library/DebugLib.h:268:9: error: ‘MmcStatus’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
DebugPrint (PrintLevel, ##VA_ARGS);
GNUmakefile:474: recipe for target '/mnt/f/src/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC49/AARCH64/RaspberryPiPkg/Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe/OUTPUT/ArasanMmcHostDxe.obj' failed
^~~~~~~~~~
/mnt/f/src/RaspberryPiPkg/Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe.c:293:9: note: ‘MmcStatus’ was declared here
UINTN MmcStatus;
^~~~~~~~~
cc1: all warnings being treated as errors
make: *** [/mnt/f/src/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC49/AARCH64/RaspberryPiPkg/Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe/OUTPUT/ArasanMmcHostDxe.obj] Error 1

build.py...
: error 7000: Failed to execute command
make tbuild [/mnt/f/src/Build/RaspberryPiPkg-AARCH64/DEBUG_GCC49/AARCH64/RaspberryPiPkg/Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe]

build.py...
: error F002: Failed to build module
/mnt/f/src/RaspberryPiPkg/Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe.inf [AARCH64, GCC49, DEBUG]

  • Failed -
    Build end time: 15:55:02, Jul.02 2018
    Build total time: 00:05:00

Stuck at the rainbow screen

Hello. I tried installing it on my Raspberry Pi 3. 1st try I downloaded everything latest from github and got bluescreen INACCESSIBLE BOOT DEVICE.

Second time I used exact version as on video (https://www.youtube.com/watch?v=c0VqVm8X_zQ)
And now stuck on the rainbow screen (https://lifehacker.com/what-the-raspberry-pis-rainbow-boot-screen-and-rainbow-1768470271, I have no other way to describe it)

Edit: Tried 3rd time with latest versions and same result as try 2

Sorry for my noob question and thanks!

Very Slow Clock Ticks

It looks like the timer countdown in grub is very slow after being booted by this build of Tianocore. It takes 2-3 seconds to tick down by 1 second on the boot menu screen.

[Proposal] Redistribute Installed iso/virtualdisk of latest release

Instead of installing Windows for every new build (which takes 5 hours) can you also supply a Image of a finished installation?

That way we can just clone that iso or vhd to the SD Card and direcly use it.

Alternatively if there is a technicality why this is impossible, the installing process can be automated.
If a automatic installer is needed I can supply one, but I need to hear from Authors first if option A is possible.

Booting UEFI on Qemu?

Has anyone managed to get this to work? I am trying to find out how to get a display on the latest Qemu-System-Aarch64 and machine type Raspi3:

qemu-system-aarch64 -M raspi3 -m 1G -kernel kernel8.img

I tried adding a 100 MB FAT32 disk image with the UEFI files from May 13th, but something seems fundamentally wrong; I just get a black screen regardless of what I try to boot up in Qemu when emulating the pi3 machine type.

Power Problem.

I found a problem, when shutdown the system or command "init 0" , system will stoped .
It's looks like system level has shutdown ,but soon a later system will be auto start, I don't know why , may be it's a issue.

SMBIOS Type 0 Version String

"Built: " __DATE__, // BiosReleaseDate String

Per SMBIOS specification, this string should be mm/dd/yyyy:

String number of the BIOS release date. The date string, if supplied, is in either mm/dd/yy or mm/dd/yyyy format. If the year portion of the string is two digits, the year is assumed to be 19yy.
NOTE: The mm/dd/yyyy format is required for SMBIOS version 2.3 and later.

Otherwise Windows prints some weird things, like BIOS Release 1/1/1601 (the minimum value in Windows time structure).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.