Go to file
2016-08-27 15:04:25 +10:00
docs Start documenting the Fn+key combo tables 2016-07-26 17:55:02 +10:00
mec-tools@07a1b14073 Update mec-tools to get a couple of fixes 2016-05-28 17:44:01 +10:00
radare Update some function definitions using the better ARCompact analysis 2016-05-06 13:37:24 +10:00
t430.G1HT34WW.img.d Fix the compulsory typo.. 2016-06-02 22:49:22 +01:00
t430.G1HT35WW.img.d After testing by harryK, mark the x230 battery patch as workng. 2016-05-09 20:27:17 +10:00
t430s.G7HT39WW.img.d BUG: remove extra line from patch file 2016-06-11 14:33:49 +10:00
w530.G4HT39WW.img.d After testing by harryK, mark the x230 battery patch as workng. 2016-05-09 20:27:17 +10:00
x230.G2HT35WW.img.d After testing by harryK, mark the x230 battery patch as workng. 2016-05-09 20:27:17 +10:00
x230t.GCHT25WW.img.d Check my interpretation of zmatt's patch, port this patch to all other firmwares 2016-05-06 15:20:01 +10:00
.gitignore BUG: repeated failing makes could generate bad output. 2016-05-26 17:10:52 +10:00
.gitmodules Add x230 image and infrastructure 2016-04-19 19:39:23 +10:00
8duj27us.iso.orig.sha1 Use the same orig tail filename everywhere 2016-04-19 20:52:09 +10:00
autoexec.bat.template Add the checksum of the built FL2 to the details shown 2016-06-06 11:32:27 +10:00
fix-hdd-image-33554432.patch The t430 ISO images are slightly larger than all the other ones, so the hdd image fix does not apply. Fix this by selecting the patch to use based on the size of the hdd image 2016-07-14 11:18:45 +10:00
fix-hdd-image-38797312.patch The t430 ISO images are slightly larger than all the other ones, so the hdd image fix does not apply. Fix this by selecting the patch to use based on the size of the hdd image 2016-07-14 11:18:45 +10:00
g1uj25us.iso.orig.desc Added T430 BIOS 2.57, plus battery patch 2016-06-02 22:44:14 +01:00
g1uj25us.iso.orig.sha1 Added T430 BIOS 2.57, plus battery patch 2016-06-02 22:44:14 +01:00
g1uj38us.iso.orig.desc Add t430 bootable ISO 2016-04-27 12:57:53 +10:00
g1uj38us.iso.orig.sha1 Add t430 downloader and extractor 2016-04-24 13:19:17 +10:00
g2uj23us.iso.orig.desc FIX: forgot to add description file 2016-04-27 11:43:01 +10:00
g2uj23us.iso.orig.sha1 Use the same orig tail filename everywhere 2016-04-19 20:52:09 +10:00
g4uj30us.iso.orig.desc Add t530 support - this appears to share the EC firmware with the w530 2016-04-27 18:44:21 +10:00
g4uj30us.iso.orig.sha1 Add t530 support - this appears to share the EC firmware with the w530 2016-04-27 18:44:21 +10:00
g5uj28us.iso.orig.desc Add w530 ISO output 2016-04-27 12:47:42 +10:00
g5uj28us.iso.orig.sha1 Add image extractor for w530 2016-04-25 00:27:13 +10:00
g7uj18us.iso.orig.desc Add t430s bootable ISO 2016-04-27 13:06:19 +10:00
g7uj18us.iso.orig.sha1 Add details for downloading the t430s firmware 2016-04-23 11:52:10 +10:00
g7uj19us.iso.orig.desc Update the base image of the t430 patch to use the latest lenovo release (no EC changes in this version) 2016-06-06 17:12:48 +10:00
g7uj19us.iso.orig.sha1 Update the base image of the t430 patch to use the latest lenovo release (no EC changes in this version) 2016-06-06 17:12:48 +10:00
gcuj24us.iso.orig.desc Add x230t support 2016-04-27 18:10:49 +10:00
gcuj24us.iso.orig.sha1 Add image extractor for x230t 2016-04-24 23:57:04 +10:00
geteltorito Import geteltorito from the internet 2016-05-20 13:12:26 +10:00
hexpatch.pl Add License details 2016-04-23 14:02:28 +10:00
LICENSE Add License details 2016-04-23 14:02:28 +10:00
Makefile BUG: fix a command execution order issue - the make 'shell' command was expanded before the geteltorito command, which meant that there was no file for stat to use 2016-08-11 17:28:07 +10:00
n10ur10w.iso.orig.sha1 Have a quick look at the x250 and x260 firmware, it looks like they are both ARC cpus with a similar layout. They both have different checksumming than the xx30 range and the x260 looks like it is not even encrypted (however there is a strange 256byte block at the top of the file - perhaps a signature) 2016-04-24 19:08:34 +10:00
r02uj46d.iso.orig.sha1 Have a quick look at the x250 and x260 firmware, it looks like they are both ARC cpus with a similar layout. They both have different checksumming than the xx30 range and the x260 looks like it is not even encrypted (however there is a strange 256byte block at the top of the file - perhaps a signature) 2016-04-24 19:08:34 +10:00
README Small simplifications and clarifications for README 2016-08-27 15:04:17 +10:00
slice.extract Enable generation of FL2 files - unfortunately, needs a custom rule for each output - just x230 for now 2016-04-24 17:42:31 +10:00
slice.insert Enable generation of FL2 files - unfortunately, needs a custom rule for each output - just x230 for now 2016-04-24 17:42:31 +10:00
t430.G1HT34WW.img.enc.slice Added T430 BIOS 2.57, plus battery patch 2016-06-02 22:44:14 +01:00
t430.G1HT34WW.img.orig.sha1 Added T430 BIOS 2.57, plus battery patch 2016-06-02 22:44:14 +01:00
t430.G1HT34WW.s01D2000.FL2.slice Added T430 BIOS 2.57, plus battery patch 2016-06-02 22:44:14 +01:00
t430.G1HT35WW.img.enc.slice Add t430 bootable ISO 2016-04-27 12:57:53 +10:00
t430.G1HT35WW.img.orig.sha1 Add t430 downloader and extractor 2016-04-24 13:19:17 +10:00
t430.G1HT35WW.s01D2000.FL2.slice Add t430 bootable ISO 2016-04-27 12:57:53 +10:00
t430s.G7HT39WW.img.enc.slice Add t430s bootable ISO 2016-04-27 13:06:19 +10:00
t430s.G7HT39WW.img.orig.sha1 Add details for downloading the t430s firmware 2016-04-23 11:52:10 +10:00
t430s.G7HT39WW.s01D8000.FL2.slice Update the base image of the t430 patch to use the latest lenovo release (no EC changes in this version) 2016-06-06 17:12:48 +10:00
t530.G4HT39WW.img.d Add t530 support - this appears to share the EC firmware with the w530 2016-04-27 18:44:21 +10:00
t530.G4HT39WW.img.enc.slice Add t530 support - this appears to share the EC firmware with the w530 2016-04-27 18:44:21 +10:00
t530.G4HT39WW.img.orig.sha1 Add t530 support - this appears to share the EC firmware with the w530 2016-04-27 18:44:21 +10:00
t530.G4HT39WW.s01D5100.FL2.slice Add t530 support - this appears to share the EC firmware with the w530 2016-04-27 18:44:21 +10:00
w530.G4HT39WW.img.enc.slice Add image extractor for w530 2016-04-25 00:27:13 +10:00
w530.G4HT39WW.img.orig.sha1 Add image extractor for w530 2016-04-25 00:27:13 +10:00
w530.G4HT39WW.s01D5200.FL2.slice Add image extractor for w530 2016-04-25 00:27:13 +10:00
x220.8DHT34WW.img.enc.orig.sha1 Update slice definition for x220 reference code as it was incorrect 2016-04-24 16:00:14 +10:00
x220.8DHT34WW.img.enc.slice Start extracting the FL2 files, and use that as the basis for extracting the firmware. This will allow us to update or diff against the FL2 file 2016-04-24 17:26:31 +10:00
x220.8DHT34WW.s01CB000.FL2.orig.sha1 Start extracting the FL2 files, and use that as the basis for extracting the firmware. This will allow us to update or diff against the FL2 file 2016-04-24 17:26:31 +10:00
x220.8DHT34WW.s01CB000.FL2.slice Start extracting the FL2 files, and use that as the basis for extracting the firmware. This will allow us to update or diff against the FL2 file 2016-04-24 17:26:31 +10:00
x230.G2HT35WW.img.enc.slice Start extracting the FL2 files, and use that as the basis for extracting the firmware. This will allow us to update or diff against the FL2 file 2016-04-24 17:26:31 +10:00
x230.G2HT35WW.img.orig.sha1 Ensure we have an original file left around to diff against later 2016-04-19 19:54:56 +10:00
x230.G2HT35WW.s01D3000.FL2.orig.sha1 Start extracting the FL2 files, and use that as the basis for extracting the firmware. This will allow us to update or diff against the FL2 file 2016-04-24 17:26:31 +10:00
x230.G2HT35WW.s01D3000.FL2.slice Start extracting the FL2 files, and use that as the basis for extracting the firmware. This will allow us to update or diff against the FL2 file 2016-04-24 17:26:31 +10:00
x230t.GCHT25WW.img.enc.slice Add image extractor for x230t 2016-04-24 23:57:04 +10:00
x230t.GCHT25WW.img.orig.sha1 Add x230t support 2016-04-27 18:10:49 +10:00
x230t.GCHT25WW.s01DA000.FL2.slice BUG: x230t FL2 slice was wrong 2016-04-27 10:59:10 +10:00
x250.N10HT17W.img.enc.slice Have a quick look at the x250 and x260 firmware, it looks like they are both ARC cpus with a similar layout. They both have different checksumming than the xx30 range and the x260 looks like it is not even encrypted (however there is a strange 256byte block at the top of the file - perhaps a signature) 2016-04-24 19:08:34 +10:00
x250.N10HT17W.s01E5000.FL2.orig.sha1 Have a quick look at the x250 and x260 firmware, it looks like they are both ARC cpus with a similar layout. They both have different checksumming than the xx30 range and the x260 looks like it is not even encrypted (however there is a strange 256byte block at the top of the file - perhaps a signature) 2016-04-24 19:08:34 +10:00
x250.N10HT17W.s01E5000.FL2.slice Have a quick look at the x250 and x260 firmware, it looks like they are both ARC cpus with a similar layout. They both have different checksumming than the xx30 range and the x260 looks like it is not even encrypted (however there is a strange 256byte block at the top of the file - perhaps a signature) 2016-04-24 19:08:34 +10:00
x260.R02HT29W.img.slice Have a quick look at the x250 and x260 firmware, it looks like they are both ARC cpus with a similar layout. They both have different checksumming than the xx30 range and the x260 looks like it is not even encrypted (however there is a strange 256byte block at the top of the file - perhaps a signature) 2016-04-24 19:08:34 +10:00
x260.R02HT29W.s0AR0200.FL2.orig.sha1 Have a quick look at the x250 and x260 firmware, it looks like they are both ARC cpus with a similar layout. They both have different checksumming than the xx30 range and the x260 looks like it is not even encrypted (however there is a strange 256byte block at the top of the file - perhaps a signature) 2016-04-24 19:08:34 +10:00
x260.R02HT29W.s0AR0200.FL2.slice Have a quick look at the x250 and x260 firmware, it looks like they are both ARC cpus with a similar layout. They both have different checksumming than the xx30 range and the x260 looks like it is not even encrypted (however there is a strange 256byte block at the top of the file - perhaps a signature) 2016-04-24 19:08:34 +10:00
xx30.encrypt Add License details 2016-04-23 14:02:28 +10:00

