Board:kontron/986lcd-m
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 https://doc.coreboot.org/. Contributions welcome!
![](/images/thumb/7/72/Kontron_986lcd_m_mitx_top.jpg/300px-Kontron_986lcd_m_mitx_top.jpg)
![](/images/thumb/d/d4/Kontron_986lcd_m_mitx_side.jpg/300px-Kontron_986lcd_m_mitx_side.jpg)
![](/images/thumb/c/c1/Kontron_986lcd_m_mitx_backpanel.jpg/300px-Kontron_986lcd_m_mitx_backpanel.jpg)
![](/images/thumb/b/b0/Kontron_986lcd_m_mitx_with_power_supply.jpg/300px-Kontron_986lcd_m_mitx_with_power_supply.jpg)
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).
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 }}" | Unknown | |||||||
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 }}" | N/A | |||||||
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 }}" | WIP | Doesn't seem to work, yet. A PCIe graphics card doesn't appear in lspci, | ||||||
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 | There is an ACPI implementation for this board which seems to work, but not much of it has been tested, yet. | ||||||
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 (without onboard VGA)
$ svn co svn://coreboot.org/repos/trunk/coreboot-v2 $ cd coreboot-v2/targets $ ./buildtarget kontron/986lcd-m $ cd kontron/986lcd-m/kontron_986lcd_m
Now copy your payload into the current directory and name it payload.elf. Then:
$ make -s
The resulting coreboot.rom is your coreboot ROM image you can flash using flashrom.
Build tutorial (with onboard VGA)
$ svn co svn://coreboot.org/repos/trunk/coreboot-v2 $ cd coreboot-v2/targets
In order to use on-board VGA you have to use the VGA blob from the vendor BIOS, and modify the coreboot config files a bit. Edit src/mainboard/kontron/986lcd-m/Config.lb in the section starting with chip drivers/pci/onboard. Depending on whether you use a 1 MB, 512 KB, or 256 KB ROM chip, you'll have to set the correct rom_address value:
chip drivers/pci/onboard device pci 02.0 on end # vga controller # register "rom_address" = "0xfffc0000" # 256 KB image # register "rom_address" = "0xfff80000" # 512 KB image register "rom_address" = "0xfff00000" # 1 MB image end
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
In order to use onboard VGA you further need to edit targets/kontron/986lcd-m/Config.lb. Comment out the line
option ROM_SIZE = 1024 * 1024
and enable the line
option ROM_SIZE = (1024 * 1024) - (64 * 1024)
instead (we're assuming a 1 MB ROM chip here, change that if you use another size). This will leave 64 KB room in the coreboot ROM image. We can now build coreboot as usual:
$ ./buildtarget kontron/986lcd-m $ cd kontron/986lcd-m/kontron_986lcd_m
Now copy your payload into the current directory and name it payload.elf. Then:
$ make -s
Finally, prepend the 64 KB VGA blob to the coreboot image:
$ cat amipci_01.20 coreboot.rom > coreboot_final.rom
The resulting coreboot_final.rom is your coreboot ROM image you can flash using flashrom.
Notes
- 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.
![]() |
I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.
In case this is not legally possible: |