Firmware HowTo

Aus Opennet

Wechseln zu: Navigation, Suche

Hier sammeln wir alles, was man mit der OpenWrt-Firmware bzw. den Freifunk- und Opennet-Erweiterungen anstellen kann. Bei einer fehlerhaften Konfiguration gibt es hier auch geeignete Ratschläge.

Inhaltsverzeichnis

Einführung

ToDo

Hilfsmittel:

Allgemeine Hinweise

Wenn irgendwelche Probleme auftreten, DON'T PANIC!

Zuerst ist es wichtig, dass ihr euch möglichst genau merkt, wann was wie schief gegangen ist. Falls tatsächlich ein Problem mit der Opennet-Firmware vorliegt, können wir dieses nur so durch eure Hilfe finden und beheben. Lest folgende Informationen in Ruhe durch und fragt im Forum, wenn etwas unklar bleibt.

ACHTUNG: Es ist selten eine gute Idee, beim Linksys den Reset-Taster zu drücken. Dies setzt die internen Werte auf die Voreinstellungen zurück (Factory Reset) und deaktiviert dabei boot_wait. Diese Default-Einstellungen verhindern im Fehlerfall, dass ihr eine neue funktionsfähige Firmware aufspielen könnt.

Blinkcodes

Linksys:

Mehr Informationen: http://wiki.openwrt.org/wrtLEDCodes

Asus:

Vorbereitung

Wichtig ist bei den hier beschriebenen Methoden (ausgenommen Serielle Konsole/RS232 und JTAG-Kabel), dass Du den Ap von Deinem PC aus erreichst. Du solltest daher nicht auf DHCP (automatische Adressvergabe) hoffen sondern in den Netzwerkeinstellungen deines Computers eine feste IP vergeben und versuchen, Deinen Accesspoint zu erreichen.

Folgende Tabelle gibt Dir die nötigen Informationen:

vermutliche Adresse des AP Adresse des PCs Netzmaske des PCs Anmerkungen
172.16.0.1 172.16.0.2 255.240.0.0 bspw. bei Asus
192.168.1.1 192.168.1.2 255.255.255.0 bspw. bei Linksys / Asus "Premium" etc.
192.168.11.1 192.168.11.2 255.255.0.0 bspw. bei Buffalo

Öffne eine Kommandozeile (z.B. unter Windows 'DOS-Eingabefenster') und versuche, den AP anzupingen:

#> ping 192.168.1.1

Wenn das nicht erfolgreich ist, dann Ap neustarten und beobachten, ob der AP währenddessen (kurz) Pakete empfängt. Dies reicht für eine Wiederherstellung, ist der Recovery Modus (während der boot_wait Zeit).

Firmware Flashen

Per Webinterface

Per TFTP

Recovery Modus erforderlich!

Linksys: Pins brücken oder falls BOOT_WAIT aktiviert ist, direkt nach dem Einschalten des APs.

Asus: Ausschalten, Reset (Recovery beim "Premium")-Knopf drücken, Einschalten, beim Loslassen des Reset-Knopfs blinkt die Power-LED.

Ubiquiti: Station einschalten, Reset 5-10 sekunden warten bis Rot, Orange, Grün1, Frün2 nacheinander aufleuchten, Reset loslassen - jetzt sollten rot+grün1 und orange+grün2 abwechselnd aufleuchten

tftp 
tftp> connect <ip-addresse>
tftp> binary
tftp> trace
Packet tracing on.
tftp> rexmt 1
tftp> put <firmware.bin>

Windows-Nutzer:

Rufe unter Start > Programme > Zubehör >Eingabeaufforderung auf. Wechsele mit dem Befehl cd in das Verzeichnis, das die gewünschte Firmware-Datei enthält. Beispiel: Gib ein cd /d x:\download\firmware und bestätige mit der Eingabetaste. Gib den TFTP-Übertragungsbefehl ein

tftp -i 192.168.1.1 put <firmware-file> (Linksys .bin / Sonst .trx)

Die Übertragung muss nach etwa 5 Sekunden fehlerfrei abgeschlossen sein. Das Gerät zeigt den Update-Vorgang durch eine blinkende Power-LED an. Der Update-Vorgang ist nach spätestens 2 Minuten abgeschlossen. Das Gerät startet mit der neuen Firmware selbstständig.

Hinweis Windows - langsame Netzwerkkartentreiber:

Per mtd (lokal)

Die sicherste und zuverlässigste Methode einen Access Point mit bereits installierter OpenWrt-kompatibler Firmware mit einer neuen Firmware auszustatten, ist der Weg über das integrierte Flash-Consolentool mtd.

mtd -r -e linux write <firmware.trx> linux