The main purpose of this software is to patch the EC on xx30 series thinkpads
to make the classic 7-row keyboards work.  There are also patches included (but
disabled by default) to disable the authentic battery validation check.

With the patches included here, you can install the classic keyboard
hardware on many xx30 series laptops and make almost every key work properly.
The only keys that are not working are Fn+F3 (Battery) and Fn+F12 (Hibernate)

A full writeup of the hardware modifications needed can be found at:
    http://www.thinkwiki.org/wiki/Install_Classic_Keyboard_on_xx30_Series_ThinkPads


Step-by-step instructions:
--------------------------

This software expects to be run under Linux.  For best results, ensure you
have updated your BIOS to a recent version before starting.  If there is too
large a difference between the BIOS and EC versions then the flash process
will not complete.

1. Ensure you have installed the prerequisite packages
   On debian, this can be done with:

    apt-get install build-essential git mtools libssl-dev

2. Clone a copy of this repo on to your computer:

    git clone https://github.com/hamishcoleman/thinkpad-ec

3. Change to the directory created by the clone:

    cd thinkpad-ec

4. Show the list of laptops and USB image file names:

    make list_laptops

5. Select the correct IMG name for your laptop.  E.G. "patched.x230.img" for
   the x230 laptop.

6. Make the fully patched iimage for this laptop (this will download
   the original file from Lenovo and patch it):

    make patched.x230.img

