Learning From Other People's Mistakes: The Logitech Harmony 1000 Remote

Initially, I was torn on whether to write a blog post about the Harmony 1000. On the one hand, I feel that I should write about its issues. On the other hand, I don't want to write an all-negative rant, and I'm hoping that Logitech will eventually fix these issues, so I'm afraid a review of the Harmony 1000 could become outdated pretty quickly.

This blog post was originally titled something like "Stumbling Every Step of the Way", which was just mean-spirited. After thinking about it some more, it occured to me that I could use this review to point out solutions instead of flaws. So I'm going to talk about what Logitech does right and what they do wrong, and I'm going to end each section with some lessons which can be learned from Logitech's UI decisions. For those who own a Harmony 1000 and have encountered the same issues, I'll point out workarounds or solutions where I found them.

The Harmony 1000

Like every self-respecting geek, I have a bunch of devices with remote controls. Among others, I have a projector, a receiver and an HDMI Switch. Including the device I actually want to use, this makes for four remotes I have to touch every time I want to watch a DVD or listen to some music. Obviously, I need a universal remote. Since I'm a total sucker for touch screens, and since this is a device I hopefully will keep using for quite some time, I decided to go for the high-end solution, Logitech's Harmony 1000 Advanced Universal Remote.

Let me start out by saying I have nothing against Logitech whatsoever. Their mice and keyboards are virtually flawless, I often use Logitech controllers for my consoles, and their QuickCam Pro 9000 works on the Mac without installing anything, and provides a picture which makes the built-in iSight look like a child's toy.

Unfortunately, the Harmony 1000 does not quite measure up to Logitech's other devices.


Okay, this is a step where Logitech didn't fail. The box is actually nicely done. The Harmony 1000 is quite small; its screen is only slightly larger than a DS screen:

Harmony 1000 and DS Screen Comparison

This is okay; I don't want a remote taking up too much space.

Lessons Learned

First impressions matter; they're going to color the user's opinion of your product immensely. If you're selling something in a box, make sure the box is designed well, which means both looking good as well as functional and stackable. Don't use blister packages that can't be opened easily. Don't use boxes that require instructions for opening. Don't use boxes with strange shapes. Add some kind of quickstart leaflet to get people started without having to read the manual - print it on the package itself if it's short enough.

Plugging it in

The first thing you notice after inserting the battery and plugging the Harmony 1000 in is the ear-piercing whine its screen emits while plugged in. At first I almost thought earth was being attacked by aliens and I was hearing their brain-control wave beam, but a thorough investigation of my backyard revealed no aliens. Further investigation showed conclusively that the sound actually originated from the Harmony 1000, which was clearly attempting to drive me insane with its constant whine.

I was not sure whether my Harmony 1000 had some kind of flaw not found in other Harmony 1000s, but a Google search showed that the issue seems to be wide-spread. Fortunately, Google also found a solution: Simply set the screen's brightness to 100%, and the whining noise goes away.

If the problem can be solved so easily, why not set the brightness to a non-whining setting to begin with?

Lessons Learned

Use sane default settings. If a setting causes issues with your product, don't allow the user to set it, and don't make it the default setting. This should be obvious, yet my Harmony 1000 was pre-set to a brightness which caused the device to emit a piercing whine. How many customers never figure out how to fix this issue and return the device?


The first thing you need to do is install the Harmony's software. This includes ridiculous screens such as this one:

Installation Dialog

Are you wondering what that dialog box is trying to tell you? After clicking on OK, Logitech's installer actually opens Mac OS X's Network settings and adds a new Interface to the list. Even though the Harmony 1000 is connected to the Mac via USB, you need to change your Mac's network settings to make it work.

The installer asked for my admin password; not sure if it installed anything I should be worried about.

The Harmony software created two folders right inside my home folder, one called "Logitech" and one called "browser - logitech."

Lessons Learned

The installer is part of your application's user experience. Don't treat it as a second-class citizen and don't outsource it.

Don't ask for a password unless you need it; if you do ask, tell the user why you need the password.

Respect the host operating system's folder structure. Never put anything into the user's home directory or Documents directory! There's a place for application data and preferences, and it's not in the user's home folder.

Don't change system settings if you don't really, really have to.

Configuring the Harmony 1000

