Difference between revisions of "Intel Sandybridge Build Tutorial"

From coreboot
Jump to: navigation, search
(Get binary blobs)
(Configure Coreboot)
Line 79: Line 79:
In menu ''General Setup'':
In menu ''General Setup'':
  Set "Set CMOS for configuration values"
  Set "Set CMOS for configuration values"
Allows nvramtool to access CMOS configuration from running system.
In menu ''Mainboard'':
In menu ''Mainboard'':

Revision as of 07:50, 21 April 2016

Step by Step Tutorial How to flash coreboot onto Lenovo T520. Flashing coreboot on supported Intel SandyBridge / Ivybridge system is very similar to this one. Steps that need to be changed are marked as those.


  • Check the board status
  • Setup toolchain
  • Get binary blobs
  • Configure coreboot
  • Build coreboot
  • Flash coreboot
  • Recovery and Debugging

For more information have a look at Build_HOWTO

Get binary blobs

Coreboot needs some binary blobs. Here's a list of blobs required: Binary_situation

I'm going to use:

  • Intel Management Engine (ME)
  • Intel Flash descriptor (IFD)
  • Intel Gigabit Engine (GBE)
  • Nvidia VGA Option ROM


Warning: Remove all batteries and unplug the power connector. You have to make sure to supply enough current through the programmer.

The Beaglebone Black onboard voltage regulator doesn't supply enough current. Using an external power supply may be required.

Some flash chips can't be programmed while soldered, as the southbridge is powered, too, and communicates with the flash.

The T520 flash IC can be programmed in circuit.

Reading the flash IC

I used the TIAO USB board to access the flash. You need a flashrom version supporting the "tumpa" programmer. Of course you can read the flash using the Raspberry or BeagleBone, too. To read the flash chip using tumpa programmer:

flashrom -p ft2232_spi:type=tumpa,port=A,divisor=4 -r T520.bin

To read the flash chip using raspberry pi:

flashrom -p linux_spi:dev=/dev/spidev0.0 -r T520.bin

Extract the binary blobs from the raw flash image:

cd ./util/ifdtool
./ifdtool -x T520.bin

The following files will show up:

  • flashregion_0_flashdescriptor.bin
  • flashregion_1_bios.bin
  • flashregion_2_intel_me.bin
  • flashregion_3_gbe.bin

flashregion_0_flashdescriptor.bin, flashregion_2_intel_me.bin and flashregion_3_gbe.bin are blobs and can be used by coreboot without modification.

Nvidia Option ROM

If you want to extract the VGA Option Rom have a look at VGA_support. The stock firmware is an UEFI image. Using UEFIExtract from UEFITool the two following files can be found:

The Nvidia Option ROM GUID is:


The Intel Option ROM GUID is:


Check with romheaders that you got a valid Option Rom !

Configure Coreboot


make menuconfig

In menu General Setup:

Set "Set CMOS for configuration values"

Allows nvramtool to access CMOS configuration from running system.

In menu Mainboard:

Set "Mainboard Vendor" to "Lenovo"
Set "Mainboard model" to "T520"

For other boards choose your settings here !

In menu Chipset:

Set "Add Intel descriptor.bin file" to "flashregion_0_flashdescriptor.bin"
Set "Add Intel ME firmware" to "flashregion_2_intel_me.bin"
Set "Add Gigabite Ethernet firmware" to "flashregion_3_gbe.bin"

In menu Devices:

Set "Use native graphics initialization"
Warning: "native graphics initialization" is only supported on Intel mobile GPUs using LVDS and remove the need to run the Option Rom to get graphics output.

In case you want to run VGA Option Rom add it using:

Set "Add a VGA BIOS image" to the VGA Option ROM file

In menu Payloads:

Set "Include generated option rom that implements legacy VGA BIOS"

Save the new config



Flashing coreboot


1. Extract the flash layout using ifdtool

./util/ifdtool/ifdtool -f T520.layout T520.bin

It creates a file looking like that:

00000000:00000fff fd
00500000:007fffff bios
00003000:004fffff me
00001000:00002fff gbe
00fff000:00000fff pd
00fff000:00ffffff res1
00fff000:00ffffff res2
00fff000:00ffffff res3
00000000:00ffffff ec

2. Remove "disabled" regions: Remove all regions that are disabled or invalid as flashrom can't ignore them, here:

pd, res1, res2, res3, ec

The new file will look like this:

00000000:00000fff fd
00500000:007fffff bios
00003000:004fffff me
00001000:00002fff gbe

3. Connect an external programmer to your flash IC and run the flashrom command to override only the BIOS flash region, leaving IFD, ME, and GBE where it is.

flashrom -p ft2232_spi:type=tumpa,port=A,divisor=4 -l ./T520.layout -i bios -w ./build/coreboot.rom

Overwriting the whole flash

In case you bricked something or you want to replace the ME blob you have to write the whole flash IC. In this case there's no need for a layout file. The command to write the coreboot image is:

 flashrom -p ft2232_spi:type=tumpa,port=A,divisor=4 -w ./build/coreboot.rom
Warning: Sandybridge Chipsets need a matching ME blob and IFD ! The board won't boot at all if one of them is invalid.

Recovery and Debugging