Herta mit DSL-G684T Firmware

horatio42

Neuer User
Mitglied seit
5 Sep 2009
Beiträge
78
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich überlege im Moment meiner Herta die "Original" Firmware des DSL-G684T einzuflashen. Hintergrund dazu ist dass ich gerne WPA2 einsetzen würde, was Herta auch mit neuester eigener Firmware nicht kann, die 3.02 -Firmware des DSL-G684T aber (anscheinend) schon.
Ich habe diverse Beiträge gelesen in denen Forumsteilnehmern dieses gelungen ist, und würde gerne einige Erfahrungen dazu hören, bevor ich loslege, speziell interessiert mich:

- der "Weg zurück": wenn ich zurück auf die Herta-spezifische FW will, müsste ich sie doch über das Webinterface der DSL-G684T-FW einflashen können, oder klappt das wohlmöglich nicht (überprüft die Firmware ob eine passende eingespielt wird)?

- welche weiteren Möglichkeiten gibt es die Firmware in Herta einzuspielen? Bootloader (über die serielle Konsole)? TFTP?

- bietet die DSL-G684T-FW einen ssh-zugang (von mir aus auch zunächst über webinterface oder serielle konsole zu aktivieren)? In den sourcen der Firmware habe ich zumindest dropbear gefunden...

- apropos sourcen: ich habe versucht die Unterschiede zwischen der Herta-FW und der G684T-FW über die source-Pakete rauszufinden, um wohlmöglich eine Herta-FW auf basis der 3.02 für den G684T zu basteln. Bin aber nicht sehr weit gekommen, die sourcetrees scheinen nicht vollständig zu sein, es gibt massig Verweise auf externe Verzeichnisse... Out of the box bauen die jedenfalls nicht... hat hier sich schonmal jemand dran versucht?

- mein nächster Ansatz lief über die Firmware-images. Ich habe die squashfs-images aus diesen extrahiert (mittels eines ziemlich simplen Programms das in einem FritzBox-forum gepostet wurde, find-squashfs odersoähnlich). Ich konnte sie aber nicht entpacken: anscheinend ist die benutzte squashfs version (1.0) zu alt, so dass es weder ein funktionierendes unquashfs(-lzma?) gibt, noch support in neueren Kernels. Ich habe mit diversen vmware-images älterer Distros aus dem Netz auch keinen Erfolg gehabt. Es ist natürlich möglich dass obiges find-squashfs Schrott produizert hat. Dagegen spricht dass das squashfs-image aber zunächst mal als solches erkannt wird, nur die Version passt eben nicht, bzw. kommt es zu Fehlern während es entpackens. Hat irgendjemand hier schonmal sein Glück probiert?

- hat jemand einen Überblick was an Herta's Firmware geändert wurde? Der ssh-rcmd-Kram ist mir soweit klar. Was mir aber z.B. nicht klar ist, wie z.B. Konfigurations-Upates von Horsts' Webserver aus funktionieren. Herta spiegelt die Config anscheinend nochmal selbst (entweder in einem mtd-device als nvram oder in /etc/Config.xml).

- mir ist klar, das - wie in anderen Beiträgen bereits beschrieben - man Horst und Herta auch komplett trennen, indem man z.B. Horst in das gleiche Netzsegment wie Herta setzt, so das Host sich nicht mehr hinter Herta versteckt, sondern beide gleichberechtigt im Netz sind. Damit wäre auch ein Betrieb DSL-G684T-FW kein Problem. Mir ist das aber momentan zu heikel, auch finde ich die Originalkonfiguration soweit ok. Ideal fände ich wenn ich die neue Firmware einspielen, und Herta dann so konfigurieren könnte wir im Original.

Danke für Eure Hilfe,
H.
 
- der "Weg zurück": wenn ich zurück auf die Herta-spezifische FW will, müsste ich sie doch über das Webinterface der DSL-G684T-FW einflashen können, oder klappt das wohlmöglich nicht (überprüft die Firmware ob eine passende eingespielt wird)?

Die Herta-Firmware kannst Du dann wieder ganz normal über Web einspielen. Habe das schon mal testweise probiert. Zum Rest kann ich Dir leider nicht weiterhelfen. Sorry.
 
Ideal fände ich wenn ich die neue Firmware einspielen, und Herta dann so konfigurieren könnte wir im Original.

Genau genommen kann das ja nicht ohne eine Modifikation auch im Horst gehen, da in der Horst-Oberfläche z.B. keine WPA2-Einstellung vorgesehen ist.
 
