From coreboot
Revision as of 18:09, 6 April 2013 by GNUtoo (talk | contribs) (Azalia)
Jump to: navigation, search

The wiki is being retired!

Documentation is now handled by the same processes we use for code: Add something to the Documentation/ directory in the coreboot repo, and it will be rendered to Contributions welcome!


Device/functionality Status Comments
CPU works OK Tested: AMD Athlon64 X2 250.
L1 cache enabled Untested Not tested yet (how to test?)
L2 cache enabled Untested Not tested yet (how to test?)
L3 cache enabled N/A
Multiple CPU support N/A
Multi-core support OK
Hardware virtualization OK KVM seem to work
DDR2 Untested
DDR3 OK 2G works, 4G(2 * 2G) works with lastest coreboot
Dual channel support Untested
ECC support Untested
On-board Hardware
On-board IDE 3.5" OK Tested: 500GB HDD
On-board IDE 2.5" N/A
On-board SATA OK Tested some ports, works fine
On-board SCSI N/A
On-board USB OK USB keyboard works
On-board VGA OK Tested:analog VGA and HDMI,dual screen.
On-board Ethernet OK
On-board Audio OK
On-board Modem N/A
On-board FireWire N/A
On-board Smartcard reader N/A
On-board CompactFlash N/A
On-board PCMCIA N/A
On-board Wifi N/A
On-board Bluetooth N/A
On-board SD card reader N/A
Add-on slots/cards
ISA add-on cards N/A
Audio/Modem-Riser (AMR/CNR) cards N/A
PCI add-on cards OK I've an ath9k wifi PCI card and it works.
Mini-PCI add-on cards N/A
Mini-PCI-Express add-on cards Unknown
PCI-X add-on cards N/A
AGP graphics cards N/A
PCI Express x1 add-on cards Untested
PCI Express x2 add-on cards N/A
PCI Express x4 add-on cards N/A
PCI Express x8 add-on cards N/A
PCI Express x16 add-on cards OK Tested with Nvidia card
PCI Express x32 add-on cards N/A
HTX add-on cards N/A
Legacy / Super I/O
Floppy N/A There is no floppy connector at all.
Serial port 1 (COM1) OK COM1 is only pin header on board. DB-9 serial connector is available, but not included with board.
Serial port 2 (COM2) N/A
Parallel port Untested No connector, pins on board only
PS/2 keyboard OK
PS/2 mouse Untested
Game port N/A
Infrared N/A
PC speaker Untested
DiskOnChip N/A
Trackpoint N/A
Touchpad N/A
Fn Hotkeys N/A
Fingerprint Reader N/A
Docking VGA N/A
Docking LAN N/A
Docking USB N/A
Docking Audio N/A
Docking Displayport N/A
Thinklight N/A
Webcam N/A
Sensors / fan control Untested
Hardware watchdog N/A
SMBus Unknown
CAN bus N/A
CPU frequency scaling OK works in GNU/Linux
Other powersaving features Untested
ACPI Untested
Reboot OK
Poweroff OK
Suspend Unknown
Nonstandard LEDs
High precision event timers (HPET)
Random number generator (RNG) Untested
Wake on modem ring Untested
Wake on LAN
Wake on keyboard Untested
Wake on mouse Untested
TPM Unknown
Flashrom OK The chip is SPI

