Board:lenovo/x220

From coreboot
Revision as of 23:23, 24 August 2014 by Phcoder (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The wiki is being retired!

Documentation is now handled by the same processes we use for code: Add something to the Documentation/ directory in the coreboot repo, and it will be rendered to https://doc.coreboot.org/. Contributions welcome!

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)
  • No wifi in windows
  • No speakers in windows (headset is fine)
  • No expresscard hotplug in windows (works fine if inserted on startup)

Tested (and works):

  • RAM module combinations of 4G+0, 4G+4G
  • 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)

Not tested:

  • Thinklight (probably works).
  • dock (probably works)
  • msata (probably works)
  • displayport (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 wantgraphics in SeaBIOS but most payloads should work without it (text mode or corebootfb mode)
  • 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