Hallo Thomas,

In der Tat muss ich mir hier mit dem WebIF des G684-T behelfen, nach leichten Modifikationen an der Original-G684-FW funktioniert der Rest aber fast wie das Original... Horst hockt hinter Herta und kann sie weiterhin über rcmd "fersteuern"...
Die Unterschiede an der G684- und Herta-FW sind eh nur marginal... Ich denke dass das notwendige Update für Horstens WebIF der Grund für DLink gewesen sein dürfte, WPA2 für Herta nicht zur Verfügung zu stellen. Wenn man weiss was man tut (sich mit dem G684-T WebIF behilft) tut es das Ganze aber erstaunlich gut.

Gruss,
H.
 
Hallo Thomas,

In der Tat muss ich mir hier mit dem WebIF des G684-T behelfen, nach leichten Modifikationen an der Original-G684-FW funktioniert der Rest aber fast wie das Original... Horst hockt hinter Herta und kann sie weiterhin über rcmd "fersteuern"...
Die Unterschiede an der G684- und Herta-FW sind eh nur marginal... Ich denke dass das notwendige Update für Horstens WebIF der Grund für DLink gewesen sein dürfte, WPA2 für Herta nicht zur Verfügung zu stellen. Wenn man weiss was man tut (sich mit dem G684-T WebIF behilft) tut es das Ganze aber erstaunlich gut.

Gruss,
H.

Das hört sich interessant an, dass Du es geschafft hast, die G684-T Firmware zu modifizieren. Könntest Du Deine Vorgehensweise, bzw. Deine modifizierte Firmware hier posten?

Gruß Thomas
 
Modifizierte DSL-G684T-Firmware für Herta

Hallo zusammen,

nach einiger Bastelei ist es mir gelungen die aktuellste Firmware des DSL-G684T -Routers für Herta anzupassen.

Größter Vorteil dieser modifizierten Firmware ist dass Hertas WLAN nun WPA2 spricht.

Ein paar Nachteile gibt's auch, unter anderem fehlt der Support für TR069 (keine Ahnung ob das jemand genutzt hat). Das hängt mit der Tatsache zusammen, dass das auf der AR7-Plattform verwendete MontaVista-Linux anscheinend nicht völlig open source ist, und fast alle "wichtigen" Dinge (Starten der Demons, Konfigurationsdatenverwaltung im NVRAM) von closed source-binaries (cm_*) erledigt werden.
Desweiteren muss man Herta nun über ihr eigenes Web-Interface konfigurieren, da sich die Konfigurationsoptionen von der Original-Firmware unterscheiden (man kann über Horst nun mal kein WPA2 einstellen).

Es ist mir aber gelungen das Original-Setup beizubehalten, d.h. Horst versteckt sich nach wie vor unter der bekannten IP hinter Herta, und kann mittels rcmd mit ihr kommunizieren. Er richtet somit auch weiterhin die iptables-settings auf Herta ein die Zugriff auf sein Web-Interface und seinen ssh-demon erlauben. Für Horst sieht also alles aus wie gehabt, es ist nicht nötig für ihn irgend etwas anzupassen. Man *kann* aber mit relativ einfachen Mitteln dafür Sorgen dass Horst sich nicht mehr hinter Herta versteckt und quasi gleichberechtigt neben Herta im Netz hängt. Evt. poste ich dazu auch nochmal ein Tutorial.


Am Besten flasht man die Firmware über das WebInterface von Herta, dies kann man z.B. über einen ssh-port-Tunnel über Horst erreichen (ich setze hier mal ein command-line ssh für Linux voraus, putty & co sollten aber entsprechend funktionieren). Falls Ihr den ssh-Zugang für Horst noch nicht aktiviert habt, müsst Ihr das natürlich zuerst machen.

Code:
ssh -L 8080:192.0.2.1:8080 [email protected]

Während Ihr darüber auf Horst eingeloggt seit, könnt Ihr über

http://127.0.0.1:8080

auf Hertas eigenes Web-IF (im Endeffekt das eines DSL-G684T) zugreifen.

Sichert zunächst die Original-Konfiguration Eurer Herta unter Tools (oben) -> System (links) -> Button "Save Settings To Local Hard Drive"
Danach entpackt (mittels bunzip2, das ist KEIN Tarball!) das angehängte Image und flasht es über Menü Tools (oben) -> Firmware (links).
Das Webinterface verabschiedet sich jetzt. Herta rebootet nach komplettiertem Flash selbsttätig, also NICHT abschalten, sondern geduldig warten!
Nach ca. 5 Minuten sollte man mittels des Webbrowsers wieder auf Herta zugreifen können. Ggf. sollte man sich in Horst mit ssh neu einloggen (s.o.).

