Tutorial: Speed2Fritz Speedport W 501V direkt in ArchLinux

Mit diesem Blogpost habe ich mal eine völlig alternative Herangehensweise im Angebot, einen Speedport-Router unter einem nativen Linux-System zu flashen. Als Firmware lässt sich bei einem Speedport W 501V z.B. ein modifiziertes AVM FritzBox-Image oder Freetz einspielen. Die neue Software erweitert den Telekom Router um zahlreiche Funktionen.
Die üblichen Tutorials beschreiben eine Methode, mit der sich mittels einer Ubuntu-VM das speed2fritz Script “platformunabhängig” ausführen lässt oder mit verschiedenen Windows-Tools ein Image erstellt und geflasht werden kann. Mir war es anfangs nicht möglich, das Speed2Fritz Script nativ unter ArchLinux laufen zu lassen, da die Angeschlossenen Router nie erkannt wurden. Doch dank eines kleinen Patch lässt sich der ganze Prozess erheblich vereinfachen!
Als erstes wird speed2fritz aus dem AUR mit dem Packet-Wrapper yaourt kompiliert und installiert:

yaourt -S speed2fritz

Nach erfolgreicher Installation muss die Datei /opt/speed2fritz/includes/includefunctions angepasst werden, z.B. mit einem Texteditor wie vim oder nano. (Bei diesem Quellcodeausschnitt handelt es sich um die Revision 1453). Aus der Passage:

[...]
 	[ $ISALICE ] && kernel_mtd5=$(mktemp -t mtd5_XXX) && dd if=${arg} of=${kernel_mtd5} bs=1k skip=7808 2> ${ddlog} &&\
  	grep -q '0 bytes (0 B) copied' ${ddlog} && echo "--> Firmware size < 8MB." && unset ISALICE
      fi
    echo -e "${ECHO_BOLD}${ECHO_ROT}If no restart on its own, you must reboot your box 
  fi
  [ $ISALICE ] || kernel_mtd1="${arg}"
  echo "Waiting for box to restart ..."
  while [ `ping $ping_params ${IPADDRESS} 2>&1 | grep -c 'nreachable'` != "0" ] ||\
  [ `ping $ping_params ${IPADDRESS} | grep 'receive' | awk '{ print $4 }'` == "1" ]; do
   echo -n "."
   sleep 1
  done 
  while [ `ping $ping_params ${IPADDRESS} 2>&1 | grep -c 'nreachable'` != "0" ] ||\
  [ `ping $ping_params ${IPADDRESS} | grep 'receive' | awk '{ print $4 }'` == "0" ]; do
   echo -n "."
  done 
  echo -e "\nInitiating file transfer of 'kernel.image' ...\n"
  echo "Please be patient, it takes about one minute to erase the mtd1 partition ..."
  [ $FORCE_CLEAR_FLASH ] && autoload=no || autoload=yes
[...]

wird folgendes:

[...]
[ $ISALICE ] && kernel_mtd5=$(mktemp -t mtd5_XXX) && dd if=${arg} of=${kernel_mtd5} bs=1k skip=7808 2> ${ddlog} &&\
  	grep -q '0 bytes (0 B) copied' ${ddlog} && echo "--> Firmware size < 8MB." && unset ISALICE
      fi
 echo -e "${ECHO_BOLD}${ECHO_ROT}If no restart on its own, you must reboot your box again.${ECHO_END}\n"
  fi
  [ $ISALICE ] || kernel_mtd1="${arg}"
  echo "Waiting for box to shut down and restart ..."
  ping -i0.2 ${IPADDRESS}| while read line; do echo $line | grep -Fq "bytes" && break; done
  ping -i0.2 ${IPADDRESS}| while read line; do echo $line | grep -Fq "bytes" && break; done
  #while [ `ping $ping_params ${IPADDRESS} | grep 'receive' | awk '{ print $4 }'` == "1" ]; do
  # echo -n "."
  # sleep 1
  #done 
  #while [ `ping $ping_params ${IPADDRESS} 2>&1 | grep -c 'nreachable'` != "0" ] ||\
  #[ `ping $ping_params ${IPADDRESS} | grep 'receive' | awk '{ print $4 }'` == "0" ]; do
  # echo -n "."
  #done 
  echo -e "\nInitiating file transfer of 'kernel.image' ...\n"
  echo "Please be patient, it takes about one minute to erase the mtd1 partition ..."
  [ $FORCE_CLEAR_FLASH ] && autoload=no || autoload=yes
[...]

Zur Erklärung: Die While-Schleife, die den Router ping’t und überprüft, ob dieser beim Reboot erreichbar ist (der Recovery-Mode mit offenem FTP-Port), ist zu langsam und leider lässt sich selbst der einzelne Ping-Befehl mit passenden Timeout-Parametern nicht schnell genug tunen. Deswegen wird diese Passage (die übrigens öfters im Quelltext auftaucht und ggf. auch dort ersetzt werden muss) ersetzt mit einem Ping-Flood, der konstant läuft und sich beendet, wenn der Router erreichbar ist.
Die Datei muss mit Root-Rechten geöffnet und geschrieben werden! Danach kann schon speed2fritz gestartet werden:

sudo speed2fritz

Im Menü kann jetzt das Modell ausgewählt werden (siehe Bild 1), ein Experten-Modus aktiviert werden (siehe Bild 2), weitere Einstellungen vorgenommen werden und die Konfiguration gespeichert werden (siehe Bild 3). Den Standard Dateinamen bestätigen (Enter) und mit Pfeiltaste nach rechts das Steuerelement “Exit” auswählen. Danach fertigt das Script ein Image an mit den gewünschten Eigenschaften (hierfür muss Internet verfügbar sein!).
Erster Schritt, download der original Firmware-Images bestätigen:

Images extracted... Press 'ENTER' to continue

Nach dem modifizieren der Firmware, das eigentliche Image erstellen mit:

Images extracted... Press 'ENTER' to continue

Nach einer kurzen Zeit sollte folgender Text erscheinen:

Search active netconnections on: eth0 eth1 eth2 eth3 eth4 eth5
Ethernet card found on: eth0
Parameter in use:
Eth eth0
IP 192.168.178.1
OEM avm
Produkt Fritz_Box_7140_AnnexA
HWResvison 93.1.1.0
kernel_args annex=B
Imagedirectory /opt/speed2fritz/Firmware.new

-----------------------------------------------------------------------
All settings will be removed, because clear mtd3 and mtd4 was selected!
-----------------------------------------------------------------------

Press 'ENTER' to proceed!

Erst jetzt kann der noch ausgeschaltete Speedport-Router an den Laptop via Ethernet-Kabel angeschlossen werden. Wichtig: Es sollte kein Netzwerkmanager wie Wicd oder NetworkManager im System aktiv sein, auch sollte kein Dhcp-Client auf dem Interface laufen!
Nachdem die Meldung mit “Enter” bestätigt wurde, kann das Netzteil am Router eingesteckt werden. Das Skript sollte nun die Firmware flashen und den Router neustarten. Sobald dieser erreichbar ist (in der Zeit nicht ausstecken!) unter 192.168.178.1, kann die Weboberfläche gestartet und das Skript beendet werden.

Die komplette Ausgabe des Shell-Scripts gibts hier.

Hi,

kannst du mir bei dieser Fehlermeldung helfen?

You must reboot your box.

Waiting for box to restart …
You must reboot your box now. Waiting for box to shut down for restart …
.. found!
ADAM2 version 0.18.1 at 192.168.178.1 (192.168.178.1)
ip already ok
can’t FTP ADAM2 at /opt/speed2fritz/setBootloaderIP-to-192_168_178_1 line 167.

Initiating file transfer of ‘kernel.image’ …

Please be patient, it takes about one minute to erase the mtd1 partition …
/opt/speed2fritz/includes/includefunctions: Zeile 649: /opt/speed2fritz/ftperr.log: Keine Berechtigung

[=====================================> ] <<<<– Dieser Balken läuft dann unendlich durch

Woran kann das liegen? Ich führe hier nur noch ./ftpXXX aus.

Wenn ich das ganze Skript durchlaufen lass, dann kommt an dieser Stelle mehrmals "Not Connected" und das Skript beendet sich.

Mfg Tobias

1 Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

* Checkbox GDPR is required

*

I agree

Hardware
Aus dem Archiv: keyComfort – Der besondere Fahrradsattel

An dieser Stelle möchte in unserem Sommer-Format “Aus dem Archiv” ein besonders kreatives und ausgefallenes Projekt vorstellen: keyComfort. Um garnicht erst viel Worte zu verlieren, lasse ich einfach das großartige Video unserer Indiegogo Crowdfunding-Kampagne (Web-Archiv 1,2) sprechen: Trotz seiner ansprechenden Ästhetik und professionellen Machart ging die Kampagne weder dort noch …

Hardware
Aus dem Archiv: CNC-Fräse Lightning Talk GPN10

Eigentlich hatten wir, Benibr, ST und ich damals 2010 schon verschiedene Texte zur GPN10, der Gulaschprogrammiernacht des Entropias in Karlsruhe, veröffentlicht. Auch der Talk von ST und Robert hatte erwähnung gefunden. Die Aufzeichnung zu dem Vortrag über die erste, selbstgebaute CNC-Fräse wurde aber leider noch nicht verlinkt oder hier hochgeladen. …

Software
Officepad – Etherpad alternative based on Onlyoffice

During the Chaos Communication Camp 2019 I was working on a project called Officepad. The aim was to build a web interface comparable to Etherpad. Etherpad is a well established tool for online text collaboration used by software developers, activists and so on. Etherpad is relatively stable and works well …