proprietary components status

  • CPU Microcode (optional)
  • VGA option rom (optional): wihtout it you will get no graphics, Note that if you use an external graphic card, SeaBIOS will probably(depending on its configuration) load the option rom(that you don't have to touch) from the graphic card.


This pages is about the port to the M4A785T-M, this mainboard is very similar to the M4A785-M, but:

  • it has DDR3 instead of DDR2

Building the serial port adapter

You'll need to build a serial port adapter to get the coreboot logs during. Here's a picture of the serial port connector on the mainboard:
ASUS M4A785T-M serial connector witout serial adapter.jpeg
And here's the kind of cable you will need:
ASUS M4A785T-M serial connector with serial adapter.jpeg
And you'll need to build a cable similar to this one(on the picture the DB9 is connector is a male connector):
ASUS M4A785T-M serial cable.jpeg
Here's how it looks like on the mainboard:


Here's a table of corresponding pins:

Mainboard connector pin Mainboard pin Function Standard DE9 pin connector Standard DE9 pin Function Mandatory for coreboot
1 ? ? ? No
2 RX 3 TX Yes (you could do without but it's advised to get it, to be able to use certain functions of coreboot)
3 TX 2 RX Yes
4 4 DTR No
5 Ground 5 Ground Yes
6 ? ? ? No
7 7 RTS No
8 8 CTS No
9 ? ? ? No

Adapting GNU/Linux

Before booting with coreboot, do the following:

  • blacklist the snd-hda* modules (refer to the usual way to get help for the GNU/Linux distribution you want to run for doing that)
  • 32bit GNU/Linux trisquel distribution tested
  • 64bit GNU/Linux trisquel distribution failed to initialize the USB.

Building Coreboot

To build coreboot for this mainboard:

  • checkout coreboot revision d5c998be99709c92f200b3b08aed2ca3fee2d519
  • optionally apply the azalia patch below in the azalia section of this page.
  • select the stable revision of seabios for more anti-brick safety
  • Configure and Build it as usual(for having graphics you need to extract your VGA BIOS ROM from your BIOS)


  • Selecting the ASUS M4A77TD-PRO mainboard makes the serialICE shell appear once flashed(however running the BIOS under SerialICE fails at some point).


WARNING, This Howto is for SerialICE and not for coreboot, don't flash the resulting image unless you really know what you're doing...
git clone
cd serialice
make menuconfig
cd ../
cd qemu-0.15.x
ln -s ../SerialICE/simba/*.lua ./

Add the following to asus_m4a77td_pro.lua:

microcode_patchlevel_eax = 0x010000b7

function do_mainboard_setup()
	enable_hook(cpumsr_hooks, filter_amd_microcode)


It fails like that(it inits the 2 cores and we have 1 core(qemu)):

[fffc06a:0c0f] e25f.e260   LAPIC: [00000380] <= 00000000
[fffc06a:1321] e26b.e26d   PCI: 0:18.0 [60] => 00010000
[fffc06a:12e3] e273.e275   PCI: 0:18.3 [e8] => 00075f79
[fffc06a:1397] e27e.e27f   CPUID: eax: 00000001; ecx: 0000001b => 00100f62.00020800.00802009.178bfbff
[fffc06a:1321] e290.e292   PCI: 0:18.3 [e8] => 00075f79
[fffc06a:1397] e297.e298   CPUID: eax: 00000001; ecx: 0000001b => 00100f62.00020800.00802009.178bfbff
[fffc06a:121e] e2a5.e2a6   CPUID: eax: 80000001; ecx: 0000001b => 00100f62.10001b26.000037ff.efd3fbff
[fffc06a:12ff] e2bb.e2bc   CPUID: eax: 80000008; ecx: 0000001b => 00003030.00000000.00002001.00000000
[fffc06a:130c] e2bf.e2c0   CPU MSR: [c001001f] => 00584000.00000008
[fffc06a:131d] e2c4.e2c5   CPU MSR: [c001001f] <= 00584000.00000008
[fffc06a:131d] e2cf.e2d1   PCI: 0:18.3 [90] => 00000000
[fffc06a:1348] e2dc.e2dd   CPUID: eax: 80000008; ecx: 0000001b => 00003030.00000000.00002001.00000000
[fffc06a:135d] e2e2.e2e3   CPU MSR: [c001001f] <= 00584000.00000008
[fffc06a:0b7d] e2f2.e2f3   CPU MSR: [0000001b] => 00000000.fee00900
[fffc06a:0b7d] e2f4.e2f5   LAPIC: [00000020] => 00000000
[fffc06a:127a] e2f9.e2fa   CPUID: eax: 00000001; ecx: 0000001b => 00100f62.00020800.00802009.178bfbff
[fffc06a:1289] e2f9.e2fb   CPUID: eax: 80000008; ecx: 00802009 => 00003030.00000000.00002001.00000000
[fffc06a:1057] e302.e304   PCI: 0:18.0 [68] => 004fac0f
[fffc06a:1071] e30d.e30f   PCI: 0:18.0 [68] <= 004fac2f
Readback error! 30/72
Readback error! a/63
Readback error! 72/30
Readback error! 3e/30
Readback error! 20/30
Readback error! 63/30
Readback error! 66/30
Readback error! 45/30
Readback error! a/31
Readback error! 52/62
Readback error! 3e/2e
Readback error! 52/66
Readback error! 20/66
Readback error! 4f/66
Readback error! 30/65
Readback error! 52/62
Readback error! a/30
Readback error! a/30
Readback error! 3e/30
[fffc06a:0c50] e31d.e31e   CPU MSR: [0000001b] => 00000000.00000000




  • Add defaults for the nvram settings.
  • find a clean way to merge the patch for the PCIe graphic card.
  • fix the Audio CODEC(it's the same than the x60 and it works on the x60)
  • handle suspend to ram
  • lock SMM/SMI
  • make it possible to run the BIOS under serialICE
  • 64bit support