Als allererstes sollte man nun die Konfiguration auf die Werkseinstellungen zurücksetzen: da die DSL-G684T-Firmware leicht andere Features als die der Herta hat, kommt der config demon des G684 nicht mit den alten Settings der Herta klar, teilweise werden die schon übernommen (u.a. z.B. eben die IP und der Port des Web-IF), aber ändern lässt sich nix solange man nicht einmal komplett sauber gemacht hat. Also unter Tools -> Settings einmal zurücksetzen.

Danach liegt *Hertas* Web-IF auf:

http://192.168.1.1

Wenn bis hier hin alles glatt gegangen ist, solltet Ihr auch auf Horst wieder Zugriff haben:

https://192.168.1.1

(Beachten: Horsts' Web-IF liegt auf dem https -Port (443), Hertas' auf dem unverschlüsselten Port 80!)
Auch über ssh kommt ihr nun wieder an Horst dran. Es kann allerdings sein, dass man kurz nach dem Booten zunächst auf Herta landet, das Horst die entsprechende iptables-entries zum Forward des ssh-ports noch nicht eingerichtet hat.


Jetzt könnt Ihr Herta konfigurieren, aber wie gesagt bitte direkt in ihrem eigenen Interface.

ACHTUNG! WICHTIG! OBACHT!: Konfiguriert den Webserver von Herta *unbedingt* wieder auf Port 8080 um! Hintergrund ist dass Horst davon ausgeht dass Herta auf diesem Port liegt und die Firewall entsprechend konfiguriert (alle Default-Firewall-Einstellungen von Herta werden von Horst regelmäßig geflusht und von eigenen ersetzt). Der Port 80 steht dann nämlich offen IM INTERNET!!!
Generell (und das trifft auch für die Original-Herta-FW zu) ist gerade der Firewall-Konfigurationsprozess von Horst aus sehr "interessant gelöst"... ich würde zusätzlich DRINGEND empfehlen für Herta ein nicht-triviales Passwort zu setzen, da es bei Verständigungsproblemen zwischen Herta und Horst sonst phasenweise das Scheunentor offen stehen kann... Das ist aber kein spezielles Problem dieses Hacks sondern ein generelles was auch bei der Original-FW auftreten kann, z.B. wenn die Herta aus irgendeinem Grund rebootet, kann es ein wenig dauern bis Horst das mitbekommt und die Firewall neu konfiguriert.
Danach müsst Ihr wieder den ssh-Tunnel über Horstens interne IP benutzen (s.o.), da der Port 8080 von Herta nicht von außen erreichbar ist!


Ich habe nicht übermäßig damit experimentiert Settings auf Horst ändern zu wollen die Herta betreffen, aber es hat meistens nicht geklappt... wie gesagt, geht Horst nun einmal von anderen Features aus als auf der gehackten Herta vorhanden sind. Achtung: wenn man etwas ändert muss man das explizit unter Tools -> Settings saven! Das ist ein bisschen eigenartig gelöst, man muss quasi erst in ein komplett anderes Menü wechseln und auf "Save" klicken damit änderungen vom Web-IF übernommen werden!


Wie gesagt, WPA2 funktioniert bei mir, und für Horst sieht alles normal aus. Habe die Firmware nun ca. 2 Wochen im "Produktiveinsatz". Allerdings benutze ich einige der Funktionen von Horst nicht (z.B. keine VoIP-Geschichten), die Firewall-Konfiguration sieht für mich soweit ok aus, aber getestet hab ich z.B. SIP nicht.
Vielleicht poste ich später weitere Tutorials zum Selberhacken der Firmware. Bisher ist es mir noch nicht gelungenen zusätzliche Programme für Herta zu kompilieren, dem GPL-"Source" für Herta bzw. den G684 fehlt leider jegliche Information über die verwendete Toolchain und alle .config Dateien für busybox, kernel usw. Außerdem gibt es keinerlei Source von den oben erwähnten cm_* binaries. Ist also noch was Arbeit. Hertas Flash bietet aber noch gut 1MB freien Speicher, für eigene Tools wäre also durchaus noch Platz.
Nur kurz zum Mod (Details in einem weiteren Post): ich habe nach ziemlich viel Blut, Schweiß und Tränen es tatsächlich geschafft mir ein unsquashfs-lzma für die die in Herta benutzte squashfs-version 1.0 anzupassen. Damit habe ich beide FW-Images dekompiliert und der DSL-G684T-FW einige Sachen von Herta untergeschoben. Sind alles Original-Binaries plus einige Änderungen in Config-Dateien. Aber wie gesagt, Details gibt's später.



