Unofficial (Simplified) Libreboot Documentation
  • Home
  • Building from source/
  • External SPI flashing/
  • Freedom in Libreboot/
  • Maintainance manual/
  • Operating systems/
  • Payloads/
  • Releases/
  • Targets/
    • ARM Chromebooks/
    • Emulation/
    • Other/
    • X86/
      • AMD pitfalls
      • Boards/
        • Acer G43T-AM3
        • ASUS KCMA-D8 Desktop/Workstation
        • ASUS KFSN4-DRE Server/Workstation
        • ASUS KGPE-D16 Server/Workstation
        • Dell Latitude flashing
        • Dell Latitude thermal throttling
        • Dell OptiPlex 3050 Micro
        • Dell OptiPlex 7010/9010 MT
        • Dell OptiPlex 7010/9010 SFF
        • Dell OptiPlex 7020/9020 SFF/MT, and XE2 MT/SFF
        • Dell OptiPlex 780 MT/USFF
        • Dell Precision T1650
        • Gigabyte GA-G41M-ES2L Desktop
        • HP Compaq Elite 8300 USDT
        • HP Elite 8200 SFF/MT and 6200 Pro Business
        • HP EliteBook 2170p
        • HP EliteBook 2560p
        • HP EliteBook 2570p
        • HP EliteBook 820 G2
        • HP EliteBook 8460p
        • HP EliteBook 8470p
        • HP EliteBook 8560w
        • HP EliteBook Folio 9470m
        • Intel D510MO/D410PT
        • Intel D945GCLF Desktop
        • MacBook 1,1 and 2,1
        • ThinkPad R400
        • ThinkPad T400 external flashing
        • ThinkPad T420 external flashing
        • ThinkPad T440p external flashing
        • ThinkPad T480/T480s
        • ThinkPad T500 external flashing
        • ThinkPad T60 recovery guide
        • ThinkPad W541/W540 external flashing
        • ThinkPad X200 first-time flashing
        • ThinkPad X220/X220T
        • ThinkPad X230/X230T external flashing
        • ThinkPad X60 recovery
        • ThinkPad X60 Tablet recovery
        • ThinkPad X60/X60T/T60 internal flashing
      • Changing the MAC address
      • Disabling /dev/mem protections
      • Disabling Intel Boot Guard on MEv11
      • EC firmware updates
      • Generic internal flashing
      • Insert vendor files
      • Intel pitfalls
      • Ivybridge internal flashing
      • Microcode
      • nvmutil import
      • nvmutil manual
  • UNCATEGORIZED/
Site license: GFDL v1.3 with disclaimer

Dell OptiPlex 780 MT/USFF

Libreboot is compatible with the Dell OptiPlex 780, of variants: MT and USFF. SFF and DT may be supported in a future revision. These instructions are identical both the MT and USFF variants.

Dell OptiPlex 780
Specifications
Manufacturer Dell
Name OptiPlex 780
Variants OptiPlex 780 MT, OptiPlex 780 USFF
Released 2009
Chipset Intel X4X
CPU Core 2 Duo (e.g. E8400)
Graphics Discrete graphics card, or Intel HD Graphics model
Memory DDR3 DIMMs (max 16GB on MT 4x4GB, 8GB USFF 2x4GB)
Architecture x86_64
Original boot firmware Dell UEFI firmware
Intel ME/AMD PSP Present. Entire ME firmware can be removed.
Flash chip SOIC-16 and/or SOIC-8 8MiB (64Mbit)
W+: Works without vendor firmware; 
N: Doesn't work; 
W*: Works with vendor firmware; 
U: Untested; 
P+: Partially works; 
P*: Partially works with vendor firmware
?: UNKNOWN AT THIS TIME
Features
Internal flashing with original boot firmware W+
Display (if Intel GPU) W+
Display (discrete GPU, SeaBIOS payload only) W*
Audio W+
RAM Init W+
Payloads supported
GRUB (libgfxinit only) Works
SeaBIOS Works
SeaBIOS with GRUB Works
## Introduction

Processor specification

Build ROM image from source

The build target, when building from source, is thus:

./mk -b coreboot dell780mt_truncate_8mb
./mk -b coreboot dell780mt_8mb
./mk -b coreboot dell780usff_truncate_8mb
./mk -b coreboot dell780usff_8mb

The _truncate image is needed if you’re flashing Libreboot internally from the original Dell firmware. Otherwise, you only need the regular images that lack _truncate in the file name.

100% FREE

This motherboard is entirely free software in the main boot flash. It is using the Intel X4X / ICH10 platform, same as on the already supported Gigabyte GA-G41M-ES2L motherboard.

Installation

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.

WARNING about CPU/GPU compatibility

Coreboot has libre initialisation code for Intel graphics, but libre initialisation code is not available for most graphics cards. This machine can take any graphics card that fits in the PCI-E slot. When a graphics card is used, SeaBIOS executes its VGA ROM which provides video init, instead of coreboot’s native Intel video init. GRUB piggybacks off of what SeaBIOS did, so the GRUB payload will also work.

Flash a ROM image (software)

Always make sure to dump a copy of the current flash first. ALSO: make sure /dev/mem protection is disabled for the flashing to work!

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

If you have factory firmware (Dell), you can short the service jumper. It’s a 2-pin header located somewhere on the board (no photos available yet).

With the service jumper set, all flash protections are disabled on the first 6MB of the flash; the latter 2MB part is restricted. Because we are using an Intel Flash Descriptor on this board, the flash will be divided into these parts:

  • Intel Flash Descriptor (basic machine configuration)
  • Intel Gigabit Ethernet region (e.g. MAC address configuration)
  • BIOS region (contains coreboot)

Before you can use the flash commands, please note that the _truncate images are 6MB in size, but they must be padded to 8MB. Normally a blank part of flash should ideally be all 0xFF, but here we do:

dd if=/dev/zero of=2mb.bin bs=2M count=1
cat libreboot6mb.rom 2mb.bin > libreboot.rom

If you’re not using the truncate images, you can ignore the above steps.

The Flash Descriptor can be thought of more like a partition table for the flash, at least in our use-case scenario. The _truncate images configure the flash such that only the first 6MB is used, with the BIOS region ending at that limit; the upper 2MB is specified as the platform data region, in Libreboot’s configuration. To flash it, do this:

./flashprog -p internal --ifd -i fd -w libreboot.rom
./flashprog -p internal --ifd -i gbe -w libreboot.rom
./flashprog -p internal --ifd -i bios -w libreboot.rom

It’s very important to do this in the exact order as above, because the --ifd option references the flashed IFD, not the one in your image, so you must flash the IFD first.

If you already have Libreboot running, and you don’t have flash protection enabled, you can omit --ifd -i REGION from the flashprog command, and flash the full image; the one without _truncate in the file name uses all of the flash, with the BIOS region ending at the 8MB limit, so the BIOS region is therefore 2MB larger on those images.

Flash a ROM image (hardware)

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

No photos yet available.