View: HTML | Text | PS | PDF | RTF | Wiki | DocBook | DocBook Inline | changelog | about this header Circle Jeff Boweron  
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML v4.5//EN" "/usr/share/xml/docbook/schema/dtd/4.5/docbookx.dtd">
<article lang="en">
  <articleinfo>
    <keywordset>
      <keyword>ubuntu</keyword>
      <keyword>lucid</keyword>
      <keyword>maverick</keyword>
      <keyword>hp touchsmart 600</keyword>
      <keyword>touchsmart 600</keyword>
      <keyword>touchsmart</keyword>
      <keyword>touchscreen</keyword>
      <keyword>wireless</keyword>
      <keyword>audio</keyword>
      <keyword>headphone</keyword>
      <keyword>internal speaker</keyword>
      <keyword>ebower</keyword>
      <keyword>nwfermi</keyword>
      <keyword>nw-fermi</keyword>
      <keyword>linux</keyword>
    </keywordset>
    <title>Installing Ubuntu on an HP TouchSmart 600</title>
    <abstract>
      <para>
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.
</para>
    </abstract>
  </articleinfo>
  <section id="intro">
    <title>Introduction</title>
    <para>
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.
</para>
    <para>
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.
</para>
    <para>
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:
</para>
    <variablelist>
      <varlistentry>
        <term>Wireless</term>
        <listitem>
          <para>
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.
</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>Sound</term>
        <listitem>
          <para>
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).
</para>
        </listitem>
      </varlistentry>
      <varlistentry>
        <term>Touch Screen</term>
        <listitem>
          <para>
OK, this one is a little more major.  After all, you bought a TouchSmart most likely because it has a touch screen.
</para>
        </listitem>
      </varlistentry>
    </variablelist>
    <para>
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 <ulink url="http://ubuntuforums.org/showthread.php?t=1383786">Ubuntu Forums</ulink> for providing a lot of the glue that holds this document together.
</para>
  </section>
  <section id="preparing">
    <title>Preparing Your System</title>
    <para>
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.
</para>
    <section id="choosing-distro">
      <title>Choosing a Distribution</title>
      <para>
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.
</para>
      <para>
If you actually need this section, you should download the <ulink url="http://www.ubuntu.com/desktop/get-ubuntu/download">Ubuntu Desktop Edition, 32-bit</ulink>.  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.
</para>
    </section>
    <section id="partitioning">
      <title>Partitioning Scheme</title>
      <para>
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?
</para>
      <para>
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.
</para>
      <para>
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 <ulink url="http://www.codeweavers.com/products/cxgames/">Crossover Games for Linux</ulink> and realizing that I haven't booted Windows 7 in ages gave me the confidence to wipe things out after a few months.
</para>
      <para>
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 <filename id="directory">/home</filename> directory.  This means that I can move between installations or reformat for a clean install and still keep my data intact and accessible.
</para>
      <para>
If you decide to change things later you can install <command>gparted</command> 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.
</para>
    </section>
  </section>
  <section id="installation">
    <title>Installation</title>
    <para>
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 - <emphasis>ubuntu-touchsmart</emphasis> is great for a machine name until you've got six of them and can't remember which is which.  Something like <emphasis>ubuntu-touchsmart-audiotest</emphasis> makes things much easier.
</para>
    <para>