DISCLAIMER: Ich habe diesen Mod mit der potc-FW für Horst getestet, und konnte nach obigem Rezept die Firmware installieren OHNE serielle Konsolen für Herta oder Horst zu benötigen (in der Entwicklung hab ich die natürlich schon gebraucht). Bei der Original-FW 5.0 von Horst sollte es entsprechend funktionieren, da dieser Mod keine Spezifika der potc-Firmware benutzt. Nichtsdestotrotz kann ich nicht dafür garantieren dass man sich nicht seine Horstbox damit bricked... dieser Brick lässt sich zwar in 99,9% der Fälle über den Bootloader bzw. die serielle Konsole beheben, ist aber durchaus mit Aufwand verbunden. Ich poste demnächt mal ein Tutorial wie man Herta über den ADAM2-Bootloader flasht wenn man nicht mehr an das Web-IF rankommt. Aber was ich sagen will ist: ALLES AUF EIGENE GEFAHR! Ich hafte nicht für Schäden an Eurer Hardware!

DISCLAIMER2: Die an diesen Post angehängte Firmware enthält wie schon erwähnt closed-source-binaries, deren lizenzrechtliche Situation mir nicht so ganz klar ist. Zwar liegen diese Binaries den Original-Firmwares und den GPL-Source-Tarballs bei, aber falls jemand ein Problem damit hat dass ich die hier im Rahmen eines FW-Mods poste, lösche ich den Anhang natürlich wieder. Ich poste das hier nach bestem Wissen und Gewissen.


Falls trotzdem jemand den Mut hat diese FW zu flashen ;-) wäre ich für feedback dankbar. Falls man seine Herta nicht bricked, kann man relativ simpel die Original-Herta-FW wie oben beschrieben über das Web-IF zurückflashen. Auch die Originalkonfiguration (so man sie denn gesichert hat), kann man einfach zurückspielen.


Ich denke dass der Ansatz die Orignal-FW zu modifizieren z.Zt. der erfolgversprechendste sein dürfte. Die OpenSource-Entwicklungen (OpenWRT usw.) scheinen noch in den Kinderschuhen zu stecken. Die Wifi-Treiber (ACX111) sind jedenfalls anscheinend nicht wirklich einsetzbar... und ob die noch weiter entwickelt werden steht in den Sternen.


Viel Spaß,
H.

P.S.: die md5 des Anhangs ist c38530c400bdb017c9980401d84fe692, die des entpackten Images 2db7b650f9fd14f1c7eccb7e784b94b6
 

Anhänge

  • DLinkEU-A_DSL-G684T_singleimage_kernel_fs_V3.02B01T02.EU-A.20071221_mod_Horstbox_Herta.bz2
    2.8 MB · Aufrufe: 49
Zuletzt bearbeitet:
Hallo,

danke für Deine Infos hier! Ich werde die Herta Firmware gleich mal die Tage ausprobieren. Die sollte ja auch durchaus mit der 4.3 für Horst funktionieren.

Gruß Thomas
 
So, bin gestern endlich dazu gekommen, deine Firmware für Herta zu testen. Mit der Original Horstbox Version 4.3 scheint es nicht so zu klappen, wie erwartet. Ich konnte Horst nicht mehr erreichen (https) und Herta hat die WLAN-Einstellungen nicht gespeichert.
Was mir dabei noch aufgefallen ist, ist dass Du die Herta Firmware vom 21.12.2007 benutzt hast. Diese hat z.B. kein WDS, was die vom 13.04.2007 jedoch kann. Des weiteren ist mit der vom 13.04.2007 auch möglich, bis zu 20 statische IPs per DHCP zu vergeben (anstatt nur 5).
Wenn Du eine Anleitung online stellst, will ich gerne probieren die Änderungen in die vom 13.04.2007 zu implementieren.

MfG Thomas
 
Hallo Thomas,

konntest Du Horst denn noch über ssh erreichen, oder ging da gar nix?

Danke für den Hinweis mit der Firmware-Version. Hatte mich schon gewundert dass da zwei Firmwares auf dem FTP-Server lagen. Habe dann - in Ermangelung eines Changelog - einfach die "aktuellste" (halt die mit dem jüngsten Datum) genommen. Mir war nicht klar dass die teils weniger Features bietet, als die Voränger(?)-Version... gibt es da sonst noch unterschiede zwischen den beiden? Hab gerade festgestellt dass einem die DLink-WEB-Seite auch nur die Version vom April zum Download anbietet...

Wegen der nicht gespeicherten WLAN-Einstellungen: ich habe anfangs den Fehler gemacht, in den WLAN-Einstellung auf "Apply" zu klicken, aber NICHT unter "Tools" -> "System" auf "Save and Reboot". Das ist für die WLAN-Einstellungen zwingend erforderlich, sonst speichert die Firmware dies Änderungen in der Tat nicht ab. Andere Änderungen werden hingegen direkt und ohne dieses explizite Abspeichern übernommen... ziemlich verwirrend das Ganze, hatte auch in meinem ersten Post versucht darauf hinzuweisen. Kannst Du das evt. nochmal überprüfen?

Die Anleitung zum selber machen reiche ich in den nächsten Tagen nach, ist etwas umfangreicher und ich muss die Sachen erst nochmal sortieren.

Gruss,
H.
 
Zuletzt bearbeitet:
Hier das ganze nochmal auf die 20070413 -Firmware appliziert. Verleihe einem script dass dessen Build automatisiert gerade noch den letzten Feinschliff... wäre aber super wenn vorher nochmal jemand dieses Image testen könnte. Bei mir funktioniert es (nach allerdings nur sehr kurzem Test).
Ich konnte jedenfalls keine Unterschiede zwischen diesem und dem vorher geposteten feststellen... hat nun jemand Details zu den Unterschieden zwischen den beiden Versionen auf dem DLINK-FTP (außer denen die Thomas schon genannt hat)?

Viel Spaß,
H.

P.S.: MD5 des *entpackten* Images ist 8c5ddf4f330158dcc220ec7f3d63c77c
 

Anhänge

  • DLinkEU-A_DSL-G684T_singleimage_kernel_fs_V3.02B01T02.EU-A.20070413_mod_horst_herta.bz2
    2.8 MB · Aufrufe: 35
Herta Firmware selbst modifizieren

Hallo zusammen,

hier nun die Anleitung zum Selber-Modden der Herta FW. Das ganze ist eigentlich recht simpel, schwierig waren hauptsächlich das fehlende unsquashfs-lzma dass ich mir schlussendlich selbst gebastelt habe (ist attached) und einiges an K(r)ampf dropbear zur Kooperation mit Horst zu überreden. Die Details habe ich als Kommentare in ein build-script geschrieben. Platziert das zusammen mit dem attacheten Tarball in ein Verzeichnis Eurer Wahl und führt es als *root* aus. Vorher durchlesen schadet auch nix ;-) Details zum wie-wieso-und-weshalb entnehmt bitte meinen Kommentaren:

cat README_THEN_RUNME.sh

Code:
#!/bin/sh

# This script builds the Herta FW mod, you need several prerequisites (gcc
# and make in $PATH is one, html2text and grep are others...) to be met when
# using this, see commands & comments below.
#
# Apart from this script, you should have the unsquashfs-1.0.tar.bz2 in the
# same directory. All other tools and images will be downloaded by this script
#
# Note that this needs ~350MB of free disk space during build for temp data!
#
# The basic approach is to decompile the binary images of Herta and DSL-G684T
# FW, and to copy some things over from the Herta FW to the DSL-G684T FW. So
# the resulting FW image is a DSL-G684T FW with some files from the original
# Herta FW plus some config modifications.


echo '##### Check some prerequisites...'

# The "full custom" unsquashfs-lzma for squashfs-1.0 you should have received
# along with this script, it was modified by me and is hence not an official
# release you could get elsewhere...
if [ ! -e ./unsquashfs-lzma-1.0.tar.bz2 ]
then
        echo ERROR: Could not find required ./unsquashfs-lzma-1.0.tar.bz2! >&2
        exit 1
fi

# Not nice but necessary to set the permissions of the files in the FW image
# correctly later; should maybe try fakeroot or sudo someday...
if [ "`whoami`" != "root" ]
then
        echo ERROR: Sorry, this script only works with root permission >&2
        exit 1
fi


echo '##### Download all necessary items...'

