Board:lenovo/w520: Difference between revisions

From coreboot
Jump to navigation Jump to search
(Initial gathering of W520 board information from mailinglist discussion threads)
 
(Update with latest state of display output)
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''Disclaimer''': the current version of this page is entirely reconstructed from mailinglist posts from November 2016 by [https://www.mail-archive.com/search?l=coreboot@coreboot.org&q=from:%22Charlotte+Plusplus%22 Charlotte Plusplus]
== Specification ==
== Specification ==
The W520 comes in 4 quad-core configurations, and 1 dual-core configuration. The quad-core configurations support RAM up to 32GB.
The W520 comes in 4 quad-core configurations, and 1 dual-core configuration. The quad-core configurations support RAM up to 32GB.


It is similar to the T520 model but supports more powerful CPU's and GPU's and has 4 RAM slots (32GB total).
Compared to the superseding W530 model it notably features the conventional keyboard, an eSATA port, and full-size DisplayPort connector.
Compared to the superseding W530 model it notably features the conventional keyboard, an eSATA port, and full-size DisplayPort connector.
It is noteworthy that the graphics output (VGA and DisplayPort) are connected to the NVIDIA GPU, so this GPU needs to be controlled in order to have video output.
For more detailed specifications, please refer to the [http://www.thinkwiki.org/wiki/Category:W520 ThinkWiki]
== Status ==
The W520 is implemented as a variant of the [[Board:lenovo/t520]] and so it shares much of the same status.
{{Status|
|CPU_status = OK
|CPU_comments = Support both Sandy Bridge and Ivy Bridge
|CPU_L1_status = OK
|CPU_L1_comments = Always on
|CPU_L2_status = OK
|CPU_L2_comments = Always on
|CPU_L3_status = N/A
|CPU_multiple_status = N/A
|CPU_multicore_status = OK
|CPU_virt_status = OK
|RAM_EDO_status = N/A
|RAM_SDRAM_status = N/A
|RAM_SODIMM_status = N/A
|RAM_DDR_status = N/A
|RAM_DDR2_status = N/A
|RAM_DDR3_status = OK
|RAM_DDR3_comments = Native
|RAM_dualchannel_status = OK
|RAM_ecc_status = N/A
|IDE_status = N/A
|IDE_CF_status = N/A
|IDE_25_status = N/A
|CDROM_DVD_status = N/A
|SATA_status = OK
|SATA_comments =
|Onboard_SCSI_status = N/A
|USB_status = OK
|USB_comments =
|Onboard_VGA_status = Patches available [https://review.coreboot.org/c/coreboot/+/25999/ 25999] [https://review.coreboot.org/c/coreboot/+/26114 26114]
|Onboard_VGA_comments = Same for DisplayPort. Requires ACPI call for GPU switch
|Onboard_ethernet_status = OK
|Onboard_audio_status = OK
|Onboard_audio_comments = integrated speakers, integrated mic, external headphones, external mic
|Onboard_modem_status = N/A
|Onboard_firewire_status = Untested
|Smartcard_status = Untested
|Onboard_CF_status = N/A
|Onboard_PCMCIA_status = OK
|Onboard_Wifi_status = OK
|Onboard_Bluetooth_status = OK
|Onboard_SD_status = OK
|ISA_cards_status = N/A
|AMR_cards_status = N/A
|Mini_PCI_cards_status = N/A
|Mini_PCI_cards_comments =
|PCIX_cards_status = N/A
|AGP_cards_status = N/A
|PCI_cards_status = N/A
|PCIE_x1_status = N/A
|PCIE_x1_comments =
|PCIE_x2_status = N/A
|PCIE_x4_status = N/A
|PCIE_x8_status = N/A
|PCIE_x16_status = OK
|PCIE_x32_status = N/A
|HTX_status = N/A
|Floppy_status = N/A
|COM1_status = N/A
|COM2_status = N/A
|PP_status = N/A
|PS2_keyboard_status = N/A
|PS2_mouse_status = N/A
|Game_port_status = N/A
|IR_status = N/A
|Speaker_status = OK
|DiskOnChip_status = N/A
|Trackpoint_status = OK
|Touchpad_status = OK
|FnHotkeys_status = OK
|Fingerprint_status = Untested
|Docking_VGA_status = Untested
|Docking_LAN_status = Untested
|Docking_USB_status = Untested
|Docking_Audio_status = Untested
|Docking_Displayport_status = Untested
|Thinklight_status = OK
|Webcam_status = OK
|Sensors_status = OK
|Watchdog_status = OK
|Watchdog_comments =
|SMBus_status = OK
|CAN_bus_status = N/A
|CPUfreq_status = OK
|Powersave_status = N/A
|ACPI_status = Untested
|ACPI_comments = GPU switch missing for Optimus [https://review.coreboot.org/c/coreboot/+/23041/ WIP patch 23041]
|Reboot_status = OK
|Poweroff_status = OK
|Suspend_status = OK
|Suspend_comments = Suspend to RAM
|Poweroff_comments =
|LEDs_status = OK
|HPET_status = Untested
|RNG_status = Untested
|WakeOnModem_status = N/A
|WakeOnLAN_status = Untested
|WakeOnKeyboard_status = Untested
|WakeOnMouse_status = Untested
|Flashrom_status = OK
|Flashrom_comments = ST/numonyx M25PX64VG 8 MiB VDFPN8 package.
}}
== Patch history ==
In November 2016 Charlotte Plusplus has made an initial attempt ([https://www.mail-archive.com/search?l=coreboot@coreboot.org&q=from:%22Charlotte+Plusplus%22 mailinglist posts]) based on the T520 firmware, with added romstage additions for ram init. This patch was committed in full to the mailing list, but not as a diff to the Gerrit infrastructure.
In February 2018 Nico Rikken again customized the T520 firmware, and delivered a working [https://review.coreboot.org/#/c/coreboot/+/23564/ patch set].


== Proprietary components status ==
== Proprietary components status ==
Line 12: Line 136:
* 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)


== Coreboot patch ==
== Known issues ==
An archive containing the W520 board support [https://www.mail-archive.com/coreboot@coreboot.org/msg47353.html was posted] on the Coreboot mailinglist. The patchset is based on the T530, but romstage additions for ram init were required.
* The 2 USB 3.0 slots on the side are not working for boot media, just the USB 2.0 slot on the back.
* SD cards mount as read-only in Ubuntu 18.04 (unconfirmed report by Nico)
 
=== MCE Hardware Error ===
Found and confirmed:
 
kernel: mce: [Hardware Error]: Machine check events logged
kernel: mce: [Hardware Error]: CPU 0: Machine Check: 0 Bank 7: ee2000000003110a
kernel: mce: [Hardware Error]: TSC 0 ADDR feffff40 MISC 1040000086
kernel: mce: [Hardware Error]: PROCESSOR 0:206a7 TIME 1524512047 SOCKET 0 APIC 0 microcode 29
kernel: mce: [Hardware Error]: Machine check events logged
kernel: mce: [Hardware Error]: CPU 0: Machine Check: 0 Bank 8: ee2000000003110a
kernel: mce: [Hardware Error]: TSC 0 ADDR feffff00 MISC 1040000086
kernel: mce: [Hardware Error]: PROCESSOR 0:206a7 TIME 1524512047 SOCKET 0 APIC 0 microcode 29
 
=== Issues reported by Charlotte Plusplus ===
In 2016 some issues were reported. These need to be verified base on the most recent W520 patch.


=== Known issues ===
* RAM Init seems to cause issues ([https://www.mail-archive.com/coreboot@coreboot.org/msg47391.html discussion thread]).
* Native VGA init is not working reliably ([https://www.mail-archive.com/coreboot@coreboot.org/msg47449.html discussion thread]).
* Native VGA init is not working reliably ([https://www.mail-archive.com/coreboot@coreboot.org/msg47449.html discussion thread]).
* The coreboot configuration consumes more power than the vendor BIOS does ([https://www.mail-archive.com/coreboot@coreboot.org/msg47462.html discussion thread]).
* The coreboot configuration consumes more power than the vendor BIOS does, so some additional settings might be required. ([https://www.mail-archive.com/coreboot@coreboot.org/msg47462.html discussion thread]).
* No ACPI event when (dis)connecting the bay.
 
=== Works ===
* CPU (4 cores, 8 threads)
* Suspend and resume
* Ethernet port (GbE blob was put into place)
* Speakers
* Webcam (which is an internal USB-device)
* 4 RAM-slots
* Booting GNU Linux from USB using SeaBios
* Speakers
* PCIe Wifi
* Fan
* Touchpad, trackpoint and keyboard
* Ethernet
* Keyboard ACPI events
* VGA and DisplayPort output using the patches below
* Bluetooth
 
== Building ==
Just run {{ic|make nconfig}}, and select the board Lenovo W520. Other configurations include:
 
* Size of CBFS can be set up to 2M (0x200000), perhaps larger like the [[Board:lenovo/t420]] but this might depend on the chip.
* You can select 'Use CMOS for configuration values'.
* You can use native graphics initialization.
 
To obtain ME, Intel Descriptor, GbE images you will need to read the BIOS off your T420.
 
To use VGA option ROMs, you can manually add it to CBFS using cbfstool multiple times to support more GPUs on a single board.
 
./build/cbfstool build/coreboot.rom add -f intel-vgabios.rom -n pci8086,0106.rom -t optionrom
./build/cbfstool build/coreboot.rom add -f nvidia-vgabios-1.rom -n pci10de,0dda.rom -t optionrom
./build/cbfstool build/coreboot.rom add -f nvidia-vgabios-2.rom -n pci10de,0dfa.rom -t optionrom
./build/cbfstool build/coreboot.rom add -f nvidia-vgabios-3.rom -n pci10de,0dfe.rom -t optionrom
 
Perhaps adding 1 rom for NVIDIA and using a link file might work as well.
 
=== VGA / DisplayPort output ===
 
At the moment of writing two additional patches are required to enable VGA/DisplayPort output. Then output works out of the box with Ubuntu 18.04 (Nouveau driver)
 
* {{ic|_ROM}} ACPI call enabling Nouveau to load the optionrom [https://review.coreboot.org/c/coreboot/+/25999/ patch]
* 'Dual Graphics' CMOS option to enable the GPU [https://review.coreboot.org/c/coreboot/+/26114 patch]
 
Then Dual Graphics mode can be activated using nvram:
 
sudo ./util/nvramtool/nvramtool -w hybrid_graphics_mode="Dual Graphics"


== Flashing ==
== Flashing ==
* As the plastic casing it conductive make sure to trim the leads when attaching a J100 header.
 
* When flashing with a Raspberry Pi no external power is needed. The 3V source from pin 17 is sufficient. The pins WP and HOLD can be left floating. Make sure to insert all pins as once, as otherwise the W25Q64 might fail to respond.
The location of the chip is similar to the T520:
 
[[File:J100.jpg|400px]]
 
When flashing with a Raspberry Pi no external power is needed. The 3V source from the GPIO is sufficient. The pins WP and HOLD can be left floating.
 
{{Cc-by-4.0}}

Latest revision as of 10:22, 5 May 2018

Specification

The W520 comes in 4 quad-core configurations, and 1 dual-core configuration. The quad-core configurations support RAM up to 32GB.

It is similar to the T520 model but supports more powerful CPU's and GPU's and has 4 RAM slots (32GB total). Compared to the superseding W530 model it notably features the conventional keyboard, an eSATA port, and full-size DisplayPort connector.

It is noteworthy that the graphics output (VGA and DisplayPort) are connected to the NVIDIA GPU, so this GPU needs to be controlled in order to have video output.

For more detailed specifications, please refer to the ThinkWiki

Status

The W520 is implemented as a variant of the Board:lenovo/t520 and so it shares much of the same status.

Device/functionality Status Comments
CPU
CPU works OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Support both Sandy Bridge and Ivy Bridge
L1 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Always on
L2 cache enabled OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Always on
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 }}" | N/A
DDR3 OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK Native
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 }}" | Patches available 25999 26114 Same for DisplayPort. Requires ACPI call for GPU switch
On-board Ethernet OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
On-board Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK integrated speakers, integrated mic, external headphones, external mic
On-board Modem OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
On-board FireWire OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
On-board Smartcard reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
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 }}" | OK
On-board Bluetooth OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
On-board SD card reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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 }}" | N/A
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 }}" | OK
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 }}" | N/A
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 }}" | N/A
PC speaker OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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 }}" | OK
Touchpad OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Fn Hotkeys OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Fingerprint Reader OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Laptop
Docking VGA OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Docking LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Docking USB OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Docking Audio OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Docking Displayport OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Thinklight OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
Webcam OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
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 }}" | OK
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 }}" | N/A
ACPI OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested GPU switch missing for Optimus WIP patch 23041
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 Suspend to RAM
Nonstandard LEDs OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | OK
High precision event timers (HPET) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Random number generator (RNG) OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on modem ring OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | N/A
Wake on LAN OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on keyboard OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
Wake on mouse OK=lime | TODO=red | No=red | WIP=orange | Untested=yellow | N/A=lightgray | yellow }}" | Untested
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 ST/numonyx M25PX64VG 8 MiB VDFPN8 package.


Patch history

In November 2016 Charlotte Plusplus has made an initial attempt (mailinglist posts) based on the T520 firmware, with added romstage additions for ram init. This patch was committed in full to the mailing list, but not as a diff to the Gerrit infrastructure. In February 2018 Nico Rikken again customized the T520 firmware, and delivered a working patch set.

Proprietary components status

  • CPU Microcode (optional)
  • VGA Option ROM (optional): the native graphics initialization tested gave video artifacts in SeaBIOS. When using VGA Bios there were none.
  • ME(Management Engine) => you do not have to touch it (just leave it where it is). Also the stripped down T420 version can be re-used.
  • EC(Embedded Controller) => you do not have to touch it (just leave it where it is)

Known issues

  • The 2 USB 3.0 slots on the side are not working for boot media, just the USB 2.0 slot on the back.
  • SD cards mount as read-only in Ubuntu 18.04 (unconfirmed report by Nico)

MCE Hardware Error

Found and confirmed:

kernel: mce: [Hardware Error]: Machine check events logged
kernel: mce: [Hardware Error]: CPU 0: Machine Check: 0 Bank 7: ee2000000003110a
kernel: mce: [Hardware Error]: TSC 0 ADDR feffff40 MISC 1040000086 
kernel: mce: [Hardware Error]: PROCESSOR 0:206a7 TIME 1524512047 SOCKET 0 APIC 0 microcode 29
kernel: mce: [Hardware Error]: Machine check events logged
kernel: mce: [Hardware Error]: CPU 0: Machine Check: 0 Bank 8: ee2000000003110a
kernel: mce: [Hardware Error]: TSC 0 ADDR feffff00 MISC 1040000086 
kernel: mce: [Hardware Error]: PROCESSOR 0:206a7 TIME 1524512047 SOCKET 0 APIC 0 microcode 29

Issues reported by Charlotte Plusplus

In 2016 some issues were reported. These need to be verified base on the most recent W520 patch.

  • Native VGA init is not working reliably (discussion thread).
  • The coreboot configuration consumes more power than the vendor BIOS does, so some additional settings might be required. (discussion thread).
  • No ACPI event when (dis)connecting the bay.

Works

  • CPU (4 cores, 8 threads)
  • Suspend and resume
  • Ethernet port (GbE blob was put into place)
  • Speakers
  • Webcam (which is an internal USB-device)
  • 4 RAM-slots
  • Booting GNU Linux from USB using SeaBios
  • Speakers
  • PCIe Wifi
  • Fan
  • Touchpad, trackpoint and keyboard
  • Ethernet
  • Keyboard ACPI events
  • VGA and DisplayPort output using the patches below
  • Bluetooth

Building

Just run make nconfig, and select the board Lenovo W520. Other configurations include:

  • Size of CBFS can be set up to 2M (0x200000), perhaps larger like the Board:lenovo/t420 but this might depend on the chip.
  • You can select 'Use CMOS for configuration values'.
  • You can use native graphics initialization.

To obtain ME, Intel Descriptor, GbE images you will need to read the BIOS off your T420.

To use VGA option ROMs, you can manually add it to CBFS using cbfstool multiple times to support more GPUs on a single board.

./build/cbfstool build/coreboot.rom add -f intel-vgabios.rom -n pci8086,0106.rom -t optionrom
./build/cbfstool build/coreboot.rom add -f nvidia-vgabios-1.rom -n pci10de,0dda.rom -t optionrom
./build/cbfstool build/coreboot.rom add -f nvidia-vgabios-2.rom -n pci10de,0dfa.rom -t optionrom
./build/cbfstool build/coreboot.rom add -f nvidia-vgabios-3.rom -n pci10de,0dfe.rom -t optionrom

Perhaps adding 1 rom for NVIDIA and using a link file might work as well.

VGA / DisplayPort output

At the moment of writing two additional patches are required to enable VGA/DisplayPort output. Then output works out of the box with Ubuntu 18.04 (Nouveau driver)

  • _ROM ACPI call enabling Nouveau to load the optionrom patch
  • 'Dual Graphics' CMOS option to enable the GPU patch

Then Dual Graphics mode can be activated using nvram:

sudo ./util/nvramtool/nvramtool -w hybrid_graphics_mode="Dual Graphics"

Flashing

The location of the chip is similar to the T520:

When flashing with a Raspberry Pi no external power is needed. The 3V source from the GPIO is sufficient. The pins WP and HOLD can be left floating.

Creative Commons License
Creative Commons Attribution icon
This work is licensed under the Creative Commons Attribution 4.0 License.