[Gelöst] Bekomme Fehlermeldung INSTALL_WRONG_HARDWARE beim Versuch Freetz auf einer 7490 zu aktualisieren.

R0cket

Mitglied
Mitglied seit
20 Sep 2009
Beiträge
433
Punkte für Reaktionen
7
Punkte
18
EDIT Lösung: Stock 6.03 recovery nutzen um auf pre signature check image zu kommen und dann über stock updater das freetz image flashen.


Hallo,

ich habe auf meiner FB 7490 ein freetz aus dem januar installiert und habe heute ein aktuelles aus git ausgecheckt und beim aktualisieren kommt die folgende Fehlermeldung:


Code:
install: have Kernel 3.10.107 - set kversion '3.10' and FlashUpdateTool '/lib/modules/3.10.107/kernel/drivers/char/flash_update/flash_update.ko'
install: check and install new firmware ...
OEM=
ANNEX=B
testing acceptance for device Fritz_Box_HW185 ...
/etc/version: line 17: syntax error: unexpected ";;" (expecting "fi")
testing acceptance for device Fritz_Box_HW185 done
error: installype not korrket
set INFO led to off (modul=7, state=1)

Code:
ERLEDIGT – Rückgabewert des Installationsskripts: 2 (INSTALL_WRONG_HARDWARE)

Von /var/post_install generierter Inhalt:

Fehler: Nach-Installationsskript nicht gefunden oder nicht ausführbar.

Und es findet kein Update statt.

Was ist das Problem hier?
 
Zuletzt bearbeitet:
Klingt für mich nach einer ungültigen Modifikation der "/etc/version" - die sollte eigentlich seit https://github.com/Freetz/freetz/co...a3789270508945062fe0b75ce9a8822084754ae4ac24f Geschichte sein.

Einfach mal "/etc/version" von Hand aufrufen oder - noch besser - die "/etc/version" hier in Code-Tags vorzeigen (ist eher kurz). Mir fehlt im Moment etwas die Phantasie, wie die (nach irgendwelchen Änderungen durch Freetz oder durch Dich selbst) wohl aussehen mag - auf jeden Fall ist sie syntaktisch nicht korrekt, wie man an der Fehlermeldung sehen kann. Und da das bei AVM noch anders ist, kann das eigentlich nur an irgendwelchen nachträglich eingeschleppten Problemen liegen ...
 
Das ist der Inhalt von "/etc/version" auf der 7490:

Code:
#!/bin/sh

SILENT=y
. /etc/init.d/rc.conf

if [ -z "$1" ]
then
    echo "${CONFIG_VERSION_MAJOR}.${CONFIG_VERSION}"
    exit 0
fi

for i in "$@"
do
    case $i in
        -v | --version)
            echo "${CONFIG_VERSION_MAJOR}.${CONFIG_VERSION}"
            ;;
        -vsub | --subversion)
            echo "$CONFIG_SUBVERSION"
            ;;
        --project)
            if [ "$CONFIG_BUILDDIRTY" = "1" ]
            then
                echo "${CONFIG_BUILDNUMBER}M"
            else
                echo "${CONFIG_BUILDNUMBER}"
            fi
            ;;
        -vcvc | --cvcversion)
            echo "$CVC_FIRMWARE_VERSION"
            ;;
        -d | --date)
            stat -c '%y' /etc/version | \
                sed 's/^\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\) \(.\+\)\..*/\3.\2.\1 \4/g'
            ;;
        --install=${CONFIG_INSTALL_TYPE})
            echo "korrekt install type: ${CONFIG_INSTALL_TYPE}"
            ;;
        *)
            echo "install type not korrekt: ${CONFIG_INSTALL_TYPE}"
            exit 1
            ;;
    esac
done
 
Das ist ja eine unveränderte Datei. Wenn diese tatsächlich so aufgerufen würde, sollte es den Fehler gar nicht geben. Ich hätte vielleicht besser "und" schreiben sollen weiter oben, wie sieht denn der Aufruf dieser Datei aus? Wenn das einen Fehler ergibt, kann/muß man da auch gleich die Debug-Ausgaben dazupacken. Und wenn man sie aufrufen kann (auf der Box natürlich), ist parallel auch sichergestellt, daß es sich tatsächlich um die "aktuelle" aus dem laufenden System handelt.

Der Fehler oben deutet auf falsch gesetzte "quotes" hin, wo das Ende von Zeile 16 auch das Ende einer Zeichenkette ist, die sich davor über das "case" bzw. den Fall für "version" in diesem "case" hinaus erstreckt und da dieses Konstrukt nicht richtig erkannt wurde, stellt das ";;", was es nur in diesem Kontext in der Syntax gibt, einen Syntax-Fehler dar.
 
Code:
BusyBox v1.27.2 built-in shell (ash)

root@fritz:/var/mod/root# /etc/version
113.07.12
root@fritz:/var/mod/root#


Was mich wundert ist dass das Problem doch auch bei anderen auftreten müsste und daher schon längst bekannt und behoben sein sollte oder? Bin ich der einzige, der noch ein image für die 7490 kompiliert?

Was sollte diese Datei auch verändern?
 
Zuletzt bearbeitet:
Das war/ist es ja eigentlich auch ... also "behoben" - siehe der oben verlinkte Patch. Warum da bei Dir nun irgendeine andere Version am Start ist, kann man halt nur raten. Mein einziger Tipp wäre es eben noch, daß es sich tatsächlich um die "/etc/version" aus dem laufenden System und nicht um die aus dem neuen Image handelt, wenn es von der "/var/install" aufgerufen wird - das muß man beim "Nachsehen" berücksichtigen. Solange die "quotes" in der Datei stimmen (und das tun sie dem Augenschein nach), sollte es nicht zum o.a. Fehler kommen.

Wobei das noch nicht heißt, daß die Prüfung über die "/etc/version" dann problemlos funktionieren muß ... da wird ja der aktuelle Wert von "CONFIG_INSTALL_TYPE" aus dem Environment ausgewertet und wenn der leer oder falsch ist, dann käme es auch zum "default case". Nur erklärt das dann den Fehler in Zeile 17 noch nicht ... der sorgt dann hier für den vorzeitigen Abbruch und damit wird (in der "/var/install" von AVM) die Variable "korrekt_version" nicht auf "1" gesetzt, woraufhin der gesamte Installationsvorgang abgebrochen wird.