# Put the FW tarballs from the DLINK FTP into a dedicated folder
[ -d dl_dir ] || mkdir -p dl_dir
cd dl_dir
# Check if the FW tarballs have been downloaded previously, otherwise get them
[ -e DSL-G684T_fw_reva_302B01T02EUA20070413_ALL_en_20070413.zip ] || wget ftp://ftp.dlink.de/dsl/dsl-g684t/driver_software/DSL-G684T_fw_reva_302B01T02EUA20070413_ALL_en_20070413.zip
[ -e DVA-G3342SB_fw_reva_5.0_de_19092008_Offline_Update.zip ]     || wget ftp://ftp.dlink.de/dva/dva-g3342sb/driver_software/DVA-G3342SB_fw_reva_5.0_de_19092008_Offline_Update.zip
[ -e DSL-Board_GPL_code.tgz ]                                     || wget ftp://ftp.dlink.de/dva/dva-g3342sb/driver_software/DSL-Board_GPL_code.tgz
cd ..


echo '##### Download and/or build all the tools needed...'

# Create a build dir (or clean up the previous one) for temporary data
rm -rf build_dir
mkdir build_dir
cd build_dir

# Get & compile find-squashfs; tries to automatically rip the source from a
# post in ip-phone-forum (in a fritz-box-thread iirc...). If this should not
# work for you, open the URL that is fetched by wget and copy-paste the
# code there manually to ./dl_dir/find-squashfs.c. Did not provide it as I'm
# unsure about license...
# What it does is actually quite trivial: just searches for squashfs magic
# string and extract all data that follows to squashfs, all previous data
# to a the kernel image. Did this originally with a hex editor, but this is
# more convenient (and can be used in batch mode, of course).
# Could maybe use some scripting language like perl or python to achieve the
# same, or maybe even some shell tools... but for now this works.
# Code is not 64-bit-safe, which is why I used -m32 on my 64bit host, could
# be omitted on a 32bit-host-OS, but should not do harm there either.
[ -e ../dl_dir/find-squashfs.c ] || \
wget -O - "http://www.ip-phone-forum.de/showpost.php?p=328268&postcount=2" 2> \
        /dev/null | html2text -width 160 - | grep -A 84 Code | grep -v Code > \
        ../dl_dir/find-squashfs.c
gcc -m32 ../dl_dir/find-squashfs.c -o find-squashfs

# Untar and build the unsquashfs-utility. See if the Makefile might need
# adaption in your environment. I created this myself by backporting a version
# for squashfs 2.x adding the lzma decompressor shipped with the mksquashfs in
# the Herta source tarball. I could not find a working unsquashfs-lzma for
# (the really old) squashfs 1.x used in Herta/DSL-G684T or even just some old
# kernel that would be able to mount it...
# Could also be that DLINK/TI hacked that mksquashfs-lzma version themselves,
# as hooking lzma into squashfs to compress filesystem data is not an
# "official" branch or port (plain vanilla squashfs uses gzip), and several
# "flavors" of this seem to exist...
# Was by far the most awkward job in the whole process... there seemed to be
# even some bug in the standard lzma-decompress which only slightly corrupted
# a few of the unsquashed files and took me days to detect. After switching to
# the small decoder (used in the kernel), it *finally* worked as expected...
tar jxf ../unsquashfs-lzma-1.0.tar.bz2
make -C unsquashfs-lzma-1.0

# The source tarball of Herta contains some tools I used (mksquashfs and
# tichksum) in binary form, so no need to compile those yourself. Those
# binaries worked for me, if they don't for you, you'll have to compile them
# yourself from source (which did not work for me out of the box with the
# gcc on my host, which was also why I decided just to use the precompiled
# binaries).
tar zxf ../dl_dir/DSL-Board_GPL_code.tgz


echo '##### Extract & decompile the squashfs images...'

# Unzip the FW tarballs
unzip ../dl_dir/DVA-G3342SB_fw_reva_5.0_de_19092008_Offline_Update.zip
unzip ../dl_dir/DSL-G684T_fw_reva_302B01T02EUA20070413_ALL_en_20070413.zip

# Extract the squashfs-image from the Herta FW
./find-squashfs Firmware\ 5.0\ Final/image/DLinkHB-C_DSL-G684T_singleimage_kernel_fs_V3.00B01T01.HB-C.20070815
rm -f kernel.raw
mv -f kernelsquashfs.raw squashfs_herta.img

