ThinkPad:ArchLinux: Difference between revisions

From Wiki³
Line 56: Line 56:
Finally enable and start thinkfan.
Finally enable and start thinkfan.
{{Console|1=sudo systemctl enable thinkfan|2=sudo systemctl start thinkfan}}
{{Console|1=sudo systemctl enable thinkfan|2=sudo systemctl start thinkfan}}
=== HDD/SSD ===
To monitor the HDD or SSD installed you need to install the {{mono|smartmontools}} package.
{{Console|1=yaourt -S smartmontools}}


[[Category:ThinkPad]]
[[Category:ThinkPad]]

Revision as of 22:43, 15 July 2017

IconUNDER CONSTRUCTION: The document is currently being modified!

Customization

Keeping the Boot Log on TTY1

In order to stop Arch Linux from clearing the screen on boot we can add the i915 module to MODULES inside of /etc/mkinitcpio.conf and then regenerate our kernel images.

# sudo sed -i -r 's/^MODULES="([a-z0-9 _-]+)"/MODULES="\1 i915"/' /etc/mkinitcpio.conf
# sudo mkinitcpio -p linux

Then create a directory for getty overrides and create one with the following.

# sudo mkdir /etc/systemd/system/getty@tty1.service.d
# sudo vim /etc/systemd/system/getty@tty1.service.d/noclear.conf


[Service]
TTYVTDisallocate=no

Traditional Network Interface Names

To translate the predictable network interface names back into traditional ones, can create the following. You can use the vim command :r !cat /sys/class/net/wlp3s0/address, replacing the device node respectively, in order to get the MAC Address of each device.

# vim /etc/udev/rules.d/10-network.rules


SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC_ADDRESS_FOR_NIC", NAME=="eth0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC_ADDRESS_FOR_WIFI", NAME=="wlan0"

Hardware

Battery

Install TLP and related packages. Although it is automatically enabled in systemd you can start it manually without rebooting.

# yaourt -S tlp tp_smapi acpi_call
# sudo tlp start

TLP status can be shown with the following:

# sudo tlp-stat

It is also a good idea to install PowerTOP in order to monitor power usage.

# yaort -S powertop

CPU

First begin by installing cpupower and upower.

# yaourt -S cpupower upower

Create udev rules for automatically changing the governor when the system is running.

# sudo vim /etc/udev/rules.d/powersave.rules


SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/usr/bin/laptopmode AC"
SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/usr/bin/laptopmode BAT"

Create a systemd service for adjusting the governor when returning from suspend.

# sudo vim /etc/systemd/system/root-resume.service


[Unit]
Description=Local system resume actions
After=suspend.target

[Service]
Type=simple
ExecStart=/usr/bin/laptopmode

[Install]
WantedBy=suspend.target

Also create a systemd service for adjusting the governor on system boot-up.

# sudo vim /etc/systemd/system/power_management.service


[Unit]
Description=Sets the CPU governor on boot according to AC mode
Requires=multi-user.target
After=multi-user.target

[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/usr/bin/laptopmode

[Install]
WantedBy=multi-user.target

Finally create the script itself to switch modes.

# sudo vim /usr/bin/laptopmode


# #!/usr/bin/bash

STATE=""
BAT="BAT1"

if [[ "$1" == "BAT" || "$1" == "AC" ]]; then
STATE="$1"
fi

if [[ $STATE == "" ]]; then
if [[ $(upower -i /org/freedesktop/UPower/devices/battery_$BAT | grep state | grep discharging) == "" ]]; then
STATE="AC"
else STATE="BAT"
fi
fi

echo $STATE

if [[ $STATE == "BAT" ]]; then
echo "Discharging, set governor to powersave and disabled Turbo Boost"
cpupower frequency-set -g performance
cpupower frequency-set -f 2500MHz
echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo
elif [[ $STATE == "AC" ]]; then
echo "AC plugged in, set governor to performance and enabled Turbo Boost"
cpupower frequency-set -g performance
cpupower frequency-set -f 3500Mhz
echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo
fi

Fan Control

Install thinkfan, default configuration is installed into /usr/lib/modprobe.d/thinkpad_acpi.conf.

# yaourt -S acpi lm_sensors thinkfan

Then detect the hardware monitors chips that are available. Then re-enable the thinkpad_acpi kernel module to update with the new config.

# sudo sensors-detect
# sudo modprobe thinkpad_acpi

To show the current thermal and cooling information use acpi.

# sudo acpi -V

To show the current fan speed and level.

# sudo cat /proc/acpi/ibm/fan

Make the changes to point it to the right temperature reading, you can use :r !sudo find /sys/devices -type f -name "temp*_input" in order to paste all the monitors into the file.

# sudo vim /etc/thinkfan.conf

When finished it should look something like this:

hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp2_input
hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp3_input
hwmon /sys/devices/virtual/hwmon/hwmon1/temp1_input
tp_fan /proc/acpi/ibm/fan

(0, 0, 35)
(1, 33, 38)
(2, 36, 45)
(3, 39, 49)
(4, 46, 58)
(5, 50, 62)
(7, 56, 32767)

You can verify the config is written correctly with the following command.

# sudo thinkfan -n

Finally enable and start thinkfan.

# sudo systemctl enable thinkfan
# sudo systemctl start thinkfan

HDD/SSD

To monitor the HDD or SSD installed you need to install the smartmontools package.

# yaourt -S smartmontools