Board:kontron/986lcd-m: Difference between revisions

From coreboot
Jump to navigation Jump to search
(Photos.)
(22 intermediate revisions by 3 users not shown)
Line 5: Line 5:


This page describes how to use coreboot on the '''[http://de.kontron.com/products/boards+and+mezzanines/embedded+motherboards/miniitx+motherboards/986lcdmmitx.html Kontron 986LCD-M/mITX]''' mainboard. It is maintained by [[User:Uwe|Uwe Hermann]].
This page describes how to use coreboot on the '''[http://de.kontron.com/products/boards+and+mezzanines/embedded+motherboards/miniitx+motherboards/986lcdmmitx.html Kontron 986LCD-M/mITX]''' mainboard. It is maintained by [[User:Uwe|Uwe Hermann]].
The mainboard's [http://emea.kontron.com/_etc/scripts/download/getdownload.php?downloadId=NTYzMA== manual] (PDF) is available from the [http://de.kontron.com/products/boards+and+mezzanines/embedded+motherboards/miniitx+motherboards/986lcdmmitx.html vendor website] (together with various other documents).
A sample boot log from this board is available [http://www.coreboot.org/pipermail/coreboot/attachments/20090704/643270ec/attachment-0002.bin in the mailing list archive].


== Status ==
== Status ==
Line 21: Line 25:
|CPU_multicore_comments = Both cores show up in '''/proc/cpuinfo'''.
|CPU_multicore_comments = Both cores show up in '''/proc/cpuinfo'''.
|CPU_virt_status = Untested
|CPU_virt_status = Untested
|CPU_virt_comments = Hardware virtualization is [http://www.intel.com/products/processor_number/chart/core2duo.htm not supported by this CPU]. Doing '''modprobe kvm-intel''' yields '''kvm: no hardware support''' (coreboot + vendor BIOS).
|CPU_virt_comments = Hardware virtualization is [http://www.intel.com/products/processor_number/chart/core2duo.htm not supported by this CPU] ('''modprobe kvm-intel''' fails on coreboot + vendor BIOS).


|RAM_EDO_status = N/A
|RAM_EDO_status = N/A
Line 28: Line 32:
|RAM_DDR_status = N/A
|RAM_DDR_status = N/A
|RAM_DDR2_status = OK
|RAM_DDR2_status = OK
|RAM_DDR2_comments = Works fine, but currently you need to populate both RAM slots with DIMMs (of the same size?).
|RAM_DDR2_comments = Works fine, but currently you need to populate both RAM slots with DIMMs of the same size (and reasonably similar timing probably: The controller has to operate in Dual Channel mode for now).
|RAM_DDR3_status = N/A
|RAM_DDR3_status = N/A
|RAM_dualchannel_status = N/A
|RAM_dualchannel_status = OK
|RAM_ecc_status = ?
|RAM_dualchannel_comments = Works fine according to '''memtest86+''' (Tested: 2x 1GB DIMMs, interleaved mode).
|RAM_ecc_status = N/A


|IDE_status = OK
|IDE_status = OK
|IDE_25_status = N/A
|IDE_25_status = N/A
|SATA_status = OK
|SATA_status = OK
|SATA_comments = Tested: SATA disk ('''hda1''' in [[FILO]], '''/dev/sda1''' in Linux), but you currently have to use '''pci=noacpi'''.
|SATA_comments = Tested: SATA disk ('''(hd0,0)''' / '''hda1''' in [[FILO]], '''/dev/sda1''' in Linux).
|USB_status = OK
|USB_status = OK
|USB_comments = Tested: USB thumb drive in all 4 backpanel USB ports, as well as on the USB pin headers on the board ('''USB6_7''', see manual).
|USB_comments = Tested: USB thumb drive in all 4 backpanel USB ports, as well as on the USB pin headers on the board ('''USB6_7''', see manual).
|Onboard_VGA_status = OK
|Onboard_VGA_status = OK
|Onboard_VGA_comments = You need to prepend the VGA blob from the proprietary BIOS for this to work. Console works, X11 works (use the '''intel''' X.org driver).
|Onboard_VGA_comments = You need to prepend the VGA blob from the proprietary BIOS for this to work. Console works, X11 works (use the '''intel''' X.org driver).
|Onboard_ethernet_status = WIP
|Onboard_ethernet_status = OK
|Onboard_ethernet_comments = The '''eth1''' interface (in this case) works fine, but so far '''ifconfig -a''' only shows one of the three NICs (?)
|Onboard_ethernet_comments = All three NICs show up correctly in '''ifconfig -a''' and work fine.
|Onboard_audio_status = WIP
|Onboard_audio_status = OK
|Onboard_audio_comments = Doesn't seem to work, yet.
|Onboard_audio_comments = Works fine.
|Onboard_modem_status = N/A
|Onboard_modem_status = N/A
|Onboard_firewire_status = Untested
|Onboard_firewire_status = OK
|Onboard_firewire_comments = Seems to work fine (backpanel FireWire port), even with '''pci=noacpi'''. Tested using the '''eth1394''' module for IPv4-over-FireWire. The FireWire pinheader '''IEEE1394_1''' (see manual) is not yet well-tested.
|Smartcard_status = N/A
|Smartcard_status = N/A
|Onboard_CF_status = OK
|Onboard_CF_status = OK
Line 55: Line 61:
|ISA_cards_status = N/A
|ISA_cards_status = N/A
|AMR_cards_status = N/A
|AMR_cards_status = N/A
|Mini_PCI_cards_status = Untested
|PCIX_cards_status = N/A
|AGP_cards_status = N/A
|AGP_cards_status = N/A
|PCI_cards_status = WIP
|PCI_cards_status = OK
|PCI_cards_comments = Doesn't seem to work properly (at least not with '''pci=noacpi'''). A tested PCI NIC appears in '''ifconfig -a''' but does not work.
|PCI_cards_comments = Works fine, tested with a PCI network card.
|PCIE_x1_status = N/A
|PCIE_x1_status = OK
|PCIE_x1_comments = Works fine with PCIe x1 network card in x16 slot
|PCIE_x2_status = N/A
|PCIE_x2_status = N/A
|PCIE_x4_status = N/A
|PCIE_x4_status = N/A
|PCIE_x8_status = N/A
|PCIE_x8_status = N/A
|PCIE_x16_status = WIP
|PCIE_x16_status = OK
|PCIE_x16_comments =  Doesn't seem to work (at least not with '''pci=noacpi'''). A tested PCIe VGA card doesn't appear in '''lspci''',
|PCIE_x16_comments =  Works fine, tested with an Nvidia x16 graphics card
|PCIE_x32_status = N/A
|PCIE_x32_status = N/A
|HTX_status = N/A
|HTX_status = N/A


|Floppy_status = ?
|Floppy_status = N/A
|COM1_status = OK
|COM1_status = OK
|COM2_status = ?
|COM2_status = Untested
|COM2_comments = There are also COM3 and COM4 pin headers on this board.
|PP_status = OK
|PP_status = OK
|PP_comments = Doing '''modprobe ppdev''' works, but no further test were performed.
|PP_comments = Doing '''modprobe ppdev''' works, but no further test were performed. You probably need a special cable to connect to the onboard pin-header.
|PS2_keyboard_status = OK
|PS2_keyboard_status = OK
|PS2_mouse_status = OK
|PS2_mouse_status = OK
|Game_port_status = N/A
|Game_port_status = N/A
|IR_status = ?
|IR_status = Untested
|Speaker_status = OK
|Speaker_status = OK
|DiskOnChip_status = N/A
|DiskOnChip_status = N/A
Line 83: Line 93:
|Watchdog_status = OK
|Watchdog_status = OK
|Watchdog_comments = Not yet actually tested, but it seems to be found: '''iTCO_wdt: Found a ICH7 or ICH7R TCO device (Version=2, TCOBASE=0x0560)'''.
|Watchdog_comments = Not yet actually tested, but it seems to be found: '''iTCO_wdt: Found a ICH7 or ICH7R TCO device (Version=2, TCOBASE=0x0560)'''.
|SMBus_status = ?
|SMBus_status = Untested
|CAN_bus_status = N/A
|CAN_bus_status = N/A
|CPUfreq_status = WIP
|CPUfreq_status = WIP
|CPUfreq_comments = Needs ACPI. With '''pci=noacpi''' the '''cpufreq-info''' utility doesn't output anything useful. On vendor BIOS you can use '''p4-clockmod''' (discouraged) or '''acpi-cpufreq''' (iff you enabled the respective option in the BIOS menu).
|CPUfreq_comments = With '''pci=noacpi''' the '''cpufreq-info''' utility doesn't output anything useful. On vendor BIOS you can use '''p4-clockmod''' (discouraged) or '''acpi-cpufreq''' (iff you enabled the respective option in the BIOS menu). On coreboot with ACPI, you can '''modprobe p4-clockmod''' successfully (but not '''acpi-cpufreq'''), but it's unclear if it really works correctly.
|Powersave_status = N/A
|Powersave_status = N/A
|ACPI_status = WIP
|ACPI_status = OK
|ACPI_comments = There's a (partial?) ACPI implementation for this board, but it may need further testing/fixing.
|ACPI_comments =  
|Reboot_status = OK
|Reboot_status = OK
|Reboot_comments = Seems to work fine, even with '''pci=noacpi'''.
|Reboot_comments = Seems to work fine, even with '''pci=noacpi'''.
|Poweroff_status = WIP
|Poweroff_status = OK
|Poweroff_comments = Needs ACPI, thus won't work if you use '''pci=noacpi'''.
|Poweroff_comments = Works fine.
|LEDs_status = N/A
|LEDs_status = N/A
|HPET_status = OK
|HPET_status = OK
Line 99: Line 109:
|RNG_status = N/A
|RNG_status = N/A
|WakeOnModem_status = N/A
|WakeOnModem_status = N/A
|WakeOnLAN_status = Untested
|WakeOnLAN_status = OK
|WakeOnLAN_comments = The board supports WOL (tested with vendor BIOS using the '''wakeonlan''' utility).
|WakeOnLAN_comments = Works fine. Tested using the '''wakeonlan''' utility.
|WakeOnKeyboard_status = Untestede
|WakeOnKeyboard_status = Untested
|WakeOnKeyboard_comments = Works fine with vendor BIOS.
|WakeOnKeyboard_comments = Works fine with vendor BIOS.
|WakeOnMouse_status = N/A
|WakeOnMouse_status = N/A
|WakeOnMouse_comments = Doesn't seem to be supported (by the hardware / vendor BIOS), tested with a PS/2 mouse, as well as with a USB mouse.
|WakeOnMouse_comments = Doesn't seem to be supported (by the hardware / vendor BIOS), tested with a PS/2 mouse, as well as with a USB mouse.
|Flashrom_status = OK
|Flashrom_status = OK
|Flashrom_comments = Works fine, but you have to use '''-m kontron:986lcd-m''' when booted with the vendor BIOS (not needed when booted with coreboot).
|Flashrom_comments = Works fine, but you might need '''-m kontron:986lcd-m''' when booted with the vendor BIOS (not needed when booted with coreboot).


}}
}}


== Build tutorial ==
== Build tutorial (with onboard VGA) ==
 
$ '''svn co svn://coreboot.org/coreboot/trunk coreboot'''
$ '''cd coreboot'''
$ '''make menuconfig'''
 
In the payload menu change the settings like follows:
 
        Add a payload (An ELF executable payload)  --->
    (payload.elf) Payload path and filename
    [*] Use LZMA compression for payloads
 
 
To add a VGABIOS image to the CBFS image go to the VGA BIOS submenu and change the settings to the following:


$ svn co svn://coreboot.org/repos/trunk/coreboot-v2
    [*] Add a VGA BIOS image
$ cd coreboot-v2/targets
    (amipci_01.20) VGA BIOS path and filename
$ ./buildtarget kontron/986lcd-m
    (8086,27a2) VGA device PCI IDs
$ cd kontron/986lcd-m/kontron_986lcd_m


Now copy your [[Payloads|payload]] into the current directory and name it '''payload.elf'''. Then:
Now copy your [[Payloads|payload]] into the current directory and name it '''payload.elf'''. Then:
$ '''make'''
The resulting '''build/coreboot.rom''' is your coreboot ROM image you can flash using [[flashrom]].
=== Getting the VGABIOS image ===
Then, you have to obtain the VGA blob from the vendor BIOS. Thus, get the original vendor BIOS image using [[flashrom]]:
$ '''flashrom -r kontron.dd'''
You can list all components of the vendor BIOS via the [http://packages.debian.org/sid/amideco amideco] utility ('''apt-get install amideco''' on Debian systems):
$ '''amideco kontron.dd -l'''
-=AmiBIOSDeco, version 0.31e (Linux)=-
FileLength      : 100000 (1048576 bytes)
FileName        : kontron.dd
        AMIBIOS information:
Version        : 0800
Packed Data    : 693A0 (431008 bytes)
Start          : DF83C
Packed Offset  : DF83C
Offset          : 0
Released        : 07 June 2007
DirName        : kontron.---
+------------------------------------------------------------------------------+
| Class.Instance (Name)        Packed --->  Expanded      Compression  Offset |
+------------------------------------------------------------------------------+
    08 01 (        Interface)    00798 ( 01944) => 00798 ( 01944)      DF83Ch
    04 02 (    Setup Client)    05B6E ( 23406) => 09437 ( 37943)  +  D9CB8h
    0C 03 (          ROM-ID)    00008 ( 00008) => 00008 ( 00008)      D9C9Ch
    0E 04 (        OEM Logo)    0005D ( 00093) => 03E11 ( 15889)  +  D9C28h
    1A 05 (      Small Logo)    00532 ( 01330) => 026A2 ( 09890)  +  D96E0h
    18 06 (ADM (Display MGR))    017FD ( 06141) => 04245 ( 16965)  +  D7ECCh
    19 07 (        ADM Font)    0059C ( 01436) => 01304 ( 04868)  +  D791Ch
    1B 08 (            SLAB)    2FF20 (196384) => 65299 (414361)  +  A79E8h
    21 09 (    Multilanguage)    032A6 ( 12966) => 0723E ( 29246)  +  A472Ch
    20 10 (    PCI AddOn ROM)    09145 ( 37189) => 0EC00 ( 60416)  +  9B5D0h
    20 11 (    PCI AddOn ROM)    09681 ( 38529) => 10000 ( 65536)  +  91F38h
    20 12 (    PCI AddOn ROM)    06008 ( 24584) => 0A800 ( 43008)  +  8BF1Ch
    11 13 (    P6 Microcode)    00001 ( 00001) => 00005 ( 00005)  +  7DEF4h
    90 14 (  User-Defined ;))    021DE ( 08670) => 04200 ( 16896)  +  7BD00h
    2A 15 (        User ROM)    005F8 ( 01528) => 00C7A ( 03194)  +  7B6F4h
    2E 16 (        User ROM)    047B3 ( 18355) => 07800 ( 30720)  +  76F2Ch
    06 17 (        DMI Data)    00258 ( 00600) => 01024 ( 04132)  +  76CC0h
    80 18 (  User-Defined ;))    00044 ( 00068) => 00044 ( 00068)      76C68h
Total Sections  : 18
The next step is to extract all components:


  $ make -s
  $ '''amideco kontron.dd -x'''
-=AmiBIOSDeco, version 0.31e (Linux)=-
FileLength      : 100000 (1048576 bytes)
FileName        : kontron.dd
        AMIBIOS information:
Version        : 0800
Packed Data    : 693A0 (431008 bytes)
Start          : DF83C
Packed Offset  : DF83C
Offset          : 0
Released        : 07 June 2007
DirName        : kontron.---
+------------------------------------------------------------------------------+
| Class.Instance (Name)        Packed --->  Expanded      Compression  Offset |
+------------------------------------------------------------------------------+
Total Sections  : 18
The file we need is the 64KB VGA blob named '''amipci_01.20''':


The resulting '''coreboot.rom''' is your coreboot ROM image you can flash using [[flashrom]].
$ '''ls'''
amibody.04  amibody.0e  amibody.1a  amibody.2e    '''amipci_01.20'''
amibody.06  amibody.11  amibody.1b  amibody.80    amipci_02.20
amibody.08  amibody.18  amibody.21  amibody.90    kontron.dd
amibody.0c  amibody.19  amibody.2a  amipci_00.20


== Notes ==
== Notes ==


* If you use [[FILO]], SATA will probably be '''hda''' and '''hdb''', while '''hdc''' is the master drive of the IDE controller.
* If you use [[FILO]], SATA will probably be '''hda''' and '''hdb''', while '''hdc''' is the master drive of the IDE controller.
* Currently you have to use '''pci=noacpi''' on the kernel command line to make IDE and SATA work.
* If you experience kernel crashes (when building without onboard VGA support) try to blacklist the '''agpgart''' and '''intel_agp''' kernel modules.
* If you experience kernel crashes (when building without onboard VGA support) try to blacklist the '''agpgart''' and '''intel_agp''' kernel modules.
* TODO: Add notes for proper (onboard) VGA setup.
 
== Boot speed ==
 
This is a non-scientific, quick'n'dirty boot speed measurement using coreboot v2 (r4341) + FILO trunk (r98) and the vendor BIOS, where coreboot was configured with no serial output (loglevel 0).
 
{| border="0" style="font-size: smaller"
|- bgcolor="#6699ff"
! align="left" | BIOS
! align="left" | Power-up — GRUB
! align="left" | Power-up — Linux login prompt
 
|- bgcolor="#eeeeee"
| Vendor BIOS (boot from SATA disk)
| 13.1s
| 38.8
 
|- bgcolor="#eeeeee"
| coreboot (boot from SATA disk)
| 7.3s
| 37.9
 
|}
 
Although coreboot is ca. 6 seconds faster at the GRUB prompt, the "Loading initrd" part of the Linux kernel booting seems to take longer than on the vendor BIOS. This should be investigated.
 


{{PD-self}}
{{PD-self}}

Revision as of 08:21, 5 May 2010

Top
Side
Backpanel
Board and power supply

This page describes how to use coreboot on the Kontron 986LCD-M/mITX mainboard. It is maintained by Uwe Hermann.

The mainboard's manual (PDF) is available from the vendor website (together with various other documents).

A sample boot log from this board is available in the mailing list archive.

Status

Device/functionality Status Comments
CPU
CPU works OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Intel(R) Core(TM)2 CPU T5300 @ 1.73GHz (dual core)
L1 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK CPU: L1 I cache: 32K, L1 D cache: 32K
L2 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK L2 cache: 2048K
L3 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Multiple CPU support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Multi-core support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Both cores show up in /proc/cpuinfo.
Hardware virtualization OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested Hardware virtualization is not supported by this CPU (modprobe kvm-intel fails on coreboot + vendor BIOS).
RAM
EDO OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
SDRAM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
SO-DIMM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
DDR OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
DDR2 OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine, but currently you need to populate both RAM slots with DIMMs of the same size (and reasonably similar timing probably: The controller has to operate in Dual Channel mode for now).
DDR3 OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Dual channel support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine according to memtest86+ (Tested: 2x 1GB DIMMs, interleaved mode).
ECC support OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Hardware
On-board IDE 3.5" OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
On-board IDE 2.5" OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board SATA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested: SATA disk ((hd0,0) / hda1 in FILO, /dev/sda1 in Linux).
On-board SCSI OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested: USB thumb drive in all 4 backpanel USB ports, as well as on the USB pin headers on the board (USB6_7, see manual).
On-board VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK You need to prepend the VGA blob from the proprietary BIOS for this to work. Console works, X11 works (use the intel X.org driver).
On-board Ethernet OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK All three NICs show up correctly in ifconfig -a and work fine.
On-board Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine.
On-board Modem OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board FireWire OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Seems to work fine (backpanel FireWire port), even with pci=noacpi. Tested using the eth1394 module for IPv4-over-FireWire. The FireWire pinheader IEEE1394_1 (see manual) is not yet well-tested.
On-board Smartcard reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board CompactFlash OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK There's an onboard CompactFlash slot on the back-side of the board. FILO sees it as (hd2,0) / hdc1, Linux as /dev/sdb1.
On-board PCMCIA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Wifi OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board Bluetooth OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board SD card reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Add-on slots/cards
ISA add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Audio/Modem-Riser (AMR/CNR) cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine, tested with a PCI network card.
Mini-PCI add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Mini-PCI-Express add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
PCI-X add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
AGP graphics cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x1 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine with PCIe x1 network card in x16 slot
PCI Express x2 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x4 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x8 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PCI Express x16 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine, tested with an Nvidia x16 graphics card
PCI Express x32 add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
HTX add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Legacy / Super I/O
Floppy OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Serial port 1 (COM1) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Serial port 2 (COM2) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested There are also COM3 and COM4 pin headers on this board.
Parallel port OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Doing modprobe ppdev works, but no further test were performed. You probably need a special cable to connect to the onboard pin-header.
PS/2 keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
PS/2 mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Game port OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Infrared OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
PC speaker OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
DiskOnChip OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Input
Trackpoint OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Touchpad OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Fn Hotkeys OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Fingerprint Reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Laptop
Docking VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Docking Displayport OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Thinklight OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Webcam OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Miscellaneous
Sensors / fan control OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine using the w83627hf, coretemp (and also i2c-dev, i2c-i810, and eeprom) Linux kernel modules.
Hardware watchdog OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Not yet actually tested, but it seems to be found: iTCO_wdt: Found a ICH7 or ICH7R TCO device (Version=2, TCOBASE=0x0560).
SMBus OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
CAN bus OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
CPU frequency scaling OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP With pci=noacpi the cpufreq-info utility doesn't output anything useful. On vendor BIOS you can use p4-clockmod (discouraged) or acpi-cpufreq (iff you enabled the respective option in the BIOS menu). On coreboot with ACPI, you can modprobe p4-clockmod successfully (but not acpi-cpufreq), but it's unclear if it really works correctly.
Other powersaving features OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
ACPI OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Reboot OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Seems to work fine, even with pci=noacpi.
Poweroff OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine.
Suspend OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Nonstandard LEDs OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
High precision event timers (HPET) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK The HPET is detected by Linux (hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0) and powertop output suggests that it works ok.
Random number generator (RNG) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Wake on modem ring OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Wake on LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine. Tested using the wakeonlan utility.
Wake on keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested Works fine with vendor BIOS.
Wake on mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A Doesn't seem to be supported (by the hardware / vendor BIOS), tested with a PS/2 mouse, as well as with a USB mouse.
TPM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Flashrom OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Works fine, but you might need -m kontron:986lcd-m when booted with the vendor BIOS (not needed when booted with coreboot).

Build tutorial (with onboard VGA)

$ svn co svn://coreboot.org/coreboot/trunk coreboot
$ cd coreboot
$ make menuconfig

In the payload menu change the settings like follows:

       Add a payload (An ELF executable payload)  --->
   (payload.elf) Payload path and filename
   [*] Use LZMA compression for payloads


To add a VGABIOS image to the CBFS image go to the VGA BIOS submenu and change the settings to the following:

   [*] Add a VGA BIOS image
   (amipci_01.20) VGA BIOS path and filename
   (8086,27a2) VGA device PCI IDs

Now copy your payload into the current directory and name it payload.elf. Then:

$ make


The resulting build/coreboot.rom is your coreboot ROM image you can flash using flashrom.


Getting the VGABIOS image

Then, you have to obtain the VGA blob from the vendor BIOS. Thus, get the original vendor BIOS image using flashrom:

$ flashrom -r kontron.dd

You can list all components of the vendor BIOS via the amideco utility (apt-get install amideco on Debian systems):

$ amideco kontron.dd -l
-=AmiBIOSDeco, version 0.31e (Linux)=-

FileLength      : 100000 (1048576 bytes)
FileName        : kontron.dd

        AMIBIOS information:
Version         : 0800
Packed Data     : 693A0 (431008 bytes)
Start           : DF83C
Packed Offset   : DF83C
Offset          : 0
Released        : 07 June 2007
DirName         : kontron.---
+------------------------------------------------------------------------------+
| Class.Instance (Name)        Packed --->  Expanded      Compression   Offset |
+------------------------------------------------------------------------------+

   08 01 (        Interface)    00798 ( 01944) => 00798 ( 01944)      DF83Ch
   04 02 (     Setup Client)    05B6E ( 23406) => 09437 ( 37943)  +   D9CB8h
   0C 03 (           ROM-ID)    00008 ( 00008) => 00008 ( 00008)      D9C9Ch
   0E 04 (         OEM Logo)    0005D ( 00093) => 03E11 ( 15889)  +   D9C28h
   1A 05 (       Small Logo)    00532 ( 01330) => 026A2 ( 09890)  +   D96E0h
   18 06 (ADM (Display MGR))    017FD ( 06141) => 04245 ( 16965)  +   D7ECCh
   19 07 (         ADM Font)    0059C ( 01436) => 01304 ( 04868)  +   D791Ch
   1B 08 (             SLAB)    2FF20 (196384) => 65299 (414361)  +   A79E8h
   21 09 (    Multilanguage)    032A6 ( 12966) => 0723E ( 29246)  +   A472Ch
   20 10 (    PCI AddOn ROM)    09145 ( 37189) => 0EC00 ( 60416)  +   9B5D0h
   20 11 (    PCI AddOn ROM)    09681 ( 38529) => 10000 ( 65536)  +   91F38h
   20 12 (    PCI AddOn ROM)    06008 ( 24584) => 0A800 ( 43008)  +   8BF1Ch
   11 13 (     P6 Microcode)    00001 ( 00001) => 00005 ( 00005)  +   7DEF4h
   90 14 (  User-Defined ;))    021DE ( 08670) => 04200 ( 16896)  +   7BD00h
   2A 15 (         User ROM)    005F8 ( 01528) => 00C7A ( 03194)  +   7B6F4h
   2E 16 (         User ROM)    047B3 ( 18355) => 07800 ( 30720)  +   76F2Ch
   06 17 (         DMI Data)    00258 ( 00600) => 01024 ( 04132)  +   76CC0h
   80 18 (  User-Defined ;))    00044 ( 00068) => 00044 ( 00068)      76C68h
