View: HTML | Text | PS | PDF | RTF | Wiki | DocBook | DocBook Inline | changelog | about this header Circle Jeff Boweron  
Installing Ubuntu on an HP TouchSmart 600

Installing Ubuntu on an HP TouchSmart 600

Getting Ubuntu working well on an HP TouchSmart isn't hard, but it doesn't work out of the box. The model I've got is an HP TouchSmart 600-1005xt, but this document should be useful to anyone with a TouchSmart 600 series. This document began with describing a Lucid installation, and has since migrated to Maverick. Release-specific information has been noted when applicable.


Table of Contents
1. Introduction
2. Preparing Your System
2.1. Choosing a Distribution
2.2. Partitioning Scheme
3. Installation
3.1. Wireless
3.2. Audio
3.3. Touch Screen
3.3.1. Calibrating your Touchscreen
3.3.2. Installing the Touchscreen Drivers on Maverick
4. Other Comments
4.1. TV Tuner
4.2. HDMI input
4.3. BluRay
4.4. Ambient Keyboard Light
4.5. Multi-Touch
A. Discussion
B. About Me

1. Introduction

Way back in the early days when Slackware ruled the Linux roost things were very different. We compiled all of our programs. We managed our own dependencies. And, dammit, we wrote our own drivers. We've come a long way, baby.

A modern Ubuntu install is typically not that much more difficult than a Windows installation - pretty much everything just works. However a fear of polluting the "purity" of Linux by avoiding proprietary drivers and a lack of hardware vendor support does still throw a few wrinkles in. Sometimes you need to find the odd wireless driver or enable the far superior Nvidia proprietary driver to get things running smoothly. Luckily there are frequently pages describing exactly what to do, but this isn't quite the case for the HP TouchSmart 600. Until now.

An out-of-the-box installation will still yield good results. Video, keyboard/mouse, wired networking all come up the way they should (except for needing to enable the Nvidia driver, but that's acceptable and easy). However there are three broken features:

Wireless

The wireless interface driver is not included. From my perspective this is a desktop and therefore should be wired, but not everyone has the benefit of an unfinished basement that makes it easy to run a Cat5e cable to a GbE switch.

Sound

At first blush, the sound is broken. Plug something into the headphone jack and, presto!, you've got audio. This is a more major headache, but luckily one I can live with since I prefer to keep headphones on anyway (my wife's computer is next to mine so it helps to isolate the sound).

Touch Screen

OK, this one is a little more major. After all, you bought a TouchSmart most likely because it has a touch screen.

If you've been using Linux as long as I have you'd be impressed that it works at all, but for the typical user it's still a little disappointing. Luckily I'm out to fix these issues for you. Thanks to the guys at Ubuntu Forums for providing a lot of the glue that holds this document together.


2. Preparing Your System

There are a few things you can do to prepare your system. A little forethought can help you down the line in case the next generation of Linux supports the hardware in a better manner.


2.1. Choosing a Distribution

There are plenty of distributions out there and each has their own pluses and minuses. As much as hardcore Linux fans hate anything that has a modicum of popularity I recommend Ubuntu. Popularity = Support, and that's what we need from hardware vendors.

If you actually need this section, you should download the Ubuntu Desktop Edition, 32-bit. It works well out of the box, and has the best compatibility. Now that there's a 64-bit touchscreen driver this isn't as important, but we're on the cusp of the 64-bit tipping point and there are still some things that are 32-bit only. If you're used to dealing with architecture issues like these you're welcome to experiment. You can also try out the Server version if you'd prefer to install applications one-by-one, or look into Kubuntu or Xubuntu for a different UI - but vanilla Ubuntu is fine by me.


2.2. Partitioning Scheme

You may also want to carefully consider your partitioning scheme. Do you want to dual boot with Windows? Do you want to be able to wipe out the installation without wiping your user data? Do you want to try a clean install of the next version of Ubuntu to see what's supported?

Typically I just go with a single partition on my systems, back in the days of smaller hard drives I've run into too many issues where the root partition ran out of space or the home partition ran out of space. With my TouchSmart I did things differently.

