This is a document describing how to install Ubuntu 16.04 LTS on ThinkPad T470s.
How to control fan speed. From ThinkWiki. Jump to: navigation, search. To enable fan control, the module parameter fancontrol=1 must be given to thinkpad-acpi. For example, in Ubuntu 8.04. Shimodax's ThinkPad fan control tool offers similar functionality.
- CPU: Intel Core i7-7600U (2.80GHz, 4MB cache)
- Graphics: Intel HD Graphics 620
- Display: 14” WQHD (2560 X 1440) IPS Non-Touch Anti-Glare
- Memory: 24GB DDR4 2133 MHz (8GB Onboard + 16GB)
- SSD: PCIe-NVMe 256G OPAL 2.0
- Wireless: Intel Dual Band Wireless AC (2x2) 8265 Bluetooth 4.1
- Fingerprint Reader
- No Smartcard Reader
Canonical says the pre-installed version of Ubuntu 16.04 works on T470s.
I recommend using Ubuntu 16.04.3 or later to avoid most of the following issues.
If you try using 16.04.1 or earlier, you should use the following command to install the HWE kernel after installation (see this document for more details):
下記の問題が起きる可能性があるので、基本的には公式の 16.04.3 を使ったほうがよい。Ubuntu Japanese Team が提供する日本語 Remix リリースは無印の 16.04 であることに注意。特にイーサネットが使えない問題が面倒だが、このページを参考に4.4 より新しいバージョンのカーネルを USB メモリなどで用意しておくことでも対処できる。
Wifi and Eithernet problem
Ubuntu 16.04 with Linux kernel 4.4 can't recognize wifi and ethernet device on T470s. We can manually install a more recent kernel (such as 4.8) after installation (via USB drive) to solve the issue.
NVMe support
The Linux kernel earlier than 4.11 can't handle power saving of NVMe devices properly. Andy Lutomirski's patch to solve the issue is mereged in 4.10.0-14.16 in Ubuntu and available in the latest HWE Stack for 16.04.
Bluetooth
It is also resolved in the latest HWE kernel.
Fan controll
thinkfan
can mitigate the problem.Disable Secure Boot
Install third-party software for graphics and Wi-Fi hardware, Flash, MP3 and other media
Summary: The following message displayed at startup is unavoidable if you want to use third-party driver, such as NVIDIA graphics driver and VirtualBox driver, and NOT a major issue in most cases.
Booting in insecure mode
Can't unlock LUKS encrypted drive
Encrypt the new Ubuntu installation for security
Summary: Configure the kernel parameter to change from
splash
to nosplash
when starting the kernel.TODO
Example:
BIOS setting
If ThinkPad doesn't recognize your mouse and keyboard connected to the dock when reconnect the Thunderbolt 3 cable, changing Security Level of the Thunderbolt 3 setting to No Security would help.
Suspending
Unplug USB-C cable before suspending ThinkPad is recommended because it, unfortunatelly, sometimes crash in resuming.
Ethernet on the dock
4.10 kernel doesn't support ethernet on the dock. You must use 4.13 instead.
Hack to control the keyboard backlight level on a Thinkpad Lenovo X1 Carbon Touch
tmp.c
/* gcc -o tmp `pkg-config --libs --cflags glib-2.0` tmp.c |
* |
* # modprobe ec_sys |
* |
* # watch -n 0.1 hexdump -C /sys/kernel/debug/ec/ec0/io |
* |
* 00000000 a7 05 a0 e2 00 86 05 00 00 00 47 00 00 03 00 10 |..........G.....| |
* 00000000 a7 05 a0 e2 00 86 05 00 00 00 47 00 00 43 00 10 |..........G..C..| |
* 00000000 a7 05 a0 e2 00 86 05 00 00 00 47 00 00 83 00 10 |..........G.....| |
* |
* # ./tmp 0 |
* # ./tmp 1 |
* # ./tmp 2 |
* |
*/ |
#include<glib.h> |
#include<sys/stat.h> |
#include<fcntl.h> |
#include<errno.h> |
char levels[] = { |
0x03, |
0x43, |
0x83 |
}; |
staticvoid |
usage (char **argv) |
{ |
g_print ('%s [level]n', argv[0]); |
g_print ('Where level is between 1 and 3n'); |
} |
intmain (int argc, char **argv) |
{ |
int fd; |
int level; |
if (argc < 2) { |
usage (argv); |
return1; |
} |
level = atoi(argv[1]); |
if (level < 0 || level > 3) { |
usage (argv); |
return1; |
} |
fd = open ('/sys/kernel/debug/ec/ec0/io', O_RDWR); |
if (fd < 0) { |
g_print ('open: %sn', g_strerror (errno)); |
return1; |
} |
if (lseek (fd, 0xd, SEEK_CUR) < 0) { |
g_print ('seek: %sn', g_strerror (errno)); |
return1; |
} |
if (write (fd, &levels[level], 1) < 0) { |
g_print ('write: %sn', g_strerror (errno)); |
return1; |
} |
return0; |
} |
commented Dec 29, 2013
Thank you for this great gist, as it solved our needed issue. I posted an answer based on this gist: |
commented Apr 19, 2014
Any chance this will work for the 2014 none touch version? |
commented Aug 12, 2014
Thanks! Confirmed this works on a Fedora 20 system, compiled with: |
commented Nov 9, 2014
Dude, nice one. 1 coffee @changetip |
commented Feb 23, 2015
is this code gonna work on Toshiba U945, or do I need change this code for getting my keyboard backling works? |
commented Aug 13, 2015
I've the 3rd edition of the x1 carbon, running ubuntu on it with kernel 3.19.0-25-generic. Seems to be that the path on this machine is different. There is no '/sys/kernel/debug/ec/ec0/io' on my system. Any idea? Thanks in advance! |
commented Aug 31, 2015
I am experiencing the same issue as @maltinho, with the same laptop. By the way, even if I expect no difference, my thinkpad is not a touch one. Hopping this will be solved, thanks in advance |
commented Sep 28, 2015
Works on ThinkPad T430s with Ubuntu 14.04, thanks! It's really helpful since my Fn key stopped working. |
commented Nov 6, 2015
Here's a version that doesn't need libglib: |
commented May 5, 2016
@maltinho, bruno066, just sudo modprobe ec_sys to get that (if your kernel is configured to ship it as a module) |
commented May 22, 2016
Here is a bash script version which does not require compilation. Works on my X260. Thanks for figuring out registers! |
commented Nov 2, 2018
On Fedora at least, compiled versions need chown root:root <filename>; chmod +s <filename> to gain root permissions.The ec_sys kernel module is not loaded automatically on my system (X230 Tablet) so needs # echo ec_sys > /etc/modules_load.d to load, and #echo options ec_sys write-support=1 > /etc/modprobe.d/ec_sys.conf to be able to write to the relevant device persistently after reboot.Once that's done, works like a charm! |
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment