Open+source+Linux+for+Neato+XV-

=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"



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.

code testmode on setsystemmode PowerCycleCDC code (*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. code help Cmd not recognized. getversion NeatoBootVer,2.0,0 code

Supported commands at bootloader console
The bootloader console matches input stream "byte by byte" to find the first match. For example input "**boot**xyz123hskdfhskdjfhksjd", triggers the "boot" command, ignoring any trailing charachters. This implies that there are no variations on commands like "bootusb" (unconfirmed).
 * **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**

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). code upload code File size invalid code

Neato open source code
The files are clearly identified as open source! (106MB) []

(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