Difference between revisions of "Board:lenovo/x60"

From coreboot
Jump to: navigation, search
(thinkpad_acpi compatibility)
(48 intermediate revisions by 4 users not shown)
Line 1: Line 1:
= Lenovo ThinkPad X60s =
+
works fine with Linux, some ACPI issues with Windows needs to be fixed.
 +
 
 +
= 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==
 +
Tutorial on Installation and flashing the x60 or t60:
 +
 
 +
'''Which used to be the main x60 page:
 +
'''
 +
[[Board:lenovo/x60/Installation]]
 
== Status ==
 
== Status ==
 
{{Status|
 
{{Status|
Line 28: Line 41:
 
|Onboard_ethernet_comments = Intel 82573L
 
|Onboard_ethernet_comments = Intel 82573L
 
|Onboard_audio_status = OK
 
|Onboard_audio_status = OK
|Onboard_modem_status = N/A
+
|Onboard_modem_status = Untested
 
|Onboard_firewire_status = N/A
 
|Onboard_firewire_status = N/A
 
|Smartcard_status = N/A
 
|Smartcard_status = N/A
Line 59: Line 72:
 
|PS2_mouse_status = N/A
 
|PS2_mouse_status = N/A
 
|Game_port_status = N/A
 
|Game_port_status = N/A
|IR_status = N/A
+
|IR_status = WIP
 
|Speaker_status = N/A
 
|Speaker_status = N/A
 
|DiskOnChip_status = N/A
 
|DiskOnChip_status = N/A
Line 80: Line 93:
 
|Flashrom_comments = See [[Lenovo_x60x]]
 
|Flashrom_comments = See [[Lenovo_x60x]]
 
}}
 
}}
 +
{| border="0" style="font-size: smaller" valign="top"
 +
|- bgcolor="#6699dd"
 +
|- bgcolor="#6699ff"
 +
| colspan ="9" | '''Laptop specific'''
 +
{{Statusitem|Name=Tablet Touchscreen|Status={{{COM5_status|WIP}}}|Comments={{{COM5_comments|x60 tablet wacom "penabled"}}}}}
 +
|}<includeonly>[[Category:Tutorials]]</includeonly><noinclude>
 +
 +
== Digitizer (X60 Tablet) and IR ports ==
 +
