IBM ThinkPad X60s

From ArchWiki
Revision as of 18:38, 4 January 2010 by Aedit (talk | contribs) (begin tidying up this article)
Jump to: navigation, search

Here are some of the key findings from my perspective. Bear in mind the Beginners Guide is the bible. I am focussed here on the X60s specific things I encountered.

Install from CD

Follow each menu item carefully, and do not skip any of them. Each one has place and a reason. A couple of key ones that have lasting effects:

1. prepare a partition strategy before you begin. Arch has the smarts to give you separate partitions for boot, root, home and swap. Some add others - i did not. I used:

  • boot - 128MB
  • Root - 20 Gb
  • Swap - 2.5Gb (note I have since read that this is on the small side, but I have not seen any performance degradation and swap never gets used on this machine so far. If I did it again I would go for 5 gig. With Arch though you never do again, unless you miss the fun !
  • home - the rest - in my case 70Gb

2. take special care in the menu item 'base system". Arch requires a network connection to continue the installation once the CD install is completed (the CD does not include Openoffice, Firefox, Gnome, XFCE for example). This can be either a wired ethernet connection which you can set up in the install CD menu (recommended) or you may wish to enable a wireless connection. For this read down the base list carefully, and select the following

[*] wireless-tools
[*] iwlwifi-3945-ucode

So finish the base install, reboot, and you should be have a network hook present.

From terminal do iwconfig and look for something like wlan0 and a description that looks like your wireless card. Lets assume wlan0. Do this (no sudo required, because you are root at the moment - no users installed.)

ifconfig wlan0 up
iwconfig wlan0 essid "your_network_name" key [your key no brackets]
dhcpcd wlan0

Before you try to install anything you must update your system from the network to ensure all is up to date and all dependencies are correct. Arch is a rolling release model, therefore your install CD is out of date the moment you create it.

pacman -Syyu

The yy forces up update to local database register of installed programmes, and the u uprades your system. Follow the prompts as required.

Then follow the Beginners Guide step by step to install sudo, add users, add to groups, video card driver, then install Xorg, and a desktop environment.

Once up and running, some additional things that took a little while:


With pm-utils

See the article on pm-utils.

With uswsusp-fbsplash

Install s2ram (pacman -S uswsusp) and make these changes below. This set of stuff is not well documented, but once I did this it was very smooth.


If suspend to ram doesn't work, edit the whitelist.c.diff file to add your machine to the s2ram whitelist with the appropriate methods, then uncomment the line in the PKGBUILD where the patch is applied, eventually add the md5sum of the resulting patch and finally rebuild the package. Use 's2ram --identify' to identify your machine. Be sure to let the suspend-devel list know!

The new Software Suspend does not use kernel parameters to determine the suspend partition, instead it consults the /etc/suspend.conf file when booting. You MUST edit this file before you update your initrd.

You will need to update your mkinitcpio.conf file to include the hook uresume. Replace your 'resume' hook with 'uresume'. If you do not have a resume hook the uresume hook must go before filesystems but after ide, sata, and/or scsi. Do not get this wrong. Then rebuild the ramdisk with

mkinitcpio -p kernel26

Note, when I do s2ram --identify This machine can be identified by:

   sys_vendor   = "LENOVO"
   sys_product  = "1702HFU"
   sys_version  = "ThinkPad X60s"
   bios_version = "7BETD3WW (2.14 )"

See for details

It is highly reassuring to see that your system is recognised. If you do not get recognised, there is a hal problem, and your earlier install is not complete.

Next some file edits in policies.

1. As root edit Template:Filename. Comment out everything, and add:

if grep closed /proc/acpi/button/lid/LID/state >/dev/null ; then
    # if the lid is now closed, save the network state and suspend to ram
    netcfg all-suspend
    # if the lid is now open, restore the network state.
    # (if we are running, a wakeup has already occurred!)
    netcfg all-resume

You should now have suspend working.

Another quirky thing is a hal error on shutdown preventing linux from turning the machine off. From I got this patch to Template:Filename

<config version="0.1">
<match action="">
<return result="yes"/>
<match action="org.freedesktop.hal.power-management.shutdown">
<return result="yes"/>
<match action="org.freedesktop.hal.power-management.reboot">
<return result="yes"/>

This file was blank but by adding the above, shutdown is now down by linux. I need to study policykit and hal. This is unclear, but my sense is that PolicyKit.conf is no longer used and a better fix is required in either /etc/acpi or /etc/hal.

3G Modem

See also USB 3G Modem.

Finally to get Rogers (Canadian cellular carrier) dongle red stick (a ZTE MF636 USB modem) working. I found all here: and pased below for reference. Note other accolades at the bottom for this one.

1. Disable CD mode on the device

Using a Windows machine, plug in the USB device and go through the short install wizard. Once done, close the Rogers app that starts up, then head into the Device Manager (Control Panel -> System -> Device Manager). Under the Ports section, find the COM port that's connected to the USB modem (ignore the Diagnostics one). Connect to that COM port through Hyperterminal, found in the Accessories area of the Start Menu. Connection parameters are

Bits per Second: 115200 Data bits: 8 Parity: None Stop bits: 1 Flow Control: None

Once connected, type the following commands:


This tells the modem not to use CD mode when it's first plugged into a computer. Now exit Hypterterminal and remove the USB modem. You're done with Windows.

2. Setup udev rules

Create a file /etc/udev/rules.d/90-zte.conf that contains the following:

ACTION!="add", GOTO="ZTE_End"
SUBSYSTEM=="usb", SYSFS{idProduct}=="0031", SYSFS{idVendor}=="19d2", GOTO="ZTE_Modem"

RUN+="/sbin/modprobe usbserial vendor=0x19d2 product=0x0031", MODE="660", GROUP="network"

3. Setup hal rules

The current version of hal (that I have) doesn't know about the MF636, though it does acknowledge some earlier models. To inform it, create a file /etc/hal/fdi/information/10-modem.fdi with the following:

<?xml version="1.0" encoding="UTF-8"?> <!-- -*- xml -*- -->

<deviceinfo version="0.2">
    <match key="info.category" string="serial">
        <!-- ZTE MF636 HSDPA USB dongle -->
        <match key="@info.parent:usb.product_id" int="0x0031">
          <match key="@info.parent:usb.interface.number" int="3">
            <append key="modem.command_sets" type="strlist">GSM-07.07</append>
            <append key="modem.command_sets" type="strlist">GSM-07.05</append>

4. Create a wvdial configuration

Wvdial is an easy-to-use frontend to PPPd. The configuration is fairly easy to comprehend. This one is probably longer than it needs to be, but I'll include it all. Make sure you replace the /dev/ttyUSB0 line with the node that your USB modem is connected to. Save as /etc/wvdial.conf.

[Dialer Defaults]
Modem = /dev/ttyUSB0
ISDN = off
Modem Type = USB Modem
Baud = 7200000
Init = ATZ
Init2 = 
Init3 = 
Init4 = 
Init5 = 
Init6 = 
Init7 = 
Init8 = 
Init9 = 
Phone = *99#
Phone1 = 
Phone2 = 
Phone3 = 
Phone4 = 
Dial Prefix = 
Dial Attempts = 1
Dial Command = ATM1L3DT
Ask Password = off
Password = off
Username = na
Auto Reconnect = off
Abort on Busy = off
Carrier Check = off
Check Def Route = off
Abort on No Dialtone = off
Stupid Mode = on
Idle Seconds = 0
Auto DNS = on

5. Connect to the internet

Now just run wvdial to connect

# wvdial -C /etc/wvdial.conf

If you see output reporting your PPP local and endpoint IP addresses, then it worked.

6. Acknowledgements

Thanks to the following webpages that gave me all this information: