Page 1 of 10

NeatoControl - program for diagnostic neato robots

PostPosted: December 1st, 2014, 10:43 am
by heX
NeatoControl - control of the robot

(Google Translate!)

Program management and diagnostic robot Neato XV-21 and other models.

Features are quite simple: to see the state of the sensors to change the schedule, set the time to get the image from the scanner.
(The program's interface leaves much to be desired - but there is room for improvement)


Place the driver - by downloading the firmware update program (Neato Updater Tool) to Off.Site ( ... /step-one/).
Connect the robot to a computer, and then click Connect.
Do not forget to push "disconnect" button the software before you disconnect the USB cord from the unit.

[Download NeatoControl]

Known problems and their solutions
If you are connected to the robot program, and then pulled out the USB cable is not clicking Disconnect.
The robot will not respond to any buttons - as is in the diagnosis of sensors and buttons (the so-called "TestMode"). Do not worry, this is normal.

Simply stop the program, connect the USB cable again, including the program, click Connect, and then Disconnect.

Denial of responsibility
The program is provided "as is". The developer is not responsible for the use of the program (or not use).

Note: Be prepared to catch the robot! Before starting, make sure that the robot will not break anything and do not break the cord, do not pull off a laptop from the table, and so. In general promise to be careful (and as usual the responsibility lies with you).

If the USB cable from the connector will take off in the drive, the robot will execute the last command. For example will continue to go forward (destroying everything in its path :) ). Just catch it and pick up in the air in seconds 5-10 team completed and it will stop.
Tab "Scanner" put a check "Manage".

Once press the button forward - robot went ahead. It will go forward until you press ago.
Pressing forward - increase speed.
Left right - turns.
Back - back.

(The management interface will be updated...)

Add page "Motors"
Add page "Log"

