Board:lenovo/x60: Difference between revisions

From coreboot
Jump to navigation Jump to search
 
(115 intermediate revisions by 5 users not shown)
Line 1: Line 1:
works fine with Linux, some ACPI issues with Windows needs to be fixed.
Coreboot supports all variants of the ThinkPad X60 Series. (X60, X60s, X60 Tablet).
 
Aside from pre-sales configuration (display, processor speed, optional components) it looks like every X60 variant uses the same motherboard schematic.
 
== Status ==
 
* Some ACPI issues with Windows needs to be fixed.
* Works well with GNU/Linux.
* The Wacom Digitizer now works on the X60 Tablet.


= Lenovo ThinkPad X60 =
Except where noted all status items apply to:
*x60
*x60s
*x60 tablet
Aside from pre-sales configuration (display, processor speed, optional components) the three models appear identical. It is believed that they share a single schematic.
==Installation and Flashing==
==Installation and Flashing==
Tutorial on Installation and flashing the x60 or t60:


'''Which used to be the main x60 page:
Follow the tutorial below to install Coreboot on the ThinkPad X60 Series.
'''
 
  [[Board:lenovo/x60/Installation]]
  [[Board:lenovo/x60/Installation]]
== Wifi chipsets ==
Lenovo BIOS has a whitelist of approved PCI ID's for wifi cards. Coreboot does not, so you are free to use any wifi chipset of your choosing once coreboot is installed.
The [http://libreboot.org/ Libreboot] distribution [http://libreboot.org/docs/hcl/index.html#recommended_wifi lists Wifi chipsets not needing proprietary software to work].
== Status ==
== Status ==
{{Status|
{{Status|
Line 22: Line 30:
|CPU_L3_status = N/A
|CPU_L3_status = N/A
|CPU_virt_status = OK
|CPU_virt_status = OK
|CPU_virt_comments = Has [https://en.wikipedia.org/wiki/Intel_VT-X#Intel_virtualization_.28VT-x.29 Intel VT-x]
|CPU_multicore_status = OK
|CPU_multicore_status = OK
|CPU_multiple_status = N/A
|CPU_multiple_status = N/A
Line 39: Line 48:
|Onboard_VGA_status = OK
|Onboard_VGA_status = OK
|Onboard_ethernet_status = OK
|Onboard_ethernet_status = OK
|Onboard_ethernet_comments = Intel 82573L
|Onboard_ethernet_comments = [[Intel_82573_Ethernet_controller|Intel 82573L]]
|Onboard_audio_status = OK
|Onboard_audio_status = OK
|Onboard_modem_status = Untested
|Onboard_modem_status = Untested
|Onboard_firewire_status = N/A
|Onboard_firewire_status = OK
|Onboard_firewire_comments = Tested with a DV camera and dvgrab
|Smartcard_status = N/A
|Smartcard_status = N/A
|Onboard_PCMCIA_status = OK
|Onboard_PCMCIA_status = OK
Line 48: Line 58:
|Onboard_SCSI_status = N/A
|Onboard_SCSI_status = N/A
|Onboard_CF_status = N/A
|Onboard_CF_status = N/A
|Onboard_SD_status = OK
|Onboard_SD_comments = Works in GNU/Linux but fails to boot form it in SeaBIOS


|ISA_cards_status = N/A
|ISA_cards_status = N/A
|AMR_cards_status = N/A
|AMR_cards_status = N/A
|Mini_PCI_cards_status = OK
|Mini_PCI_cards_status = N/A
|Mini_PCI_Express_cards_status = OK
|PCIX_cards_status = N/A
|PCIX_cards_status = N/A
|PCI_cards_status = N/A
|PCI_cards_status = N/A
Line 68: Line 81:
|COM1_comments = located in Ultrabase X6
|COM1_comments = located in Ultrabase X6
|COM2_status = N/A
|COM2_status = N/A
|PP_status = N/A
|PP_status_comments = located in Ultrabase X6
|PS2_keyboard_status = N/A
|PS2_keyboard_status = N/A
|PS2_mouse_status = N/A
|PS2_mouse_status = N/A
|Game_port_status = N/A
|Game_port_status = N/A
|IR_status = WIP
|IR_status = WIP
|IR_comments = [http://review.coreboot.org/#/c/5242/ Submited for review]
|Speaker_status = N/A
|Speaker_status = N/A
|DiskOnChip_status = N/A
|DiskOnChip_status = N/A
|Trackpoint_status = OK
|Touchpad_status = N/A
|FnHotkeys_status = OK
|Fingerprint_status = Unknown
|Docking_VGA_status = OK
|Docking_LAN_status = OK
|Docking_USB_status = OK
|Docking_Audio_status = OK
|Docking_Displayport = N/A
|Thinklight_status = OK


|Sensors_status = OK
|Sensors_status = OK
|Watchdog_status = N/A
|Sensors_comments = Without the microcode, some laptops have the following warning in linux's dmesg: "coretemp: Errata AE18 not fixed, update BIOS or microcode of the CPU!"
|Watchdog_status = Unknown
|Watchdog_comments = iTCO_wdt compatible watchdog
|CAN_bus_status = N/A
|CAN_bus_status = N/A
|CPUfreq_status = OK
|CPUfreq_status = OK
Line 90: Line 118:
|HPET_status = OK
|HPET_status = OK
|RNG_status = N/A
|RNG_status = N/A
|TPM_status = WIP
|Flashrom_status = OK
|Flashrom_status = OK
|Flashrom_comments = See [[Lenovo_x60x]]
|Flashrom_comments = See [[Lenovo_x60x]]
Line 97: Line 126:
|- bgcolor="#6699ff"
|- bgcolor="#6699ff"
| colspan ="9" | '''Laptop specific'''
| colspan ="9" | '''Laptop specific'''
{{Statusitem|Name=Tablet Touchscreen|Status={{{COM5_status|WIP}}}|Comments={{{COM5_comments|x60 tablet wacom "penabled"}}}}}
{{Statusitem|Name=Tablet Touchscreen|Status={{{COM5_status|OK}}}|Comments={{{COM5_comments|x60 tablet wacom "penabled"}}}}}
{{Statusitem|Name=thinkpad_acpi module compatibility|Status={{{thinkpad_acpi_status|OK}}}|Comments={{{thinkpad_acpi_comments|modprobe thinkpad_acpi works}}}}}
|}<includeonly>[[Category:Tutorials]]</includeonly><noinclude>
|}<includeonly>[[Category:Tutorials]]</includeonly><noinclude>


== Digitizer (X60 Tablet) and IR ports ==
== proprietary components (replacement) status ==
[http://www.thinkwiki.org/wiki/Wacom_Serial_Tablet_PC_Stylus the touchscreen/pen] do not work as coreboot does not expose the internal COM port to which it is attached:  
=== CPU Microcode (optional) ===
*Serial: irq 5 port 0x0200
It can work fine without it
[http://forum.bongofish.co.uk/index.php?topic=2307.0 Some additional info from a x61t wacom]
 
See [http://download.intel.com/design/mobile/SPECUPDT/30922214.pdf http://download.intel.com/design/mobile/SPECUPDT/30922214.pdf] for more details
 
=== VGA option rom (optional) ===
The non-free VGA option rom is not needed as it can be replaced by the native VGA intialisation.
 
To have a compatible free software VGA option rom, you can use SeaBIOS with SeaVGABIOS (coreboot linear framebuffer option in seabios menuconfig). It is however not as complete as the non-free option rom as it still lacks some functionality (INT 10H and VBT).
 
=== EC (Embedded Controller) ===
On this laptop, the Embedded Controller is chip that handles:
* The keyboard and its function keys
* Battery charging
* The Thinklight
* powering up the laptop
* and other similar things.
 
It has its own non-free firmware already flashed inside the chip and so it doesn't need a host computer to load it.
 
== Building the ROM without proprietary blobs ==
 
This basically means:
* No microcode updates
* Native graphics (replacement for the proprietary Video BIOS / VGA Option ROM)
* GRUB2 payload


Support for digitizer (and IrDA) has been written and [http://review.coreboot.org/#/c/5242/ submitted for review]
In this configuration, only GNU/Linux is known to work. If you plan to use other operating systems, you might be out of luck.


== proprietary components status ==
Download coreboot like usual:
* CPU Microcode (optional?) - works fine without. See [http://download.intel.com/design/mobile/SPECUPDT/30922214.pdf http://download.intel.com/design/mobile/SPECUPDT/30922214.pdf]
<pre>
* VGA option rom (optional): without it you will get no graphics during early boot, old kernel versions(like the one in trisquel 6) are able to initializes the intel graphic card. Note that the replacement doesn't work yet with seabios but works with grub(as a payload) or libpayload based payloads.
git clone http://review.coreboot.org/coreboot
* EC(Embedded Controller) =>  you do not have to touch it(just leave it where it is)
cd coreboot
</pre>
At the time of writing for (for these instructions), the following git revision was used:
<pre>
git reset --hard 8ffc085e1affaabbe3dca8ac6a89346b71dfc02e
</pre>
Install all of the coreboot build dependencies listed at [http://www.coreboot.org/Build_HOWTO Build_HOWTO] and then build the crossgcc toolchain:
<pre>
make crossgcc-i386
</pre>
Apply the following patches in this order:
<pre>
# Text mode patch for X60 native graphics (main patch already merged in coreboot. See 6723 on coreboot gerrit)
git fetch http://review.coreboot.org/coreboot refs/changes/25/6725/3 && git cherry-pick FETCH_HEAD


== TODO ==
# Permanently enable wlan/wwan/bluetooth/trackpoint
=== Non-free components replacements ===
git fetch http://review.coreboot.org/coreboot refs/changes/58/7058/3 && git cherry-pick FETCH_HEAD
* <s>Replace the non-free VGA option rom by making native graphics init work.</s> submited for review.
* Create a Native graphics<->VGA option rom. '''SeaVGABIOS (part of SeaBIOS) might be the answer. We need to look into that.'''
* <s>Make backlight work without the non-free option rom.</s> See [http://www.coreboot.org/Board:lenovo/x60#Enable_backlight_controls_on_X60_.28with_native_gpu_init_instead_of_VGA_ROM.29]
==== VGA Option ROM / VBIOS replacement (native graphics) ====
The [[VGA_support|VGA option ROM]] is proprietary. If you have an X60,X60s or X60t, GNUtoo (et al) has developed a free replacement which is under review, but you can use it right now:
* [http://www.coreboot.org/User:Fchmmr HOWTO: Build coreboot.rom with GRUB2, native graphics (free replacement for the proprietary VBIOS / VGA Option ROM) and without the nonfree microcode]


Note: obsolete. See notes about backlight (Fn key) controls instead, includes native gfx init.
# If you want legacy brightness controls (if using this, make sure not to include the ACPI brightness patch below):
git fetch http://review.coreboot.org/coreboot refs/changes/48/7048/4 && git cherry-pick FETCH_HEAD


==== Problems in native graphics code exposed by recent kernels ====
# OR if you want ACPI brightness controls (if using this, make sure not to include the legacy brightness patch above):
It was discovered that while this code seems to work fine on kernels older than linux 3.12.
git fetch http://review.coreboot.org/coreboot refs/changes/31/6731/7 && git cherry-pick FETCH_HEAD
# Fix uneven backlight levels (for ACPI brightness controls):
git fetch http://review.coreboot.org/coreboot refs/changes/49/7049/1 && git cherry-pick FETCH_HEAD


On 3.12 and later kernels the i915 driver became unstable. Causing broken/glitchy 3D. and performance bugs.
# ACPI brightness patches above were abandoned due to Windows incompatibility. If you only want to use GNU/Linux, then it should work fine.
</pre>


The current suspicion is that linux had a bug which caused it to miss stolen memory altogether on this machine and hence disable parts of code.
Now you will want this basic configuration for X60/X60s (in '''make menuconfig'''):
This bug was corrected in:
<pre>
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=17fec8a08698bcab98788e1e89f5b8e7502ababd 17fec8a08698bcab98788e1e89f5b8e7502ababd]
    General setup / Expert mode = enable
    General setup / Local version string = 7BETC7WW (2.08 )
    Mainboard / Mainboard vendor = Lenovo
    Mainboard / Mainboard model = ThinkPad X60 / X60s / X60t
    Mainboard / ROM chip size = 2048 KB (2 MB)
    Mainboard / SMBIOS Serial Number = L3BH242
    Mainboard / SMBIOS Version Number = ThinkPad X60s
    Mainboard / SMBIOS Manufacturer = LENOVO
    Mainboard / SMBIOS Product name = 1702L8G
    Chipset / Include CPU microcode in CBFS = Do not include microcode updates
    Devices / Use native graphics initialization = enable
    Display / Keep VESA framebuffer = disable (disable for text-mode graphics, enable for coreboot vesa framebuffer)
    Generic Drivers / Digitizer = Autodetect
    Console / Send console output to a CBMEM buffer = enable
    Payload / Add a payload = An ELF executable payload
    Payload / Payload path and filename = grub.elf


Which was identified by git bisect, to be the cause of the driver crashes using native vga on the x60.
Now go back into Devices:


The native vga init code in coreboot needs to be corrected to have more engineered memory management.
    Devices / Run VGA Option ROMs = disable
In the interim users have attempted running patched linux 3.12 kernels which revert commit 17fec. To apparent success.
    Devices / Run Option ROMs on PCI devices = disable
</pre>


== Enable backlight controls on X60 (with native gpu init instead of VGA ROM) ==
Alternatively for X60 Tablet; it's the same as above, but with these differences:
<pre>
    General setup / Local version string = 7JET23WW (1.08 )
    Mainboard / SMBIOS Serial Number = L3B8281
    Mainboard / SMBIOS Version Number = ThinkPad X60 Tablet
    Mainboard / SMBIOS Product name = 6364WJ1
    Generic Drivers / Digitizer = Present
</pre>


[http://libreboot.org/howto.html#x60_native_notes http://libreboot.org/howto.html#x60_native_notes]
SMBIOS values were taken by running '''dmidecode''' with the factory BIOS.


Note, the above assumes that you already built your grub.elf from source along with everything that you need. Building GRUB is not covered here.


=== Other things ===
Put your grub.elf in the coreboot directory and then run '''make'''. Alternatively, you could go back into menuconfig and select coreboot's own GRUB payload config, which will automatically download and build the GRUB payload. Building it yourself can be more flexible, though, since you get to choose what modules you want and you can use your own configs.
Battery indictor in various DE's can be unreliable. (showing 50% available for instance, when fully charged). Using command line tools can show a spike in power consumption reported when disconnecting AC.


* Add support for more batteries in ACPI.
== TODO ==
* Make the wifi card and/or the laptop produce less heat.
=== Non-free components replacements ===
* Finish and merge support for thinkpad_acpi linux kernel module
* Improve native GPU initialization and/or SeaVGABIOS (part of SeaBIOS): INT 10H and VBT are missing in native graphics.
* Sometimes some dock USB port aren't initialized => fix that
* Fix that warning:
[  14.566817] ACPI Warning: 0x00000400-0x0000041f SystemIO conflicts with Region \_SB_.PCI0.SBUS.SMBI 1 (20130117/utaddress-251)
By using that advise:
<phcoder> GNUtoo-x60: in this case it looks like same range is declared twice in DSDT/SSDT


== Features ==
=== Windows currently doesn't boot (STOP A5 error) ===
=== nvramtool ===
Without the VGA optiorn rom nvramtool says:
# ./nvramtool -a
nvramtool: coreboot table not found.  coreboot does not appear to
        be installed on this system.  Scanning for the table produced the
        following results:
            0 valid signatures were found with bad header checksums.
            0 valid headers were found with bad table checksums.
Fortunately there is a workarround:
# ./nvramtool -y ../../src/mainboard/lenovo/x60/cmos.layout -a
boot_option = Fallback
last_boot = Fallback
baud_rate = 115200
debug_level = Emergency
hyper_threading = Enable
nmi = Disable
# Bad value -> boot_devices
boot_default = 0x40
cmos_defaults_loaded = Yes
lpt = Disable
volume = 0xc
tft_brightness = 0xf
first_battery = Primary
bluetooth = Disable
=== cbmem console ===


<strike>To get cbmem console working you need the non-free i915 option rom or native graphics(doesn't work yet, don't use)</strike> :fixed in master
Windows 7 was tested and fails to boot at the moment.


==== Howto ====
The native graphics implementation lacks INT 10H and VBT, and GRUB cannot boot it. Booting with SeaBIOS+SeaVGABIOS results in graphical corruption (and no boot).
When configuring coreboot with "make menuconfig"
Go in console:
Console  --->
Enable it:
[*] Send console output to a CBMEM buffer
(0x20000) Room allocated for console output in CBMEM
(0xc00) Room allocated for console output in Cache as RAM


=== thinkpad_acpi compatibility ===
Booting with SeaBIOS and the VGA ROM (vbios) can be used to boot it, but booting ends with the message outlined here: [http://paste.debian.net/plain/122557 STOP A5]
The following commit might be interesting to cherry-pick:
git fetch http://review.coreboot.org/coreboot refs/changes/03/3403/3 && git cherry-pick FETCH_HEAD


Dmidecode from the BIOS says:
More information can be found [http://www.coreboot.org/ACPI#STOP_0xa5 here]
BIOS Information
Vendor: LENOVO
Version: 7BETC7WW (2.08 )
So in make menuconfig go in
General setup  --->
And modify Local version string accordinly
(7BETC7WW (2.08 )) Local version string


Then locate the following in dmidecode:
=== Other things ===
System Information
* Make the wifi card and/or the laptop produce less heat (Is that concern still valid?)..
Manufacturer: LENOVO
* Sometimes some dock USB port aren't initialized (Is that concern still valid?).
Product Name: 1707Y8W
* Fix that warning:  
Version: ThinkPad X60
[  14.566817] ACPI Warning: 0x00000400-0x0000041f SystemIO conflicts with Region \_SB_.PCI0.SBUS.SMBI 1 (20130117/utaddress-251)
Serial Number: L3BY949
By using that advise:
Then in
  <phcoder> GNUtoo-x60: in this case it looks like same range is declared twice in DSDT/SSDT
Mainboard  --->
* The TPM isn't recognized automatically by GNU/Linux distributions. An old patch for that is on gerrit. It has to be rebased and possibly adapted.
do that:
* IRDA: Preliminary work for that is on gerrit.
  (L3BY949) Serial number
(ThinkPad X60) Version number
(LENOVO) BIOS table vendor string
(ThinkPad X60 / X60s) BIOS table part number string
Then configure and build coreboot as usual


<s>To modprobe the module use that:
== Hardware documentation ==
modprobe thinkpad_acpi force_load=1 debug=0xffff fan_control=1 experimental=1
* The touchscreen serial port is on irq 5 at port 0x0200. [http://forum.bongofish.co.uk/index.php?topic=2307.0 Some additional info from a x61t wacom]
</s>
The module should now load automatically...

Latest revision as of 11:28, 5 July 2017

Coreboot supports all variants of the ThinkPad X60 Series. (X60, X60s, X60 Tablet).

Aside from pre-sales configuration (display, processor speed, optional components) it looks like every X60 variant uses the same motherboard schematic.

Status

  • Some ACPI issues with Windows needs to be fixed.
  • Works well with GNU/Linux.
  • The Wacom Digitizer now works on the X60 Tablet.

Installation and Flashing

Follow the tutorial below to install Coreboot on the ThinkPad X60 Series.

Board:lenovo/x60/Installation

Wifi chipsets

Lenovo BIOS has a whitelist of approved PCI ID's for wifi cards. Coreboot does not, so you are free to use any wifi chipset of your choosing once coreboot is installed.

The Libreboot distribution lists Wifi chipsets not needing proprietary software to work.

Status

Device/functionality Status Comments
CPU
CPU works OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Core Duo Mobile (L2300), PBGA479
L1 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
L2 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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
Hardware virtualization OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Has Intel VT-x
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
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
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 }}" | N/A
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
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
On-board VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
On-board Ethernet OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Intel 82573L
On-board Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
On-board Modem OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
On-board FireWire OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Tested with a DV camera and dvgrab
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 }}" | N/A
On-board PCMCIA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Ricoh rl5c476
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 }}" | OK Works in GNU/Linux but fails to boot form it in SeaBIOS
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 }}" | N/A
Mini-PCI add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Mini-PCI-Express add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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 }}" | 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 }}" | N/A
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 located in Ultrabase X6
Serial port 2 (COM2) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Parallel port OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
PS/2 keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
PS/2 mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
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 }}" | WIP Submited for review
PC speaker OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
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 }}" | OK
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 }}" | OK
Fingerprint Reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Laptop
Docking VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Docking LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Docking USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Docking Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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 }}" | OK
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 Without the microcode, some laptops have the following warning in linux's dmesg: "coretemp: Errata AE18 not fixed, update BIOS or microcode of the CPU!"
Hardware watchdog OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown iTCO_wdt compatible watchdog
SMBus OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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 }}" | OK
Other powersaving features OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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
Poweroff OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Suspend OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Nonstandard LEDs OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK LEDs are controlled by Embedded Controller (EC). Working without special support.
High precision event timers (HPET) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | 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 }}" | Unknown
Wake on LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Wake on keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
Wake on mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Unknown
TPM OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | WIP
Flashrom OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK See Lenovo_x60x
Laptop specific
Tablet Touchscreen OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK x60 tablet wacom "penabled"
thinkpad_acpi module compatibility OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK modprobe thinkpad_acpi works

proprietary components (replacement) status

CPU Microcode (optional)

It can work fine without it

See http://download.intel.com/design/mobile/SPECUPDT/30922214.pdf for more details

VGA option rom (optional)

The non-free VGA option rom is not needed as it can be replaced by the native VGA intialisation.

To have a compatible free software VGA option rom, you can use SeaBIOS with SeaVGABIOS (coreboot linear framebuffer option in seabios menuconfig). It is however not as complete as the non-free option rom as it still lacks some functionality (INT 10H and VBT).

EC (Embedded Controller)

On this laptop, the Embedded Controller is chip that handles:

  • The keyboard and its function keys
  • Battery charging
  • The Thinklight
  • powering up the laptop
  • and other similar things.

It has its own non-free firmware already flashed inside the chip and so it doesn't need a host computer to load it.

Building the ROM without proprietary blobs

This basically means:

  • No microcode updates
  • Native graphics (replacement for the proprietary Video BIOS / VGA Option ROM)
  • GRUB2 payload

In this configuration, only GNU/Linux is known to work. If you plan to use other operating systems, you might be out of luck.

Download coreboot like usual:

git clone http://review.coreboot.org/coreboot
cd coreboot

At the time of writing for (for these instructions), the following git revision was used:

git reset --hard 8ffc085e1affaabbe3dca8ac6a89346b71dfc02e