7. Insert your USB stick and determine what device name it has.
   This command should help you find the right device:

    lsblk -d -o NAME,SIZE,LABEL

8. Write the bootable patched image onto the USB stick device

   WARNING: if you do not have the right device name, you might overwrite
   your hard drive!

   sudo dd if=patched.x230.img of=/dev/sdb

Your USB stick is now ready to boot and install the patched firmware.

Ensure your BIOS has been configured to boot from "Legacy" and not "UEFI"
before trying to boot.

When you boot this, you will be prompted with information about the patch
and asked to confirm your laptop type.  It will then automatically flash
the patched firmware.

Notes:

* You can also create a bootable CDROM image for burning to a disk
  by asking for a ".iso" file instead of the ".img" in step 7 above.
  Then you can use your normal CDROM burning tools to put this image on
  a blank cd and boot it up, skipping steps 8 and 9.

* More information for hacking on this can be found in the docs/HACKING.txt
  file.

* If you normally use UEFI boot, there has been at least one case where
  the EC does not get flashed until the BIOS is switched back into UEFI
  mode - after which the EC was automatically flashed on the next reboot.

* To enable the battery patch, look at the "*.OFF" files in the
  subdirectories and rename the right one to remove the ".OFF".
  Ensure you start with a clean build ("make clean") to get the new
  patch applied.

* To make an installer that reverts any EC changes, rename all the "*.patch"
  files in the subdirectory for your laptop so that they have "*.OFF"
  appended to them.  Ensure you start with a clean build ("make clean")
  Then build with the normal instructions.