Once you've installed things most stuff should just work.  Assuming you can connect to a hardwire Ethernet port I usually do a <command>sudo apt-get update &amp;&amp; sudo apt-get upgrade</command> to get everything up to par.  After that I activate the Nvidia driver (<menuchoice><guimenu>System</guimenu><guimenu>Administration</guimenu><guimenuitem>Hardware Drivers</guimenuitem></menuchoice>). I also install some of my necessary utilities at this point (<command>sudo apt-get install vim ubuntu-restricted-extras</command> [I've got a whole list of others, but <command>vim</command> and <command>ubuntu-restricted-extras</command> are necessities], install Google Chrome, etc.).
</para>
    <section id="wifi">
      <title>Wireless</title>
      <para>
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.
</para>
      <para>
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 <ulink url="http://www.halibutdepot.org/how_to_build_rt3090_for_ubuntu_lucid/">this HOWTO</ulink>, but for the lazy you can download the driver directly from <ulink url="http://stat.case.edu/~jrt32/how_to_build_rt3090_for_ubuntu_lucid/rt3090-dkms_2.3.1.4-0ubuntu0~ppa1_all.deb">the authors</ulink> or from <ulink url="rt3090-dkms_2.3.1.4-0ubuntu0~ppa1_all.deb">my copy</ulink> which works under Lucid and Maverick.
</para>
      <para>
Just open the package or run <command>sudo dpkg -i rt3090-dkms_2.3.1.4-0ubuntu0~ppa1_all.deb</command> 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.
</para>
    </section>
    <section id="audio">
      <title>Audio</title>
      <para>
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 <ulink url="https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/597056">bug 597056</ulink> for the latest updates.
</para>
    </section>
    <section id="touchscreen">
      <title>Touch Screen</title>
      <para>
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 <ulink url="https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-evdev/+bug/379313">bug 379313</ulink>.  Search through for the term "nwfermi" to see if there are any later releases, but <ulink url="https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-evdev/+bug/379313/+attachment/1774978/+files/nwfermi-0.4.5_i386.deb">version 0.4.5</ulink> works for me in Maverick (the 64-bit version is <ulink url="https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-evdev/+bug/379313/+attachment/1774979/+files/nwfermi-0.4.5_amd64.deb">here</ulink>).  You can also download it from my server in <ulink url="nwfermi-0.4.5_i386.deb">i386</ulink> or <ulink url="nwfermi-0.4.5_amd64.deb">amd64</ulink> flavors if you think I'm more trustworthy than Launchpad.
</para>
      <para>
Note: There was a new release posted <ulink url="https://launchpad.net/nwfermi/trunk/nwfermi0.5">here</ulink> 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 <ulink url="http://launchpad.net/nwfermi/trunk/nwfermi0.5/+download/nwfermi-0.5.0_i386.deb">i386</ulink> or <ulink url="http://launchpad.net/nwfermi/trunk/nwfermi0.5/+download/nwfermi-0.5.0_amd64.deb">amd64</ulink> architectures.
</para>
      <para>
Just open the package or run <command>sudo dpkg -i nwfermi-0.4.5_i386.deb</command> or <command>sudo dpkg -i nwfermi-0.4.5_amd64.deb</command> from your download directory and it should be installed.  Reboot and things should be working fine.
</para>
      <para>
The developer who's been posing the updates has just created a <ulink url="https://launchpad.net/nwfermi">Launchpad Site</ulink> 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 <ulink url="https://launchpad.net/nwfermi/+subscribe">bug reports list</ulink> so you can be sure to keep tabs on the project.
</para>
      <section id="calibration">
        <title>Calibrating your Touchscreen</title>
        <para>
The latest version includes a calibration facility.  In order to facilitate the use of this function I've created a <ulink url="nwfermi-calibrate">script</ulink> to do this for you.
</para>
        <example>
          <title>nwfermi-calibrate</title>
          <programlisting><inlinemediaobject><imageobject><imagedata fileref="nwfermi-calibrate" format="linespecific"/></imageobject></inlinemediaobject></programlisting>
        </example>
      </section>
      <section id="maverick">
        <title>Installing the Touchscreen Drivers on Maverick</title>
        <para>
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 <ulink url="https://wiki.ubuntu.com/Multitouch/Testing/CheckingMTDevice">test</ulink> by running <command>sudo lsinput</command> we get an error and <ulink url="https://wiki.ubuntu.com/Multitouch/Testing/UsingGesturetest">GestureTest</ulink> doesn't detect anything.  However, at least we're back to the state we were in with Lucid.
</para>
        <para>
If you want to play with it anyway, simply run <command>sudo apt-get install utouch input-utils mtdev-tools</command> and try it out.  The <ulink url="https://wiki.ubuntu.com/Multitouch">Multitouch Wiki</ulink> is a good starting point.
</para>
        <para>
I've created <ulink url="https://bugs.launchpad.net/ubuntu/+source/utouch/+bug/655169">Bug 655169</ulink> 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.
</para>
        <para>
Note that <ulink url="https://launchpad.net/~djpnewton">djp</ulink>, 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.
</para>
      </section>
    </section>
  </section>
  <section id="other">
    <title>Other Comments</title>
    <para>
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.
</para>
    <section id="tv-tuner">
      <title>TV Tuner</title>
      <para>
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.
</para>
    </section>
    <section id="hdmi">
      <title>HDMI input</title>
      <para>
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.
</para>
    </section>
    <section id="bluray">
      <title>BluRay</title>
      <para>
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 <ulink url="http://www.dvdfab.com/">DVDFab</ulink> inside a <ulink url="http://www.virtualbox.org/">VirtualBox</ulink> Windows XP installation to convert the movie to a playable format.
</para>
      <para>
Using an ancillary program called MakeMKV, I can <ulink url="../ubuntu-bluray">play BluRay discs</ulink> 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.
</para>
    </section>
    <section id="ambient-light">
      <title>Ambient Keyboard Light</title>
      <para>
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), <ulink url="http://www.touchsmartdevzone.com/forum/thread/255/HP-Ambient-Light-Programming/?page=2">this post</ulink> looks promising.
</para>
      <blockquote>
        <para>
In general, yes the Ambient Light is just a HID device.
</para>
        <para>
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.
</para>
        <para>
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.
</para>
      </blockquote>
    </section>
    <section id="multitouch">
      <title>Multi-Touch</title>
      <para>
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 <ulink url="http://blog.canonical.com/?p=414">will have multi-touch support</ulink>.
</para>
      <para>
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 <ulink url="https://bugs.launchpad.net/ubuntu/+source/utouch/+bug/655169">Bug 655169</ulink>.
</para>
    </section>
  </section>
  <appendix id="discussion">
    <title>Discussion</title>
    <para>
Questions, comments, problems or complaints?  Discuss this document on our forum <ulink url="https://www.ebower.com/forum/viewtopic.php?f=3&amp;t=4">here</ulink>.
</para>
  </appendix>
  <!-- INCLUDE ../about-me.docbook -->
  <appendix id="about-me">
    <title>About Me</title>
    <para>
My name is Jeff Bower, I'm a <ulink url="http://www.linkedin.com/in/jdbower">technology professional</ulink> 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, including <ulink url="http://komodokamado.com/forum/">Komodo Kamado</ulink>, <ulink url="http://forum.androidcentral.com/">Android Central</ulink>, <ulink url="http://forums.virtualbox.org/">VirtualBox</ulink>, and <ulink url="http://www.makemkv.com/forum2/">MakeMKV</ulink>.  Writing these documents is a hobby of mine, I hope you find them useful and feel free to browse more at <ulink url="https://www.ebower.com/docs">https://www.ebower.com/docs</ulink>.  
</para>
    <para>
I also enjoy cooking, especially outdoors with my <ulink url="http://www.komodokamado.com">Komodo Kamado</ulink> and using my <ulink url="https://www.rocksbarbque.com">Stoker</ulink>.  Take a look at my recipes stored at <ulink url="https://www.ebower.com/recipes">https://www.ebower.com/recipes</ulink>.
</para>
    <para>
If you've got any questions or feedback please feel free to email me at <ulink url="mailto:docs@ebower.com">docs@ebower.com</ulink> or follow me on <ulink url="https://profiles.google.com/100268310848930740059">Google+</ulink> or <ulink url="http://twitter.com/jdbower">Twitter</ulink>.
</para>
  </appendix>

<!-- INCLUDE_END ../about-me.docbook -->
</article>