# Extract the squashfs-image from the DSL-G684T FW
./find-squashfs DLinkEU-A_DSL-G684T_singleimage_kernel_fs_V3.02B01T02.EU-A.20070413
mv -f kernelsquashfs.raw squashfs_g684t.img

# Decompile the herta squashfs: we will rip some files out of this to put them
# into the DSL-G684T FW (see below)
./unsquashfs-lzma-1.0/unsquashfs-lzma squashfs_herta.img
mv -f squashfs-root squashfs-root-herta

# Decompile the G684-T squashfs: this will be our working copy
./unsquashfs-lzma-1.0/unsquashfs-lzma squashfs_g684t.img


echo '##### Now the actual mods follow...'

# This is IMPORTANT, as otherwise ssh pubkey login will not work! ('/' is set
# as $HOME of user root in the G684T FW!). mksquashfs will set the access
# permissions of '/' in the image according to the permissions of this dir!
chmod go-rwx squashfs-root

# The var.tar gets loop-mounted on Herta, but contains files that have an
# owner other than root: will also result in ssh-pubkey-logins to be disabled
# by dropbear, so rcmd from horst won't work if left like this
cd squashfs-root
tar xf var.tar
rm -f var.tar
# this actually corrects ownership for all files in root-fs, not only var.tar
chown -R root:root ../squashfs-root
tar cf var.tar var/
rm -rf var/*
cd ..

# Copy the .ssh-dir from '/root' in the Herta fw to '/': as mentioned, on
# DSL-G684T the $HOME of root is set to '/' instead of '/root' (like on the
# original Herta FW). Found no way to change this, $HOME seems to be set by
# one of the closed-source cm_* binaries. Can't take the cm_* from Herta, as
# they also contain other functionality (e.g. the network stuff (WPA2) for
# which this mod is created in the first place). Also exporting $HOME at the
# beginning of /etc/init.d/rcS was not successful.
# In order for this to work, file permissions also needed to be adapted (see
# the previous two step above), as dropbear is quite picky about those... as
# mentioned, it will not allow pubkey logins if these permissions are not
# strict enough. This will effectively result in rcmd from Horst not working,
# as it uses pubkey-ssh-login.
# So long story short: .ssh/ needs to be in the home-dir or root (which is
# '/'), as it contains the authorized_keys to allow public key logins from
# Horst (and hence rcmd to function).
cp -af squashfs-root-herta/root/.ssh squashfs-root/

# Replace the host keys, might not be mandatory, but the FW then "identifies"
# as Herta...
cp -af squashfs-root-herta/etc/dropbear/* squashfs-root/etc/dropbear/

# Copy the 'nvram' -binary over from the original Herta FW. Don't get fooled,
# Herta does *not* use the "nvram-concept" to save its configuration, config
# management is all done by the cm_* -stuff again...
# *This* nvram is allowing Herta to query configuration data stored in
# *HORSTs* nvram. Horsts nvramd is listening on port 888 to answer those
# queries from Herta. It is for example used by some of the firewall-scripts
# Horst copies to Hertas /var/tmp -dir during startup, and hence mandatory for
# the setup process between Horst and Herta to function correctly.
cp -af squashfs-root-herta/usr/sbin/nvram squashfs-root/usr/sbin/

# This appends a command to the init script which will bring up the the br0:1
# -interface: Horst and Hertas "private" network. Is also sort-of a hack, as
# all other network setup is again done by the cm_* binaries... in the
# original Herta FW this is also true for the private net. But as I don't have
# source those binaries (and can't just copy them from Herta for the before-
# mentioned reasons), the following also does the trick.
# This basically waits until the cm_* brought up br0, then brings up br0:1.
# NOTE: Not bringing this up (or disabling it via 'ifconfig br0:1 down' later)
# will result in Horst being in the same subnet as the LAN ports and Herta.
# Just change the internal IPs in HORTSs nvram (grep for the relevant
# variables e.g. via 'nvram -L | grep 192\.0\.2\..' on Horst) to valid values
# in the standard LAN and you are done, having Horst and Herta next to each
# other in the LAN instead of Horst hiding behind Herta!
echo '(while [ "`ifconfig br0 2> /dev/null`" = "" ] ; do sleep 5s ; done && /sbin/ifconfig br0:1 192.0.2.1 netmask 255.255.255.0) &' >> squashfs-root/etc/init.d/rcS
echo "" >> squashfs-root/etc/init.d/rcS


echo '##### End of mods, now create the firmware image...'

# Compile the modified squashfs image
nsp/src/squashfs/mksquashfs squashfs-root squashfs_g684t_herta_mod.img -noappend -le

# Re-assemble the FW-Image: use the original kernel image from the DSL-G684T
# we extracted earlier, plus our modified root-fs.
cat kernel.raw squashfs_g684t_herta_mod.img > ../DLinkEU-A_DSL-G684T_singleimage_kernel_fs_V3.02B01T02.EU-A.20070413_mod_horst_herta

# Append checksum to the final image: Herta will not flash the image (at least
# from WebIF) if the checksum at the end of the image is missing or incorrect.
nsp/src/TI-chksum/tichksum ../DLinkEU-A_DSL-G684T_singleimage_kernel_fs_V3.02B01T02.EU-A.20070413_mod_horst_herta && \
echo '##### Done, have fun!' || \
echo '##### Sorry, something went wrong, please see previous output!'

Ich bin mir sicher dass man einiges hätte eleganter Lösen können, aber ich wollte halt auf die schnelle eine "ausführbare Anleitung". Verbesserungen und Erweiterungen sind natürlich jederzeit willkommen :) Vielleicht fühlt sich ja der ein oder andere bemüßigt sich an einer Toolchain für zusätzliche executables zu versuchen.

Viel Spaß,
H.
 

Anhänge

  • unsquashfs-lzma-1.0.tar.bz2
    13.6 KB · Aufrufe: 24
Hallo,

danke für Dein Script. Ich werde erstmal Deine Firmware testen und mir dann das Script genauer anschauen und auch testen.
Meine HBX läuft wieder. Ich konnte ohne Probleme die Original Herta-Horst-Firmware aufspielen und nach einem Reset war dann alles beim alten.

Ich melde mich, sobald ich wieder etwas zu berichten habe (nach dem Testen!) :).

MfG Thomas
 
1000 dank für das tutorial!

ich hatte probleme mit meiner horst am 16.000er dsl... irgendwie brach die verbindung immer kurzzeitig ab... vor lauter verzweiflung habe ich mal das flashen von herta probiert und scheinbar klappt es nun um einiges besser als vorher!

ich werde das mal weiter im auge behalten und ggf. hier noch rückmeldung geben.

ach ja: wer seine horst vorher auf 192.168.0.1 laufen hatte muss damit er nach dem factory reset der herta wieder drauf kommt 'ne IP aus dem netz haben (oder neue IP via dhcp anfordern) und dann die herta auf 192.168.0.1 umstellen...

edit: es ist wirklich so - die abbrüche sind weg. OK, alles nicht mehr ganz so schön wie vorher, vorallem wenn man den Port der Herta auf 8080 stellt und dann jedes mal den SSH Tunnel aufbauen muss um dort was einzurichten.

Wäre es nicht möglich die Firmware der Horst zu zu verändern, dass sie wieder vollen Zugriff auf die Herta hat? Ich denke ich würde auch mitarbeiten ;)
 
Zuletzt bearbeitet:
Hallo xfjx,

Leider ist mir der Konfigurationsprozess von Horsts Web-IF zu (einer ungemoddeten) Herta nicht wirklich klar, deshalb kann ich Dir da erstmal wenig weiterhelfen, fürchte ich :-(
Das WebIF von Horst an sich zu ändern dürfte nicht weiter schwierig sein, nur WIE Horst dann diese Config zu Herta schiebt ist noch zu analysieren... feel free :)
Wegen des ssh-Tunnels: habe inzwischen rausgefunden dass ich das Webinterface von Herta auch OHNE den Tunnel einfach über
http://192.0.2.1:8080
erreichen kann, also Hertas Adresse im privaten Netzwerk zwischen Horst und Herta; anscheinend routed Herta vom LAN auch da rein... *Allerdings* hab ich sowohl Horst (openhorst firmware) als auch Herta (mit obigen Mod) mit alternativen Firmwares laufen, ob das mit den Stock-Firmwares auch funktioniert kann ich nicht sagen.

Gruss,
H.
 
horatio42 schrieb:
Ich poste demnächt mal ein Tutorial wie man Herta über den ADAM2-Bootloader flasht wenn man nicht mehr an das Web-IF rankommt

Hallo,

Bei mir ist jetzt genau dieser Fall eingetreten, dass ich das Web-IF von Herta nicht mehr erreichen kann. Kann mir jemand kurz erläutern wie ich über den ADAM2-Bootloader die Herta-FW wieder einspielen kann?
Danke!

Gruss,
Pette
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.