Fixed problem with dead USB ports under Ubuntu Gutsy on Lenovo X61s

2 minute read

THE PROBLEM

Original Post to thinkpad mailing list

Hi

I am running Ubuntu 7.10 on a Lenovo X61s. very nice I have to say.

When I run suspend (to RAM), when the machine comes back up, everything else works (usually) except USB. I have tried restarting the dbus daemon, unloading and reloading uhci_hcd and ehci_hcd.

Note that *all* my USB ports are dead - I have seen posts where the RHS ones only are dead after resume.

A complete reboot brings everything up as normal.

I have the acpi_sleep=s3_bios in my kernel at boot, as that fixed problems I was having with the ipw3945 wifi card.

I have also set the PCI IRQ to Auto in the BIOS (made no difference).

THE SOLUTION

The dead USB problem on my X61s with Ubuntu 7.10 (Gutsy) after resuming from suspend has been fixed by upgrading the kernel to 2.6.24 (it was previously the default 2.6.22 shipped with Gutsy).

Thanks to Peter Fruehberger for guiding me through the process and providing an appropriate .config file for the kernel build.

Since performing the upgrade last night, I have performed 3-4 suspends and the USB slots are still working! I still have

acpi_sleep=s3_bios

In my kernel options for the backlight problem. Not sure if that is needed anymore.

This is the procedure I followed, based on Peter’s advice.

Upgrading 2.6.22 to 2.6.24 under Ubuntu 7.10 for X61s

  • Download and unpack kernel to /usr/src/linux-2.6.24
  • download thinkpad_acpi patch from to /usr/src/thinkpad-acpi
  • patch kernel:
    • cd /usr/src/linux-2.6.24
    • patch -p1 < ../thinkpad-acpi/thinkpad-acpi-0.19-20080107_v2.6.24-rc7.patch`
  • copy current kernel config
    • cp /boot/config-2.6.22-14-generic .config
    • make oldconfig`

the next step is to do this: make menuconfig (add iwlwifi and snd_hda) for the snd_hda, go to Device drivers/Sound/PCI Devices and select snd_hda as a module

I found the ‘make oldconfig’ step confusing as I was faced with a bunch of questions about experimental options. I wasn’t sure what to accept so emailed Peter Fruehberger who sent me his config file which you can pick up from here (NOTE: currently a dead link - I’m looking for this file)

I copied this to the main directory as .config and compiled with this:

sudo make-kpkg clean && sudo make-kpkg --append-to-version "-test1" --initrd kernel_image

The .deb package is installed in the parent folder (/usr/src).

Peter said I needed to make sure I had the appropriate firmware files installed in /lib/firmware/2.6.24-test1/

Just copy over the whole content of the folder - this should work :-) - if not, the iwl firware can be obtained at: just untar it and move it to the firmware directory

I just copied all files from /lib/firmware/2.6.22-14-generic/ to /lib/firmware/2.6.24-test1/

cp /lib/firmware/2.6.22-14-generic/ * /lib/firmware/2.6.24-test1/

Then installed the deb package

dpkg -i /usr/src/linux-image-2.6.24-test1_2.6.24-test1-10.00.Custom_i386.deb

Checked my grub file /boot/grub/menu.lst, and rebooted from the new kernel.

Leave a Comment