First, I left Windows 7 installed for quite some time. It's useful in that the driver support is there so I can verify that the hardware works. I can also query the driver to find out subtleties in the version and model. And I wasn't confident I could play games under Linux. Getting used to playing under Crossover Games for Linux and realizing that I haven't booted Windows 7 in ages gave me the confidence to wipe things out after a few months.

Second, I decided to segregate the root partition from the user space. Setting aside 50GB for the root partition is probably enough, but I used 100GB on my final install. I also left room for multiple other smaller partitions in case I wanted to experiment. At the time of this writing I've got Maverick-64 installed in one and another will likely get Natty once it hits beta. The lion's share of the drive is for the /home directory. This means that I can move between installations or reformat for a clean install and still keep my data intact and accessible.

If you decide to change things later you can install gparted to change your partition tables. It's slow, a little dangerous, and not as clean as doing it right from the start but it works.


3. Installation

Ubuntu installations are fairly typical, I won't go into the details here as the defaults are all perfectly acceptable. I will warn you that if you're installing multiple test partitions that naming is key - ubuntu-touchsmart is great for a machine name until you've got six of them and can't remember which is which. Something like ubuntu-touchsmart-audiotest makes things much easier.

Once you've installed things most stuff should just work. Assuming you can connect to a hardwire Ethernet port I usually do a sudo apt-get update && sudo apt-get upgrade to get everything up to par. After that I activate the Nvidia driver (System+Administration->Hardware Drivers). I also install some of my necessary utilities at this point (sudo apt-get install vim ubuntu-restricted-extras [I've got a whole list of others, but vim and ubuntu-restricted-extras are necessities], install Google Chrome, etc.).


3.1. Wireless

If you've got a hardline Ethernet connection you can pretty much ignore this, I haven't found a need for both wireless and wireline connectivity and it only makes it ambiguous which interface a packet will go out on. However if you're sitting on the floor in the basement right now using the only Ethernet cable you could find (a 1 footer from an old knockoff router you had) you're probably cursing me for making you read this instead of getting to the point already.

The wireless driver is covered in rt3090, but sadly there's no PPA support for Lucid. You can download and build the driver yourself using this HOWTO, but for the lazy you can download the driver directly from the authors or from my copy which works under Lucid and Maverick.

Just open the package or run sudo dpkg -i rt3090-dkms_2.3.1.4-0ubuntu0~ppa1_all.deb from your download directory and you should be good to go. Note that you can download this to a USB drive prior to installation to avoid sitting on the basement floor next to your router.


3.2. Audio

Sadly, at the time of this document's last update, the audio issue has not been fixed. Consider this an excuse to go out and buy a great set of external speakers. You can track and participate in bug 597056 for the latest updates.


3.3. Touch Screen

The touch screen is actually made by a company called NextWindow, who makes a lot of HP's (and other) touch screens. They have a proprietary driver that they've announced in bug 379313. Search through for the term "nwfermi" to see if there are any later releases, but version 0.4.5 works for me in Maverick (the 64-bit version is here). You can also download it from my server in i386 or amd64 flavors if you think I'm more trustworthy than Launchpad.

Note: There was a new release posted here that claims to support Multitouch. Sadly, I'm not around for the next few days so I'm not able to actually test this. You may download it from me in i386 or amd64 architectures.

Just open the package or run sudo dpkg -i nwfermi-0.4.5_i386.deb or sudo dpkg -i nwfermi-0.4.5_amd64.deb from your download directory and it should be installed. Reboot and things should be working fine.

The developer who's been posing the updates has just created a Launchpad Site for the Nextwindow Fermi driver supporting the 1950 and 3000 series hardware - expect a PPA soon. In the mean time, you may with to sign up to the bug reports list so you can be sure to keep tabs on the project.


3.3.1. Calibrating your Touchscreen

The latest version includes a calibration facility. In order to facilitate the use of this function I've created a script to do this for you.

Example 1. nwfermi-calibrate