Install all of the coreboot build dependencies listed at Build_HOWTO and then build the crossgcc toolchain:

make crossgcc-i386

Apply the following patches in this order:

# Text mode patch for X60 native graphics (main patch already merged in coreboot. See 6723 on coreboot gerrit)
git fetch http://review.coreboot.org/coreboot refs/changes/25/6725/3 && git cherry-pick FETCH_HEAD

# Permanently enable wlan/wwan/bluetooth/trackpoint
git fetch http://review.coreboot.org/coreboot refs/changes/58/7058/3 && git cherry-pick FETCH_HEAD

# If you want legacy brightness controls (if using this, make sure not to include the ACPI brightness patch below):
git fetch http://review.coreboot.org/coreboot refs/changes/48/7048/4 && git cherry-pick FETCH_HEAD

# OR if you want ACPI brightness controls (if using this, make sure not to include the legacy brightness patch above):
git fetch http://review.coreboot.org/coreboot refs/changes/31/6731/7 && git cherry-pick FETCH_HEAD
# Fix uneven backlight levels (for ACPI brightness controls):
git fetch http://review.coreboot.org/coreboot refs/changes/49/7049/1 && git cherry-pick FETCH_HEAD

# ACPI brightness patches above were abandoned due to Windows incompatibility. If you only want to use GNU/Linux, then it should work fine.

