IBM ThinkPad X60s

From ArchWiki
Revision as of 21:34, 24 July 2009 by Chender (Talk | contribs)

Jump to: navigation, search

I am a recent convert. I think its the usual history .... years of windows, 2 years of Ubuntu, and now seeking something better. I experimented with Arch in Sun VM for a month, and got comfortable with it. This week (Jul 2009) I made the shift and the speed, reliability and responsiveness is terrific. Probably of more importance, I have learned more in the conversion than I ever could in Ubuntu. I believe the reason is that while Arch is minimalist, it is also intelligent. Pacman is infinitely superior to Synaptic for example. The reason is that once you get over the command line phobia, it just works and works fast. Dependency problems are eliminated, and no more seeking obscure repositories to keep up to date.

Anyhow here are some of the key findings from my perspective. Bear in mind the Beginners Guide on wiki.archlinux.org is the bible. I am focussed here on the X60s specific things I encountered. Have fun.


Install from CD - thinkpad X60s

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". The items that are starred will be installed. /The items not starred will NOT be installed. Why is this important? Arch requires a constant network connection to continue the installation once the CD install is installed. Note the CD does not have openoffice, firefox, Gnome, XFCE or any other things you may have come to accept with other distro cd's. So you MUST have internet installed post the base install. Read down the base list carefully, and look for wireless-tools, and if you are lucky as I was look for the driver for your wireless card. In my case the intel 3945 was there!

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

Next before you try to install anything this next step is essential. Arch is a rolling release model, therefore your install CD is out of date the moment you create it. So you must update your system from the network to ensure all is up to date and all dependencies are correct. I did not do this the first time, and had all kinds of kernel panic, which means your computer has been bricked and you must start over again.

To prevent bricking do this - 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 ....

Now follow the stuff in the beginners guide at wiki.archlinux.org to install sudo, add users, add to groups, video card driver, then install xorg, xfce4. It is worth to follow that beginners guide step by step.

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

Suspend

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.

from http://aur.archlinux.org/packages/uswsusp-fbsplash/uswsusp-fbsplash/uswsusp.install

==> 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' (or what else needed for the kernel you use)

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 http://suspend.sf.net/s2ram-support.html 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. sudo mousepad etc/acpi/actionslm.lid.sh comment our 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
   pm-suspend

else

   # if the lid is now open, restore the network state.
   # (if we are running, a wakeup has already occurred!)
   netcfg all-resume

fi

You should now have suspend working.

Another quirky thing is a hal error on shutdown preventing linux from truning the machine off. From https://lists.ubuntu.com/archives/xubuntu-users/2009-June/001783.html I got this patch to /etc/PolicyKit/PolicyKit.conf

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

This file was blank but by addiing 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.

Finally to get Rogers dongle red stick working, I found all here: http://www.zeroflux.org/blog/post/255 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:

AT+ZOPRT=5 AT+ZCDRUN=8

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" GOTO="ZTE_End"

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


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"?>

<deviceinfo version="0.2">

 <device>
   <match key="info.category" string="serial">
       <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>
         </match>
       </match>
   </match>
 </device>

</deviceinfo>


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 wvdial.conf


5. Dial up to the interwebs.

Now just run wvdial to connect!

  1. wvdial -C /etc/wvdial.conf

If you see output reporting your PPP local and endpoint IP addresses, then you've won! Crack a beer and troll some forums.


6. Acknowledge the real heroes.

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

   * http://www.matt-barrett.com/?p=5
   * http://ubuntuforums.org/showthread.php?t=1005910
   * http://ubuntuforums.org/showthread.php?t=1065934