QuadCore with Coreboot / Libreboot on the T500 (hopefully the T400 as well)
Hey, I finally got around to posting up the html version of the translation. This is a translated version of the german forum post, with the t500 libreboot instructions.
(Translators note: Unfortunately, I couldnt get pdflatex to compile with images, so here's the link, I'll put lines in at least so that you can see where each image goes) -Translated by M4iller
T500/T400 quadcore mod!
I tested the quadcore-mod from here first on a T500 mainboard, but back then, the BIOS did me a great
disservice, see here and read the paragraph. Why this can't be done for the T500 and W500 at the end of
the first post.
Meanwhile, we got Libreboot for the T500, which is basically Coreboot without BLOBs, i.e. CPU microcode.
The code differs from coreboot in certain other aspects, however I don't know exactly. With the ROMs offered
for the T500, Quads don't work either. Finally, I got to actually using a Pandaboard to debug Libreboots
boot process with a Quad-core installed. The boot process hangs when the third CPU is to be initialized.
Looking at the code, I found out that the kconfig data is built to the original specs. In the case of the T500
(which takes the data from the folder for the T400), the maximum count for the CPU is set to two.
I changed the count to 4, generated the ROM again, flashed it and you got quadcore. Because the current
Libreboot version doesn't support screens larger than 1280x800 with the T500, I had to extract the original
VGA-BIOS for the Intel graphics from the original Lenovo BIOS and integrate it instead of the native VGA
initial into the ROM. This allows for the use of higher-resolution panels. Apart from that, I chose SeaBIOS
instead of the GRUB payload (so that I can boot Windows as well) and chose to include microcode updates
as well. I tested on a board with only Intel graphics, not with Intel+ATI.
With this ROM, you can boot to Windows 7 with the Quadcore CPU and Suspend-to-RAM works as well.
However, there are still several issues:
>The keyboard in SeaBIOS often doesn't work (it works later in the OS)
>The wake from S2RAM takes forever on Windows 7, sometimes doesn't work at all.
>Clock doesn't work in Windows 7
>Installing Windows 7 from DVD doesn't finish, it has to be on the HDD already (I didn't test Linux)
>some more issues
Under Linux, the clock works and the experience is much smoother (in my personal opinion). It could be
The last Libreboot version is from May 18, 2015. After that, there are 4 more Coreboot releases. I presume
that the situation gets better with the next version of Libreboot. Perhaps I should try the newest git server
I have built the ROM directly with the last Coreboot version (and both previous ones), but in that one,
Suspend-to-RAM doesn't wake up at all. On the Libreboot website, there is a paragraph in the X200 section
that Libreboot and Coreboot initialize the RAM differently, which could be the cause for the S2RAM not
working properly under Coreboot. The X200 and the T400 are almost identical, the T400 is 100% the same
as the T500 image at the time of writing. That is why all these steps may work for the T400 as well, but I
don't have one, so I can't test this theory. The R500 and R400 should work, however. I do know, however,
that like with the T61's 14.1" widescreen, there is no VIA (vertical interconnect access) for the GTLREF
connection (see more below), so you'd need to lay a bridge with a jumper wire.
The option of overclocking the CPU without issues like here has not been tested yet. With that option, it
would be possible to boost the relatively cheap Q9000 to almost the same performance as a QX9300. This
post is going to be edited to be more user-friendl, when the whole setup works a little better (especially in
regards to the Windows scenario).
The process is, from a hardware point of view, the same thing as with the T61, but you don't need to do the
mod for 1066 MHz, because the T500 gets that from the factory.
Getting the Core2Quad to work!
>Isolate the CPU pins
To get the quadcore running, we need to isolate the pins D8, AA7, AA8, AC8 and AE8. I used the isolation
from a thin cable for a model railway kit. These "tube" can be put on the CPU pins very easily with
-Of course, instead of isolating, you could just clip the pins off with clippers. This does, however, damage the resale value of the Core2 Quad ;-).
>Enlarge the holes in the socket
Because the isolated pins are thicker, we need to enlarge the CPU socket holes to enable the CPU to slide in.
To prevent residue and pieces of plastic getting into the PCB and damaging the contacts, I took the four side
clips off to the side and slid a thin piece of wood between the socket and the top part with the holes. After
that, I enlarged the appropriate holes with a 1mm drill bit by hand.
Never attempt to drill the holes without lifting the top part first, you can wreck the contacts
in the socket! In that case, you may do better just snipping off the four clips.
There are two types of sockets, one is black, the other is white. Post #153 in the T61-Quadcore thread
shows you the best way to remove the top piece. (Translator's note: el-sahef used a pin and a small flat-head
screwdriver to take off the black socket)
T500 mainboard socket after drilling
>Modify the mainboard
There is a signal, the GTLREF pin in the T500 Core2 CPUs, which has to go to the 0.63* VCC1R05B. The
W700 (which can run Core2 Quads out of the box) does this via a cable with two resistors (2k and 1k). With
Quad Cores, there is another such pin (D22), which is Reserved in the case of the Dual Cores. This pin needs
to be connected to the 0.63*VCC1R05B.
For the appropriate socket contact we need to make a contact on the mainboard. You can connect these on
the underside of the mainboard. T61 14" widescreen mainboards don’t have this connection, it exists only in
the 14" 4:3 boards and the 15.4" widescreen board.
To connect the D22 pin (GTLREF_2) to 0.63*VCC1R05B, we need to solder the wire connection (see picture)
from GTLREF (pin AD26) to the contact of GTLREF_2 (pin D22). The wire should be as short as possible.
Now we can place the Quad core CPU into the socket and boot it into the Lenovo BIOS.
There, we should see the CPU correctly.
Contrary to the T61, however, the PC can't boot unless you set Core multiprocessing to Disabled, so that
there is only one active core. Otherwise, the BIOS hangs at the Thinkpad logo when using the quadcore.
To solve this issue, we need coreboot.
>Get the Lenovo BIOS and flash Coreboot
Use an external flashchip to get the complete content of the BIOS chip. We need this to revert to a regular
Lenovo BIOS in case wee choose to do so. Because of the security chip, there is no easy way to just use a
dump from another mainboard, so it is important to make a backup beforehand. After that, download the
Libreboot ROM data from here (EDIT June 1, 2017: You can find the new coreboot ROMs for the T400 and
the T500 with microcode, original VGA-BIOS and SeaBIOS payload here) and use an external flashchip to
load it onto the BIOS chip. More info here. I soldered the chip off and took a TL866A. Now, the Linux and
Windows should boot with the Core2 Quad. Careful, there are some T500 models where instead of the 8MB
flash chip, you get a 4MB flash chip (these machines don't have Intel AMT). For these, you need another
ROM, but I haven't generated these, since I don't have one and therefore cannot test it.
Because this ROM also contains the MAC address of the Ethernet card, all devices with this ROM get the
same MAC address. If you wish to keep the original MAC addresss, you can use ich9gen to create a new
Flashdescriptor+Gbe region with your MAC address. These can be found on a sticker near the RAM slots
(you need to remove the RAM to see the sticker).
More infos on ich9gen and coreboot can be found on: