All of this should apply to all T440s models but I have specifically tested it on a model with Samsung SSD and Intel 7260 dual band wifi.
Scary options in BIOS
All these remote management, anti-theft and device location options really just fuel my paranoia. Turned them all off. I try to setup all my machines to be disposable, device recovery is very unlikely anyway.
Good options in BIOS
You can nicely lock it down with a supervisor password and disallow booting from any device other than the internal SSD. There is an option to disallow firmware flashing. Getting the laptop apart to wipe the settings is quite a pain so I think this does help a bit.
UEFI boot and GPT
Before installing Fedora, go to the BIOS/UEFI setup menu and switch to the Startup tab. Look for “UEFI/Legacy boot” and set it to “UEFI only”. I have also disabled CSM but I don’t think it affects anything with Fedora 20.
I couldn’t get the local pxeboot running with UEFI so I had to resort to a USB flash drive. Had no problems getting the machine to boot the USB drive. Fedora 20 x86_64 install ISO was used mainly because I already had it downloaded from before.
Pay close attention to partitioning in Anaconda. If you want TRIM/discard select Standard Partitioning. Don’t worry about having to type your password multiple times for multiple encrypted standard partitions. Anaconda will do what you want by default – a single password opens all your encrypted partitions.
Despite everyone raging on the internet about SSD alignment it seems very unlikely that partitioning tools would do a bad job by default. In my case the internal Samsung SSD exported its geometry correctly and Anaconda had done proper partition alignment. You can check this using parted:
sudo parted /dev/sda # interactive interface of parted follows align-check opt # now you can cycle through all the partitions # all are aligned in my case
The rest of the installation process is a breeze, everything seems to work out of the box.
Is UEFI worth the hassle? Probably not, I was mainly curious. The boot seems a bit faster but I have no solid data.
TRIM/discard and HDD encryption
TRIM may help with SSD performance. It’s probably overkill and very overrated but for the sake of learning about it I opted to set it up. Be advised that enabling it may leak structure information about how you use your drives – especially how much free space you got. See http://asalor.blogspot.cz/2011/08/trim-dm-crypt-problems.html for more details. Now that all the disclaimers are done, let us set up discard for encrypted drives.
The actual process was very simple, first you need to tell cryptsetup to allow discard to be enabled. Open /etc/crypttab and add “luks,discard” to each drive that is relevant. The end result should look like this:
luks-................... UUID=................... none luks,discard
I am not entirely sure if adding luks is necessary here but I do it anyway. The “luks” option forces LUKS mode. Now you can enable the discard option in /etc/fstab, add “discard” to the list of options in the relevant mount points. The end result should look something like this:
$some_device_depending_on_your_setup /mount/point ext4 defaults,noatime,noadirtime,discard,x-systemd.device-timeout=0 1 2
To make these changes effective on next boot you have to regenerate initramfs.
mount /boot dracut --force
Testing with fstrim:
sudo fstrim / sudo fstrim /home
Getting the function keys to work
If you use a big bulky desktop environment like KDE or Gnome this may already work out of the box. I use i3wm so I have to set it up manually.
Install the necessary dependencies:
sudo yum install xbacklight pulseaudio-utils
This is what I put into my i3config, should be easy to adapt for other window managers. It’s a bit messy and I may improve it later but it gets the job done for now. It has basic support for volume up, volume down, mute toggle, brightness up and brightness down.
bindsym XF86AudioLowerVolume exec /usr/bin/pactl set-sink-volume 0 -- '-5%' && notify-send --urgency=low --expire-time=1000 "`pactl list sinks | grep "Volume: " | grep -v "Base" | tr -d '\t'`" bindsym XF86AudioRaiseVolume exec /usr/bin/pactl set-sink-volume 0 -- '+5%' && notify-send --urgency=low --expire-time=1000 "`pactl list sinks | grep "Volume: " | grep -v "Base" | tr -d '\t'`" bindsym XF86AudioMute exec /usr/bin/pactl set-sink-mute 0 toggle && notify-send --urgency=low --expire-time=1000 `pactl list sinks | grep "Mute: " | tr -d '\t'` bindsym XF86MonBrightnessUp exec /usr/bin/xbacklight -inc 10 && notify-send --urgency=low --expire-time=1000 "Backlight `xbacklight`%" bindsym XF86MonBrightnessDown exec /usr/bin/xbacklight -dec 10 && notify-send --urgency=low --expire-time=1000 "Backlight `xbacklight`%"
Get more out of the battery
Append the following to /etc/rc.d/rc.local:
echo '1500' > /proc/sys/vm/dirty_writeback_centisecs echo 'min_power' > /sys/class/scsi_host/host0/link_power_management_policy echo 'min_power' > /sys/class/scsi_host/host1/link_power_management_policy echo 'min_power' > /sys/class/scsi_host/host2/link_power_management_policy # some people have problems with this and get hissing noises # I don't so I enable power save even for Intel HDA Audio echo '1' > /sys/module/snd_hda_intel/parameters/power_save' echo '0' > /proc/sys/kernel/nmi_watchdog' echo 'auto' > /sys/bus/usb/devices/2-6/power/control' echo 'auto' > /sys/bus/usb/devices/2-7/power/control' echo 'auto' > /sys/bus/pci/devices/0000:00:1f.3/power/control echo 'auto' > /sys/bus/pci/devices/0000:00:00.0/power/control echo 'auto' > /sys/bus/pci/devices/0000:00:03.0/power/control echo 'auto' > /sys/bus/pci/devices/0000:00:02.0/power/control echo 'auto' > /sys/bus/pci/devices/0000:00:16.0/power/control echo 'auto' > /sys/bus/pci/devices/0000:00:16.3/power/control echo 'auto' > /sys/bus/pci/devices/0000:03:00.0/power/control echo 'auto' > /sys/bus/pci/devices/0000:02:00.0/power/control echo 'auto' > /sys/bus/pci/devices/0000:00:1f.0/power/control echo 'auto' > /sys/bus/pci/devices/0000:00:1d.0/power/control echo 'auto' > /sys/bus/pci/devices/0000:00:1c.1/power/control echo 'auto' > /sys/bus/pci/devices/0000:00:1c.0/power/control echo 'auto' > /sys/bus/pci/devices/0000:00:1b.0/power/control echo 'auto' > /sys/bus/pci/devices/0000:00:14.0/power/control echo 'auto' > /sys/bus/pci/devices/0000:00:19.0/power/control echo 'auto' > /sys/bus/pci/devices/0000:00:1f.2/power/control # your ethernet may be called differently ethtool -s em1 wol d
Creating the file will automatically enable the rc-local.service unit in systemd. There is no need to enable it manually. You can verify this by running:
systemctl show rc-local.service
You can get amazing battery life out of this machine. 15+ hours is not a problem with moderate usage (with internal and 6 cell battery).
The LCD panel woes
The Full HD IPS T440s ship with 2 different LCD panels – AUO and LG. You can look up which one you got by grepping /var/log/Xorg.0.log. If it contains LP140WF1 you got what everyone considers the worse display – the LG. B140HAN01.2 is the AUO. You can read a lot of endless first world problem style whining about this here.
All the video output ports on the dockstation are mirrored.
As a workaround you can use the mini DisplayPort on the laptop itself even when the laptop is docked. The VGA port on the laptop unfortunately cannot be used. From what I can tell it is disabled when you put the laptop into the dockstation. Makes sense but why isn’t the miniDP disabled?
dockstation audio jack
Use the laptop combo audio port as a workaround. Works even when docked.
… but who cares?
If bluetooth doesn’t work and the device doesn’t show up in `lsusb` it could be because you disabled the Fingerprint reader. Enable it to get bluetooth back. This issue could be specific to my firmware version 2.27.
- Toggle all radio off with the wifi function key – just binding the key to nmcli radio all off works but doesn’t toggle