Debian Jessie on Thinkpad X240
Why not Debian Wheezy?
I've tried really hard to get the X240 running on Debian Wheezy (Stable), but after investing days trying to fix basic hardware failures I decided to move to Debian Jessie (testing).
Hardware
Kernel
Before you do anything you should get the hardware working correctly. In order to do that, any Linux kernel image from the testing/unstable/experimental repositories will work great.
It's known that most hardware components will work properly starting kernel
version 3.12.
3.13.x and 3.14.x versions only worked for me.
uname -a
Linux raiser 3.14-1-amd64 #1 SMP Debian 3.14.7-1 (2014-06-16) x86_64 GNU/Linux
This is how your output of lspci should look like.
lspci
00:00.0 Host bridge: Intel Corporation Haswell-ULT DRAM Controller (rev 0b) 00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b) 00:03.0 Audio device: Intel Corporation Haswell-ULT HD Audio Controller (rev 0b) 00:14.0 USB controller: Intel Corporation Lynx Point-LP USB xHCI HC (rev 04) 00:16.0 Communication controller: Intel Corporation Lynx Point-LP HECI #0 (rev 04) 00:16.3 Serial controller: Intel Corporation Lynx Point-LP HECI KT (rev 04) 00:19.0 Ethernet controller: Intel Corporation Ethernet Connection I218-LM (rev 04) 00:1b.0 Audio device: Intel Corporation Lynx Point-LP HD Audio Controller (rev 04) 00:1c.0 PCI bridge: Intel Corporation Lynx Point-LP PCI Express Root Port 6 (rev e4) 00:1c.1 PCI bridge: Intel Corporation Lynx Point-LP PCI Express Root Port 3 (rev e4) 00:1d.0 USB controller: Intel Corporation Lynx Point-LP USB EHCI #1 (rev 04) 00:1f.0 ISA bridge: Intel Corporation Lynx Point-LP LPC Controller (rev 04) 00:1f.2 SATA controller: Intel Corporation Lynx Point-LP SATA Controller 1 [AHCI mode] (rev 04) 00:1f.3 SMBus: Intel Corporation Lynx Point-LP SMBus Controller (rev 04) 02:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5227 PCI Express Card Reader (rev 01) 03:00.0 Network controller: Intel Corporation Wireless 7260 (rev 83)
Brightness Controls
By default, the brightness keys will control stages of the brightness
level. To change that behavior to gradually change the brightness, add
the following line to your /etc/default/grub
:
cat /etc/default/grub | grep GRUB_CMDLINE_LINUX_DEFAULT
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=Linux acpi_backlight=vendor"
Next update GRUB:
update-grub
Intel Graphics
By default, X server will enable the hardware acceleration, DRI, and
other GL settings. To enable SNA acceleration for the Intel GPU,
create a configuration file in /etc/X11/xorg.conf.d/
with the
following:
cat /etc/X11/xorg.conf.d/20-intel.conf
Section "Device" Identifier "Intel Graphics" Driver "intel" Option "AccelMethod" "sna" EndSection
Power Saving
Powertop
Powertop is a tool that will output the current usage of electricity by each hardware component, and how it's been managed.
The best feature from Powertop is the Tunables section. In this section, you're able to fine tune the available power saving modes of your hardware components.
Start Powertop
sudo powertop
Hit the key <TAB> to browse, and select from a range of tunable options. Powertop tells you which to change with a description of Bad.
RC6 Kernel Settings
The Intel i915 RC6 triggers a lower power state during the GPUs idle state.
To enable RC6, you need to add the GRUB boot flag:
cat /etc/default/grub | grep GRUB_CMDLINE_LINUX_DEFAULT
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.i915_enable_rc6=1"
Next update GRUB:
update-grub
This will enable it on boot, but usually TLP handles RC6 switching on suspend/hibernation/resume modes.
For more information on Intel i915 power saving settings, see Ubuntu's Power Saving Tweaks.
TLP
Everybody in the community recommends TLP for controlling power usage, and triggering the power saving capabilities of multiple hardware devices. TLP works well with systemd, and it provides specific modules for modern Lenovo Thinkpads.
- Installation
Create a
tlp.list
file for the tlp repositories in/etc/apt/sources.list.d/
that contains the following line:cat /etc/apt/sources.list.d/tlp.list
deb http://ppa.launchpad.net/linrunner/tlp/ubuntu lucid main
Add TLP's keys to the apt keyring with the following command:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 02D65EFF
Re-synchronize the packages index and install the TLP's packages:
apt-get update
apt-get install tlp tlp-rdw tp-smapi-dkms acpi-call-tools
For more information about the installation process, see TLP's installation section.
- Configuration
My TLP configuration:
cat /etc/default/tlp
# ------------------------------------------------------------------------------ # tlp - Parameters for power save # Hint: some features are disabled by default, remove the leading # to enable them # Set to 0 to disable/1 to enable TLP TLP_ENABLE=1 # Seconds laptop mode has to to wait after the disk goes idle before doing a sync. # Non-zero value enables, zero disables laptop mode. DISK_IDLE_SECS_ON_AC=0 DISK_IDLE_SECS_ON_BAT=2 # Dirty page values (timeouts in secs). MAX_LOST_WORK_SECS_ON_AC=15 MAX_LOST_WORK_SECS_ON_BAT=60 # Select a cpu frequency scaling governor: ondemand/powersave/performance/conservative # Important: # - You *must* disable your distribution's governor settings or conflicts will occur # - ondemand is sufficient for *almost all* workloads, you should know what you're doing! CPU_SCALING_GOVERNOR_ON_AC=performance CPU_SCALING_GOVERNOR_ON_BAT=ondemand # Set the min/max frequency available for the scaling governor. # Possible values strongly depend on your cpu. For available frequencies see # tlp-stat output, Section "+++ Processor". # Hint: Parameters are disabled by default, remove the leading # to enable them, # otherwise kernel default values are used. #CPU_SCALING_MIN_FREQ_ON_AC=0 #CPU_SCALING_MAX_FREQ_ON_AC=0 #CPU_SCALING_MIN_FREQ_ON_BAT=0 #CPU_SCALING_MAX_FREQ_ON_BAT=0 # Set the cpu "turbo boost" feature: 0=disable / 1=allow # Requires an Intel Core i processor and kernel 3.7 or later. # Important: # - This may conflict with your distribution's governor settings # - A value of 1 does *not* activate boosting, it just allows it CPU_BOOST_ON_AC=1 CPU_BOOST_ON_BAT=0 # Minimize number of used cpu cores/hyper-threads under light load conditions SCHED_POWERSAVE_ON_AC=0 SCHED_POWERSAVE_ON_BAT=1 # Kernel NMI Watchdog # 0=disable (default, saves power) / 1=enable (for kernel debugging only) NMI_WATCHDOG=0 # Change CPU voltages aka "undervolting" - Kernel with PHC patch required # Freq:voltage pairs are written to /sys/devices/system/cpu/cpu0/cpufreq/phc_controls # CAUTION: only use this, if you thoroughly understand what you are doing! #PHC_CONTROLS="F:V F:V F:V F:V" # Hard disk devices, separate multiple devices with spaces (default: sda). # Devices can be specified by disk id too (lookup with: tlp diskid). DISK_DEVICES="sda sdb" # Hard disk advanced power management level: 1(max saving)..254(off) # Levels 1..127 may spin down the disk. # Separate values for multiple devices with spaces. DISK_APM_LEVEL_ON_AC="254 254" DISK_APM_LEVEL_ON_BAT="128 128" # Hard disk spin down timeout: # 0: spin down disabled # 1..240: timeouts from 5s to 20min (in units of 5s) # 241..251: timeouts from 30min to 5.5 hours (in units of 30min) # (see 'man hdparm' for details) #DISK_SPINDOWN_TIMEOUT_ON_AC="0 0" #DISK_SPINDOWN_TIMEOUT_ON_BAT="0 0" # Select io scheduler for the disk devices: noop/deadline/cfq (Default: cfq) # Separate values for multiple devices with spaces. #DISK_IOSCHED="cfq cfq" # SATA aggressive link power management (ALPM): # min_power/medium_power/max_performance SATA_LINKPWR_ON_AC=max_performance SATA_LINKPWR_ON_BAT=medium_power # PCI Express Active State Power Management (PCIe ASPM): # default/performance/powersave # Hint: needs kernel boot option pcie_aspm=force on some machines PCIE_ASPM_ON_AC=performance PCIE_ASPM_ON_BAT=powersave # Radeon graphics clock speed (profile method): low/mid/high/auto/default # auto = mid on BAT, high on AC; default = use hardware defaults # (Kernel >= 2.6.35 only, not with fglrx driver!) RADEON_POWER_PROFILE_ON_AC=high RADEON_POWER_PROFILE_ON_BAT=low # New radeon dynamic power management method (dpm): battery/performance # (Kernel >= 3.11 only, requires boot option radeon.dpm=1) RADEON_DPM_STATE_ON_AC=performance RADEON_DPM_STATE_ON_BAT=battery # New radeon dpm performance level: auto/low/high (auto is recommended) RADEON_DPM_PERF_LEVEL_ON_AC=auto RADEON_DPM_PERF_LEVEL_ON_BAT=auto # WiFi power saving mode: 1=disable/5=enable # (Linux 2.6.32 and later, some adapters only!) WIFI_PWR_ON_AC=1 WIFI_PWR_ON_BAT=5 # Disable wake on lan: Y/N WOL_DISABLE=Y # Enable audio power saving for Intel HDA, AC97 devices (timeout in secs). # A value of 0 disables / >=1 enables power save. SOUND_POWER_SAVE_ON_AC=0 SOUND_POWER_SAVE_ON_BAT=1 # Disable controller too (HDA only): Y/N SOUND_POWER_SAVE_CONTROLLER=Y # Set to 1 to power off optical drive in UltraBay (ThinkPads only) # when running on battery. A value of 0 disables this Feature (Default). # Drive can be powered on again by releasing (and reinserting) the # eject lever or by pressing the disc eject button on newer models. # Note: an UltraBay hard disk is never powered off. BAY_POWEROFF_ON_BAT=0 # Optical drive device to power off (default sr0) BAY_DEVICE="sr0" # Runtime Power Management for pci(e) bus devices # (Kernel >= 2.6.35 only): on=disable/auto=enable RUNTIME_PM_ON_AC=on RUNTIME_PM_ON_BAT=auto # Runtime PM for *all* pci(e) bus devices, expect backlisted ones: # 0=disable / 1=enable # Warning: experimental option, could cause system instabilities RUNTIME_PM_ALL=0 # Exclude pci(e) device adresses the following list from Runtime PM # (separate with spaces). Use lspci to get the adresses (1st column). #RUNTIME_PM_BLACKLIST="bb:dd.f 11:22.3 44:55.6" # Set to 0 to disable/1 to enable usb autosuspend feature USB_AUTOSUSPEND=1 # Devices from the following list are excluded from usb autosuspend # (separate with spaces). Use lsusb to get the ids. # Note: input devices (usbhid) are excluded automatically #USB_BLACKLIST="1111:2222 3333:4444" # WWAN devices are excluded from usb autosuspend: # 0=do not exclude / 1=exclude # Note: works for ids 05c6:* 0bdb:* 1199:* only USB_BLACKLIST_WWAN=1 # Set to 1 to disable autosuspend before shutdown/0 to do nothing # (workaround for usb devices that cause shutdown problems) #USB_AUTOSUSPEND_DISABLE_ON_SHUTDOWN=1 # Restore radio device state (bluetooth, wifi, wwan) from previous shutdown # on system startup: 0=disable/1=enable # Hint: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below # are ignored when this is enabled! RESTORE_DEVICE_STATE_ON_STARTUP=0 # Radio devices to disable on startup: bluetooth wifi wwan #DEVICES_TO_DISABLE_ON_STARTUP="bluetooth wifi wwan" # Radio devices to enable on startup: bluetooth wifi wwan #DEVICES_TO_ENABLE_ON_STARTUP="wifi" # Radio devices to disable on shutdown: bluetooth wifi wwan # (workaround for devices that are blocking shutdown) #DEVICES_TO_DISABLE_ON_SHUTDOWN="bluetooth wifi wwan" # Radio devices to enable on shutdown: bluetooth wifi wwan # (to prevent other operating systems from missing radios) #DEVICES_TO_ENABLE_ON_SHUTDOWN="wwan" # Radio devices to enable when wireless radio switch is turned on: # bluetooth wifi wwan (Ubuntu + ThinkPad only) #DEVICES_TO_ENABLE_ON_RADIOSW="wifi wwan" # Battery charge thresholds (ThinkPad only, tp-smapi or acpi-call kernel module required) # Charging starts when the remaining capacity falls below the START_CHARGE_TRESH # value and stops when exceeding the STOP_CHARGE_TRESH value. # Main battery (values in %) #START_CHARGE_THRESH_BAT0=75 #STOP_CHARGE_THRESH_BAT0=80 # Ultrabay or slice battery (values in %) #START_CHARGE_THRESH_BAT1=75 #STOP_CHARGE_THRESH_BAT1=80 # Set to 1 to disable use of tpacpi-bat on Sandy Bridge or newer Thinkpads # and force usage of tp-smapi instead #DISABLE_TPACPIBAT=1 # ------------------------------------------------------------------------------ # tlp-rdw - Parameters for the radio device wizard # Possible devices: bluetooth/wifi/wwan # Hint: parameters are disabled by default, remove the leading # to enable them # Radio devices to disable on connect DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi wwan" DEVICES_TO_DISABLE_ON_WIFI_CONNECT="wwan" DEVICES_TO_DISABLE_ON_WWAN_CONNECT="wifi" # Radio devices to enable on disconnect DEVICES_TO_ENABLE_ON_LAN_DISCONNECT="wifi wwan" DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT="" DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT="" # Radio devices to enable/disable when docked #DEVICES_TO_ENABLE_ON_DOCK="" #DEVICES_TO_DISABLE_ON_DOCK="" # Radio devices to enable/disable when undocked #DEVICES_TO_ENABLE_ON_UNDOCK="wifi" #DEVICES_TO_DISABLE_ON_UNDOCK=""
Touchpad
As you already notice, the touchpad is quite peculiar. Itself is a giant click-button. In the upper section of the touchpad, there are divisions assigned for each mouse button. It gets time to get used to, but I prefer it since I mostly use my trackpad. The distance between the divisions of the mouse buttons and the trackpad is perfect, this makes the usage of both pleasant.
By default, the divisions of the buttons, two-finger scrolling, and
the sensibility calibration are not set. To enable all of them, set up
a configuration file for the X server in /etc/X11/xorg.conf.d/
with the following:
cat /etc/X11/xorg.conf.d/50-synaptics.conf
# Synaptics Touchpad configuration for Thinkpad X240 Section "InputClass" Identifier "touchpad catchall" Driver "synaptics" MatchIsTouchpad "on" MatchDevicePath "/dev/input/event*" # buttons by multi-touch taps Option "TapButton1" "1" # left click with one finger tap Option "TapButton2" "2" # middle click with two finger tap Option "TapButton3" "3" # right click with three finger tap # bottom right corner tap is right click Option "RBCornerButton" "3" # scroll with two fingers only Option "VertEdgeScroll" "off" Option "VertTwoFingerScroll" "on" Option "HorizEdgeScroll" "off" Option "HorizTwoFingerScroll" "on" Option "CircularScrolling" "off" # locked drags Option "LockedDrags" "1" Option "LockedDragTimeout" "500" # top row click areas Option "ClickPad" "true" Option "SoftButtonAreas" "60% 0 0 5% 40% 60% 0 5%" Option "AreaTopEdge" "4%" EndSection # avoid interferences from other drivers Section "InputClass" Identifier "touchpad ignore duplicates" MatchIsTouchpad "on" MatchOS "Linux" MatchDevicePath "/dev/input/mouse*" Option "Ignore" "on" EndSection
System
systemd
systemd is a great tool for managing services and system states. I won't explain what systemd is, or why you should be using it in your system. I will only add that, it does have a learning curve, it goes against all the established patterns for upstarting a system and its services.
For learning documents and other resources, go to systemd official website.
systemd for Debian
It's redundant to explain how to install and configure systemd in Debian, when the Debian's wiki covers everything you need.
journalctl
journalctl is meant to query the systemd journal. systemd's journal is an aggregation of most important logs and events occurring in your system.
In order for the normal user to access journalctl, you must add the user to the systemd-journal group.
usermod -a -G systemd-journal <your username>
Now reboot systemd:
systemctl reboot
NetworkManager
By default, NetworkManager.service should be part of the systemd lib directory, and should be enabled.
You should be able to find the service units for NetworkManager in
/etc/systemd/system/
cat /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service
[Unit] Description=Network Manager [Service] Type=dbus BusName=org.freedesktop.NetworkManager ExecStart=/usr/sbin/NetworkManager --no-daemon # Suppress stderr to eliminate duplicated messages in syslog. NM calls openlog() # with LOG_PERROR when run in foreground. But systemd redirects stderr to # syslog by default, which results in logging each message twice. StandardError=null # NM doesn't want systemd to kill its children for it KillMode=process [Install] WantedBy=multi-user.target Alias=dbus-org.freedesktop.NetworkManager.service Also=NetworkManager-dispatcher.service
cat /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service
[Unit] Description=Network Manager Script Dispatcher Service [Service] Type=dbus BusName=org.freedesktop.nm_dispatcher ExecStart=/usr/lib/NetworkManager/nm-dispatcher.action [Install] Alias=dbus-org.freedesktop.nm-dispatcher.service
You should see that NetworkManager.service is enabled.
systemctl status NetworkManager
NetworkManager.service - Network Manager Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled) Active: active (running) since Thu 2014-08-07 08:51:25 PDT; 7min ago Main PID: 1011 (NetworkManager) CGroup: name=systemd:/system/NetworkManager.service └─1011 /usr/sbin/NetworkManager --no-daemon Aug 07 08:51:24 raiser systemd[1]: Starting Network Manager... Aug 07 08:51:24 raiser NetworkManager[1011]: <info> NetworkManager (version 0.9.8.10) is starting... Aug 07 08:51:24 raiser NetworkManager[1011]: <info> Read config file /etc/NetworkManager/NetworkManager.conf Aug 07 08:51:24 raiser NetworkManager[1011]: <info> WEXT support is enabled Aug 07 08:51:25 raiser NetworkManager[1011]: SCPlugin-Ifupdown: init! Aug 07 08:51:25 raiser NetworkManager[1011]: SCPlugin-Ifupdown: update_system_hostname Aug 07 08:51:25 raiser NetworkManager[1011]: SCPluginIfupdown: management mode: unmanaged Aug 07 08:51:25 raiser NetworkManager[1011]: SCPlugin-Ifupdown: devices added (path: /sys/devices/pci0000:00/0000:00:19.0/net/eth0, iface: eth0) Aug 07 08:51:25 raiser NetworkManager[1011]: SCPlugin-Ifupdown: device added (path: /sys/devices/pci0000:00/0000:00:19.0/net/eth0, iface: eth0): no ifupdown configuration found. Aug 07 08:51:25 raiser NetworkManager[1011]: SCPlugin-Ifupdown: devices added (path: /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0, iface: wlan0) Aug 07 08:51:25 raiser NetworkManager[1011]: SCPlugin-Ifupdown: device added (path: /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0, iface: wlan0): no ifupdown configuration found. Aug 07 08:51:25 raiser NetworkManager[1011]: SCPlugin-Ifupdown: devices added (path: /sys/devices/virtual/net/lo, iface: lo) Aug 07 08:51:25 raiser NetworkManager[1011]: SCPlugin-Ifupdown: device added (path: /sys/devices/virtual/net/lo, iface: lo): no ifupdown configuration found. Aug 07 08:51:25 raiser NetworkManager[1011]: SCPlugin-Ifupdown: end _init. Aug 07 08:51:25 raiser NetworkManager[1011]: <info> Loaded plugin ifupdown: (C) 2008 Canonical Ltd. To report bugs please use the NetworkManager mailing list. Aug 07 08:51:25 raiser NetworkManager[1011]: <info> Loaded plugin keyfile: (c) 2007 - 2010 Red Hat, Inc. To report bugs please use the NetworkManager mailing list. Aug 07 08:51:25 raiser NetworkManager[1011]: Ifupdown: get unmanaged devices count: 0 Aug 07 08:51:25 raiser NetworkManager[1011]: SCPlugin-Ifupdown: (35959328) ... get_connections. Aug 07 08:51:25 raiser NetworkManager[1011]: SCPlugin-Ifupdown: (35959328) ... get_connections (managed=false): return empty list. Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto wutangclanaintnothingtofuckwithn ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto wutangclanaintnothingtofuckwithn' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto The Box Factory ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto The Box Factory' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto noisebridge ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto noisebridge' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto #SFO FREE WIFI ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto #SFO FREE WIFI' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto GoogleGuest ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto GoogleGuest' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto CoupaSM ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto CoupaSM' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Wired connection 1 ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Wired connection 1' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto wutangn ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto wutangn' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto MonkeyBrains.net ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto MonkeyBrains.net' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto Coupa ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto Coupa' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto NETGEAR-5G ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto NETGEAR-5G' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto wutangclanaintnothingtofuckwith ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto wutangclanaintnothingtofuckwith' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto hearth ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto hearth' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto Sycamore Public ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto Sycamore Public' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto _San_Francisco_Free_WiFi ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto _San_Francisco_Free_WiFi' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing CoupaHQ ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'CoupaHQ' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto cafelabohemesanfrancisco ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto cafelabohemesanfrancisco' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto SRGNC-GUEST ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto SRGNC-GUEST' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Stormpath Guest ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Stormpath Guest' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto Premium ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto Premium' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto JWAFREEWIFI ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto JWAFREEWIFI' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto Automattic-Guest ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto Automattic-Guest' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto CustomerSuccess ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto CustomerSuccess' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto CoffeeBarU ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto CoffeeBarU' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto hearth-new ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto hearth-new' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto Webroot-Guest ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto Webroot-Guest' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto UCBX ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto UCBX' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto BLUEFIG-guest ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto BLUEFIG-guest' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto .Workshop_FREE. ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto .Workshop_FREE.' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto protectyourneck ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto protectyourneck' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto AB4966 ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto AB4966' Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: parsing Auto .FreeWiFibyYahoo! ... Aug 07 08:51:25 raiser NetworkManager[1011]: keyfile: read connection 'Auto .FreeWiFibyYahoo!' Aug 07 08:51:25 raiser NetworkManager[1011]: Ifupdown: get unmanaged devices count: 0 Aug 07 08:51:25 raiser NetworkManager[1011]: <info> monitoring kernel firmware directory '/lib/firmware'. Aug 07 08:51:25 raiser NetworkManager[1011]: <info> monitoring ifupdown state file '/run/network/ifstate'. Aug 07 08:51:25 raiser NetworkManager[1011]: <info> rfkill1: found WiFi radio killswitch (at /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/ieee80211/phy0/rfkill1) (driver iwlwifi) Aug 07 08:51:25 raiser NetworkManager[1011]: <info> WiFi hardware radio set enabled Aug 07 08:51:25 raiser NetworkManager[1011]: <info> WiFi enabled by radio killswitch; enabled by state file Aug 07 08:51:25 raiser NetworkManager[1011]: <info> WWAN enabled by radio killswitch; enabled by state file Aug 07 08:51:25 raiser NetworkManager[1011]: <info> WiMAX enabled by radio killswitch; enabled by state file Aug 07 08:51:25 raiser NetworkManager[1011]: <info> Networking is enabled by state file Aug 07 08:51:25 raiser NetworkManager[1011]: <warn> failed to allocate link cache: (-26) Protocol mismatch Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (eth0): carrier is OFF Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (eth0): new Ethernet device (driver: 'e1000e' ifindex: 2) Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (eth0): exported as /org/freedesktop/NetworkManager/Devices/0 Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (eth0): device state change: unmanaged -> unavailable (reason 'managed') [10 20 2] Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (eth0): bringing up device. Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (eth0): preparing device. Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (eth0): deactivating device (reason 'managed') [2] Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (wlan0): using nl80211 for WiFi device control Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (wlan0): driver supports Access Point (AP) mode Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (wlan0): new 802.11 WiFi device (driver: 'iwlwifi' ifindex: 3) Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (wlan0): exported as /org/freedesktop/NetworkManager/Devices/1 Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (wlan0): device state change: unmanaged -> unavailable (reason 'managed') [10 20 2] Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (wlan0): bringing up device. Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (wlan0): preparing device. Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (wlan0): deactivating device (reason 'managed') [2] Aug 07 08:51:25 raiser NetworkManager[1011]: <warn> /sys/devices/virtual/net/lo: couldn't determine device driver; ignoring... Aug 07 08:51:25 raiser NetworkManager[1011]: <warn> /sys/devices/virtual/net/lo: couldn't determine device driver; ignoring... Aug 07 08:51:25 raiser NetworkManager[1011]: <info> ModemManager available in the bus Aug 07 08:51:25 raiser NetworkManager[1011]: <info> wpa_supplicant started Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (wlan0) supports 5 scan SSIDs Aug 07 08:51:25 raiser NetworkManager[1011]: <warn> Trying to remove a non-existant call id. Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (wlan0): supplicant interface state: starting -> ready Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (wlan0): device state change: unavailable -> disconnected (reason 'supplicant-available') [20 30 42] Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (wlan0): supplicant interface state: ready -> inactive Aug 07 08:51:25 raiser NetworkManager[1011]: <info> (wlan0) supports 5 scan SSIDs
MySQL
The MySQL server debian package doesn't contain a unit service for it.
Here's a version that I wrote myself:
cat /etc/systemd/system/mysqld.service
[Unit] Description=MySQL Server After=network.target [Service] PermissionsStartOnly=true ExecStartPre=/bin/mkdir /var/run/mysqld ExecStartPre=/bin/chown -R mysql:mysql /var/run/mysqld User=mysql Group=mysql WorkingDirectory=/usr ExecStart=/usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --datadir=/var/lib/mysql --socket=/var/run/mysqld/mysqld.sock [Install] WantedBy=multi-user.target
TLP
TLP's Debian package by default, doesn't provide
/etc/systemd/system/tlp.service
and
/etc/systemd/system/tlp-sleep.service
files for systemd
You can grab this from the TLP's upstream git repository like I did.
cat /etc/systemd/system/tlp.service
# tlp - systemd startup/shutdown service # # Copyright (c) 2014 Thomas Koch <linrunner at gmx.net> # This software is licensed under the GPL v2 or later. [Unit] Description=TLP system startup/shutdown After=multi-user.target Before=shutdown.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/sbin/tlp init start ExecStop=/usr/sbin/tlp init stop [Install] WantedBy=multi-user.target
cat /etc/systemd/system/tlp-sleep.service
# tlp - systemd suspend/resume service # # Copyright (c) 2014 Thomas Koch <linrunner at gmx.net> # This software is licensed under the GPL v2 or later. [Unit] Description=TLP suspend/resume Before=sleep.target StopWhenUnneeded=yes [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/sbin/tlp suspend ExecStop=/usr/sbin/tlp resume [Install] WantedBy=sleep.target
After that enable both services.
systemctl enable tlp.service
systemctl enable tlp-sleep.service
Now check that everything is working properly.
systemctl status tlp.service
tlp.service - TLP system startup/shutdown Loaded: loaded (/etc/systemd/system/tlp.service; enabled) Active: active (exited) since Thu 2014-08-07 08:51:26 PDT; 7min ago Process: 1602 ExecStart=/usr/sbin/tlp init start (code=exited, status=0/SUCCESS) Aug 07 08:51:26 raiser tlp[1602]: Loading tp-smapi kernel module...done. Aug 07 08:51:26 raiser tlp[1602]: Setting battery charge thresholds...done.
acpid
systemd and acpid with acpi-support both offer the same capabilities for events triggered by hardware, specifically, the ACPI calls. For example, closing the lid to suspend a laptop.
For instance, by default, the closing the lid will trigger acpid to call the suspend state of pm-utils, but at the same time systemd recognizes the closing action which in the same case will trigger suspend actions in systemd.
In order to avoid these, we have to disable the action in either acpid or systemd.
- Disable Lid action
To disable this in acpid, modify
/etc/acpi/events/lidbtn
, and comment all of the lines.cat /etc/acpi/events/lidbtn
# /etc/acpi/events/lidbtn # Called when the user closes or opens the lid #event=button[ /]lid #action=/etc/acpi/lid.sh
To disable this in systemd, modify
/etc/systemd/logind.conf
, and change the keyHandleLidSwitch
to ignore:HandleLidSwitch=ignore
- Enable Lid suspend action in systemd
To enable suspend on closing the laptop lid, disable the acpid's like mentioned above. Change the key
HandleLidSwitch
to suspend in/etc/systemd/logind.conf
:HandleLidSwitch=suspend