Now you will want this basic configuration for X60/X60s (in make menuconfig):

    General setup / Expert mode = enable
    General setup / Local version string = 7BETC7WW (2.08 )
    Mainboard / Mainboard vendor = Lenovo
    Mainboard / Mainboard model = ThinkPad X60 / X60s / X60t
    Mainboard / ROM chip size = 2048 KB (2 MB)
    Mainboard / SMBIOS Serial Number = L3BH242
    Mainboard / SMBIOS Version Number = ThinkPad X60s
    Mainboard / SMBIOS Manufacturer = LENOVO
    Mainboard / SMBIOS Product name = 1702L8G
    Chipset / Include CPU microcode in CBFS = Do not include microcode updates
    Devices / Use native graphics initialization = enable
    Display / Keep VESA framebuffer = disable (disable for text-mode graphics, enable for coreboot vesa framebuffer)
    Generic Drivers / Digitizer = Autodetect
    Console / Send console output to a CBMEM buffer = enable
    Payload / Add a payload = An ELF executable payload
    Payload / Payload path and filename = grub.elf

Now go back into Devices:

    Devices / Run VGA Option ROMs = disable
    Devices / Run Option ROMs on PCI devices = disable

Alternatively for X60 Tablet; it's the same as above, but with these differences:

    General setup / Local version string = 7JET23WW (1.08 )
    Mainboard / SMBIOS Serial Number = L3B8281
    Mainboard / SMBIOS Version Number = ThinkPad X60 Tablet
    Mainboard / SMBIOS Product name = 6364WJ1
    Generic Drivers / Digitizer = Present

SMBIOS values were taken by running dmidecode with the factory BIOS.

Note, the above assumes that you already built your grub.elf from source along with everything that you need. Building GRUB is not covered here.

Put your grub.elf in the coreboot directory and then run make. Alternatively, you could go back into menuconfig and select coreboot's own GRUB payload config, which will automatically download and build the GRUB payload. Building it yourself can be more flexible, though, since you get to choose what modules you want and you can use your own configs.

TODO

Non-free components replacements

  • Improve native GPU initialization and/or SeaVGABIOS (part of SeaBIOS): INT 10H and VBT are missing in native graphics.

Windows currently doesn't boot (STOP A5 error)

Windows 7 was tested and fails to boot at the moment.

The native graphics implementation lacks INT 10H and VBT, and GRUB cannot boot it. Booting with SeaBIOS+SeaVGABIOS results in graphical corruption (and no boot).

Booting with SeaBIOS and the VGA ROM (vbios) can be used to boot it, but booting ends with the message outlined here: STOP A5

More information can be found here

Other things

  • Make the wifi card and/or the laptop produce less heat (Is that concern still valid?)..
  • Sometimes some dock USB port aren't initialized (Is that concern still valid?).
  • Fix that warning:
[   14.566817] ACPI Warning: 0x00000400-0x0000041f SystemIO conflicts with Region \_SB_.PCI0.SBUS.SMBI 1 (20130117/utaddress-251)

By using that advise:

<phcoder> GNUtoo-x60: in this case it looks like same range is declared twice in DSDT/SSDT
  • The TPM isn't recognized automatically by GNU/Linux distributions. An old patch for that is on gerrit. It has to be rebased and possibly adapted.
  • IRDA: Preliminary work for that is on gerrit.

Hardware documentation