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!

#Ubuntu als #PPP-#inbelserver met #modem

Stel: Je hebt een Ubuntu-doos met daaraan een modem en je wilt dit modem niet als uitbelapparaat gebruiken (heel vroeger maakte je zo contact met het internet), maar als inbelapparaat. Vreemd genoeg beschrijven de meeste online handleidingen dit niet, dus doe ik het maar.

Je gaat dan een PPP-inbelserver opzetten en daarvoor zijn de volgende paar stappen nodig:

  1. Je hebt mgetty nodig. Installeer mgetty met het volgende commando:

    sudo apt-get install mgetty

  2. Kopieer /etc/event.d/tty1 naar /etc/event.d/ttyS0 (ttyS0 = COM1; ttyS1 = COM2 etc). Op de laatste regel van /etc/ttyS0 staat iets in de trant van:

    exec /sbin/getty 38400 tty1

    Wijzig dit, zodat er staat:

    exec /sbin/mgetty -s 57600 -D /dev/ttyS0

  3. Als je een /etc/ppp/options hebt, hernoem deze dan voor de veiligheid met het volgende commando:

    sudo mv /etc/ppp/options /etc/ppp/options.bak

    en zorg ervoor dat /etc/ppp/options er als volgt uitziet:

    lock
    10.0.0.1:10.0.0.2 #Het eerste adres is het adres waarop je je server kunt bereiken en het tweede adres krijgt je PC toegewezen nadat de verbinding tot stand is gekomen

  4. Maak voor de zekerheid nog een /etc/ppp/options.ttyS0 aan met de volgende inhoud:

    10.0.0.1:10.0.0.2

    Zo. Je bent bijna klaar.

  5. Nu hoef je enkel nog je inbelgebruikers te definiëren in het bestand /etc/ppp/pap-secrets. Denk erom dat dit bestand beschermd is (zou moeten zijn), dus gebruik:

    sudo nano -w /etc/ppp/pap-secrets

    om het te wijzigen. Zorg ervoor dat ergens het volgende staat:

    gebruikersnaam        *        wachtwoord        *

    Voorbeeld:

    janjansen        *        geheim        *

Klaar! Laat me even weten of het gelukt is.