#!/bin/bash
echo ""
echo The cursor will move to each of the four corners of the screen.
echo Press and hold at each location until the cursor moves to the next corner.
echo After the cycle is complete the cursor will move to the center of the screen.
echo ""
echo For additional information, please read https://bugs.launchpad.net/bugs/379313
echo ""
echo Press Enter to begin

read nothing

echo -e "C\x02\x21\x01" > /tmp/nwfermi0-tl-in

3.3.2. Installing the Touchscreen Drivers on Maverick

Unfortunately Maverick isn't the panacea we were hoping for regarding multi-touch, and the nw-fermi driver doesn't appear to be supported. Doing a quick test by running sudo lsinput we get an error and GestureTest doesn't detect anything. However, at least we're back to the state we were in with Lucid.

If you want to play with it anyway, simply run sudo apt-get install utouch input-utils mtdev-tools and try it out. The Multitouch Wiki is a good starting point.

I've created Bug 655169 to track the inclusion of nwfermi-based hardware into the uTouch package. Please follow this bug if you'd like to see updates as to the progress.

Note that djp, author of the nw-fermi drivers, is working on adding multi-touch support to the driver which is the first and biggest step to getting Maverick gestures working. I'd like to thank him for all of his work as a meager consumer of his efforts.


4. Other Comments

Just because it's not mentioned here doesn't mean it's not broken. From my perspective these are the only things I've run into but there may be issues I'm not aware of.


4.1. TV Tuner

Some users have reported problems with the TV tuner plugin module. This isn't standard and the reports came from Europe so the US NTSC module may work. I don't have the module so I can't help much with that.


4.2. HDMI input

There is an optional HDMI/component video/S-video input module which is great if you want to hook up an external BluRay player or an XBox/PS3/Wii. I do have this option and it works great. The option is strictly hardware controlled so it requires no OS support at all.


4.3. BluRay

The optical drive can be the standard DVD-ROM or upgraded to a BluRay drive. This seems to work just fine but getting a BluRay video disc to actually play is a bit of a hassle under Linux. I can, however, use a program like DVDFab inside a VirtualBox Windows XP installation to convert the movie to a playable format.

Using an ancillary program called MakeMKV, I can play BluRay discs with reasonable quality. This isn't a full BluRay solution for those who like their extra features, but it is realtime decryption and seems to be full resolution streaming of the disc.


4.4. Ambient Keyboard Light

The ambient keyboard light only is partially functional. It will light up with a few intensities as white, but there is no OS support for it to turn on automatically, fine tune the brightness, or change the color yet. If I get the time (or find a sucker to do it for me), this post looks promising.

In general, yes the Ambient Light is just a HID device.

You have the two pairs of IDs right, JoeS. 0x03F0 vendor ID goes with 0x150C device ID and 0x04d8 vendor ID goes with 0x0019 device ID.

To set the light, you write to the device a 65 byte long packet, containing 1 in the 0 byte, the value for Red in the 1 byte, the value for Green in the 2 byte and the value for Blue in the 3 byte. Intensity goes in the 4 byte. The rest of the 65 bytes need to be padded with the value 255.


4.5. Multi-Touch

I'm looking forward to this being a very short-lived entry. As of now Lucid is not really multi-touch aware. You can touch the screen and it will click where you touch, dragging works fine, but neat things like pinch-to-zoom or swipe gestures are just not there. Luckily, Canonical has announced that as of Maverick Meerkat, released in October 2010, Ubuntu will have multi-touch support.

Unfortunately the touchscreen driver doesn't currently have multi-touch support so until this is rectified there isn't much that Canonical can do. As I mentioned above, the nwfermi driver should have multitouch enabled eventually, if you'd like to follow the progress or voice your support for the TouchSmart please participate in Bug 655169.


A. Discussion

Questions, comments, problems or complaints? Discuss this document on our forum here.


B. About Me

My name is Jeff Bower, I'm a technology professional with more years of experience in the telecommunications industry than I'd care to admit. I tend to post with the username jdbower on various forums. Writing these documents is a hobby of mine, I hope you find them useful and feel free to browse more at https://www.ebower.com/docs.

If you've got any questions or feedback please feel free to email me at docs@ebower.com or follow me on Google+ or Twitter.