Dag 14: Hom-Bot hacking! #hombot4sixweeks

Afgelopen weekend hebben we de ontbrekende afstandsbediening nageleverd gekregen en die geeft ons mogelijkheden die we zonder afstandsbediening niet hadden.

Zo heb ik o.a. de tijd kunnen instellen, dagelijks geplande stofzuigbeurt, we kunnen Lucy nu op afstand handmatig besturen en het allerbeste: we hoeven niet telkens te bukken om op Lucy’s knoppen te drukken!

De eerste week met Lucy heb ik de handleiding met rust gelaten, maar tijdens de afgelopen tweede week heb in de handleiding veelvuldig ter hand genomen. Waar ik eerder iets over Open Source las, blijkt het enkel om een statement te gaan van LG over welke componenten in hun producten Open Source zijn.
Er is helaas geen Open Source software voor Lucy, zoals ik veronderstelde. Alhoewel…

Ik heb wat zitten zoeken en toevallig omdat ik Koreaans kan lezen, kwam ik erachter dat Lucy in Korea geen Hom-Bot, maar Roboking heet. En als je op Google zoekt naar typenummer VR6270LVMB dan kom foto’s tegen die verdacht veel op onze Lucy lijken.

Er circuleren filmpjes op Youtube van een oude ronde voorganger van Lucy, die in 2011 al met een smartphone app je huis in kaart kan brengen en de camera kan gebruiken om door je huis te patrouilleren. Ook vond ik een WiFi-netwerkkaart met USB-aansluiting, waarmee je je robotstofzuiger aan het internet kunt hangen.
Zou onze Lucy dat ook allemaal kunnen?

Ik besloot me wat te verdiepen in de goed gedocumenteerde firmware update procedure, die beschrijft hoe je Lucy van de nieuwste software kunt voorzien.
Je kunt de laatste softwareversie downloaden bij LG. De handleiding zegt dat je het ZIP-bestand moet uitpakken en op een USB-stick moet zetten. Onder Lucy’s klep zit een USB-aansluiting verborgen.
Zodra je Lucy uitzet en weer aan, gaat ze de update vanaf USB-stick installeren.

Natuurlijk was ik benieuwd hoe dat werkt. Het ZIP-bestand bevat drie bestandjes: update.axf, update.dat en update.sh
Nu wordt het spannend…

De eerste twee bestanden zijn binaries en het laatste bestand is een shell script. De inhoud ziet er zo uit:

#!/bin/sh

SOURCE_PATH=”/mnt/usb”

if [ ! -f “$SOURCE_PATH”/update.axf ]
then
exit 1
fi
if [ ! -f “$SOURCE_PATH”/update.dat ]
then
exit 1
fi

chmod 775 “$SOURCE_PATH”/update.axf

“$SOURCE_PATH”/update.axf “$SOURCE_PATH”/update.dat

exit 0

Lucy blijkt een kloppend hart van Linux te hebben! Dat geeft mogelijkheden.
Ik bedacht het volgende: Stel dat je een USB-stick formatteert met FAT32 en er een bestandje update.sh op plaatst waarmee je een volledige dump maakt van Lucy filesystem?
Als je de volgende regels plakt in een bestandje update.sh dan ben je er:

#!/bin/sh
SOURCE_PATH=”/mnt/usb”
ls -Rl / > “$SOURCE_PATH”/filesystem.txt
exit 0

Bovenstaand scriptje maakt een volledige dump van Lucy’s filesystem in een bestandje op je USB-stick. Op die manier krijg je een goede indruk van wat Lucy allemaal in huis heeft, waar het staat en hoe het heet!
Als je eenmaal gevonden hebt wat je zoekt, is het makkelijk om meer te vinden. Lucy’s stembestanden kun je eenvoudig vervangen en er je eigen variant voor in de plaats stoppen.
Als Lucy ergens vastzit, schreeuwt ze om hulp. Daar heeft iemand een leuk alternatief geluidje voor verzonnen:
https://soundcloud.com/withoot/snd-error-stuck

Meer leeswerk:
http://www.roboter-forum.com/showthread.php?6415-Hom-Bot-3-0-Hacking
http://forums.hardwarezone.com.sg/home-decor-furnishings-188/lg-roboking-3692302-10.html
http://recombu.com/digital/news/lg-hombot-square-robovac-gets-a-smart-control-upgrade_M12654.html
http://spacerazor.wordpress.com/2014/06/29/how-to-make-the-roboking-speak-english/

Happy hacking!