Board:lenovo/t60: Difference between revisions

From coreboot
Jump to navigation Jump to search
No edit summary
 
(30 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Coreboot supports all ThinkPad T60/T60p Series laptops, by using proprietary VGABIOS blobs.
Coreboot supports all ThinkPad T60/T60p Series laptops.
 
However, if you plan to use Libreboot with the T60 (FSF-Certified, cannot use proprietary blobs), it requires a ''ThinkPad T60 with Intel GPU and a 15" Flexview 1400x1050 SXGA+ display''. '''No ThinkPad T60/T60p was ever manufactured with this configuration.'''
 
Thus, Libreboot users will have to make a custom FrankenPad; either by replacing the motherboard with an Intel board; or the screen and the inverter with an SXGA+ display, at great expense.
 
{{Warning|The vast majority of ThinkPad T60/T60p laptops require [https://github.com/bibanon/Coreboot-ThinkPads/wiki/ThinkPad-T60p proprietary VGABIOS blobs] for the display to work (see the links for more information). '''Do not forget to build Coreboot with these blobs, or your machine will be BRICKED!'''
 
* '''ThinkPad T60/T60p laptops with a 4:3 1024x768 XGA, or 16:10 Widescreen LCD''' [https://github.com/bibanon/Coreboot-ThinkPads/wiki/ThinkPad-T60p must extract the proprietary VGABIOS from the Lenovo BIOS, and build Coreboot with it.]
** ''(Libreboot Users)'' [http://libreboot.org/docs/index.html#supported_t60_list These LCDs do not work with Libreboot.] You will have to replace them with a rare and expensive Flexview 1400x1050 SXGA+ display; which is only compatible with 15" ThinkPad T60/T60p models.
* '''ThinkPad T60/T60p laptops with an ATI GPU'''  [https://github.com/bibanon/Coreboot-ThinkPads/wiki/ThinkPad-T60p must extract the proprietary VGABIOS from the Lenovo BIOS, and build Coreboot with it.]
** All ThinkPad T60p and all Flexview SXGA+ T60 laptops come with an ATI GPU.
** ''(Libreboot Users)'' Needless to say, [http://libreboot.org/docs/index.html#t60_ati_intel ATI T60/T60p laptops are NOT compatible with Libreboot.] You must replace the motherboard with an Intel one.}}


==Installation and Flashing==
==Installation and Flashing==
Line 20: Line 8:
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.
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/index.html#recommended_wifi lists Wifi chipsets not needing proprietary software to work].
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 ==
Line 107: Line 95:
== proprietary components status ==
== proprietary components status ==
* 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]
* 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]
* VGA option rom (optional): Native graphics initialization (free replacement) is also available with [http://review.coreboot.org/#/c/5345 this patch] that is under review. Note that the replacement doesn't work yet with seabios but works with grub(as a payload) or libpayload based payloads. SeaBIOS can be used with SeaVGABIOS (coreboot linear framebuffer option in seabios menuconfig) but the native graphics implementation currently lacks INT 10H and VBT.  
* VGA option rom (optional): Native graphics initialization (free replacement) is also available for models with a Intel gpu.
* EC(Embedded Controller) =>  you do not have to touch it(just leave it where it is)
* EC(Embedded Controller) =>  you do not have to touch it(just leave it where it is)
== Building the ROM without proprietary blobs ==
TODO: these instructions should still work, but they are outdated. Bring them up to date, using the latest coreboot revision.
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.
* Note, this configuration only works for T60's with the Intel GMA950 video chipset. ATI GPU won't work, because they lack native graphics support.
Download coreboot like usual:
<pre>
git clone http://review.coreboot.org/coreboot
cd coreboot
</pre>
At the time of writing for (for these instructions), the following git revision was used:
<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>
Now you will want this basic configuration for X60/X60s (in '''make menuconfig'''):
<pre>
    General setup / Expert mode = enable
    General setup / Local version string = 79ETE7WW (2.27 )
    Mainboard / Mainboard vendor = Lenovo
    Mainboard / Mainboard model = ThinkPad T60 / T60p
    Mainboard / ROM chip size = 2048 KB (2 MB)
    Mainboard / SMBIOS Serial Number = L3DKE06
    Mainboard / SMBIOS Version Number = ThinkPad T60
    Mainboard / SMBIOS Manufacturer = LENOVO
    Mainboard / SMBIOS Product name = 1951FEG
    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)
    Console / Send console output to a CBMEM buffer = enable
    Payload / Add a payload = An ELF executable payload
    Payload / Payload path and filename = grub.elf
Go back into Devices:
    Devices / Run VGA Option ROMs = disable
    Devices / Run Option ROMs on PCI devices = disable
</pre>
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.
=== T60 with  ATI Mobility Radeon ===
Model with an ATI gpu need an option for display to work.
To do this look up the pci id using lspci and adapt CONFIG_VGA_BIOS_ID in menuconfig accordingly.
e.g. "1002,7145"
You have to extract the ATI Option ROM from running system, as the vendor BIOS does patch the ATOMBIOS structure, but coreboot does not.
Vendor BIOS does:
* Set IOBaseAddr offset
* Update connector list
* Update VRAM_UsageByFirmware
* Update MultimediaCapabilityInfo
* Update CompassionateData
* Update DAC_Info
* Update TDMS_Info
You can use radeon_bios_decode to decode the ATOMBIOS structure.


== TODO ==
== TODO ==
Line 127: Line 186:
===high pitched noise from the board during low power states===
===high pitched noise from the board during low power states===


During low power state (cstate 3), a high-pitched "humming" noise eminates from the board. Some discussion has been made about this; suggestions include "using an oscilliscope in clever ways" (to detect where the noise is coming from to debug the issue). There are some workarounds:
<s>During low power state (cstate 3), a high-pitched "humming" noise eminates from the board. Some discussion has been made about this; suggestions include "using an oscilliscope in clever ways" (to detect where the noise is coming from to debug the issue). There are some workarounds:
 
Use "idle=halt" (higher power consumption) or "processor.max_cstate=2" (higher power consumption, but not as bad) kernel parameter in GRUB. These increase heat and power consumption.
 
Another option (for increased battery life and lower temperatures) is to use '''powertop --auto-tune''', or set 'Tunables' in powertop (without any parameters).
 
== Text Mode ==
 
Use [http://review.coreboot.org/#/c/6725/ this patch].
 
Also, enable it for T60 with [http://paste.debian.net/plain/122565 this patch]
 
When using native graphics instead of the VBIOS, you can enable Text Mode in menuconfig, under Display.
 
Disable 'Keep VESA Framebuffer'. This is for booting payloads like MemTest86+ which expect text-mode graphics.
 
== Make backlight (Fn keys) control work with native gpu init ==
 
You first need native graphics support (free VBIOS replacement). Apply [http://review.coreboot.org/#/c/5345 this patch] using '''cherry pick''' on top of master.


Before building the ROM with native graphics, in src/mainboard/lenovo/t60/devicetree.cb, change gpu_backlight to 0x58BF58BE
Use "idle=halt" (higher power consumption) or "processor.max_cstate=2" (higher power consumption, but not as bad) kernel parameter in GRUB. These increase heat and power consumption. </s> The CPU noise on core duo CPUs is highly reduced by https://review.coreboot.org/#/c/16901/ and likely was not a problem on core 2 duo CPUs.


This value was obtained by reading BLC_PWM_CTL when running the VBIOS (option ROM), like so:
Another option (for increased battery life and lower temperatures) is to use '''powertop --auto-tune''', or set 'Tunables' in powertop (without any parameters). This solves noise coming from the USB ports which is not related to the CPU low power states.


'''sudo devmem2 0xe4361254 w'''
=== ATOMBIOS parser / updater ===


Another method is shown in changeset 6731 on review.coreboot.org. If you use this method, also apply this patch to fix uneven backlight levels: [http://paste.debian.net/plain/122548 patch] - also, [http://paste.debian.net/plain/122563 apply this patch]
Implement a ATOMBIOS updater in coreboot to patch the ATI Option ROM.


=== Other things ===
=== Other things ===
* Add support for more batteries in ACPI.
* Add support for more batteries in ACPI.
* Make the wifi card and/or the laptop produce less heat.
* Make the wifi card and/or the laptop produce less heat.
* Finish and merge support for thinkpad_acpi linux kernel module
* Sometimes some dock USB port aren't initialized => fix that
* Sometimes some dock USB port aren't initialized => fix that

Latest revision as of 09:20, 29 October 2017

Coreboot supports all ThinkPad T60/T60p Series laptops.

Installation and Flashing

 Instructions on Installation and flashing the x60 or t60 

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

This table needs review. I copied the x60 table and ran through it from memory, expresscard comes to mind...

Device/functionality Status Comments
CPU
CPU works OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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
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 }}" | N/A
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
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 }}" | N/A
Mini-PCI add-on cards OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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 }}" | 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 docking station
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 }}" | N/A
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 }}" | Untested
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 }}" | 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
Hardware watchdog OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
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 }}" | Unknown
Flashrom OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK See Board:lenovo/x60/Installation


proprietary components status

  • CPU Microcode (optional?) - works fine without. See http://download.intel.com/design/mobile/SPECUPDT/30922214.pdf
  • VGA option rom (optional): Native graphics initialization (free replacement) is also available for models with a Intel gpu.
  • EC(Embedded Controller) => you do not have to touch it(just leave it where it is)

Building the ROM without proprietary blobs

TODO: these instructions should still work, but they are outdated. Bring them up to date, using the latest coreboot revision.

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.

  • Note, this configuration only works for T60's with the Intel GMA950 video chipset. ATI GPU won't work, because they lack native graphics support.

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:

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

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

    General setup / Expert mode = enable
    General setup / Local version string = 79ETE7WW (2.27 )
    Mainboard / Mainboard vendor = Lenovo
    Mainboard / Mainboard model = ThinkPad T60 / T60p
    Mainboard / ROM chip size = 2048 KB (2 MB)
    Mainboard / SMBIOS Serial Number = L3DKE06
    Mainboard / SMBIOS Version Number = ThinkPad T60
    Mainboard / SMBIOS Manufacturer = LENOVO
    Mainboard / SMBIOS Product name = 1951FEG
    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)
    Console / Send console output to a CBMEM buffer = enable
    Payload / Add a payload = An ELF executable payload
    Payload / Payload path and filename = grub.elf

Go back into Devices:

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


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.

T60 with ATI Mobility Radeon

Model with an ATI gpu need an option for display to work. To do this look up the pci id using lspci and adapt CONFIG_VGA_BIOS_ID in menuconfig accordingly. e.g. "1002,7145"

You have to extract the ATI Option ROM from running system, as the vendor BIOS does patch the ATOMBIOS structure, but coreboot does not. Vendor BIOS does:

  • Set IOBaseAddr offset
  • Update connector list
  • Update VRAM_UsageByFirmware
  • Update MultimediaCapabilityInfo
  • Update CompassionateData
  • Update DAC_Info
  • Update TDMS_Info

You can use radeon_bios_decode to decode the ATOMBIOS structure.

TODO

Non-free components replacements

  • Replace the non-free VGA option rom by making native graphics init work. See [1] (under review on 5345 changeset, review.coreboot.org]
  • Create a Native graphics<->VGA option rom. SeaVGABIOS (part of SeaBIOS) might be the answer. INT 10H and VBT are missing in native graphics.
  • Make backlight work without the non-free option rom. See 6731 on review.coreboot.org

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

high pitched noise from the board during low power states

During low power state (cstate 3), a high-pitched "humming" noise eminates from the board. Some discussion has been made about this; suggestions include "using an oscilliscope in clever ways" (to detect where the noise is coming from to debug the issue). There are some workarounds:

Use "idle=halt" (higher power consumption) or "processor.max_cstate=2" (higher power consumption, but not as bad) kernel parameter in GRUB. These increase heat and power consumption. The CPU noise on core duo CPUs is highly reduced by https://review.coreboot.org/#/c/16901/ and likely was not a problem on core 2 duo CPUs.

Another option (for increased battery life and lower temperatures) is to use powertop --auto-tune, or set 'Tunables' in powertop (without any parameters). This solves noise coming from the USB ports which is not related to the CPU low power states.

ATOMBIOS parser / updater

Implement a ATOMBIOS updater in coreboot to patch the ATI Option ROM.

Other things

  • Add support for more batteries in ACPI.
  • Make the wifi card and/or the laptop produce less heat.
  • Sometimes some dock USB port aren't initialized => fix that