Now that we've installed the application, we can start configuring the Harmony. Unfortunately, the "Getting Started" manual contains errors. The name of the folder where the "Logitech Harmony Remote Software" (yes, that's the application's full name) was installed is wrong, both in the English and the German version of the "Getting Started" poster. But that's okay, a quick trip to Spotlight tells us where the application is.

Here's how the application looks:

Logitech Harmony Remote Software

My guess is that it is a Java application running some kind of custom HTML renderer which displays the actual UI. You can't properly resize the application:

Logitech Harmony Remote Software Resized

Right after launching the application, you already feel as if the developers did not take you seriously; they never even bothered to write a proper Mac OS X application. Button styles are mixed, and even the buttons which look like OS X buttons actually don't quite get it right. The text cursor flickers constantly, and you can't type into some fields until you activate another application and then go back to the Harmony app.

After creating an account and logging in, you find out that the whole user interface is basically one huge assistant (wizard for you Windows users). Nothing is easy here; no matter what you're trying to do, you start a long-winded process of screens upon screens.

At this point, I should probably tell you that you must never click on "logout". Doing so will make it impossible to start the application again. If you insist on clicking on "logout", the application will show this screen:

Logitech Harmony Remote Software Error

This error message will not go away if you click "Next", and it will reappear after you quit and restart the application. To get it working again, throw away the "browser - logitech" folder in your home folder.

Assuming that you have not broken the application by trying to log out, it will start out by asking you for a list of devices you own. This is pretty straightforward, and it even lists some funny options, like the Atari VCS 2600. Pretty cool.

Next, you have to set up Activities. As an example, the "Watching Movie" activity involves turning on the projector, the receiver, the HDMI switch and the DVD player, and setting the receiver and switch to the proper inputs. The application makes a few suggestions based on your devices, which is quite neat. You then have to go through an assistant for each suggestion, setting the proper channels. So far, so good. Unfortunately, it only asks you at the end of the process whether it picked the proper devices for the activity; if you change devices, you have to go through the assistant again. But that's not too bad; so far, we're doing quite well.

After you've set up your activities, you find out that you can't change their icons. All of your console activities look like Xbox 360 controllers, and the consoles themselves look like Dreamcasts with Xbox 360 controllers, which is pretty funny:

Dreamcast with Xbox controller

Still, having only one icon for all the consoles is a bit confusing.

But back to the assistants. Everything is controlled using assistants, even something as simple as changing an Activity's name. Worse, some assistants actually require you to lie.

For example, even though the Harmony claims that it knows my Sanyo projector, it could not turn it off. I could press "Help" on the remote itself and after a few questions, it would eventually turn the projector off, but it would not remember that I had to use Help; the next time I tried to turn the projector off, the whole rigmarole would start again. That seems easy enough to fix; my projector requires that the power button be pressed twice to turn it off, and it seemed the remote only sent the command once.

So off to the Harmony application we go. But since this is an assistant-based UI, we can't just go and try some settings. Instead, let's go to Devices -> Projector -> Troubleshoot. Instantly, an assistant starts, asking me what problems I'm having. One of the otions is "Projector is not turning on or off the way it should." Sounds good, let's go with this one. It then asks whether using Help fixed the issue. "Yes, the Help button on the remote fixes the problem, but I need to keep using Help all the time."

Perfect! That's exactly what happened to me!

Selecting this option brings me to a screen where I can set the time the remote waits between commands. And that's it. I tried a few settings, but none of them made any kind of difference - and by the way, after each change, I had to wait a few minutes until the change was applied on the device, and sometimes the remote would stop responding, which means I had to unplug the USB cable and restart the whole process.

Trying to connect

The application will actually tell you to disable anti-virus software if it can't connect to your remote.

Some assistants manage to come up with pretty strange questions. For example, when troubleshooting an issue, the following "conversation" will occur over and over:

Is the system now working? - No

Did that fix your problem? - No

If the system is not working, the problem was not fixed; I would think there should be no need to ask twice.

Either way, no luck with my issue. the "correct" troubleshooting option simply did not help at all. This is where the "lying" part comes into play. Let's start randomly selecting options which don't fit the actual problem.

After trying a few other options on the list of problems, none of which fixed my issue, I tried "Show me more problems" which showed me exactly one more problem (which would easily have fit on the first screen). That additional option was "Projector doesn't appear to receive every command correctly." Well, that's not quite the problem I'm having, but what the heck. After some more trial and error, I finally managed to get the remote to properly turn off my projector.

It took me roughly four hours.

And even though that was yesterday, today, while writing this entry, I could not retrace what I did to get it to work. I honestly have no clue which of the answers and settings I tried to finally fix the issue. All I remember was that I somehow ended up in a screen where I could add (but not remove, so better be careful) IR actions to commands.

Lessons Learned

Be resilient. The user will use your application in unexpected (or, in this case, untested) ways. Don't fail if that happens, and never let your application reach an unrecoverable state.

Even if your customers only use an application once to set up your device, you need to make sure that the experience is a pleasant one. If people can't get your device to work, they'll return it.

Never use assistants as the primary user interface. They are always the secondary user interface to one that allows simple changes to settings. Had I not had to go through the whole assistant each time I tried a new setting, I would have finished a whole lot sooner.

Don't make the user repeat herself. If your application should already know something, don't ask again, but make sure that information is stored somewhere.

This should be obvious, but perhaps it's not: Don't require the user to lie to your application to get the result he wants. If you insist on having assistants, make sure they actually work.

The Device Itself

So four hours later, I've finally set up my remote, and it seems to work. Turning it on, it greets me with "Welcome to your remote", a modal dialog with an OK button. First of all, please do not welcome me to my remote. I'm not its guest, I'm its owner. I've just turned it on, I don't need to push "OK" to know this.

Welcome to your Remote!

But not content with just welcoming me, the remote follows this up with another modal dialog, telling me that I should press "Help" if my devices aren't turned off. How about telling me this inside the actual UI instead of as a modal dialog I have to dismiss before I can use the remote?

Everything is turned off!

After starting an activity, more modal dialogs appear:

The remote has now set up your system for this Activity

There's no need to tell me this. The proper devices have turned on, so I know that the assistant has set up my system.

If any devices are not set up correctly, press "Help" now

Again, there's no need to tell me this. If something doesn't work, I'll push the Help button without being told to do so in a modal dialog.

The Help function has a few issues of its own. For example, after you press "Help", it starts out by asking "Did that fix your problem?" Did what fix my problem? Pressing "Help"? The first step in the help dialog makes absolutely no sense.

Turning the activity off actually goes back to the "Welcome to your remote" modal dialog, followed again by the dialog telling me that I should press help if any devices are still running.

It turns out that some engineers at Logitech noticed that these dialog boxes were annoying. There's a way to turn them off! On your remote, go to Settings -> Remote Settings -> Remote Assistant and uncheck the big checkbox.

But there's one additional problem I have with the remote: There's no way to reset the device. A few hours after I started using it, the Harmony suddenly stopped sending IR signals. I haven't found any way to turn the Harmony off, so the only way to get it back into working order was by removing the battery, which was not particularly easy.

Oh, and I still haven't figured out how to change the touch screen icons and button layouts shown for each activity. I'm guessing I have to try lying to some assisstants some more. Some of my devices have very basic button layouts (a 3-by-3 grid of buttons); some activities show no button layout at all. Because I could not figure out how to set them up properly, I'm actually not using the soft buttons at all; I've put the features I need on the hardware buttons. The only time I use the touch screen is when I start Activities.

I wish I had custom icons:

I wish I had custom icons

Lessons Learned

Never show modal dialogs if there is any way you can possibly avoid it.

Assume that your device or application will fail. Provide ways to recover from errors, at worst using a reset button.

Features which can't be set up or used properly are worse than missing features. Don't put features into your product just so you can check off another item on your feature list; think about how the user is going to interact with the feature. If you can't do a feature properly, don't add it to your product; you'll only annoy and aggravate your users.


So, will I return the device? I'm guessing it has already cost me more time than it will ever save me. Yesterday, I would have answered "yes." Today, I'm probably going to keep it. I've already invested all this time into setting it up properly; the hard part is done, and the remote actually works quite well, keeping me from constantly having to search for all those other remotes.

All said and done, I'm actually reasonably happy with my Harmony 1000, now that it mostly works.

If you require a short url to link to this article, please use http://ignco.de/34

designed for use cover

But wait, there's more!

Want to read more like this? Buy my book's second edition! Designed for Use: Create Usable Interfaces for Applications and the Web is now available DRM-free directly from The Pragmatic Programmers. Or you can get it on Amazon, where it's also available in Chinese and Japanese.