Plugwise Smile P1 – Data en bestandoverdracht

bestanden kopieren

Hieronder vind je een aantal stukken hoe je data en bestanden kan overdragen tussen de computer /stick en de smile.


Bestanden kopieren tussen de computer en smile

Eenvoudig?
Ja, je kan heel eenvoudig bestanden kopieren tussen je computer (Windows) en de smile (Linux) met “scp” (Secure Copy)

– In Linux heet de tool “scp” en deze draait ook op de smile (tik maar eens in via je SSH verbinding), maar vanuit de smile is het lastig te gebruiken omdat je op je Windows systeem geen “scp client” hebt geinstalleerd.
– Voor Windows is er “pscp” in het leven geroepen, dit is een programma en is ook te downloaden op de PuTTY website.

Wat heb je nodig?
PSCP (PuTTy tools)

Bestanden kopieren Smile –> Windows
Het voorbeeld hieronder downloaden we het configuratie bestand “/etc/config/uhttpd” uit de smile naar “C:\uhttpd.txt” op je Windows systeem.

Windows commando:  pscp.exe -pw WACHTWOORD -scp -p GEBRUIKER@IPADRES:PADSMILE PADWINDOWS
Voorbeeld:  pscp.exe -pw WACHTWOORD -scp -p root@192.168.x.x:/etc/config/uhttpd C:\uhttpd.txt

Uitleg
-pw WACHTWOORD = vul je wachtwoord in dat je gebruikt bij de SSH verbinding, als je dit hier al invult wordt er verder ook niet meer om gevraagd!
-scp = Hiermee forceren we het gebruik van een -scp protocol, omdat anders standaard het “sftp” protocol gebruikt wordt, deze is niet op de smile geinstalleerd, en kunnen we niet gebruiken.
-p = Behoud bestandsgegevens / attributen (ook orginele datum en tijd)

Ter info: schrijf je naar een specifieke folder op windows, zorg er wel voor dat deze bestaat!

Screenshot:

pscp windows van smile

Bestanden kopieren Windows –> Smile
Om naar de smile te kopieren gebruik je hetzelfde commando voor PSCP als hierboven, alleen draai je de “zender” en “ontvanger” om:

In het voorbeeld hieronder kopieren we een textbestand “c:\test.txt” vanuit Windows naar “/tmp/test.txt” op de smile:

Windows commando:  pscp.exe -pw WACHTWOORD -scp -p PADWINDOWS GEBRUIKER@IPADRES:PADSMILE
Voorbeeld:  pscp.exe -pw WACHTWOORD -scp -p C:\test.txt root@192.168.x.x:/tmp/test.txt

Uitleg:
-pw WACHTWOORD = vul je wachtwoord in dat je gebruikt bij de SSH verbinding, als je dit hier al invult wordt er verder ook niet meer om gevraagd!
-scp = Hiermee forceren we het gebruik van een -scp protocol, omdat anders standaard het “sftp” protocol gebruikt wordt, deze is niet op de smile geinstalleerd, en kunnen we niet gebruiken.
-p = Behoud bestandsgegevens / attributen (ook orginele datum en tijd)

Screenshot:

pscp windows naar smile

Complete folders kopieren
Het voorbeeld hieronder worden alle bestanden en folders in “/usr/local/plugwise/rest-interface/modules” op de smile gekopieerd naar C:\ (in dit geval wordt de folder “C:\modules” vanzelf aangemaakt)

Voorbeeld:  pscp.exe -pw WACHTWOORD -scp -r -p root@192.168.x.x:/usr/local/plugwise/rest-interface/modules C:\

Uitleg:
-pw WACHTWOORD = vul je wachtwoord in dat je gebruikt bij de SSH verbinding, als je dit hier al invult wordt er verder ook niet meer om gevraagd!
-scp = Hiermee forceren we het gebruik van een -scp protocol, omdat anders standaard het “sftp” protocol gebruikt wordt, deze is niet op de smile geinstalleerd, en kunnen we niet gebruiken.
-r = recusive, dit houd in ALLE folders en bestanden in deze folder.
-p = Behoud bestandsgegevens / attributen (ook orginele datum en tijd)

Screenshot:

pscp windows van smile folder

Alle bestanden en folders uit de smile kopieren (backup)
Maak een folder aan C:\SmileBackup en voer deze commando’s uit in Windows (of maak een .BAT of .CMD bestand aan):


Een USB stick gebruiken op de smile

USB stick

Let op: Gebruik bij voorkeur een USB2 stick van 4GB of hoger met een FAT32 bestandssysteem (zeker GEEN NTFS!)

Automount door de Smile:
De Smile mount zelf een USB stick!, als je na een verse reboot/opstart van je smile je usb stick koppelt, wordt deze in de device folder neergezet als sda: “/dev/sda”.
Het pad naar je USB stick is dan “/tmp/usb”
Als je een USB stick koppelt en dan ontkoppelt op de smile zonder de smile te rebooten, dan werkt deze “automount” niet meer!, gebruik mounten op “label”, of je moet de USB handmatig mounten (zie voorbeelden onder).

Zie hier de LuCI interface met de standaard instelling voor “mount points”:

openwrt luci usb automount

De oplossing:
Er is een oplossing om elke USB stick te mounten als “/tmp/usb”!, ongeacht hoe vaak je het koppelt en/of ontkoppelt (dat het als “device” sda, sdb, sdc, sdd toegewezen krijgt). Met deze manier van koppelen kun je een “label” of “UUID” (Universally Unique IDentifier) van je “device” gebruiken, hieronder een paar voorbeelden om het in te stellen:

Automounten op “label”
Dit is de meest handige manier, hiermee kun je elke USB stick automatisch mounten!, de voorwaarde is dat je USB stick’s een en dezelfde label moeten hebben om automatisch gemount te worden, in dit voorbeeld geven we de label die gemount gaat worden: “USBSTICK”.

1) geef een USB stick het label “USBSTICK”.
2) steek de USB stick in de smile, wacht even een paar seconden…
3) blkid -o list -c /dev/null  (geef gemounte apparaten weer met labels en UUID’s)
4) uci show fstab  (dit laat de configuratie instellingen zien van “fstab” (bestand = “/etc/config/fstab”)
fstab is een configuratiebestand dat alle informatie bevat voor partitie en opslag apparaten op het systeem
5) uci delete fstab.@mount[0].device  (verwijder de (oude) regel dat met een device ID mount)
6) uci set fstab.@mount[0].label=USBSTICK  (voeg de nieuwe regel toe die op “labels” mount, in dit voorbeeld “USBSTICK”)
7) uci commit fstab  (de opdracht om het configuratiebestand “fstab” te verwerken, wijzigingen die je aanbrengt worden namelijk eerst tijdelijk opgeslagen)
8) uci show fstab  (ter controle!, als het goed is zie je nu dat de “device” regel is verwijderdt en er een “label” is toegevoegd)

PuTTY screenshot:

smile ssh mount usb label

Klaar!, vanaf nu wordt elke USB stick met het label “USBSTICK” automatisch gemount in “/tmp/usb”!

Automounten op “UUID”.
Op deze manier word een specifieke USB stick gemount, elke USB stick heeft een eigen UUID, het principe werkt hetzelfde als het voobeeld hierboven alleen dan met het commando:
uci set fstab.@mount[0].uuid=B009-0F1F (de UUID van mijn USB stick, zie screenshot boven)

Meer informatie over “fstab” configuratie op Openwrt is hier te vinden: http://wiki.openwrt.org/doc/uci/fstab

Handmatig een USB stick mounten
Mounten houdt in dat je een “device”, bijvoorbeeld een hardeschijf / cd-rom / floppy / usb stick toewijst aan een “virtuele” folder in een bestandsstructuur.

Zet op de USB stick een bestand “readme.txt” met de inhoud:

Log in via SSH:
1) cd /  (om in de root folder te komen)
2) ls  (geeft de bestanden/folders weer in de map waarin je je bevind)
3) cd dev  (ga naar de folder “dev” (devices), hierin staan alle “apparaten” aangesloten op het systeem)
4) ls  (geeft in de “dev” folder de “apparaten” weer)
Je ziet nog geen USB (sde) apparaat erbij staan, plug nu je USB stick in de smile en wacht 10 seconden.
5) ls  (geeft in de “dev” folder de “apparaten” weer)
Nu zie je wel sde/sde1 erbij staan, dit betekend dat de usb stick is aangesloten op het systeem
Geen sde?, kijk iniedergeval welke apparaatnamen zijn bijgekomen, ik heb zelf gemerkt dat als je telkens de USB koppelt/ontkoppelt het een letter opschuift: sda, sdb, sdc, sdd, etc (bij een reboot begint het weer bij sda)
6) cd /  (ga terug naar de root folder)
7) mkdir /mnt/usb  (maak een folder “usb” aan in de “mnt” folder)
8) mount /dev/sde1 /mnt/usb  (mount nu (toewijzen) de USB stick aan de virtuele map “mnt/usb”)
9) cd /mnt/usb  (ga naar je USB stick)
10) ls  (geeft de bestanden/folders weer in de map waarin je je bevind)
Je ziet nu je readme.txt bestand staan!
11) cat readme.txt  (met “cat” print je de inhoud van een bestand op het scherm)
12) cd /  (ga terug naar de root folder)

Dit is hoe je een USB stick mount met Linux op de smile.

PuTTY Screenshot:

smile ssh mount usb


Bestanden op de USB stick zetten (tar.gz)

Het makkelijkste is dat we de bestanden direct “ingepakt” op de USB stick plaatsen.
In dit voorbeeld gaan we de configuratie bestanden inpakken op de USB stick met het pad “/mnt/usb” (bij een USB automount is dit “/tmp/usb”)

Linux commando: tar -cvzf mnt/usb/config.tar.gz etc/config/

mnt/usb/config.tar.gz  = het aan te maken tar.gz bestand in de folder /mnt/usb
etc/config/  = de locatie van de configuratiebestanden.

Ander voorbeeld voor je HTML bestanden (interface folder)
Linux commando: tar -cvzf mnt/usb/rest-interface.tar.gz usr/local/plugwise/rest-interface

Ps. wil je een TAR bestand (geen compressie) dan is het commando:
Linux commando: tar -cvf mnt/usb/config.tar etc/config/

PuTTY screenshot:

smile ssh targz

Nu staat er een tar.gz bestand op je USB stick, deze is met de meeste inpakprogramma’s wel uit te pakken in je Windows omgeving!


icon firmware download

Smile P1 firmware backup

Voordat je gaat rommelen in de software van de smile, doe je er goed aan een “firmware” backup te maken, dit houd in dat je een “exacte” kopie van de software maakt, meestal weggeschreven in 1 bestand.

Voordat je hier aan begint, moeten je eerst een USB stick mounten op de smile, zie handleiding hier
In dit voorbeeld is de USB stick gemount/gekoppeld met het pad “/mnt/usb” (bij een USB automount is dit “/tmp/usb”)

1) cat /proc/mtd  (mtd = partities in linux, met cat print je de inhoud van dit bestand op het scherm)
Je krijgt nu een lijst met partities van het flash geheugen op de smile
2) cd dev  (ga naar de folder “dev” (devices), hierin staan alle “apparaten” aangesloten op het systeem)
3) ls  (geeft in de “dev” folder de “apparaten” weer)
Hier zie de partities staan (mdt) wat eigenlijk virtuele harde schijven zijn (flash bestand in de smile is opgedeeld in stukken)
de daadwerkelijke data zijn “blokken” genaamd “mtdblock[x]”
4) dd if=/dev/mtdblock6 of=/mnt/usb/firmware.trx  (dd = “convert and copy a file” in Linux, if = input file , of = output file)

Ga NIET schrijven naar een folder op de smile zelf, dan gebeuren er rare dingen, bij mij reageerde de smile niet meer en ik moest hem resetten!

Ter Info: De extensie TRX mag ook wel IMG zijn…dat maakt niet veel uit.

Herhaal hetgeen voor de overige datablokken:

5) cd /  (om in de root folder te komen)
6) cd /mnt/usb  (ga naar je USB stick)
7) ls -l  (geef een dirlisting weer van de bestanden en folder op de huidige locatie)

PuTTY screenshot:

smile firmware backup

Nu staan de datablokken als bestanden op je USB stick en heb je een backup gemaakt!

Backup terugzetten
Om en backup terug te zetten gebruik je: dd if=/mnt/usb/firmware.trx of=/dev/mtdblock6