[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:
 +
*Serial: irq 5 port 0x0200
 +
[http://forum.bongofish.co.uk/index.php?topic=2307.0 Some additional info from a x61t wacom]
 +
 +
Support for digitizer (and IrDA) has been written and [http://review.coreboot.org/#/c/5242/ submitted for review]
  
 
== proprietary components status ==
 
== proprietary components status ==
* CPU Microcode (optional?)
+
* 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): 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.
 
* 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.
 
* 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)
Line 88: Line 114:
 
== TODO ==
 
== TODO ==
 
=== Non-free components replacements ===
 
=== Non-free components replacements ===
* <s>Replace the non-free VGA option rom by making native graphics init work.</s> submited for review.
+
* <s>Replace the non-free VGA option rom by making native graphics init work.</s> submited for review. (see http://review.coreboot.org/#/c/5320)
* Create a Native graphics<->VGA option rom.
+
* Create a Native graphics<->VGA option rom. '''SeaVGABIOS (part of SeaBIOS) might be the answer. We need to look into that.'''
* Make backlight work without the non-free option rom.
+
* <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.
 +
 
 +
==== Problems in native graphics code exposed by recent kernels ====
 +
It was discovered that while this code seems to work fine on kernels older than linux 3.12.
 +
 
 +
On 3.12 and later kernels the i915 driver became unstable. Causing broken/glitchy 3D. and performance bugs.
 +
 
 +
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.
 +
This bug was corrected in:
 +
[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=17fec8a08698bcab98788e1e89f5b8e7502ababd 17fec8a08698bcab98788e1e89f5b8e7502ababd]
 +
 
 +
Which was identified by git bisect, to be the cause of the driver crashes using native vga on the x60.
 +
 
 +
The native vga init code in coreboot needs to be corrected to have more engineered memory management.
 +
In the interim users have attempted running patched linux 3.12 kernels which revert commit 17fec. To apparent success.
 +
 
 +
Reported upstream in the Freedesktop Bugzilla as [https://bugs.freedesktop.org/show_bug.cgi?id=79038 ticket #79038]. Please add more details there following upstream’s guide [https://01.org/linuxgraphics/documentation/how-report-bugs How to file a good bug report?].
 +
 
 +
These notes are being maintained as time goes by (with info copied to the freedesktop.org bug report), while the issue is investigated: http://libreboot.org/howto.html#kernel312bugs (note: messy, needs cleaning)
 +
 
 +
== Enable backlight controls on X60 (with native gpu init instead of VGA ROM) ==
 +
 
 +
[http://libreboot.org/howto.html#x60_native_notes http://libreboot.org/howto.html#x60_native_notes]
 +
 
  
 
=== Other things ===
 
=== Other things ===
 +
Battery indictor in various DE's can be unreliable. (showing 50% available for instance, when fully charged).
 +
Using CLI tools to show battery info can show a sudden(brief) spike in reported power usage when disconnecting AC.
 +
 
* 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.
Line 128: Line 185:
 
  first_battery = Primary
 
  first_battery = Primary
 
  bluetooth = Disable
 
  bluetooth = Disable
 +
 +
==="whining" (buzzing) noise when idle===
 +
 +
Use "idle=halt" (higher power consumption) or "processor.max_cstate=2" (higher power consumption, but not as bad) kernel parameter in GRUB.
 +
 +
Note:
 +
Boot without these options, and there will be a high pitched noise coming from the board when the system is idle.
 +
A better workaround is to boot without these options, and run '''sudo powertop'''
 +
 +
Under "tunables", set all options to "Good" settings. This kills the noise.
 +
'''By using this, power consumption falls lower: near the levels in Lenovo BIOS''' (better battery life).
 +
 
=== cbmem console ===
 
=== cbmem console ===
To get cbmem console working you need the non-free i915 option rom or native graphics(doesn't work yet, don't use).
 
Even with a dummy VGA option rom it fails:
 
[root@X60 cbmem]# ./cbmem -c -VVV
 
Looking for coreboot table at 0
 
Mapping 1MB of physical memory at 0x0.
 
Unmapping 1MB of virtual memory at 0xb7463000.
 
Looking for coreboot table at f0000
 
Mapping 1MB of physical memory at 0xf0000.
 
Failed to mmap /dev/mem: Operation not permitted
 
[root@X60 cbmem]# dmesg -c
 
[26300.943482] Program cbmem tried to access /dev/mem between f0000->1f0000.
 
  
Using fmem doesn't work either:
+
<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
[root@X60 cbmem]# ./cbmem -c -VVV
+
 
Looking for coreboot table at 0
+
Mapping 1MB of physical memory at 0x0.
+
Unmapping 1MB of virtual memory at 0xb74ae000.
+
Looking for coreboot table at f0000
+
Mapping 1MB of physical memory at 0xf0000.
+
Unmapping 1MB of virtual memory at 0xb74ae000.
+
No console found in coreboot table.
+
[root@X60 cbmem]# dmesg -c
+
[26404.984342] fmem init_module 449: init
+
[26404.984349] fmem find_symbols 439: set guess_page_is_ram: c10440b0
+
 
==== Howto ====
 
==== Howto ====
 +
When configuring coreboot with "make menuconfig"
 
Go in console:
 
Go in console:
 
  Console  --->
 
  Console  --->
 
Enable it:
 
Enable it:
 
  [*] Send console output to a CBMEM buffer
 
  [*] Send console output to a CBMEM buffer
  (0x10000) Room allocated for console output in CBMEM
+
  (0x20000) Room allocated for console output in CBMEM
 
  (0xc00) Room allocated for console output in Cache as RAM
 
  (0xc00) Room allocated for console output in Cache as RAM
  

Revision as of 18:33, 7 June 2014

works fine with Linux, some ACPI issues with Windows needs to be fixed.

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

Tutorial on Installation and flashing the x60 or t60:

Which used to be the main x60 page:

Board:lenovo/x60/Installation

Status

Device/functionality Status Comments
CPU
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
Multi-core support OK
Hardware virtualization OK
RAM
EDO N/A
SDRAM N/A
SO-DIMM N/A
DDR N/A
DDR2 OK
DDR3 N/A
Dual channel support OK
ECC support N/A
On-board Hardware
On-board IDE 3.5" N/A
On-board IDE 2.5" N/A
On-board SATA OK
On-board SCSI N/A
On-board USB OK
On-board VGA OK
On-board ethernet OK Intel 82573L
On-board audio OK
On-board modem Untested
On-board FireWire N/A
On-board smartcard reader N/A
On-board CompactFlash N/A
On-board PCMCIA OK Ricoh rl5c476
Add-on slots/cards
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 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
Floppy N/A
Serial port 1 (COM1) OK located in Ultrabase X6
Serial port 2 (COM2) N/A
Parallel port N/A
PS/2 keyboard N/A
PS/2 mouse N/A
Game port N/A
Infrared WIP
PC speaker N/A
DiskOnChip N/A
Miscellaneous
Sensors / fan control OK
Hardware watchdog N/A
SMBus OK
CAN bus N/A
CPU frequency scaling OK
Other powersaving features OK
ACPI OK
Reboot OK
Poweroff OK
Suspend 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
Flashrom OK See Lenovo_x60x
Laptop specific
Tablet Touchscreen WIP x60 tablet wacom "penabled"

Digitizer (X60 Tablet) and IR ports

the touchscreen/pen do not work as coreboot does not expose the internal COM port to which it is attached:

  • Serial: irq 5 port 0x0200

Some additional info from a x61t wacom

Support for digitizer (and IrDA) has been written and submitted for review

proprietary components status

  • CPU Microcode (optional?) - works fine without. See http://download.intel.com/design/mobile/SPECUPDT/30922214.pdf
  • 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.
  • EC(Embedded Controller) => you do not have to touch it(just leave it where it is)

TODO

Non-free components replacements

  • Replace the non-free VGA option rom by making native graphics init work. submited for review. (see http://review.coreboot.org/#/c/5320)
  • Create a Native graphics<->VGA option rom. SeaVGABIOS (part of SeaBIOS) might be the answer. We need to look into that.
  • Make backlight work without the non-free option rom. See [1]

VGA Option ROM / VBIOS replacement (native graphics)

The 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:

Note: obsolete. See notes about backlight (Fn key) controls instead, includes native gfx init.

Problems in native graphics code exposed by recent kernels

It was discovered that while this code seems to work fine on kernels older than linux 3.12.

On 3.12 and later kernels the i915 driver became unstable. Causing broken/glitchy 3D. and performance bugs.

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. This bug was corrected in: 17fec8a08698bcab98788e1e89f5b8e7502ababd

Which was identified by git bisect, to be the cause of the driver crashes using native vga on the x60.

The native vga init code in coreboot needs to be corrected to have more engineered memory management. In the interim users have attempted running patched linux 3.12 kernels which revert commit 17fec. To apparent success.

Reported upstream in the Freedesktop Bugzilla as ticket #79038. Please add more details there following upstream’s guide How to file a good bug report?.

These notes are being maintained as time goes by (with info copied to the freedesktop.org bug report), while the issue is investigated: http://libreboot.org/howto.html#kernel312bugs (note: messy, needs cleaning)

Enable backlight controls on X60 (with native gpu init instead of VGA ROM)

http://libreboot.org/howto.html#x60_native_notes


Other things

Battery indictor in various DE's can be unreliable. (showing 50% available for instance, when fully charged). Using CLI tools to show battery info can show a sudden(brief) spike in reported power usage when disconnecting AC.

  • Add support for more batteries in ACPI.
  • 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
  • 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

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

"whining" (buzzing) noise when idle

Use "idle=halt" (higher power consumption) or "processor.max_cstate=2" (higher power consumption, but not as bad) kernel parameter in GRUB.

Note: Boot without these options, and there will be a high pitched noise coming from the board when the system is idle. A better workaround is to boot without these options, and run sudo powertop

Under "tunables", set all options to "Good" settings. This kills the noise. By using this, power consumption falls lower: near the levels in Lenovo BIOS (better battery life).

cbmem console

To get cbmem console working you need the non-free i915 option rom or native graphics(doesn't work yet, don't use) :fixed in master

Howto

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

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:

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:

System Information
	Manufacturer: LENOVO
	Product Name: 1707Y8W
	Version: ThinkPad X60
	Serial Number: L3BY949

Then in

Mainboard  --->

do that:

(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

To modprobe the module use that:

modprobe thinkpad_acpi force_load=1 debug=0xffff fan_control=1 experimental=1

The module should now load automatically...