Per mtd (remote)

Bei Access Points mit nicht ausreichend freien Speicher, kann man auch da Image direkt per Unix-Pipe via SSH uebertragen -- nur fuer Mutige, sei gewarnt! Voraussetzung ist OpenWrt-kompatible Firmware auf den Access Point mit mtd an Board.

cat <firmware.trx> | ssh root@<ap> mtd -r -e linux write - linux

Per Serielle Konsole/RS232

Siehe auch:

Per JTAG-Kabel

Per JTAG-Kabel läßt sich der Bootloader CFE, der Inhalt der NVRAM-Variablen und das Kernelimage löschen, auslesen so wie schreiben. JTAG ist eine standardisierte Schnittstelle für Embedded Systeme. Damit kann direkt auf den Flash-Speicher zugriffen werden, so dass man jeden AP (ohne Hardwareschaden) wieder zum Laufen bekommt.

Es muss der AP geöffnet werden (Garantie ist danach weg). Man muß einen Pfostenstecker auf den AP löten.

Weiter unter: Firmware HowTo/JTAG

Original-Firmware wiederherstellen

dd bs=32 skip=1 if=<firmware.bin> of=<firmware.trx>
mtd -r -e linux write <firmware.trx> linux

Firmware reparieren

Booten in den Failsafe-Modus

Im Failsafe Modus werden nur die notwendigsten Dinge geladen, so kann das System nach einer Fehlkonfiguration wieder hergestellt werden.

Via recvudp (alle Modelle, ab OpenWrt RC5):

linux # ./recvudp 
Msg from 192.168.1.1: (dummy message)
Msg from 192.168.1.1: Press reset now, to enter Failsafe!
[.. jetzt Reset-Button drücken ..]
Msg from 192.168.1.1: Entering Failsafe!

Linksys WRT:

Asus:

Asus: (Firmware Recovery Modus)

Der Asus besitzt einen Firmware Recovery Modus den man aktiviert in dem man den Reset Taster gedrückt hält während man den Router mit Strom versorgt. Nun kann man mit dem Firmware Restoration Tool die neue Firmware flashen auch wenn man die IP nicht kennt und der Router nicht mehr zu erreichen ist. Die original Firmware bekommt man bei Asus. Will man Openwrt flashen verwendet man für Asus das openwrt-brcm-2.4-squashfs.trx File.

Buffalo:

Passwort zurücksetzen

mtd unlock /dev/mtd/4
mount /dev/mtdblock/4 /jffs
cd /jffs/etc/
mv passwd passwd.old
scp <host>:/etc/passwd .
root:$1$$CoERg7ynjYLsj2j4glJ34.:0:0:root:/tmp:/bin/ash

NVRAM Variablen prüfen

eth1 Not associated Problem (WLAN)

Das WLAN-Interface fällt dabei in den Infrastruktur-Modus zurück, an statt den Ad-Hoc-Modus zu nutzen. Dies passiert vor allem bei Linksys WRT D2/v3.1 Geräten, bei den kein Downgrade der Original-Firmware gemacht wurde.

Es müssen einige NVRAM-Variablen geändert werden. Die Lösung:

nvram set wl_wpa_psk=
nvram set wl_wpa_gtk_rekey=
nvram set wl0_wpa_gtk_rekey=
nvram set wl0_wpa_psk=
nvram commit
reboot

NVRAM zurücksetzen

Man kann auf einigen APs den gesamten NVRAM löschen, so dass beim nächsten Neustart der Bootloader (CFE) die ihm bekannten Default-Variablen wieder setzt. Dies ist zur Zeit problemlos bei Linksys WRT54 und ASUS WL500g möglich. Bitte aber stets mit Vorsicht und auf eigene Gefahr!

Und so gehts - NVRam löschen und automatisch Rebooten:

mtd -r erase nvram

Danach ggf. die Firmware neu installieren, so dass alle Firmware-spezifischen Variablen erzeugt btw. gesetzt werden. So kann man "verkonfigurierte" Access Points wieder in Gang bringen. Ggf. vorher im Failsafe-Modus booten.

Nach dem Neustart ggf. wieder boot_wait aktivieren:

nvram set boot_wait=on
nvram commit

Neighbour table overflow

echo 1024 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
echo 2048 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
echo 4096 > /proc/sys/net/ipv4/neigh/default/gc_thresh3

Tutorials

Sicherer Webserserver

Siehe Sicherer Webserver (HTTPS).

Portforwarding

Siehe Portforwarding.

USB Massenspeicher

Siehe USB Massenspeicher.

Samba Server

Siehe Samba Server.

Mini-PCI Umbau

Siehe Mini-PCI Umbau

Mac-Adresse anpassen

Falls notwendig, kann man von jedem Netzwerk-nterface die Mac-Adresse anpassen. Dies kann zum Beispiel bei der WAN-Schnittstelle notwendig sein. Dazu die NVRAM-Variable <if>_hwaddr setzen. Als <if> komt "wan", "lan" und "wifi" in Frage. Beispiel, per Console (SSH):

nvram set wan_hwaddr=XX:XX:XX:,,,
nvram commit
ifdown wan
ifup wan

VLANs nutzen (OLSR-LAN)

Siehe OpenWrt-Doku: http://wiki.openwrt.org/OpenWrtDocs/Configuration#head-1f582c0ad21a03a769e00c345743d6cf85ba878f

Die Switchport-Nummern beim Linksys:

Beispiel vlan2 hinzufügen als speziellen OLSR-Port:

1. Neues Interface olsrlan als vlan2 erstellen

nvram set olsrlan_ifname=vlan2
nvram set olsrlan_proto=static
nvram set olsrlan_netmask=255.255.0.0
nvram set olsrlan_ipaddr=192.168.2.x

2. vlan2 auf Switchport 3 / 4 (ggf. gegen Skizzen oben prüfen) legen

nvram set vlan0ports="2 1 5*"  
nvram set vlan2ports="3 4 5"     
nvram set vlan2hwname=et0

3. Start-Stop-Skript /etc/init.d/S46olsrlan erstellen

#!/bin/sh
# config
DEVNAME="olsrlan"
eval $(/usr/bin/netparam)
# start/stops scripts
case $1 in
       start)
               echo "Starting $DEVNAME ($IFNAME)..."
               # bring interface up
               ifup $DEVNAME
               # open firewall  
               iptables -I INPUT -i $OLSRLANDEV -j ACCEPT                    
               iptables -I OUTPUT -o $OLSRLANDEV -j ACCEPT                    
               iptables -I FORWARD -o $OLSRLANDEV -j ACCEPT
               iptables -I FORWARD -i $OLSRLANDEV -j ACCEPT
               # masq lan traffic 
               iptables -t nat -A POSTROUTING -o $OLSRLANDEV -s $LANNET/$LANPRE -j MASQUERADE        ;;
       stop)
               echo "Shutdown $DEVNAME ($IFNAME)..."
               # shutdown interface
               ifdown $DEVNAME
               # remove firewall rules
               iptables -D INPUT -i $OLSRLANDEV -j ACCEPT
               iptables -D OUTPUT -o $OLSRLANDEV -j ACCEPT
               iptables -D FORWARD -o $OLSRLANDEV -j ACCEPT
               iptables -D FORWARD -i $OLSRLANDEV -j ACCEPT
               # remove masq
               iptables -t nat -D POSTROUTING -o $OLSRLANDEV -s $LANNET/$LANPRE -j MASQUERADE        ;;
       restart)
               $0 stop
               $0 start
       ;;
       status)
               ifconfig $IFNAME
       ;;
       *)
               echo "Usage: $0 start|stop|restart|status"
       ;;
esac

4. Start-Stop-Skript ausführbar machen:

chmod +x /etc/init.d/S46olsrlan

5. OLSR beim Starten auf olsrwan starten, dazu /etc/init.d/S53olsrd anpassen:

OLSRDEVLIST="... tap0"         (vorher)
OLSRDEVLIST="... tap0 vlan2"   (nachher)

6. Speichern und Testen

nvram commit
reboot

WRT und GKrellM

Ciscobutton

Seit OpenWrt whiterussian RC6 ist der Diag-Teiber erweitert worden und nun einfacher nutzbar. Ein Beispiel findet man unter: http://forum.openwrt.org/viewtopic.php?id=8151

Kleines Beispielskript zum Aktivieren/Deaktivieren des WAN-Interfaces über den sogenannten Cisco-Button am Linksys WRT.

#!/bin/sh -e
#
# wait for pressed button
while [ true ]
do
   sleep 1
   if [ "$(cat /proc/sys/button)" = "1" ]; then
       if [ "$(nvram get wan_enabled)" = "0" ]; then
           logger -t ciscobutton "Activating wan (Cisco button)"
           ifup wan
           nvram set wan_enabled=1
           echo "0x08" > /proc/sys/diag  # White Cisco LED ON
       else
           logger -t ciscobutton "Deactivating wan (Cisco button)"
           ifdown wan
           nvram set wan_enabled=0
           echo "0x10" > /proc/sys/diag  # Orange Cisco LED ON
           sleep 3  # just to be safe
           echo "0" > /proc/sys/diag  # Defaults (Cisco LED OFF)
       fi
   fi
done &


Regdomain ändern

Siehe auch

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge