Newer models (XV-14/XV-15/XV-21/XV-25 ???) with board revision 64 are running on Linux Kernel 184.108.40.206
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 presence 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 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
|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
http://www.nxp.com/products/microcontrollers/arm9/LPC3143FET180.html Vendor 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