Adding Wifi/SSH/Linux to Neato XV (Omega 2+)

News and information about the Neato XV-11 Robotic Vacuum. All discussion and troubleshooting questions go here.

Adding Wifi/SSH/Linux to Neato XV (Omega 2+)

Postby mrduffey » August 10th, 2017, 11:05 pm

Not entirely unique, building on other people's work and some previous hacking I did on another XV model. One of the nice things about the following is that it is completely self contained and doesn't require modification of the casing or putting the linux-on-a-chip device in the dust bin/fan housing/exhaust. (it can fit just to the right of the lidar on the mainboard).

Bought a used robot vacuum (Neato XV-21 no wifi) with a non-functional display.

I found the following on the Neato's motherboard:

D38: USB D+, D-, and V+
Q2: 3.3v+
Battery Terminal: GND

I connected the Omega2+ in this way

3.3 Vin -> Q2
GND -> GND
USB+ -> D38
USB- -> D38
GPIO11 -> 1k resister -> D38

This is the second XV (different model/year) for me to do this... it was a bit tricky finding the 3.3v source because this particular XV would "hibernate" by default until you plugged it in to an AC outlet or you pushed the button. So if you do this yourself keep the Neato LCD ribbon cable plugged, push the large button so the mainboard wakes up and you can probe for a 3.3v source near the ribbon cable on the main board. You should see several transistors/voltage regulators and be able to find one.

I have the Omega2+ GPIO11 -> the Neato USB Vin since you need to "disconnect" the USB cable for it to accept cleaning commands (otherwise it thinks it is tethered to a PC).

I can then enable USB serial with the following:

fast-gpio set 11 1
screen /dev/ttyACM0
help
clean
Ctrl-A Ctrl-k
fast-gpio set 11 0

You can now ssh into the robot, manually control, or automate.


IMG_20170810_194201-small.jpg


IMG_20170810_194309-small.jpg


root@boubagarage:~# cat /etc/rc.local
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

# turn of the pin for USB V+ by default
fast-gpio set-output 11
fast-gpio set 11 0
sleep 1

# signals boot complete but also sets up the serial port
# so that echo and cat from bash works similar to screen
/root/xv playsound 2

exit 0


root@boubagarage:~# cat xv
#!/bin/bash
#/root/xv

# error out if already high
fast-gpio read 11 | grep -v ': 0' && exit 1

T="$(echo /dev/ttyACM* | awk '{ print $1 }')"
echo T="$T"

# clear out old data
[ -e "$T" ] && cat "$T" > /dev/null && sleep 1

fast-gpio set 11 1

while [ ! -e "$T" ]
do
sleep 1
T="$(echo /dev/ttyACM* | awk '{ print $1 }')"
done

# emulate screen settings
stty -F "$T" -echo -icrnl

cat "$T" &
sleep 1

echo "$@" > "$T"
sleep 1

echo "geterr" > "$T"
sleep 1

fast-gpio set 11 0
Last edited by mrduffey on August 11th, 2017, 5:16 pm, edited 1 time in total.
mrduffey
 
Posts: 14
Joined: October 13th, 2013, 8:56 pm

Return to Neato Robotics

Who is online

Users browsing this forum: TechGuy and 347 guests