Neato Linux

Newer models (XV-14/XV-15/XV-21/XV-25 ???) with board revision 64 are running on Linux Kernel 2.6.33.7
The open source parts of the code are provided on the CD labeled as "Neato Vacuum User Guide" that comes with the robot. The source is located under the directory "LinuxSrc"

photo of CD.JPG
folders of CD.JPG

The source contains few Neato specific bits related to the operation of the robot, however some intresting details are disclosed:
  • The unpopulated footprint (J2) on the PCB Rev 64 is indeed a SD Card footprint, and the source reveals that the kernel has SD Card support.
  • The presense USB Gadget drivers of suggests that the Neato has USB OTG support and "Ethernet over USB" capabilities (unconfirmed)
  • Mystery .raw file \LinuxSrc\rootfs\etc\test_map.raw (400KB). Could this be sample LIDAR data?
  • Contents of the file \LinuxSrc\rootfs\etc\Issue: "Welcome hackers!". :
  • Readme.txt of the LinuxSrc folder:
    .

Bootloader access

Bootloader access can be achived by isseuing the following command to the robot over USB Serial connection.

testmode on
setsystemmode PowerCycleCDC
(*CDC = Communications Device Class ????)

The Neato then reappears on the serial bus (on Windows you might have to unplug and reconnect the USB cable for this device to appear) as an another device "XV-11 BOOTLOADER"

Accessing this device offers a limited console over USB serial with no local echo.
Contents of the folder LinuxSrc\boot indicate that U-boot is, or was used as, bootloader on the Neato at some point "[Hopefully u-boot doesn't make it to production, but if it does..], LinuxSrc\boot\arch\arm\cpu\lpc313, line 453.
The Neato bootloader console does not support any of the standard U-boot commands.
help
Cmd not recognized.
getversion
NeatoBootVer,2.0,0

Supported commands at bootloader console

Command
Usage
Description
GetVersion
getversion
Prints version information
Boot
boot
boot the robot OS
Upload
?
upload firmware to the robot?


download firmware from the robot?
Looking for commands at the bootloader console
The bootloader console matches input stream "byte by byte" to find the first match. For example input "bootxyz123hskdfhskdjfhksjd", triggers the "boot" command, ignoring any trailing charachters. This implies that there are no variations on commands like "bootusb" (unconfirmed).

Flashing the Neato

Warning messing around with the bootloader could potentially brick your robot with no known method of recovery
Using the bootloader console it might be possible to flash the Neato using a custom firmware (unconfirmed).
upload code
File size invalid

Neato open source code

The files are clearly identified as open source! (106MB)
http://www.axifile.com/en/F2D0DB4C4E

(note: if this link doesn't work anymore, then there was no use for it in the past 30 days... let me (KPPlayer)
know and I'll upload again.)

Other resources

http://www.nxp.com/products/microcontrollers/arm9/LPC3143FET180.htmlVendor info and datasheet for the NXP LPC3134
http://dfu-util.gnumonks.org/USB DFU (Device Firmware Upgrade) Utilities. DFU possible?
http://www.lpclinux.com/LPC313x/LPC313xMain How to get Linux running on a NXP LPC313/4/5