Wednesday, November 7, 2012

Hidden Neato menu in newer 2.6 firmware!

Anyone who has updated their Neato firmware will notice a new message is returned when you enter " Help" when connected to the robots USB port.  Entering Help with a space before it used to return an extended hidden help menu with a lot more commands!  When Neato released the 2.6 firmware update (or maybe earlier?) they removed the " Help" and instead you got this response...

Nice try, but I'm not falling for that one again! :P

Some commands such as "SetStreamFormat" let you actually SEE what the robot is doing while driving around and mapping the environment internally.  Some of the guys on Trossen Robotics forum (Chunk) have made really good progress using the output from this command!  Sadly this is one of the commands removed from the 2.6 firmware version.  But not for long!!

If you just press and hold the orange Start button and Back button at the same time for 4 seconds the robot will reboot into a different firmware that includes all those previous commands!  Below is a capture from the on-board 4 pin serial port that shows debug data while the XV-11 is booting.  

This capture is of the normal reboot (just holding the orange Start button for 4 seconds)

Neato Robotics XV-11/XEB V11:16:01
Copyright (c) 2006-2010 Neato Robotics, Inc

Loading installed application
Starting app
NEROSConfigErr: BlowerType=-1 (Expected 0
ConfigErr: BrushMotorType=-1 (Expected 0
ConfigErr: SideBrushType=-1 (Expected 0
FCB Invalid! Configurations may need to be initialized.

 Build 15840 Nov 14 2011 16:09:19

Init A2D
Configure power to STANDBY.
uart0EnablePeripheral
Power On reset: 8 :Software
DEBUG compile

Edison Design Group compiler

Init Pushbuttons.Finished halInit();
Sending GetVersion...
RCVD: ''
Finished LDS getversion cmd in 5 ms
LDS reports build , we need build 15295 (size=16512)
Stop LDS driver to prevent contention
[]
Finished LDSBurn.
Sending GetVersion...
RCVD: ''
Finished LDS getversion cmd in 4 ms
mmcReset Error

PH-drvrInit:Ignoring detected battery type because XV11.

PH-drvrStart:vacuumType(): Invalid SCB blower value. How did we get here?!


This capture is after holding the Start and Back buttons for 4 seconds.


Neato Robotics XV-11/XEB V11:16:01
Copyright (c) 2006-2010 Neato Robotics, Inc

Loading factory application
Starting app
NEROS Build 12882:12959 Jul 26 2010 22:38:28

Init A2D
Configure power to STANDBY.
uart0EnablePeripheral
Power On reset: 8 :Software
DEBUG compile

Edison Design Group compiler
Enabling USB-CDC ...

Crashblock file: @ 0
Crashblock fn:
Crashblock TOS:0x00000000
Crashblock watchvalues:

Init Pushbuttons.Finished halInit();
                                    mmcReset Error

PH-drvrInit:
PH-drvrStart:


It appears this may be a secondary firmware loaded as a failsafe in case a USB firmware upgrade fails.  This would make tech support easier as you have a firmware to revert too in case something goes wrong.  You can see from the dates in each print out that they are completely different builds.

Any questions?  :)

Thanks to Theo Deyle for e-mailing me and inspiring me to work on this some more!  Hopefully his own hacks will be posted soon as well!

2 comments:

  1. I have a question: Can I just ose the LIDAR Turret and give it power and read the serial commands or do I need the whole working vacuum?

    ReplyDelete
  2. Hi, How can I downgrade the firmware for Neato VX14? The robot start to work, make couple of turns and return to base....

    ReplyDelete