Windows 8.1 Industry Pro <> Customize or replace UEFI firmware? RRS feed

  • Question

  • We usually replace the BIOS on our machines and now that we are up on Windows 8.1 Industry Pro and later OSs we are looking to do something similar.  This article looks good.  I wonder though if it applies to a Windows 8/10 system as well.  Thoughts?

    We want to replace the splash screen and allow our devices extra hardware resources, save boot time, prevent users access to the settings in a release build but in a development build have full access to the settings.

    Getting the software

    To go on with UEFI development, you will need two development packages: <dfn>EFI Development Kit</dfn> (<abbr>EDK</abbr>) and <dfn>EFI Toolkit</dfn>.

    First package, the EFI Development Kit contains the TianoCore (public part of reference UEFI implementation by Intel) source code, along with many examples and binaries of EFI Shell (we'll talk about this later), all ready to be built with nice make system. It even can be built into a Win32 UEFI emulator for more convinient development and testing, but I won't cover that here. I also won't demonstrate usage of EDK build system in this article. Even though it might be a good idea for real world project, I want to give you bit more insight about what goes "under the hood" here.

    Second package, the EFI Toolkit is set of extra UEFI applications like FTP client, Python port, text editor, etc. Strictly speaking, we don't really need this, but it has a set of C headers that is somewhat easier to use than those of EDK (unless you take advantage of EDK build system for your project). However, note that it doesn't contain all headers yet - you will quickly run into this problem if you try some real development with it.

    Along with headers, you also will need documentation of the UEFI interface. That can be downloaded after filling simple form at This is the official <dfn>UEFI specification</dfn>.

    Except for UEFI specification, there is also another document called <dfn>Platform Initialization Specification</dfn>. This describes implementation of UEFI initialization stages (before drivers are loaded and applications can be executed), and more importantly for us, it also describes interface of routines used to implement UEFI. We can understand this Platform Initialization Specification as description of Tiano UEFI implementation. It provides more lowlevel control than UEFI, in cases when such control is needed. Strictly speaking, someone may implement UEFI Specification without implementing anything from Platform Initialization Specification, but that's not very likely to happen in real world.

    Last but not least, you will need 64-bit C compiler. I suggest Microsoft Visual C++, whose 64-bit version is freely available in Windows DDK. You can get it here.

    Friday, September 4, 2015 8:35 PM

All replies

  • This is talking about build the UEFI firmware. Do you actually build the BIOS / firmware yourselves?

    I have played with UEFI when doing some research work on Linux. It can be a little involved.

    Sean Liming - Book Author: Starter Guide SIM (WEI), Pro Guide to WE8S & WES 7, Pro Guide to POS for .NET - /

    Saturday, September 5, 2015 2:47 AM
  • We do build the BIOS ourselves.  Hoping to write the firmware as well.
    Tuesday, September 8, 2015 5:13 PM