I was sitting there thinking to myself that it would be really nice to know what was actually wrong. Then I realized that if you are going to service one of these there really needs to be a mechanism for testing the various components. So, I tried pushing all four buttons at once and got a startup sound I'd never heard before. Fiddling around with the controls at this point, I discovered that the "spot clean" and "clean room" button caused the unit to count in binary using two different tones for one and zero. Pushing "clean room" a few times I noticed that one of the settings caused the right wheel motor to turn on. Successive settings activated the left wheel, suction motor, and main brush. The next setting produced a pathetic buzzing sound from the small spinning brush that follows walls and sweeps dirt under the rest of the unit. "Hmm. There's nothing obvious wrong, but let's try unscrewing this and see why this doesn't turn freely. O, hey, look. There's a lot of hair on that washer. . . . In fact, there's not actually a washer in there at all; it's all hair. And there's even more hair twisted in below that." It worked much better with the hair removed. It's interesting to note that the unit seems to use that brush as a sensor; I'm not entirely sure if it is just to prevent motor burn out, or if it actually uses feedback from that brush to tell when it is following a wall. I continue to be impressed with the effort spent on Irobot's design. I was also happy that they did have a diagnostics mode and that it was obvious enough that I didn't even have to go look up the cheat codes on the web.
My roomba was sick; you'd tell it to go clean a room and it would wonder around sometimes backing up for no reason and within about five minutes stop in the middle of the floor and play the "I'm stuck" sound. There seemed to be no visible problem with the bumper and nothing seemed to be interfering with the mechanical action. Cleaning the floor brush didn't help.