Total Sections  : 18

The next step is to extract all components:

$ amideco kontron.dd -x
-=AmiBIOSDeco, version 0.31e (Linux)=-

FileLength      : 100000 (1048576 bytes)
FileName        : kontron.dd

        AMIBIOS information:
Version         : 0800
Packed Data     : 693A0 (431008 bytes)
Start           : DF83C
Packed Offset   : DF83C
Offset          : 0
Released        : 07 June 2007
DirName         : kontron.---
+------------------------------------------------------------------------------+
| Class.Instance (Name)        Packed --->  Expanded      Compression   Offset |
+------------------------------------------------------------------------------+

Total Sections  : 18

The file we need is the 64KB VGA blob named amipci_01.20:

$ ls
amibody.04  amibody.0e  amibody.1a  amibody.2e    amipci_01.20
amibody.06  amibody.11  amibody.1b  amibody.80    amipci_02.20
amibody.08  amibody.18  amibody.21  amibody.90    kontron.dd
amibody.0c  amibody.19  amibody.2a  amipci_00.20

Notes

  • If you use FILO, SATA will probably be hda and hdb, while hdc is the master drive of the IDE controller.
  • If you experience kernel crashes (when building without onboard VGA support) try to blacklist the agpgart and intel_agp kernel modules.

Boot speed

This is a non-scientific, quick'n'dirty boot speed measurement using coreboot v2 (r4341) + FILO trunk (r98) and the vendor BIOS, where coreboot was configured with no serial output (loglevel 0).

BIOS Power-up — GRUB Power-up — Linux login prompt
Vendor BIOS (boot from SATA disk) 13.1s 38.8
coreboot (boot from SATA disk) 7.3s 37.9

Although coreboot is ca. 6 seconds faster at the GRUB prompt, the "Loading initrd" part of the Linux kernel booting seems to take longer than on the vendor BIOS. This should be investigated.


Public domain I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.

In case this is not legally possible:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.