Add save same options
Add language manual change
Add German translate (
Add online collective translate:

Migrate to Lazarus!
"Sensors" tab - gray color for inactive sensor.
add new localization system.

bug fix

correct charge monitoring.
change TestMode logic - now enable only then need.
add TCP connect - experimental! (not test)

add "Commands" tab.

add "Scan Line"
add translation French and German (Thank glnc222)
add WinXP theme support
fix some bugs

BotVac support.
Auto detect language.

Improve translate. Thanx Yuval Kohavi.

The buildup of the battery.
In the telemetry readings added battery.
Displays percentage of battery and internal time.
You can copy to the clipboard sensor readings.

Now you can really control the robot!

Added localization mechanism through files.
Russian version of the interface.
Improved user interface.

Auto detect ports and more detailed error output connection
Print version when connected
Partially redesigned interface

first release

Re: NeatoControl - program for diagnostic neato robots

PostPosted: December 3rd, 2014, 12:53 pm
by shirgal
hex thank you for the update :thanks: ,
as well for appreciation on english translation :cheers: ,
Yuval k.

Re: NeatoControl - program for diagnostic neato robots

PostPosted: December 5th, 2014, 6:22 pm
by glnc222
Dynamic sensor readings
Note the program continuously polls sensors for the display so that changes, like pressing bumpers or moving a hand towards and away from wall and cliff sensors, is instantly shown.

Linux version coming soon 2016.

TCP/IP in newer Beta version later post
For sending Neato commands out through the PC's networking to a remote receiver USB host connected to the robot, instead the robot directly connected to the PC by USB. (A number of experiments have been made with WiFi connections to the Neato; see the Mods & Repairs list top of main forum page.)

USB Drivers
Because there are no updates to the firmware for Botvac Neato Robotics website page for the USB driver may not be accessible via the menus of the website. If this occurrs use direct links to the Windows installation files:
Windows 64-bit:

--tested March 14, 2015.

64-bit Windows prevents the installation of unsigned drivers, for protection against non-certified faulty drivers. Even if a prompt appears over-ride the not do. A global option must be set in the menus of the deep system to disable the protection. Most instructions are posted on the Web. See for one

There are drivers Apple Mac but I do not know the links page. NeatoControl is currently for Windows. Terminal emulators, Telnet client can be used on MAC (RealTerm, TeraTerm? Open source -- am not familiar with MAC facilities; I think there is one included in it.

Apple Macbook Usage with Wine

Video on Sensor Display Use 295mb

Sensor Display and Test mode
Without TestMode 'GetAnalogSensors ' gets static sensors values, the dimension of which is unknown (as Brett shows). In TestMode the same command gets the sensors values in the proper dimension (e.g. for WallSensor -- mm) and with proper reaction to obstacle. Finally, 'GetAnalogSensors raw' in TestMode gets the sensors values in mV.

Lidar Scan Example

adding language files to Neato Control
[edit] See next post, online collective translate:
Languages included in the release have expanded over time, far beyond the original Russian/English.

Older versions:
The Russian.lng does not translate in Google. However, the French.lng contributed at translates in Google (two versions posted,, and older I posted a German translation to Roboter-Forum. The top line LANGID=xxxx uses codes from Microsoft locale id (LCID) at
The name of the language in the drop down list is from this code. All .lng files in the program directory are collected by the program to make the menu list for languages.
Additional files can be constructed using Google translator. Google translations are not always good; native speakers can edit as needed.

If the top line is not changed, the screen titles still show per the file text. Only the lanugage name in the drop-down list is affected by the ID number.

PostPosted: December 7th, 2014, 9:06 pm
by heX
Release version 1.7
add "Scan Line" - top line for diagnostic scanner work.
add translation French and German (Thank glnc222).
add WinXP theme support.
fix some bugs.

You can help translate program to other languages here:

Version 1.8

PostPosted: January 27th, 2015, 5:03 pm
by heX
Version 1.8

add "Commands" tab.

Commands tab:
There are 6 command that can be called. Use "Run" button or simply press Enter while in the desired line, or by pressing the function key.
You can also turn on the timer to command causes periodic.
The bottom displays the result of the team.
If you check "Save ..." the results of the command are stored in the file.
Instructions of use: enter the necessary commands to assign a retry time, start recording. And after a couple of hours you will receive a data file that can be viewed carefully.

P.S. sorry for google translate.

Re: NeatoControl - program for diagnostic neato robots

PostPosted: January 30th, 2015, 11:42 pm
by glnc222
So this adds a data logging ability replacing the scripting and repeat functions in terminal programs like RealTerm etc. at The Pivot Table or "Pilot Data" as once called, in spreadsheets like Excel or free LIbreOffice can organize the Neato output into separate columns of data and titles for graphing. Many tutorials on these features are on the web and YouTube. There are various options in these programs for parsing input data.

Obtaining lidar scan data while cleaning might interfere with the cleaning operation if it is heavily engaged in scanning for that purpose.

Note the English.lng file is just a duplicate of the Russian.lng file, to be replaced with translations wanted, and the language id number in the top line adjusted from the Microsoft website. The number in the file, not the file name, creates the title in the drop down menu. One could just as well translate any of the language files. English is built into the facility used by default. Some alphabets seem to require Unicode instead of Ansi encoding when saved in Windows Notepad; the program does not appear to process such encoding and skips those files. More research needed there.

[edit] I hear there is a difference between v1.7 and v1.8 in handling text display positioning from .lng files, some fine detail in the Microsoft facility or something. A nuisance for programmers. Not worth time.

Re: NeatoControl - program for diagnostic neato robots

PostPosted: March 22nd, 2015, 2:18 pm
by Darkhand
Thanks for your hard work, this is fantastic!

Would it be possible to add brush, sidebrush, and vacuum on/off buttons, perhaps in the remote control tab? I just diagnosed a side brush issue and still had to use text commands to turn it on and off in testing. This would be the ultimate control program if we can perform all the commands in a GUI without having to touch a terminal emulator. :)

Re: NeatoControl - program for diagnostic neato robots

PostPosted: March 22nd, 2015, 3:57 pm
by glnc222
Incidentally the source code for the program is included in the package, but is in a fairly old Borland development system Delphi. Not worth buying just for this if not already equipped.
Something might be done with the program using keyboard macro utilities, such as the buttons requested.
Those utilities set up strings sent through the keyboard by assigned single key presses.

Re: NeatoControl - program for diagnostic neato robots

PostPosted: March 22nd, 2015, 4:06 pm
by lurch
This program is awsome!

I use it connecting to a Botvac 85 which I recently added with a small arm linux board (Arietta G25) so I can now connect to the bot through wifi.
Unfortunately NeatoControl does not offer a network connection like telnet, only through local COM ports. I installed ser2net on the linux board so I can telnet to it and use the terminal as if it was a local terminal connection.
I tried using several virtual COM port redirectors on the windows computer that runs NeatoControl that would create a virtual COM port and rediret it through telnet to the real device. If I select this virtual com port in NeatoControl, sometimes it works for a couple of seconds but then stops with an error "Empty read". I presume this is some sort of a timing issue.
Any ideas on this or do you plan to add support for network connection to the Neato?

Thank you for your hard work,

Re: NeatoControl - program for diagnostic neato robots

PostPosted: March 22nd, 2015, 4:27 pm
by vic7767
I've already run into that same error using a setup similar to yours. I emailed heX and sent the same error info to him. I asked if he could add a TCP/IP connection. So far there seems to be a protocol issue between UART serial and the NeatoControl program.

Re: NeatoControl - program for diagnostic neato robots

PostPosted: March 22nd, 2015, 5:50 pm
by glnc222
Not a Windows I/O expert but in case of use:
When Neato USB is connected to a PC instead of an extra WiFi interface in the Neato, the Neato Robotics driver creates a virtual com port to use the USB. What that consists of can be seen in an alternative driver once posted at RandomWorkshop and removed but saved here under Roomba
Some other USB driver must operate inside the WiFi device.

Since the Neato is echoing every character in terminal emulators it appears unusual single character USB packets are used, tacked onto an old serial port system in the Neato -- older system boards had a serial header on the board which could be used, removed in later boards. Older AMD/Nvidia PC's, compared to Intel based, had some defect in the chip set drivers which would not work with the Neato driver, compared to Intel, never fixed because no other devices affected, presumably because they used more standard USB protocols, packets. Bottom line is that the USB interface in the WiFi host mounted in the Neato must support the USB interface the same way as a PC. So needs specialists in that equipment.

[edit] Using WiFi there are issues in the WiFi driver as well as in the USB driver inside the Neato.

When the alternative Randomworkshop driver is installed in a PC, the Neato Robotics firmware update web site cannot see the Neato, presumably because it looks for the specific driver from Neato instead of merely the USB device ID. Perhaps this is why it was removed from the web. USB commands, however, work. The company driver works the same anyway.

As the firmware updating website now works with registered serial numbers to select the proper version, and there is no update for Botvac, to obtain the PC driver it might be necessary to use a direct link to the driver page:

(In Window 64 bit, a global Windows setting must be made in the system troubleshooting menu to allow installation of unsigned drivers on a PC; instructions on the web)

Re: NeatoControl - program for diagnostic neato robots

PostPosted: March 23rd, 2015, 8:16 am
by lurch
I see your point that the original Neato driver behaves differently from that fiddly interface I created by connecting a Linux usb host to the Botvac and then relay it through wifi.
However, as far as I understood, all the NeatoControl software has to do is to send and receive ascii characters through the interface and this actually works quite well, just the timing is different (time needed for a charachter to be received by the other side).
While I am not aware of how this great software was implemented, I presume it just takes the timing behaviour of the original drivers for granted. So I was thinking if it could be changed i.e. by using buffers to allow for transmission delays that will occur if you send them through a tcp connection over wifi where some packets / characters will havo to be sent several times until they are acknowledged.

Re: NeatoControl - program for diagnostic neato robots

PostPosted: March 23rd, 2015, 1:31 pm
by glnc222
I may misunderstand but you seem to imply the Neato Control Program communicates in some stand alone manner with the USB instead of in the normal way as part of a Windows operating system. Applications in windows communicate through drivers and I/O layers built into the OS. (There is quite a fancy manipulation of this for real time apps like games and music synthesis, where the multi-tasking system is modified to reduce latency, bypassing various buffering and what not, using special drivers and OS features). The Neato Control Program calls upon drivers the same way as other apps in Windows and operates same as a terminal emulator, just generating and parsing all the text msgs. The comm is all done by the specific Neato driver, which in turn relies upon the system chip set drivers for lowest level details; some big I/O IC supports the USB interface, listed as USB controllers in Device Manager. At some point protocols built into dedicated IC's for USB interfaces or equivelents in microcontroller firmware govern the bit level aspects of USB packet protocols. They negotiate bit rates with each other etc., determine revision levels etc., acknowledgements, handshaking etc.

I seem to recall here a number of successful interfaces of microcontrollers to the Neato USB (threads listed in the mods list index post main page).

What is involved when Neato Control goes through a WiFi interface on the PC is not clear, as this is a different system than the USB drivers? Lot of mapping going on in the OS here.

I would think at least testing can be done of the microcontroller separate from the WiFi, through some other port on the controller hardware, to isolate WiFi effects.

Re: NeatoControl - program for diagnostic neato robots

PostPosted: March 23rd, 2015, 1:46 pm
by lurch
Nevermind, I will write my own code to solve the problem.

Re: NeatoControl - program for diagnostic neato robots

PostPosted: March 23rd, 2015, 2:07 pm
by glnc222
[edit] missed your never mind... but for those interested.

There would seem to be two different methods for a program designed for a COMM port in Windows to use USB.
More advanced programs using USB would not use a COMM port at all, but compile with the libraries for the USB drivers. A program for old serial RS232 asynchronous character-by-character transmissions feeds to a virtual comm port which translates the characters into USB packets same as a proper advanced program would do. One method might be to accumulate a line of text as a single packet, another making entire packets out of single characters.
Neato's internal firmware appears to do the same thing, having an old serial style level at one point, with a USB driver added later, using single character packets. If I understand this correctly, prefixes and suffixes are added to the single character sent and all sorts of exchanges go back and forth just for this one character, since the whole thing is designed to support disk drive interfaces and such with large block packets with verification and retry built in.

The point is that the lowest level is getting individual packets through, and a second level is extracting the single characters for a program assuming a simple serial interface.

additional comment below

NeatoControl v 1.9 (BETA)

PostPosted: March 24th, 2015, 2:34 am
by heX
Version 1.9


correct charge monitoring.
change TestMode logic - now enable only then need.
add TCP connect - experimental! (not test)
new bugs.
disable translations (it's temporary).

download: ... .9_beta.7z

Re: NeatoControl - program for diagnostic neato robots

PostPosted: March 24th, 2015, 10:16 am
by vic7767
heX, thanks for the addition of the TCP/IP selection, I do believe that in order to test this new feature will require adding a port number to the IP address. ex;

Here is a screen print of the TCP/IP + port number error

Re: NeatoControl - program for diagnostic neato robots

PostPosted: March 25th, 2015, 1:34 am
by heX
vic7767 wrote:thanks for the addition of the TCP/IP selection...

Try port 2167 - its raw telnet port. (

Also enter this commands in system command line:
ping (just for test)
telnet 2167 (if telnet connected successfully then try send command "help".)

Re: NeatoControl - program for diagnostic neato robots

PostPosted: March 25th, 2015, 2:25 am
by glnc222
What is the application of this feature? Sharing the PC connection to the robot on USB over a network? Or connecting to a remote USB host in the Neato with WiFi to the PC? Or something else?

Re: NeatoControl - program for diagnostic neato robots

PostPosted: March 25th, 2015, 2:42 am
by glnc222
Returning to USB timing problems:
as I understood, all the NeatoControl software has to do is to send and receive ascii characters through the interface and this actually works quite well, just the timing is different (time needed for a charachter to be received by the other side).

by lurch

Since Neato is echoing every character back, and performing back-space editing of text, perhaps an application should wait for the echo before sending any additional characters. Depends on how text is buffered in the Neato. Duplex serial or what? Some famous buffering method errors created security gaps in Windows at one time -- buffer over-run attack writing into code memory. tsk tsk.

I suggest further discussion of the USB interface protocols continue in a separate thread as more general than the Neato Control Program features, with a link back to start -- different software layers, more than one app...