thinkpad t60, ubuntu 18.04 LTS (xubuntu)
Why would I buy in 2018 a computer from 2006 and install a 32 bit linux on it?
The reason is simple: it has a 4x3 screen ratio which is impossible to buy today. The keyboard
has the classic keys which are very good and it has a small touchpad. I use the trackpoint on all
my thinkpads and therefore the smaller the touchpad the better. All these are features you can not
find on any modern computer. Those are important ergonomic features. I got used to modern computers
over the years with their wide screens but once you try again one of those old classic machines
like the T60 you understand how much computers have degraded over the years.
A used T60 is cheap. You can get a decent machine for under 100$. It might need some repairs and
cleaning but it is possible to get it back to "as good as new" condition within a few days since
it is still possible to buy most spare parts. New batteries are still available on ebay.
Originally I bought one reasonably looking T60 on ebay and then some cheaper ones as spare parts thinking
that it would result in one very good laptop but thanks to the availability of inexpensive spare parts
I was able to get all back into a good condition.
These older laptops have also something that no new laptop has: express card slots. This means
you can have a pair of USB 3.0 ports even on such an old laptop.
A USB3.0 express card for the T60
Avoiding scratches on the screen
The screen can hit the trackpoint and the middle mouse button of the t60 under pressure. In some cases even the keys
can bang against the screen. This causes damaged to the anti glare coating of the screen. I recommand to put
a lens cleaning cloth between screen and keyboard to avoid this.
Cleaning cloth to protect the screen from beeing scratched by the trackpoint and the mouse buttons.
Put it onto the keyboard before you close the screen.
When you buy your laptop on ebay then ask the seller to put a kleenex paper tissue or a paper towel between
screen and keyboard before shipping the computer. I had one case where the seller packaged the laptop in
a very tight box. He added too much bubble wrap such that the laptop was really squeezed and when I received
the laptop I could see almost every key on the black screen. Vibration during transport caused the keys to
rubb on the screen and sratch off some of the anti glare coating. Terrible. There is no way to undo this.
In any case it is a a good practice to always put a soft cloth between screen and keyboard before you close
the screen. I do that with all my thinkpads. It's handy to have a lens cleaning cloth for your laptop and
it protects the screen.
I have heared a number of thinkpad users asking "why does lenovo" not lower the trackpoint a bit? Well, in the
thinkpad 25 anniversary edition they did that and can tell you that I don't like it. It is much more
difficult to work with such a lower trackpoint. If you are a trackpoint
user then then old trackpoint is the best. Such a lens cleaning cloth just costs a few cents.
Cleaning and Repair
I recommend to read the FRU replacement procedures from the hardware maintenance manual (see references at the end of this article, start reading at page 60 and onwards) before opening the laptop. It's best to clean the case with a
damp cloth and/or a damp magic erraser sponge.
Second hand laptops do sometimes
have rather dirty keyboards and they need to be thoroughly cleaned or replaced.
The T60 has a keyboard that can be cleaned with water. To do this you follow the
hardware maintenance manual to remove the keyboard form the laptop. Then you
take a soft paint brush and you rinse the keyboard (without the laptop) in plain tap water (no soap or detergents)
while brushing gently with the paint brush between the keys.
Put it on a dry towel for a few minutes and then use a vacuum cleaner to dry it completely.
A normal vacuum cleaner hose is too big and it could pull out keys or remove the trackpoint. I put a plastic funnel
onto the end of the vacuum cleaner hose to reduce the nozle size to 8-10mm. Go up and down between the keys
and suck out all the water. Install it and test it.
Note that the keyboard should only be rinsed from the top (key side) with water. Under the keyboard is a small aluminum box
which holds the electronics for the trackpoint. Avoid any water from getting in there. It's very hard to get it out
again even with a vacuum cleaner and the trackpoint will mallfunction while it is wet.
If your T60 fan produces not only normal wind noise but also a "rrrrrrr" sound then it will need a drop of syntetic
oil (syntetic watch or clock oil works well) and a bit of clear syntetic grease. The fan blade can be pulled out
after the fan is opened and you just put a tiny amount of grease and oil onto the bearing.
T60 fan repair
Fan with swirly blades
The fan you saw in the above pictures, where I greased the bearing, has straight blades. That
is: the fan blades go in the straight line (it is actually slightly curved, almost straight) from the center to the outside. There are some T60 models (and one
can not know that up-front) that have different fan blades. They don't sit on an aluminum case. They come in a cheaper
looking plastic case but the interesting part is that their fan blades are not straight. They have a swirly form.
Have a look at the pictures below.
The fans with those swirly blades produces a little bit less wind noise especially around 3000 RPM.
T60 fan with swirly blades, a little bit less wind noise
T60 hardware options
There are different graphic cards, screen sizes and CPUs available for the T60.
If you want a computer that "meets modern standards" then I would choose a 1400 x 1050 screen and
retrofit a "Intel Core 2 Duo" (replace Intel Core Duo with Intel Core 2 Duo).
The "Intel Core 2 Duo" is a 64bit CPU and the T60 has cpu a socket. It is therefore possible to change
CPUs. The "highest" CPU that is supported by the bios and chipset is a T7600.
Screens:
- 14.1-inch XGA (1024 x 768 resolution) TFT display
- 14.1-inch SXGA+ (1400 x 1050 resolution) TFT display
CPUs:
- Intel Core 2 Duo T7600 = amd64 (64bit cpu)
- Intel Core Duo = i686 (32bit cpu), most models seem to have a T2400
Memory:
- There are two SO-DIMM slots under the palm rest.
- You can put max 4GB (2x 2GB), PC2-5300, DDR2 200pin SO-DIMM SDRAM, 667MHz.
- Due to an addressing limitation in the Intel 945PM and 945GM chipsets, only 3GB of memory will be usable.
This is basically a chipset made with 32bit CPUs in mind since 32bit CPUs can anyhow only address that much memory.
- Most T60s found on ebay come with two 1x 1GB modules. The best solution is to change one of those to a 1x 2GB. There is no advantage in having 2x 2GB. 1x 1GB + 1x 2GB is already the usable maximum.
- 3GB is plenty if you plan to run a 32bit OS. A 64bit OS and the applications compiled for 64bit use more memory than their 32bit counter parts. 3GB is small for a 64bit OS but usable.
Change the disk, this is the most important part:
- Remove the rotating sata disk and replace it by a 2.5inch sata SSD. This will make a huge performance difference. The T60 has, as opposed to earlier Thinkpad models, no disk white-list in the BIOS. You can use any normal 2.5inch sata SSD and the BIOS will accept it.
Intel Core 2 Duo T7600 (64bit cpu). This is the fastest CPU you can put into a T60.
It has a 4096K L2 cache (double the size of the the standard T2400 cpu). It is by far not as fast as an i5 or i7 cpu but
usable especially if you install only a 32bit linux distribution.
Installing xubuntu
I used xubuntu 18.04 LTS (32bit version): https://xubuntu.org/
Almost everything works right after the installation with some minor problems:
wifi crashes after a few hours of use, solution: Wifi Power Management off
All my T60s have the following wifi card:
03:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
Subsystem: Intel Corporation ThinkPad R60e
Physical Slot: 3
Flags: bus master, fast devsel, latency 0, IRQ 31
Memory at edf00000 (32-bit, non-prefetchable) [size=4K]
Capabilities: <access denied>
Kernel driver in use: iwl3945
Kernel modules: iwl3945
You may see a kernel driver crash that looks as follows:
Dec 28 22:57:04 t60 kernel: [10321.664066] iwl3945 0000:03:00.0: Queue 2 stuck for 2180 ms.
Dec 28 22:57:04 t60 kernel: [10321.664077] iwl3945 0000:03:00.0: On demand firmware reload
Dec 28 22:57:04 t60 kernel: [10321.669435] ieee80211 phy0: Hardware restart was requested
Dec 28 22:57:04 t60 kernel: [10321.717553] iwl3945 0000:03:00.0: BSM uCode verification failed at addr 0x00003800+0 (of 900), is 0xa5a5a5a2, s/b 0xf802020
Dec 28 22:57:04 t60 kernel: [10321.717561] iwl3945 0000:03:00.0: Unable to set up bootstrap uCode: -5
Dec 28 22:57:04 t60 kernel: [10321.764280] iwl3945 0000:03:00.0: BSM uCode verification failed at addr 0x00003800+0 (of 900), is 0xa5a5a5a2, s/b 0xf802020
Dec 28 22:57:04 t60 kernel: [10321.764284] iwl3945 0000:03:00.0: Unable to set up bootstrap uCode: -5
Dec 28 22:57:04 t60 kernel: [10321.810996] iwl3945 0000:03:00.0: BSM uCode verification failed at addr 0x00003800+0 (of 900), is 0xa5a5a5a2, s/b 0xf802020
Dec 28 22:57:04 t60 kernel: [10321.811000] iwl3945 0000:03:00.0: Unable to set up bootstrap uCode: -5
Dec 28 22:57:04 t60 kernel: [10321.857713] iwl3945 0000:03:00.0: BSM uCode verification failed at addr 0x00003800+0 (of 900), is 0xa5a5a5a2, s/b 0xf802020
Dec 28 22:57:04 t60 kernel: [10321.857717] iwl3945 0000:03:00.0: Unable to set up bootstrap uCode: -5
Dec 28 22:57:04 t60 kernel: [10321.904429] iwl3945 0000:03:00.0: BSM uCode verification failed at addr 0x00003800+0 (of 900), is 0xa5a5a5a2, s/b 0xf802020
Dec 28 22:57:04 t60 kernel: [10321.904433] iwl3945 0000:03:00.0: Unable to set up bootstrap uCode: -5
Dec 28 22:57:04 t60 kernel: [10321.940648] iwl3945 0000:03:00.0: Unable to initialize device after 5 attempts.
Dec 28 22:57:04 t60 kernel: [10321.940652] ------------[ cut here ]------------
Dec 28 22:57:04 t60 kernel: [10321.940653] Hardware became unavailable during restart.
Dec 28 22:57:04 t60 kernel: [10321.940748] WARNING: CPU: 0 PID: 1654 at /build/linux-ROjO4n/linux-4.15.0/net/mac80211/util.c:1863 ieee80211_reconfig+0x23f/0x1270 [mac80211]
Dec 28 22:57:04 t60 kernel: [10321.940750] Modules linked in: nls_iso8859_1 uas usb_storage hid_generic usbhid hid coretemp pcmcia kvm arc4 snd_hda_codec_analog irqbypass snd_hda_codec_generic iwl3945 snd_hda_intel iwlegacy thinkpad_acpi input_leds nvram snd_hda_codec joydev mac80211 snd_seq_midi snd_seq_midi_event yenta_socket serio_raw pcmcia_rsrc snd_hda_core snd_rawmidi pcmcia_core cfg80211 snd_hwdep lpc_ich snd_seq snd_pcm snd_seq_device snd_timer shpchp snd soundcore mac_hid nsc_ircc(CE) irda(CE) sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables autofs4 radeon i2c_algo_bit ttm drm_kms_helper syscopyarea e1000e ahci sysfillrect sysimgblt fb_sys_fops psmouse drm ptp i2c_i801 libahci pata_acpi pps_core video
Dec 28 22:57:04 t60 kernel: [10321.940820] CPU: 0 PID: 1654 Comm: kworker/0:5 Tainted: G C E 4.15.0-39-generic #42-Ubuntu
Dec 28 22:57:04 t60 kernel: [10321.940823] Hardware name: LENOVO 2007WV3/2007WV3, BIOS 79ETE6WW (2.26 ) 04/01/2010
Dec 28 22:57:04 t60 kernel: [10321.940853] Workqueue: events_freezable ieee80211_restart_work [mac80211]
Dec 28 22:57:04 t60 kernel: [10321.940888] EIP: ieee80211_reconfig+0x23f/0x1270 [mac80211]
Dec 28 22:57:04 t60 kernel: [10321.940889] EFLAGS: 00210282 CPU: 0
Dec 28 22:57:04 t60 kernel: [10321.940891] EAX: 0000002b EBX: f45c8d10 ECX: f59cb630 EDX: 00000007
Dec 28 22:57:04 t60 kernel: [10321.940893] ESI: f45c8460 EDI: f45c8460 EBP: f0ad9f20 ESP: f0ad9ee4
Dec 28 22:57:04 t60 kernel: [10321.940895] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
Dec 28 22:57:04 t60 kernel: [10321.940897] CR0: 80050033 CR2: b0a37000 CR3: 0de14000 CR4: 000006f0
Dec 28 22:57:04 t60 kernel: [10321.940900] Call Trace:
Dec 28 22:57:04 t60 kernel: [10321.940911] ? try_to_del_timer_sync+0x45/0x70
Dec 28 22:57:04 t60 kernel: [10321.940940] ieee80211_restart_work+0x92/0xc0 [mac80211]
Dec 28 22:57:04 t60 kernel: [10321.940947] process_one_work+0x1b9/0x3d0
Dec 28 22:57:04 t60 kernel: [10321.940951] worker_thread+0x37/0x420
Dec 28 22:57:04 t60 kernel: [10321.940956] kthread+0xf0/0x110
Dec 28 22:57:04 t60 kernel: [10321.940960] ? process_one_work+0x3d0/0x3d0
Dec 28 22:57:04 t60 kernel: [10321.940964] ? kthread_create_worker_on_cpu+0x20/0x20
Dec 28 22:57:04 t60 kernel: [10321.940969] ret_from_fork+0x2e/0x38
Dec 28 22:57:04 t60 kernel: [10321.940973] Code: f0 00 00 00 c6 45 e6 00 c6 87 f4 03 00 00 00 89 f8 e8 26 da fc ff 85 c0 89 45 e8 0f 84 58 01 00 00 68 d0 a4 f4 f8 e8 f1 81 16 d4 <0f> 0b 5e 89 f8 e8 47 e0 ff ff eb a6 90 8d 74 26 00 8d 87 48 04
Dec 28 22:57:04 t60 kernel: [10321.973364] ---[ end trace 871f5ebd7a6971b2 ]---
Dec 28 22:57:06 t60 NetworkManager[538]: <warn> [1546055824.3162] sup-iface[0x1a3d5a0,wls3]: connection disconnected (reason -3)
Dec 28 22:57:06 t60 wpa_supplicant[570]: wls3: CTRL-EVENT-DISCONNECTED bssid=c0:c1:c0:0d:f7:64 reason=3 locally_generated=1
Dec 28 22:57:06 t60 whoopsie[765]: [22:57:04] offline
Dec 28 22:57:06 t60 NetworkManager[538]: <info> [1546055824.3322] manager: NetworkManager state is now CONNECTED_SITE
Dec 28 22:57:06 t60 dhclient[2552]: receive_packet failed on wls3: Network is down
Dec 28 22:57:06 t60 NetworkManager[538]: <info> [1546055824.3469] device (wls3): supplicant interface state: completed -> disabled
Dec 28 22:57:06 t60 avahi-daemon[546]: Interface wls3.IPv4 no longer relevant for mDNS.
Dec 28 22:57:06 t60 systemd[1]: Starting Network Manager Script Dispatcher Service...
Dec 28 22:57:06 t60 avahi-daemon[546]: Leaving mDNS multicast group on interface wls3.IPv4 with address 10.0.0.137.
Dec 28 22:57:06 t60 systemd[1]: Started Network Manager Script Dispatcher Service.
Dec 28 22:57:06 t60 avahi-daemon[546]: Withdrawing address record for 10.0.0.137 on wls3.
Dec 28 22:57:06 t60 dbus-daemon[514]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.10' (uid=0 pid=538 comm="/usr/sbin/NetworkManager --no-daemon " label="unconfined")
Dec 28 22:57:06 t60 dbus-daemon[514]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Dec 28 22:57:06 t60 nm-dispatcher: req:1 'connectivity-change': new request (1 scripts)
Dec 28 22:57:06 t60 nm-dispatcher: req:1 'connectivity-change': start running ordered scripts...
Dec 28 23:02:25 t60 NetworkManager[538]: <info> [1546056145.0625] manager: rfkill: WiFi hardware radio set disabled
Dec 28 23:02:25 t60 wpa_supplicant[570]: rfkill: WLAN soft blocked
Dec 28 23:02:25 t60 whoopsie[765]: [23:02:25] Cannot reach: https://daisy.ubuntu.com
Dec 28 23:02:25 t60 NetworkManager[538]: <info> [1546056145.0626] device (wls3): state change: activated -> unavailable (reason 'none', sys-iface-state: 'managed')
Dec 28 23:02:25 t60 systemd[1]: Starting Load/Save RF Kill Switch Status...
Dec 28 23:02:25 t60 systemd[1]: Started Load/Save RF Kill Switch Status.
Dec 28 23:02:25 t60 NetworkManager[538]: <info> [1546056145.0859] dhcp4 (wls3): canceled DHCP transaction, DHCP client pid 2552
Dec 28 23:02:25 t60 NetworkManager[538]: <info> [1546056145.0860] dhcp4 (wls3): state changed bound -> done
Dec 28 23:02:25 t60 NetworkManager[538]: <info> [1546056145.0887] manager: NetworkManager state is now CONNECTED_LOCAL
Dec 28 23:02:25 t60 NetworkManager[538]: <info> [1546056145.0895] manager: NetworkManager state is now DISCONNECTED
Dec 28 23:02:25 t60 dbus-daemon[514]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.10' (uid=0 pid=538 comm="/usr/sbin/NetworkManager --no-daemon " label="unconfined")
Dec 28 23:02:25 t60 NetworkManager[538]: <info> [1546056145.1188] audit: op="radio-control" arg="wireless-enabled:0" pid=1095 uid=1000 result="success"
Dec 28 23:02:25 t60 NetworkManager[538]: <info> [1546056145.1196] manager: rfkill: WiFi now disabled by radio killswitch
Dec 28 23:02:25 t60 systemd[1]: Starting Network Manager Script Dispatcher Service...
Dec 28 23:02:25 t60 wpa_supplicant[570]: nl80211: deinit ifname=wls3 disabled_11b_rates=0
Dec 28 23:02:25 t60 dbus-daemon[514]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Dec 28 23:02:25 t60 nm-dispatcher: req:1 'down' [wls3]: new request (1 scripts)
Dec 28 23:02:25 t60 nm-dispatcher: req:1 'down' [wls3]: start running ordered scripts...
Dec 28 23:02:25 t60 systemd[1]: Started Network Manager Script Dispatcher Service.
Dec 28 23:02:29 t60 NetworkManager[538]: <info> [1546056149.7730] manager: rfkill: WiFi hardware radio set enabled
Dec 28 23:02:29 t60 kernel: [10647.463477] iwl3945 0000:03:00.0: BSM uCode verification failed at addr 0x00003800+0 (of 900), is 0xa5a5a5a2, s/b 0xf802020
Dec 28 23:02:29 t60 kernel: [10647.463485] iwl3945 0000:03:00.0: Unable to set up bootstrap uCode: -5
Dec 28 23:02:29 t60 kernel: [10647.510219] iwl3945 0000:03:00.0: BSM uCode verification failed at addr 0x00003800+0 (of 900), is 0xa5a5a5a2, s/b 0xf802020
Dec 28 23:02:29 t60 kernel: [10647.510224] iwl3945 0000:03:00.0: Unable to set up bootstrap uCode: -5
Dec 28 23:02:29 t60 kernel: [10647.556946] iwl3945 0000:03:00.0: BSM uCode verification failed at addr 0x00003800+0 (of 900), is 0xa5a5a5a2, s/b 0xf802020
Dec 28 23:02:29 t60 kernel: [10647.556950] iwl3945 0000:03:00.0: Unable to set up bootstrap uCode: -5
Dec 28 23:02:29 t60 kernel: [10647.603665] iwl3945 0000:03:00.0: BSM uCode verification failed at addr 0x00003800+0 (of 900), is 0xa5a5a5a2, s/b 0xf802020
Dec 28 23:02:29 t60 kernel: [10647.603669] iwl3945 0000:03:00.0: Unable to set up bootstrap uCode: -5
Dec 28 23:02:30 t60 kernel: [10647.650396] iwl3945 0000:03:00.0: BSM uCode verification failed at addr 0x00003800+0 (of 900), is 0xa5a5a5a2, s/b 0xf802020
Dec 28 23:02:30 t60 kernel: [10647.650400] iwl3945 0000:03:00.0: Unable to set up bootstrap uCode: -5
Dec 28 23:02:30 t60 NetworkManager[538]: <warn> [1546056150.0447] platform-linux: do-change-link[4]: failure changing link: failure 5 (Input/output error)
You may also see the following message during startup:
[ 23.839742] iwl3945 0000:03:00.0: Enabling power save might cause firmware crashes
Check if power management is on. If so then that is the problem. Set it to off.
$ iwconfig wls3
wls3 IEEE 802.11 ESSID:"sansfil"
Mode:Managed Frequency:2.422 GHz Access Point: C0:C1:C0:0D:F7:64
Bit Rate=54 Mb/s Tx-Power=15 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
Link Quality=70/70 Signal level=-29 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:29 Missed beacon:0
$ iwconfig wls3 power off
If you are using NetworkManager then you need to make this change in the following config file
to have it set permanently:
/etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
change the parameter wifi.powersave from 3 to 2
Sound buttons work but they don't activate the on display notifications showing the volume
Create a file called /etc/rc.local, make it executable and then reboot the laptop. ubuntu 18.04 uses
systemd but for backward compatibility is has a feature that creates automatically a rc.local systemd service
if the presence of an executable /etc/rc.local is detected. Add the following in /etc/rc.local:
#!/bin/sh
if [ -r /sys/devices/platform/thinkpad_acpi/hotkey_all_mask ]; then
echo "$0: cp /sys/devices/platform/thinkpad_acpi/hotkey_all_mask /sys/devices/platform/thinkpad_acpi/hotkey_mask"
/bin/cp /sys/devices/platform/thinkpad_acpi/hotkey_all_mask /sys/devices/platform/thinkpad_acpi/hotkey_mask
fi
Improving CPU performances by removing bug fixes and workarounds
Most CPU related bugs are only important for shared computers where un-trusted users can execute software.
A personal laptop that is just used by one person is not an environment where this would be a concern.
It makes sense to disable the workarounds for meltdown and spectre (and other bugs) in favor for better
performance especially on older machines where CPU speed is a concern.
It is a noticable improvement when you disable these CPU bug mitigations.
The performance goes up and the CPU temperature goes down by about 1'C.
# this is /etc/default/grub
# run 'update-grub' after editing this file.
GRUB_DEFAULT=0
# disable the default ubuntu hidden grub menus and splash screen:
#GRUB_TIMEOUT_STYLE=hidden
#GRUB_TIMEOUT=10
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
# disable ipV6 and CPU bug fixes in favor of better performance:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 nopti nospectre_v1 nospectre_v2 l1tf=off nospec_store_bypass_disable"
# see https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
# for documentation about the kernel parameters.
GRUB_CMDLINE_LINUX=""
# ---- end /etc/default/grub
The Ubuntu version that I am using runs Kernel version 4.15.0-43-generic.
The command "ls /sys/devices/system/cpu/vulnerabilities/" will show you the bugs that your CPU has.
It will show "l1tf meltdown spec_store_bypass spectre_v1 spectre_v2" in the case of the T60 thinkpad CPUs.
Useful scripts
Here are some useful scripts that I use for monitoring fanspeed and temperature on the T60:
t60temp.sh:
#!/bin/sh
if [ -n "$1" -a "$1" = "-h" ]; then
cat << EOH
t60temp.sh -- show /proc/acpi/ibm/thermal
Usage: t60temp.sh [-h]
t60temp.sh prints the temperatures from /proc/acpi/ibm/thermal
in degree celsius with lables.
EOH
exit 0
fi
echo " C A P G B - B"
echo " P P C P A - A"
echo " U S M U T - T"
cat /proc/acpi/ibm/thermal | sed 's/-128/--/g'
battery_status.sh:
#!/bin/sh
echo "external removable battery:"
cat /sys/class/power_supply/BAT0/uevent | egrep -v "POWER_SUPPLY_ENERGY|POWER_SUPPLY_MANUFACTURER|POWER_SUPPLY_SERIAL_NUMBER"
cputemp.sh:
#!/bin/sh
if [ -n "$1" -a "$1" = "-h" ]; then
cat << EOH
cputemp.sh -- show /sys/class/thermal/thermal_zone0/temp
Usage: cputemp.sh [-h]
cputemp.sh prints the current CPU temperature in degree celsius.
EOH
exit 0
fi
cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000 " C"}'
fanspeed.sh:
#!/bin/sh
if [ -n "$1" -a "$1" = "-h" ]; then
cat << EOH
fanspeed.sh -- show /proc/acpi/ibm/fan
Usage: fanspeed.sh [-h]
EOH
exit 0
fi
cat /proc/acpi/ibm/fan
ATI Radeon graphics card gets hot
You can add the following lines to /etc/rc.local (you created that file aready for the sound buttons, see above).
# if you have: 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV515/M52 [Mobility Radeon X1300]
# and your laptop gets hot then try this:
if [ -f /sys/class/drm/card0/device/power_profile ]; then
echo "$0: echo low > /sys/class/drm/card0/device/power_profile"
echo low > /sys/class/drm/card0/device/power_profile
fi
This works for me on the 1024x768 display and lowers the temperature by about 4'C. On 1400x1050 displays it causes
stranges lines and therefore you can not use it on the SXGA+ displays. I use those old T60s anyhow for programming and
web editing. Therefore I don't need much graphics performance at all.
Mouse cursor lost after suspend to RAM
This is an unsolved problem. If you suspend the computer to RAM and you wake it up by opening the the screen
then the mouse cursor is no longer visible. You can fix it by typing "crtl-alt-f1" and once you are at the normal
linux console then just press "alt-f7" to get back to the graphical user interface.
I have found reports of similar problems using google but they are always related to a screensaver. I don't use
a screensaver. It has in my opinion something to do with the fact that the display is not fully on yet when the
computer wakes up since the lid is just moving up. If you just do "fn-f4" to suspend and then "fn" to wake up without
closing the screen then this fault does not happen. In any case there is a workaround with "crtl-alt-f1" and "alt-f7"
and it is not too bad.
Enable dns caching for a faster web browsing exprience
Enable dns caching (if you are using network manager and dnsmasq):
DNS name resolution is often what causes "the internet" to appear "slow" and a good cache
can go a long way in speeding things up.
For more information on this subject see http://tuxgraphics.org/npa/ubuntu-dns-caching/.
vi /etc/NetworkManager/dnsmasq.d/cache.conf
and put inside:
cache-size=1000
neg-ttl=900
After that run "systemctl restart network-manager" or
just restart the computer.
Disable close button on xfce4-terminal
xfce-terminal is a great terminal but it has two disastrous default settings
that must always be changed. It is especially critical if you work on a laptop
with a trackpoint. It is enough to give a new tab focus when you just left
click on the tab. Now you can type in the tab but if you then middle click
to paste then you will close the whole shell because your mouse cursor is still
over the tab at the top and not inside the window. The other problem is
if you switch quickly between many tabs then you will eventually hit the
"x" on the tab to close it.
close button the xfce-terminal, dangerous
To remove the close button and disable close on middle click make sure
that the following settings are FALSE:
vi ~/.config/xfce4/terminal/terminalrc
....
MiscTabCloseButtons=FALSE
MiscTabCloseMiddleClick=FALSE
....
Disable auto-maximize when dragging window to top of screen in XFCE
XFCE 4 automatically maximizes windows when you drag it to the top of the screen.
To disable this you can un-check the Window Manager Tweaks setting called "Automatically tile windows when moving toward the screen edge".
remove the check box from "Automatically tile windows when moving toward the screen edge"
Settings Manager > Window Manager Tweaks > Accessibility > Automatically tile windows when moving toward the screen edge
Remove useless services
The simplicity of installing xubuntu has a downside, it's not fine-tuned. Sometimes there are
useless things installed either as a dependency to some other package or
directly.
It's useful to run once in a while "systemctl list-unit-files" and "systemd-analyze blame" to see if there is anything started that does not make any sense.
A common case of such a service is the avahi-daemon which could be used to discover
hosts in the local network (zeroconf networking) but for a lot of people this is completely useless.
Just prevent it from starting:
# systemctl mask avahi-daemon.socket
Created symlink /etc/systemd/system/avahi-daemon.socket -> /dev/null.
# systemctl mask avahi-daemon.service
Created symlink /etc/systemd/system/avahi-daemon.service -> /dev/null.
Tune firefox
The web browser has become one of the most important applications and it is important
to unconfigure "malware like" features that establish a lot of unwanted connections and
slow the system down.
Go to a very simple add free web page such as this page and then run (run it as root in shell):
netstat -anp | more
It's horrible what you see. Firefox establishes dozens of connections to ip addresses
that resolve to sub-domains of 1e100.net
This is google "safe browsing" spying on everything you do and I can highly recommend to eradicate that from your web browser.
Go to preferences ->Privacy & Security->Block dangerous and deceptive content
Uncheck that box.
You can as well go to about:config and set the following to false:
browser.safebrowsing.malware.enabled=false
browser.safebrowsing.phishing.enabled=false
In addition you will also have to set the following in about:config since you can not set it via
preferences. Firefox does always contact google safebrowsing even if you disable it in the preferences.
You have to go to about:config to get rid of everything:
disable firefox safebrowsing
Next disable anything with automatic software update and then set the firefox captive portal service to
false in about:config
network.captive-portal-service.enabled=false
Videos that play automatically are a big problem and it is highly recommended to disable this. Go to about:config and then set
media.autoplay.default=2
This will cause firefox to ask if videos are allowed to start playing automatically. It will block video autoplay by default and ask for your permission.
There is also a very important add-on that every browser needs: "Nuke Anything Enhanced".
It allows you to "x" anything on any web page such a banners or overlays that obstruct the view.
https://addons.mozilla.org/en-US/firefox/addon/nuke-anything-enhanced/
More is not always better. Firefox has by default the following connection limits:
network.http.max-connections=900
network.websocket.max-connections=200
I cut them down to 30 and 10 respectively.
Firefox does a DNS lookup on every single URL in the current page to make loading
of the next page faster. The ideas is that you might go to the next page by clicking on one of those URLs in the current page.
If you have a fast DNS server (like e.g 1.1.1.1) then that is completely unnecessary
and will only allow for the finger-printing of the page that you are looking at and generate a lot of DNS traffic. Always disable DNS pre-fetching!
network.dns.disablePrefetch=true
I do as well disable ipv6 look-up since I don't use IPv6 in my network:
network.dns.disableIPv6=true
Update March 2019: I have written a separate more comprehensive article about firefox settings: http://tuxgraphics.org/npa/firefox-tuning/
IBM/Lenovo documentation
This page was written by Guido Socher