Tuesday, August 30, 2011

Roomba repair - cleaning techniques

For 3rd and 4th Generation Roomba  

CAUTION !  What described here can damage your Roomba if you don't know what you are doing, and it also make void the warranty !
I'm not liable in case of problems following these suggestions. YOU are responsible about what you are doing.

The most recurring problem for Roomba, is related to the cleaning job is supposed to do.
Dust, hair, strings, ecc., after some time, especially if the unit is not maintained properly, can create problems.
So the first thing to do when repairing a Roomba, is to have it cleaned up.
There are different cleaning techniques, some of them can be applied sequentially to the unit, depending how much dirt is the robot.
I'm describing here the techniques I'm currently using to clean up a third or fourth generation Roomba.

Blowing the unit
The first thing is to blow the unit with compressed air or, like me that I don't have compressed air, with an electric blower.
Better to do that in an open space, not in the house, since usually is coming out a LOT of dust.
I usually open the garage door, then I prepare the Roomba removing the battery, the dust bin and the brushes.
Then I place the Roomba to be cleaned on the floor, "as is" (i.e. I don't take it apart yet) and start to blow everywhere, up and down, trying to direct the airflow in every accessible place.
Also, place the Roomba upside down to clean up the wheels and the bottom of the deck.
Usually clouds of dust and hairball can escape the unit, so better to wear a mask.

Apply the same treatment to the dust bin, removing the filter and direct the air flow also in the vacuum propeller.

Vacuuming the unit
After the initial blowing, the second stage of the cleaning, require to take apart the unit.
Remove the bumper, the top case and the rotating lateral brush.
Doing so many internal parts become exposed, and it is possible to vacuum the unit, in order to remove pieces of dust still attached to the internal parts.
It is typical to have airballs mixed with dust on the deck and dust stuck in little spaces, not accessible from the outside.

With "not so dirty" Roomba, the blowing and the vacuum are enough to have the unit clean.
In these cases is enough a wet cloth or some cleaning cloth products, to remove the dust and have back the unit like new.

Same treatment to the dust bin. Just be sure to remove the filter first.

Unfortunately many Roomba never received a decent maintenance during their life.
For these units is mandatory to proceed to the third cleaning phase.

Washing the unit
For very dirty units, it is necessary to wash them.
Depending what you have available, there are different techniques.
Having an old dishwasher available, it is possible to put Roomba in it and perform a short cycle.
I have an utility sink in garage, so what I usually do is to fill up a basin, big enough to contain the Roomba, with warm soapy water.
I use a car wash soap, in order to remove also some external greasy dirt, and a mild brush, to gently stroke in every accessible unit part.

For very dirty Roomba is maybe better to detach the deck from the unit and having it washed separately.
Put the Roomba in the warm water, agitate the water (so to allow a deep penetration) and use the brush (gently !!!) on electronics and mechanical parts.
Then rinse accurately the unit with fresh water.

The trick is then to dry the unit as fast as possible.
After moving the Roomba up and down for a while, in order to remove as much water as possibile, I normally use the blower as first drying step, so to force the water out from inside.
Then I place the unit under the sun (here in Arkansas is quite powerful) for few hours.
An alternative could be to use a dryer, of course assuming the dryer has a stable internal platform (many dryers have that option).
Is not a good idea to place the Roomba in the drum !!!

The same technique can be applied to the dust bin, unless is a dust bin with the Empty indicator.
This kind of dust bin is called Intellibin.
These dust bins have an extra electronic powered by an independent battery.
So DON'T WASH the dust bin unless you remove first the battery.
Unfortunately to remove the battery, you have to totally take apart the dust bin !


Here a video that shows how to perform a "vacuum type" of cleaning, i.e. opening the Roomba and cleaning the inside.
The video has the soundtrack in Italian but I think it can be helpful anyway.
The time necessary to do a decent job, assuming to have a little bit of experience in opening and closing the Roomba, is around 30 minutes more or less.


Sunday, August 28, 2011

Interface Roomba-USB

In order to diagnose/repair a Roomba, it is necessary to do some test and measurements.
Even if each Roomba has a diagnostic program on-board, often is necessary to have more control and a better feedback, with also some measurements.
To do so the basic tool every Roomba-hacker needs to have is a cable to connect the Roomba with a PC.

There are many ways to buy/build such cable.
This article describe how I did it, just to give ideas. Is not necessarily the best way but it worked for me.


We started from a consumer SIM USB card reader.  These readers are available on ebay and similar places for few dollars.
Here a picture of the electronic board (they usually come in some kind of plastic box).

These USB SIM card readers usually are based on a chip capable to convert the USB port into a serial one, the Prolific PL-2303.
Then a cable with a minidin connector is needed and eventually a PCB minidin.
In my specific case I used :
  • USB SIM card reader
  • 8 pin minidin PCB outlet
  • 8 pin minidin cable (at both ends)


The first thing to do is to remove from the USB SIM card some useless components, like the SIM card connector, a 74HC04 and a Crystal (3.5 Mhz).

At this point is necessary to identify on the PL-2303 the pins we need to connect.
  • Pin 1 PL-2303
    TXD -> connected to the Roomba RXD (pin 3 minidin)
  • Pin 3 PL-2303
    RTS -> connected via a transistor to the Roomba Power pin (pin 6 minidin 7 - pin 5 minidin 8)
  • Pin 5 PL-2303
    RXD -> connected to the Roomba TXD (pin 5 minidin 8 - pin 4 minidin 8)
  • Pin 7 PL-2303
    GND - pin 6/7 minidin 7 - pin 7/8 minidin 8)

Here the schematic of what we want to do :

It is very important to pay attention of the type of minidin used.In the schematic I used the original Roomba minidin 7, so the pinout is DIFFERENT from the minidin 8 !
On the net is possible to find information about the pinout and specifications, like here.
Here some pictures of cable preparation.

Tuesday, August 23, 2011

Fixing an Infoglobe

One of the Infoglobe I have, started to have problems time ago.
Initially the problem was random, one row of the message, was missing for few seconds, then working normally.
But on time, the missing row problem become permanent.
Then another row started to dim and then disappeared.

At this point I decided to open the Infoglobe and discover the cause of the problem.
Here a description of what I did, hopefully it can be useful to somebody else.

Opening the Infoglobe

As described in my first article on the Infoglobe, I opened the Infoglobe.
However, I just removed the dome. There is no need to remove the 4 screws on the bottom since the problem is located only on the rotating arm.

Once removed the dome and unscrewed the rotating arm, I removed the rotating arm for a detailed inspection.

The rotating arm removed from the Infoglobe

The problem

The rotating arm is composed by two PCBs connected at 90 degrees.
The small PCB at the end of the arm is hosting 8 LEDs (in my case, 8 blue LEDs).
In the picture, note the arrows indicating the side exposed during the rotation.

The first thing I noticed was a dark color on the side exposed in the rotation.
I think is was dust mixed to small PCB particles. The high rotation and vibration, during the years, probably caused a partial disintegration of the PCB and conductive material.
The rotation itself allowed this dust, probably also electrically charged, to deposit on the LEDs side exposed to the rotation.

Note in the picture above the dust deposit around the LED.  When the dust touched two LEDs, a short circuit happened, forcing the LED off.
Initially only for few microseconds, thus the "dimming" effect, then with enough dust, permanently.

Fixing the problem

With a very soft old tootbrush, I removed the dust from the rotating arm, especially from the PCB with the LEDs, and then I put it back the rotating arm.
It worked perfectly.

I was worried to have to re-do some soldering on the LEDs, but I didn't found any sign of detachment, so for the moment I put it back the rotating arm and close the dome again.

Monday, August 22, 2011

CY7C68013A USB Logic Analyzer - Update

Time ago I received to test a little board based on the Cypress CY7C68013A and I wrote some notes about it.
This is a quick update of those notes.
These are informational notes only and are old!
I strongly suggest to buy the Logic package in order to have  the best results and easy operations.


