Board:lenovo/x220: Difference between revisions

From coreboot
Jump to navigation Jump to search
No edit summary
Line 7: Line 7:


Tested (and works):
Tested (and works):
* RAM module combinations of 4G+0, 4G+4G
* RAM module combinations of 4G+0, 4G+4G, 8G+8G
* S3 (Suspend to RAM)
* S3 (Suspend to RAM)
* digitizer on x220t variant
* digitizer on x220t variant
Line 17: Line 17:
* touchpad
* touchpad
* battery indicator
* battery indicator
* Fingerprint reader.
* Fingerprint reader
* Thermal management
* Thermal management
* Webcam
* Webcam
Line 30: Line 30:
* Windows (through SeaBIOS; you have to use extracted VGA blob, dumped from memory isn't good enough)
* Windows (through SeaBIOS; you have to use extracted VGA blob, dumped from memory isn't good enough)
* msata
* msata
* displayport
* Displayport
* Thinklight


Not tested:
Not tested:
* Thinklight (probably works).
* dock (probably works)
* dock (probably works)
* USB 3.0 in some models (probably doesn't work)
* USB 3.0 in some models (probably doesn't work)
Line 39: Line 39:
== proprietary components status ==
== proprietary components status ==
* CPU Microcode
* CPU Microcode
* VGA option rom (optional): you need it if you wantgraphics in SeaBIOS but most payloads should work without it (text mode or corebootfb mode)
* VGA option rom (optional): you need it if you want graphics in SeaBIOS but most payloads should work without it (text mode or corebootfb mode), SeaBIOS works with coreboot native gfx init
* ME(Management Engine) => you do not have to touch it(just leave it where it is)
* ME(Management Engine) => 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)
* EC(Embedded Controller) =>  you do not have to touch it(just leave it where it is)

Revision as of 16:05, 25 July 2015

Status

Thanks for your interest in Lenovo X220 port. Issues:

  • no MRC cache (longer boot time)
  • yellow USB port isn't powered in power-off state.
  • Badly seated RAM may prevent booting (not really a problem but coreboot is more suspicious to this than vendor BIOS)

Tested (and works):

  • RAM module combinations of 4G+0, 4G+4G, 8G+8G
  • S3 (Suspend to RAM)
  • digitizer on x220t variant
  • WLAN (first minipcie slot)
  • Linux (through GRUB-as-payload)
  • trackpoint
  • Fn hotkeys
  • Video (both internal and VGA, including native gfx init)
  • touchpad
  • battery indicator
  • Fingerprint reader
  • Thermal management
  • Webcam
  • Expresscard slot (including hotplugging)
  • USB (all 3 ports)
  • bluetooth
  • SD card slot
  • LAN
  • Sound (integrated speakers, integrated mic, external headphones, external mic)
  • WWAN
  • WLAN slot USB
  • Windows (through SeaBIOS; you have to use extracted VGA blob, dumped from memory isn't good enough)
  • msata
  • Displayport
  • Thinklight

Not tested:

  • dock (probably works)
  • USB 3.0 in some models (probably doesn't work)

proprietary components status

  • CPU Microcode
  • VGA option rom (optional): you need it if you want graphics in SeaBIOS but most payloads should work without it (text mode or corebootfb mode), SeaBIOS works with coreboot native gfx init
  • ME(Management Engine) => 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)

Flashing

X220 has 1 flash chip of 8M. It's subdivided in roughly in 3 parts:

  • Descriptor (12K)
  • ME firmware (5M-12K)
  • System flash (7M)

ME firmware is not readable. Vendor firmware locks the flash and so you need to flash externally (unless until someone figures out a way around it).

Proceeds as follows:

  • Turn off your laptop, remove battery and AC adapter.
  • Remove the keyboard.
  • Connect your external SPI flasher to the top SPI chip which is under palm resting space, on left side of the board. It's a 8M chip.

I recommend using SOIC clip. Depending on the flasher you use, you may have to use separate 3.3V source. Make sure not to feed more than 3.3V ot the chip. I used buspirate as flasher and 3.3V power lines from another computer.

  • Read the flash. Twice. Compare the files to be sure. Save a copy of it on

external media.

flashrom -p <yourprogrammer> -r flash.bin
flashrom -p <yourprogrammer> -r flash2.bin
diff flash.bin flash2.bin

If they don't match, do not proceed.

  • Recover descriptor and me firmare:
 dd if=flash.bin of=coreboot/3rdparty/mainboard/lenovo/x220/descriptor.bin \
   count=12288 bs=1M iflag=count_bytes
 dd if=flash.bin of=coreboot/3rdparty/mainboard/lenovo/x220/me.bin \
   skip=12288 count=5230592 bs=1M iflag=count_bytes,skip_bytes
  • Compile coreboot
  • Flash the resulting build/coreboot.rom

If you have trouble reading the chip successfully, the most common problems are

  • insufficient power supply
  • bad contacts
  • too long wires
  • bad pinout

The cable shipped with buspirate was too long, and needed to be trimmed.

See also In-System Programming