tecosystems

SOG 1, Busted Sound 0: Getting Audio Working on the X300 Under Ubuntu

Share via Twitter Share via Facebook Share via Linkedin Share via Reddit




x300 packaging

Originally uploaded by sogrady

It took a little bit longer than I had expected, but I have conquered the demons that were possessing my sound card, and the last remaining (software) reason not to run Ubuntu on an X300 has been addressed. That’s the good news.

The bad news is that the fix may be a little bit involved, depending on which kernel you happen to be running.

Here’s the fix process in detail:

  1. Remove the running Intel sound module from the kernel: sudo modprobe -r snd_hda_intel
  2. Remove the existing Ubuntu sound modules:sudo rm -R /lib/modules/2.6.24-16-generic/ubuntu/sound/
  3. Stop the running ALSA services: sudo /etc/init.d/alsa-utils stop
  4. Download a new ALSA snapshot from here. I can confirm that 0424 works for me, and requires no patching.
  5. Extract that: tar xvjf alsa-driver-hg20080424.tar.bz2
  6. Change to the extracted directory: cd alsa-driver-hg20080424
  7. Configure the snapshop: ./configure
  8. Make the package: make
  9. Install the package: sudo make install
  10. Restart the ALSA services: sudo /etc/init.d/alsa-utils start
  11. Insert the newly built module: sudo modprobe snd_hda_intel
  12. If that completes successfully, you’re probably done. Unmute the sound using something like alsamixergui (sudo apt-get install alsamixergui), and you’re all set. If you get an error like the following:

    FATAL: Error inserting snd (/lib/modules/2.6.24-16-generic/kernel/sound/acore/snd.ko): Unknown symbol in module, or unknown parameter (see dmesg)

    it may be because you’re running a 32 bit kernel and soundcore.ko is omitted (Launchpad bug here). If that’s the case, proceed to the next step.

  13. We’re going to need to build a soundcore.ko and copy it to our kernel. Here’s how that’s done (credit to MsTiFtS for the original procedure).

    Bring down the Linux source code: sudo apt-get install linux-source-2.6.24

  14. Extract that: sudo tar xvzf /usr/src/linux-source-2.6.24.tar.bz2
  15. Copy over the current kernel configuration: sudo cp /boot/config-2.6.24-16-generic /usr/src/linux-source-2.6.24/source/.config
  16. Copy over the current kernel configuration: sudo cp /boot/config-2.6.24-16-generic /usr/src/linux-source-2.6.24/source/.config
  17. Change to the Linux source directory: cd /usr/src/linux-source-2.6.24
  18. Run make oldconfig: sudo make oldconfig
  19. Run make menuconfig: sudo make menuconfig If you get an error, you probably don’t have the right ncurses libraries installed. Do a sudo apt-get install libncurses5-dev libncursesw5-dev
  20. In the resulting menu, go to device drivers:sound
  21. Make sure sound card support is set to “m”
  22. Exit, saving your new configuration
  23. Run make scripts prepare: sudo make scripts prepare
  24. Run make SUBDIRS=sound modules: sudo make SUBDIRS=sound modules
  25. Copy the newly created soundcore.ko module over to the running kernel: sudo cp sound/soundcore.ko /lib/modules/2.6.24-16-generic
  26. Create the modules.dep and map files: sudo depmod -a
  27. Reload your soundcard module: modprobe snd-hda-intel
  28. Voila: everything should work. If it doesn’t, well, you’re on your own.

Hopefully this helps someone who ran into the same issues that I did, as the model was released too late for the patches to make it into the initial Hardy release.

And before all of the anti-Linux folks – especially you Mac people – jump all over the above as proof that the Linux desktop is geek-only, remember that the laptop’s been shipping for about a month. Give it time, probably not even much, and none of the above will be necessary for any user. Much like all of the Thinkpad keys “just work,” so too will the sound. I promise.

I just didn’t feel like waiting.

Before I forget, my thanks to the ALSA developers, and all of the folks over at the original ALSA bug report, especially schweeb who spent an hour or two IM’ing with me last weekend trying to get sound working.

The community really is what makes the software.