The CY7C68013A USB Logic Analyzer is a small board made by a Chinese company (Lcsoftsold on Ebay from a China re-seller as a Logic Analyzer tool.
It's a small board based on a Cypress CY7C68013A micro-controller (an 8051 clone).

Exists a relatively easy hack in order to have the board working with Logic under Linux (tested with the 1.1.9 version under Ubuntu 11.04 quite time ago).

Here the hack :
  1. Be sure to don't have Logic running on the Linux  box
  2. Power on (plug-in) the Cypress CY7C68013A board
  3. Wait few seconds, the time for the board to start
  4. Remove the jumper J1
  5. Start Logic
After few seconds Logic will indicate ready to Start.
What happens is that without the jumper, Logic (at least the version 1.1.9) is loading the necessary firmware in the board and then start it.
Note that if you put back the jumper, all is working until you turn the board off and then back on or close Logic.
i.e. the firmware loaded is not permanent, every time it needs to be loaded.

I decided to put the board in a small box, for better protection and to be able to host a push-button.
Not having around any decent box, I temporary used two pieces of plexyglass. Ugly but functional :-)
I used a NC push-button, connected of course to the jumper J1.

Now in order to use the board with Logic, simply connect it to an USB port, then after few seconds, push the button and, while keeping it pushed, launch Logic.
When logic come out with Start, release the button and everything should work.

When closing Logic the configuration is lost, so it is necessary to un-plug the board  then plug the board back, following the procedure described above.
Much better to have an original Logic board.

Wednesday, August 17, 2011

Use Wireshark to monitor a VoIP phone

In a typical LAN environment, today are in use routers and switches.
This improves a lot the performances of a network but make more complicate to monitor a specific appliance, like a VoIP phone. 
In order to capture the traffic on a specific node, assuming is not possible to run a monitor tool on the node itself, it is necessary to use a tool capable to be put between the nodes, or use a switch/router with monitor capabilities.
The main monitor tool in this discussion is the program Wireshark.
There is an article about this issue  on the Wiki for Wireshark .
Since I don't have a switch with monitor capabilities,  the fastest way to set up a generic monitor machine is to use a laptop, with two NIC cards, acting as bridge and running Wireshark on one of the two NIC or on the bridge itself.

Shopping list
It is needed :

  • 1 laptop with Linux installed, with two ethernet ports
  • 1 PCMCA  NIC if the laptop  has already an embedded NIC
  • bridge utilities
  • Wireshark

The environment

The machine used to build the monitor is a Gateway Tablet running Ubuntu 11.04, plus a LinkSys PCMCA NIC  card.
The first step, recognizing the extra NIC card, should not pose any problem.
In my case the LinkSys NIC was recognized and configured automatically by the OS as eth1.
The next step is to install  Wireshark from the Ubuntu repository, and enabled it to capture packets from eth0 or eth1.
Here the configuration  adopted for the machine :
Bridge setting
After preparing the hardware and tested both the ethx ports, it is necessary to set up the machine to act as a bridge, in order to have packets received from the eth0 port sent to the eth1 port, and viceversa.
Without such functionality, the two networks are isolated, i.e. the phone can not receive anything from the network.
In order to simplify the configuration, I forced on both the NIC a manual address.

    for the eth0
    for the eth1.

After opening a terminal,  install the  brctl  program (sudo apt-get install bridge-utils).
The bridge-utils are not installed by default in the Ubuntu 11.04 but are available in the repository.
At this point I created, configured and activated  a bridge between the two NICs.
  • sudo brctl addbr wshark
    Create a new bridge called wshark
  • sudo brctl addif wshark eth0 Add the eth0 to the wshark bridge
  • sudo brctl addif wshark eth1
    Add the eth1 to the wshark bridge
  • sudo brctl stp wshark on Enable the STP
After creating the bridge, it has to be activated.
To do so, simply use the ifconfig command :
sudo ifconfig wshark up
At this point the bridge should be  working. 

Running Wireshark

After the bridge is activated is possible to run Wireshark.
Among  the available interfaces to use to capture traffic, it will be present a wshark interface that is the bridge.
To capture data is possible to use it.
That's it.