Daß es sich nicht um den "Normalfall" handelt, hast Du ja offenbar selbst bemerkt (so kann man Deine Verwunderung in #5 ja deuten) ... was Du da aber geändert hast, welche merkwürdige Kombination aus altem und neuem System das Problem verursacht und ob es sich überhaupt um Freetz oder doch um Freetz-NG handelt, muß man raten. So wird das nicht wirklich etwas werden bzw. es ist deutlich zu mühsam, sich dem Problem (in ausreichend großen Schritten) zu nähern.

Vielleicht installierst Du einfach über den Bootloader und wenn das weiterhin auftreten sollte (beim nächsten Update), mußt Du dann halt passend suchen. Dabei kann es natürlich helfen, wenn man schon frühzeitig entsprechende Vorkehrungen trifft. Der Aufruf der "/var/install" an dieser Stelle: https://github.com/Freetz/freetz/bl...es/root/usr/lib/mww/do_update_handler.sh#L178 ist natürlich auch mit aktiviertem Debugging machbar - nur muß man das schon beim Bau des vorhergehenden Images berücksichtigen, weil diese Datei ja beim Update aus dem laufenden System genutzt wird.
 
Es handelt sich um das nicht "NG" freetz. Und ich habe eine ganze Reihe weiterer Packages ausgewählt und wollte nun ein Maximal image installieren. Vorher habe ich nur dropbear sslh und stunnel drauf gehabt.

Das kompilieren geht problemlos.

Was dabei nun den fehler bei der installation verursachen soll kann ich nicht erklären.

Auf dem selben Wege habe ich ein Maximal image für meine 7590 kompiliert und installiert und das lief problemlos.
 
Also meine 7490 mekert nicht.
Poste bitte mal deine .config, dann Bau ich das mal nach und teste es gerne auf meiner 7490.

Mit welchem System wurde es gebaut ?
Freetz :
Code:
git clone https://github.com/freetz/freetz.git freetz
Freetz-NG :
Code:
git clone https://gitlab.com/Freetz-NG/freetz-ng ~/freetz
 
Zuletzt bearbeitet:
Mit der config wird aber eine 7490.113.06.93 gebaut. Was war das Ziel ? 7.12 oder 7.21 ?
 
Sorry ich habe da etwas rumgespielt in den EInstellungen. Ich will natürlich die 7.12 bauen. Wähle einfach 7.12 aus.SOnst habe ich nichts geändert. Wenn die 7.21 schon geht, dann natürlich die, aber die kann ich in menuconfig gar nicht auswählen.
 
@gismotro:
Du weißt aber schon, daß Du zum richtigen Testen das "vorhergehende" Image installieren und dann ein Update auf das neue Image machen müßtest? Bei der Installation spielen die Dateien aus dem neuen Image nur eine untergeordnete Rolle bzw. es handelt sich um ein "Zusammenspiel" aus bestehender (/etc/version --install=<something>) und neuer (/var/install) Firmware und wenn die nicht zueinander passen, dann gibt es diesen Fehler auch dann, wenn die "/etc/version" im laufenden System syntaktisch in Ordnung ist ... was sie nach #1 ja hier offenbar nicht ist.

Mir ist es ja egal, womit Ihr Eure Zeit verschwenden wollt ... aber die Tatsache, daß es sich um ein "singuläres Problem" handelt und man ja auch einfach über EVA installieren kann, läßt mich an der Sinnhaftigkeit einer weiteren Fehlersuche ernsthaft zweifeln - zumal man dafür eben tatsächlich das Image bräuchte, was da im Januar auf die Box gebracht wurde (nach #1). Erst dann, wenn das wirklich noch existiert, macht es überhaupt irgendeinen Sinn, nach der Ursache zu suchen - zumindest in meinen Augen.

@R0cket:
Dann ist die Anzeige wohl falsch ... oder Du hast die falsche Datei bereitgestellt. Denn an deren Inhalt:
Code:
# FREETZ_TYPE_FIRMWARE_06_8X is not set
FREETZ_TYPE_FIRMWARE_06_9X=y
# FREETZ_TYPE_FIRMWARE_07_0X is not set
# FREETZ_TYPE_FIRMWARE_07_1X is not set
gibt es keinen (vernünftigen) Zweifel.

EDIT:
@gismotro:
Da es hier ja um Freetz (ohne -NG) geht, erübrigt sich die Frage nach der 07.21.
 
  • Like
Reaktionen: gismotro
Du weißt aber schon, daß Du zum richtigen Testen das "vorhergehende" Image installieren und dann ein Update auf das neue Image machen müßtest?
[...]
Nein, hatte ich nicht dran gedacht. Danke für den Tip.
Da es hier ja um Freetz (ohne -NG) geht, erübrigt sich die Frage nach der 07.21.
ja, hab es gerade gesehen das es die git version vom Freetz ist.
Ich hatte meine Frage aber schon gestellt bevor die .config geliefert wurde.
 
Du weißt aber schon, daß Du zum richtigen Testen das "vorhergehende" Image installieren und dann ein Update auf das neue Image machen müßtest?
[...]

Deshalb habe ich auch versucht auf eine alte Stock firmware die noch nicht signiert war downzugraden, um dann die aktuelle freetz draufzu flashen, das endet aber auch mit fehlermeldung.


Das lästige an bootloader flash ist, dass ich die Fritzbox anfassen muss und aus der Verkabelung befreien muss. Ich hätte viel lieber alls vom browser aus gemacht, was eleganter wäre. Und zudem ist die 7490 nur meine zweit Box und die 192.168.178.1 ist die 7590 , und wenn ich mit den scripten arbeiten will, landen die alle auf der 7590, weil adam auf 192.168.178.1 läuft. Es ist super lästig!

Mich würde es aber schon interessieren, wo hier was schief gelaufen ist. Ich habe schließlich nichts ungewöhnliches gemacht. Ich will nicht immer über boot loader updaten müssen.

Meint ihr es würde was bringen ein NG image zu kompilen und flashen?
 
Zuletzt bearbeitet:
weil adam auf 192.168.178.1 läuft
Ich weiß nicht, wer Dir das eingeredet hat. Das ist zwar die "Standardeinstellung", aber sowie eine FRITZ!Box per Kabel beim Start erreichbar ist (und nicht nur über WLAN, was beim Start (im Bootloader) logischerweise noch nicht funktioniert), kann man ihr jede beliebige IP-Adresse geben (lassen) und dann kann man selbst in einer Installation mit 20+ FRITZ!Boxen noch gezielt auf eine einzelne (auch im Bootloader) zugreifen, solange nicht mehr als eine FRITZ!Box gleichzeitig neu gestartet wird (dann wird es etwas "wilder", wäre aber dank MAC-Adressen selbst dann immer noch handhabbar).

Wenn Du tatsächlich wissen wolltest, was hier schief läuft (mit der Konfiguration für eine 06.93 hast Du die Verwirrung ja selbst perfekt gemacht), dann müßtest Du das halt mal "tracen", was da bei Aufruf der "/etc/version" aus der "/var/install" heraus passiert. Auch das ist kein Hexenwerk (man könnte sogar - wenn man Freetz hat, hat man ja meist auch Likör (nein, das war doch irgendwas mit Sorgen) Shell-Zugriff - die Ausführung mit "set -x" nachträglich einrichten, indem man passende "bind"-Mounts verwendet) ... nur wird "CB based research" eher ungenau sein.

Da sind also "manche Ungenauigkeiten" in #14 - das geht dann so weit, daß man sich unter
Deshalb habe ich auch versucht auf eine alte Stock firmware die noch nicht signiert war downzugraden, um dann die aktuelle freetz draufzu flashen, das endet aber auch mit fehlermeldung.
auch irgendetwas vorstellen kann, was keineswegs mit der Wirklichkeit übereinstimmen muß.

Aber wenn ich so etwas lese (leider mal wieder erst im Beitrag 14 in einem "Problem-Thread"), dann fällt mir auch ein, daß genau dieser "Downgrade-Mechanismus" im Freetz (in der originalen Firmware gibt's den ja seit 06.51 nicht mehr und man müßte zum Recovery-Programm greifen oder eben doch über den Bootloader installieren) schon sehr, sehr, sehr, sehr, sehr komisch arbeitet und mit seinem Ansatz, die Firmware-Version zu ändern (https://github.com/Freetz/freetz/blob/master/make/mod/files/root/usr/bin/prepare-downgrade) exakt zu einer solchen ungültigen "/etc/version" führt, wenn er mit einer neueren Firmware (wo die "/etc/version" einen anderen Aufbau hat) verwendet wird.
Rich (BBCode):
vidar:/tmp/etcversion $ diff -u version version_2
--- version     2020-11-03 00:06:19.809996176 +0100
+++ version_2   2020-11-03 00:08:04.753654647 +0100
@@ -5,7 +5,7 @@

 if [ -z "$1" ]
 then
-    echo "${CONFIG_VERSION_MAJOR}.${CONFIG_VERSION}"
+    echo "${CONFIG_VERSION_MAJOR}.01.01
     exit 0
 fi

@@ -13,7 +13,7 @@
 do
     case $i in
         -v | --version)
-            echo "${CONFIG_VERSION_MAJOR}.${CONFIG_VERSION}"
+            echo "${CONFIG_VERSION_MAJOR}.01.01
             ;;
         -vsub | --subversion)
             echo "$CONFIG_SUBVERSION"
vidar:/tmp/etcversion $
Nach der Ausführung von "prepare-downgrade" ist da also die "/etc/version" mit einer Version (per "bind"-Mount) ersetzt, die exakt die oben von mir beschriebene "Schwäche" (nämlich das Fehlen von korrekten "quotes") hat. Läßt man diese Checkbox einfach unangetastet, sollte auch das Update wieder funktionieren ... ggf. auch erst nach einem Neustart, wo dann wieder die "originale" "/etc/version" zum Einsatz kommt. Ich warne nicht umsonst seit längerer Zeit immer wieder, daß man bei der Verwendung des Freetz-Updates schon sehr genau wissen sollte, was man da eigentlich macht und daß der Weg über die selbstsignierte Firmware (die kann man dann auch über das AVM-GUI einspielen) oder den Bootloader der deutlich passendere wäre.

Hättest Du das jedenfalls einfach gleich von Beginn an richtig beschrieben, was Du da tatsächlich machst, wäre man sicherlich auch schneller zu diesem Schluß gekommen. Ob das nun letztendlich schon "die Lösung" ist oder nicht, sei mal dahingestellt (mir fehlt die Phantasie, was Du da noch alles gemacht haben könntest, das Du ebenfalls nicht erwähnt hast) ... ich fände es trotzdem gut (bzw. sogar besser), wenn Du einiges von dem, was für Dich offenbar "feststeht", einfach noch einmal durch Nachlesen oder Überprüfen der eigenen Herangehensweise hinterfragen würdest - das gilt in #14 eben insbesondere im Hinblick auf Deine (falschen) Annahmen zum Bootloader einer 7490.

Der Nächste liest das dann und denkt am Ende, das wäre tatsächlich so ... und macht sich dann jede Menge zusätzliche Arbeit, anstatt einfach mal selbst zu suchen, ob er nicht vielleicht doch eine der korrekten Beschreibungen finden kann.
 
Deshalb habe ich auch versucht auf eine alte Stock firmware die noch nicht signiert war downzugraden,
Die Images der "Stock-Firmwares" von AVM für die 7490 waren schon immer signiert. Auch noch ältere Firmware-Images bspw. von der 7170 waren bereits signiert.

Ich hätte viel lieber alls vom browser aus gemacht, was eleganter wäre.
Hast du deine eigenen (Freetz)-Images etwa nicht signiert? Das wäre sicherlich "elegant".
 
Das wirklich Putzige an diesem ganzen Thread ist es ja, daß ich exakt die hier ventilierten Themen mit exakt denselben Leuten schon vor 10 Monaten am Wickel hatte und damit dachte, das wäre "ausdiskutiert".

In diesem Thread: https://www.ip-phone-forum.de/threa...-auf-7490-und-7590-flashen-stand-2019.305468/ geht es ja um eine Anleitung von @R0cket, wie man die Firmware auf die 7490 oder 7590 flashen solle.

Schon dabei war es Thema, wofür denn nun die Skript-Dateien für "Discovery" dienen würden ... und das ist ja exakt der Punkt, der das Flashen von FRITZ!Boxen in einer existierenden Verkabelung auch dann ermöglicht, wenn es mehr als eine davon gibt - also genau das, was nach #14 (immer noch) ein Problem darstellen soll. Was aber nach meiner festen Überzeugung nur dann gilt, wenn man es nicht begriffen hat, wofür diese "Discovery-Skripte" (es gibt sie ja sowohl für Windows als auch für Linux) eigentlich gut sind oder wenn es einem partout nicht gelingen will, diese richtig(!) zu benutzen.

Auch vor 10 Monaten war das Signieren der eigenen Images und wofür es eigentlich gut ist (eben damit man die über das AVM-GUI installieren kann und nicht das Freetz-GUI nutzen muß), ein weiteres Thema und wenn man sich bis zum Ende der ersten Seite dort vorgekämpft hat, kann man da auch nachlesen, daß ich exakt vor dem Problem beim Downgrade über das Freetz-GUI ausdrücklich gewarnt hatte und auf das zu erwartende Ergebnis - und zwar auch explizit mit dem Adressaten @R0cket - aufmerksam gemacht hatte (https://www.ip-phone-forum.de/threa...d-7590-flashen-stand-2019.305468/post-2352807, dritter Absatz).

Das war auch der Grund dafür, warum ich in diesem Thread am Beginn überhaupt nicht auf die Idee gekommen wäre, daß er das trotzdem mit einem Downgrade angegangen sein könnte.
 
  • Like
Reaktionen: NDiIPP
Ja, OK aber man konnte dann, wenn die Prüfung fehl schlägt, trotzdem installieren.
 
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.