Dell OptiPlex 9020 SFF/MT (and 7020), and XE2 MT/SFF

Return to index

NOTE: Dell XE2 MT/SFF are also known to work, using the 9020 images. Same motherboards as the 9020 and 7020.


Dell OptiPlex 9020 Dell OptiPlex 9020
Dell OptiPlex 9020 Dell OptiPlex 9020
Dell OptiPlex 9020 Dell OptiPlex 9020
Manufacturer Dell
Name OptiPlex 9020 SFF/MT
Variants OptiPlex 9020 SFF/MT
Chipset Intel Q87 Express
CPU Intel Haswell
Graphics Intel HD Graphics
Memory DDR3 DIMMs (max 32GB, 4x8GB)
Architecture x86_64
Original boot firmware Dell UEFI firmware
Intel ME/AMD PSP Present. Can be disabled with me_cleaner.
Flash chip 2x SOIC-8, 12MiB (8+4) (96Mbit)
W+: Works without blobs; 
N: Doesn't work; 
W*: Works with blobs; 
U: Untested; 
P+: Partially works; 
P*: Partially works with blobs
Internal flashing with original boot firmware ?
Display (if Intel GPU) W+
Display (discrete CPU, SeaBIOS payload only) W*
Audio W+
RAM Init W+
Payloads supported
GRUB (libgfxinit only) Works
SeaBIOS Works
SeaBIOS with GRUB Works


Unavailable in Libreboot 20240126 or earlier. You must compile from source, or use a version newer than Libreboot 20240126

Official information about the laptop can be found here:

Buy Libreboot preinstalled

You can buy this machine professionally serviced, with Libreboot preinstalled and your choice of Linux/BSD system. Many upgrades are also available. See:

Sales are conducted to provide funding for the Libreboot project. Leah Rowe who runs Minifree, is also Libreboot’s founder and lead developer.


Mate Kukri is the author of the original coreboot port. Thanks go to Kukri. Kukri’s patch is here:

This patch, at this revision (patchset 31), is what Libreboot uses for this port.

QUBES: how to get it working

Qubes requires IOMMU to be turned on. Please now read the next section. Qubes WILL work, if you configure Libreboot as directed below, but otherwise it will fail by default. This is because Libreboot disables the IOMMU by default, on this board.

Graphics cards and IOMMU

IOMMU is buggy for some reason (we don’t know why yet), when you plug in a graphics card. The graphics card simply won’t work. On some of them, you can use the console but as soon as you start xorg, it will just b0rk.

Current Libreboot revisions disable IOMMU by default, on this board. The coreboot code for initialising IOMMU was modified by the Libreboot project, to make it a toggle. IOMMU works fine if you use only Intel graphics.

The way coreboot works is this: if vt-d is present on the CPU, it enables an IOMMU, and only if vt-d is present. This is still the behaviour in Libreboot, but Libreboot adds an additional check: if iommu is not set in nvram, it defaults to on, but if it’s set to disabled, then IOMMU is not initialised.

On all other Haswell boards, LIbreboot enables IOMMU by default. To enable it on the 9020, do this on your ROM:

nvramtool -C libreboot.rom -w iommu=Enable

Then flash the ROM image. You can find nvram under src/coreboot/default/util/nvramtool. Do this in lbmk if you don’t already havse src/coreboot/default/:

./update trees -f coreboot default

Then do this:

make -C src/coreboot/default/util/nvramtool

The binary nvramtool will then live in that directory. More information available in Libreboot build instructions. Information about dumping/flashing the ROM can be found in Libreboot flashing instructions and Libreboot external flashing instructions.

NOTE: If IOMMU is enabled, you can still use a graphics card, but you must pass this on the Linux cmdline paramaters: iommu=off

NOTE2: Libreboot uses a static option table on all boards that have nvram, which is why you must use the -C option on your ROM, to change the static table that is baked into it.

On current lbmk master, graphics cards do work. The option to hide PEG devices from MRC was disabled. Now when you insert a graphics card, the onboard Intel GPU is disabled and the graphics card is used instead.

Here is an example of the type of errors we got when testing graphics cards with IOMMU enabled:

We believe the native MRC replacement may work better on graphics card with IOMMU turned on. This will be enabled in a future Libreboot release, if not already supported.

7020 compatibility

7020/9020 MT each have the same motherboard. Flash the 9020 ROM from Libreboot on your 7020, and it will work.

Ditto 7020/9020 SFF, it’s the same motherboard. However, Libreboot provides separate targets for MT and SFF.

Build ROM image from source

For the MT variant (7020 MT and 9020 SFF):

./build roms dell9020mt_12mb

For the SFF variant (7020 MT and 7020 SFF):

./build roms dell9020sff_12mb

It is important that you choose the right one. The MT variant is the full MTX tower.


Insert binary files

If you’re using a release ROM, please ensure that you’ve inserted extra firmware required refer to the guide for that. (failure to adhere to this advice will result in a bricked machine)

Libreboot’s build system automatically downloads and processes these files if you build Libreboot from source, but the same logic that it uses must be re-run if you’re using a release image.

Set MAC address

This platform uses an Intel Flash Descriptor, and defines an Intel GbE NVM region. As such, release/build ROMs will contain the same MAC address. To change the MAC address, please read nvmutil documentation.

Flash a ROM image (software)

If you’re already running Libreboot, and you don’t have flash protection turned on, internal flashing is possible.

Flash a ROM image (hardware)

REMOVE all power sources and connectors from the machine, before doing this. This is to prevent short circuiting and power surges while flashing.

For general information, please refer to 25xx NOR flash instructions - that page refers to use of socketed flash.

There are two SOIC-8 chips. You can split up your 12MB ROM image like so:

dd if=libreboot.rom of=4mb.rom bs=1M skip=8
dd if=libreboot.rom of=8mb.rom bs=1M count=8

The side cover comes off easily, and you can find the flash ICs next to the RAM.

Here’s the SOIC8 ICs being flashed:

SOIC8 flash IC on 9020 SFF SOIC8 flash IC on 9020 SFF


Markdown file for this page:

Subscribe to RSS for this site

Site map

This HTML page was generated by the Untitled Static Site Generator.