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.
- 1 Status
- 2 Installation and Flashing
- 3 Wifi chipsets
- 4 Status
- 5 proprietary components (replacement) status
- 6 Building the ROM without proprietary blobs
- 7 TODO
- 8 Hardware documentation
- 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.
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.
|CPU works||OK||Core Duo Mobile (L2300), PBGA479|
|L1 cache enabled||OK|
|L2 cache enabled||OK|
|L3 cache enabled||N/A|
|Multiple CPU support||N/A|
|Hardware virtualization||OK||Has Intel VT-x|
|Dual channel support||OK|
|On-board IDE 3.5"||N/A|
|On-board IDE 2.5"||N/A|
|On-board Ethernet||OK||Intel 82573L|
|On-board FireWire||OK||Tested with a DV camera and dvgrab|
|On-board Smartcard reader||N/A|
|On-board PCMCIA||OK||Ricoh rl5c476|
|On-board SD card reader||OK||Works in GNU/Linux but fails to boot form it in SeaBIOS|
|ISA add-on cards||N/A|
|Audio/Modem-Riser (AMR/CNR) cards||N/A|
|PCI add-on cards||N/A|
|Mini-PCI add-on cards||N/A|
|Mini-PCI-Express add-on cards||OK|
|PCI-X add-on cards||N/A|
|AGP graphics cards||N/A|
|PCI Express x1 add-on cards||N/A|
|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||N/A|
|PCI Express x32 add-on cards||N/A|
|HTX add-on cards||N/A|
|Legacy / Super I/O|
|Serial port 1 (COM1)||OK||located in Ultrabase X6|
|Serial port 2 (COM2)||N/A|
|Infrared||WIP||Submited for review|
|Sensors / fan control||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||Unknown||iTCO_wdt compatible watchdog|
|CPU frequency scaling||OK|
|Other powersaving features||OK|
|Nonstandard LEDs||OK||LEDs are controlled by Embedded Controller (EC). Working without special support.|
|High precision event timers (HPET)||OK|
|Random number generator (RNG)||N/A|
|Wake on modem ring||Unknown|
|Wake on LAN||Unknown|
|Wake on keyboard||Unknown|
|Wake on mouse||Unknown|
|Tablet Touchscreen||OK||x60 tablet wacom "penabled"|
|thinkpad_acpi module compatibility||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:
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.
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
- 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.
- The touchscreen serial port is on irq 5 at port 0x0200. Some additional info from a x61t wacom