====== AVR RavenRZ USB-Stick Installation ====== Um den Raven USB Stick in Verbindung mit Contiki 2.5 zu Nutzen, ist es notwendig eine vollständige Contiki Entwicklungsumgebung zur Verfügung zu haben, (siehe [[contiki:installation_der_contiki_entwicklungsumgebung|Installation der Contiki Entwicklungsumgebung]]). Soll der Jackdaw Raven USB Stick als RPL Border Router eingesetzt werden, müssen die Schritte unter [[contiki:raven_usb_rpl_border_router|Raven USB Stick als RPL Border Router]] beachtet werden. ======= Contiki 2.5 Installation ======= Sind diese Schritte erfolgt, so muss zuerst in das Windows XP Gastsystem gewechselt werden und anschließend von http://sourceforge.net/projects/contiki/files/Contiki/ Contiki 2.5 heruntergeladen werden. Es ist nun sinnvoll den Contiki Sourcecode in das Cygwin Verzeichnis zu entpacken, also beispielsweise unter //C:\cygwin\home\Administrator\Contiki-2.5\// um anschließend einfacher mit Cygwin arbeiten zu können. Nun wird Cygwin gestartet und in das Contiki Source Code Verzeichnis gewechselt. Anschließend in das Verzeichnis ///examples/ravenusbstick//. Durch den Befehl //make// beginnt die Kompilierung. Ist diese abgeschlossen, so sollte nun im derzeitigen Verzeichnis die Datei ravenusbstick.elf zu sehen sein. Diese Datei wird nun mithilfe des AVR Studios auf den USB Stick geladen. Zuerst muss jedoch der USB Stick mit dem Programmieradapter verbunden werden. Es wird empfohlen die Verbindung Spannungslos aufzubauen, d.h. den Programmieradapter sowie den USB Stick spannungslos zu verbinden und erst im Anschluß zuerst den Programmieradapter einschalten und danach den USB Stick mit dem USB-Port verbinden. Die korrekte Position des JTAG Anschlusses ist in der folgenden Abbildung zu sehen: {{:contiki:avr_stick.png|}} (Bildquelle sics.se) Im nächsten Schritt das AVR Studio starten und sämtliche PopUps schließen, dann im Menü auf //Tools/Program AVR/Auto Connect/// klicken {{:contiki:avr1.png|}} Im anschließend erscheinenden Fenster den Reiter Main auswählen und als Device den AT90USB1287 auswählen. Mit einem Klick auf Read Signature wird die korrekte Verbindung überprüft und die Microcontroller Signatur eingelesen. Wenn kein Sockel auf dem USB Stick vorhanden ist, so kann es vorkommen, dass an dieser Stelle eine Fehlermeldung auftritt, dies kann durch justieren der Steckverbindung behoben werden. {{:contiki:avr3.png|}} Wurde die Signatur korrekt eingelesen, so kann die .elf Datei auf den Microcontroller geladen werden, dazu den Reiter //Program// anklicken und im Feld //ELF Production File Format// die Datei //ravensubstick.elf// auswählen und anschließend auf //Program// klicken. {{:contiki:avr4.png|}} ======= Einrichtung des USB Sticks unter Instant Contiki (Linux) ======= Da der USB-Stick nun als Router fungieren soll, muss dies unter Linux zuerst eingestellt werden. Zuerst muss der USB Stick mit Instant Contiki verbunden werden, dazu wie bei der Installation des Programmieradapters über //Virtual Machine/Removable Devices/// den Menüpunkt //„atmel jackdaw 6lowpan adaptor“// auswählen. Ubuntu erkennt den USB Stick automatisch, eine weitere Treiber Installation ist normalerweise nicht nötig. Zur Überprüfung in einer Konsole: ifconfig eingeben und überprüfen ob USB0 als Netzwerkinterface vorhanden ist und ob die Adressen korrekt gesetzt wurden. {{:contiki:ifconfig_ic.png|}} Falls die link locale IPv6 Adresse nicht mit der in der obenstehen Abbildung übereinstimmt so kann diese mit: sudo ip -6 address add fe80::0012:13ff:fe14:1516/64 scope link dev usb0 gesetzt werden. Das SuperUser Passowort ist wie der Benutzername //„user“//. Nun muss noch die globale IPv6 Adresse zugewiesen werden, dies geschieht durch den Befehl: sudo ip -6 address add aaaa::1/64 dev usb0 Damit der USB Stick nun Router Advertisments versendet, gibt es die Software radvd, diese muss jedoch zuerst installiert werden, dazu: sudo apt-get install radvd Zur Konfiguration muss die Datei radvd.conf unter ///etc/radvd.conf// erstellt werden. nano /etc/radvd.conf folgender Konfigurationsparameter müssen nun gespeichert werden: interface usb0 { AdvSendAdvert on; AdvLinkMTU 1280; AdvCurHopLimit 128; AdvReachableTime 360000; MinRtrAdvInterval 100; MaxRtrAdvInterval 150; AdvDefaultLifetime 200; prefix AAAA::/64 { AdvOnLink on; AdvAutonomous on; AdvPreferredLifetime 4294967295; AdvValidLifetime 4294967295; }; }; Quelle: sics.se Ist dies geschehen, so muss nur noch das IPv6 Forwarding aktiviert werden: sudo su echo 1 > /proc/sys/net/ipv6/conf/all/forwarding und im Anschluß radvd gestartet werden. /etc/init.d/radvd restart Da diese Schritte bei jedem Neuverbinden des USB Sticks notwendig sind, ist es sinnvoll hierfür ein sh-Script zu Nutzen. Beispielsweise mit folgendem Inhalt: sudo ip -6 address add aaaa::1/64 dev usb0 sudo sysctl -w net.ipv6.conf.all.forwarding=1 sudo /etc/init.d/radvd stop sudo /etc/init.d/radvd start ======= Einrichtung des USB Sticks unter Windows ======= Die folgenden Befehle können dazu benutzt werden den Raven USB-Stick unter Windows einzurichten: @echo off ipconfig REM die Ziffer nach der Link-Lokalen IPv6-Adresse ist der Schnittstellenindex! netsh interface ipv6 show interface echo. echo. echo Geben Sie den Schnittstellenindex des Interfaces ein: set /p Index= ipv6 ifc %Index% advertises forwards ipv6 adu %Index%/2001:db8::1 ipv6 rtu 2001:db8::/64 %Index% publish pause netsh interface ipv6 show interface %Index% echo Anzeige des Neighbor Caches: netsh interface ipv6 show neighbor %Index% pause Die Befehle sollten in einer .bat Datei gespeichert und ausgeführt werden. Da sich beim Ein- und Ausstecken des USB-Sticks der Schnittstellenindex ändern kann, ist dieser manuell einzugeben um die Konfiguration abzuschließen. ======= Einrichtung des USB Sticks unter Windows (Statische Adresse) ======= Die meisten RAVENRZ-Sticks im Labor sind mit deaktivierten RPL-Routing konfiguriert. Dadurch reicht es einen statischen IPv6-Präfix auf dem Interface zu konfigurieren. Allerdings müssen noch manuelle Einträge im Neighbor-Cache für die Geräte im 6LoWPAN angelegt werden. https://github.com/contiki-os/contiki/wiki/Jackdaw-RNDIS-RPL-border-router ==== 1. Herausfinden des Schnittstellenindex ==== netsh interface ipv6 show interface alternativ lässt sich route print -6 verwenden, dort wird im oberen Teil die Schnittstellenliste mit der Netz-Hardware angezeigt. ==== 2. Konfiguration des Interfaces ==== netsh interface ipv6 add address bbbb::1/64 ==== 3. Hinzufügen des Neighbor-Cache Eintrags ==== netsh interface ipv6 add neighbor bbbb::11:22ff:fe33:4455 33-33-ff-33-44-55 interface=nn ==== 4. Optionale Einträge (für Routing, etc.) ==== netsh interface ipv6 set interface advertise=enabled forwarding=enabled netsh interface ipv6 add route bbbb::/64 publish=yes