[Frage] Update auf neue Version FB6591

Was das programmieren betrifft, die "Fortschrittsanzeige" sieht man in den log-messages die auf die erste login-konsole umgeleitet werden. Vielleicht geht daraus was hervor. Generell werden alle Partitionen (fuer ARM und Atom) vom Atom aus programmiert.
 
Ich meinte mit "Referenz" auch eher die Erwähnung des Nicknames, die eine Benachrichtigung nach sich zieht, so daß Du auf den Thread aufmerksam gemacht wirst.

Obendrein krieg(t)e ich die verschiedenen Repos halt auch nicht zusammen (kann BitBucket keine "submodules" verwalten?) und habe mich nur an die zwei erinnert, zumal da im GitHub auch keine weiteren Repos vermerkt waren/sind (oder ich habe es nicht richtig "erkannt").



Generell werden alle Partitionen (fuer ARM und Atom) vom Atom aus programmiert.
Und was macht dann der pumaglued (der kriegt ja von burnuimg das "Kommando", wie man oben sieht in der Ausgabe vom burnuimg) in dieser Konstruktion? Den gibt es ja nur auf dem ARM-Core und wenn das Protokoll nicht ein sehr, sehr merkwürdiges Format verwendet, dann stellt auch der ARM-Core das Problem fest.

Vielleicht hat AVM da ja auch geändert ggü. den Versionen, wo Du das zum ersten Mal getestet hast? Wäre ja nicht das erste Modell - aber anhand der Dateinamen (was soll burnuimg denn sonst sein) und des Inhalts dieser Binärdatei, würde ich ein "Schreiben" in irgendeine eMMC-Partition durch dieses Programm praktisch ausschließen. Das hat gar nicht die erforderlichen Konstanten (angefangen bei der /proc/avm_partitions, um das Ziel zu verifizieren, bis hin zu den Namen für die Partitionen, denn irgendwie muß man die auch zum Schreiben öffnen können und selbst wenn man den Device-Namen im procfs (eben in avm_partitions) findet, muß man ja noch wissen, welche Zeile davon man braucht) in der Datei.

Die Fehlermeldung von oben findet sich dann auch im /sbin/pumaglued für den ARM-Core, genauso wie das hier:
Rich (BBCode):
vidar:/home/FritzBox/FB6591/ARM $ strings sbin/pumaglued | grep "uimg\|sector"
uimg: using new update functionality
uimg: REBOOT now
Invalid sector "%s".
uimg: %s starting ...
/usr/sbin/avm_uimg_update
uimg: %s started.
uimg: update finished - %s%s
uimg: switch aid failed (%d)
uimg: switched, rebooting ...
uimg
vidar:/home/FritzBox/FB6591/ARM $
Der nächste Schritt (bei der Suche nach der richtigen Reihenfolge) wäre also wohl der Blick in die /usr/sbin/avm_uimg_update auf dem ARM-Core.
 
Zuletzt bearbeitet:
kann BitBucket keine "submodules" verwalten
Doch, ich muss es nur mal machen

Und was macht dann der pumaglued
Da kann ich auch nur vermuten. Ich denke der macht das eigentliche flashen und produziert auch die besagten log ausgaben. Auf jeden fall hat der Atom vollen Zugriff auf flash und emmc, man kann ja auch im UEFI die firmware updaten, da läuft nur der Atom. Ich koennte mir sogar vorstellen dass der pumaglued direkt UEFI runtime methoden aufruft.(Edit: Das ist unfug)
 
Zuletzt bearbeitet:
Wie es aussieht, hat AVM das DOCSIS-Update-Tool von Intel aus dem SDK entsprechend aufgebohrt:
Rich (BBCode):
vidar:/home/FritzBox/FB6591/ARM $ strings usr/sbin/avm_uimg_update | grep -C 5 "avm"
  -d <dest point>  Destination for ICC
  -n               download non-secured image
Error: swdl2 expect between 6 to 9 parameters.
Error: swdl2 expect sector to be 1 or 2
Error: Unknown option
avm_uimg_update
DOCSIS UIMG Update utility
avm_uimg_update - Perform CM SW Upgrade from UIMG
Usage:
avm_uimg_update <sector> [<filename>]
  sector           Destination sector (1 or 2) on Flash.
  filename         filename of UIMG file.
docsis_dl_box is a multi-call binary that combines several common
DOCSIS S/W Upgrade utilities into a single executable.
Use this utility only via the following symbol links:
  /usr/sbin/ddl
  /usr/sbin/cmdl
  /usr/sbin/swdl2
  /usr/sbin/avm_uimg_update
Failed.
Failed - System Error
Failed - Read Error
Failed - Write Error
Failed - Network Error
--
cmd_type
stderr
DOCSIS_DBG_D31_DISABLE_SWITCH_DIPLEXER_BAND_EDGE
strncmp
_IO_buf_end
print_avm_uimg_update_usage
DOCSIS_DBG_DEF_SNMP_ACC_NMACC
DOCSIS_DBG_D31_INIT_TIME_FROM_FILE_DBG
DOCSIS_DBG_FORCE_TCC_WO_RCC_OK
DOCSIS_DBG_NO_MAC_REINIT
_SWDL_MGR_TRIGGER
--
STATUS_ERROR_OPERATION_NOT_PERMITTED
short unsigned int
CTX_BPI_SA_MAP
long double
DOCSIS_DBG_IGNORE_IUC3_T4_RESTART
main_avm_uimg_update
CTX_LED
DOCSIS_END_OF_SUBCARRIER_MOD
DOCSIS_SUBCARRIER_MOD_2048_QAM
CTX_TUNER_INIT
DOCSIS_DBG_IGNORE_DCC_ACK
vidar:/home/FritzBox/FB6591/ARM $
und da findet sich dann auch gleich die Erklärung, was dieser ominöse "sector" eigentlich sein soll - nur noch keine, was -1 ist und warum das der pumaglued nicht korrekt versteht, falls es "schau gefälligst selbst nach und nimm das inaktive System" heißen sollte.

EDIT: Denkbar allerdings, daß jeder Core seine eigenen Dateien flasht ... andererseits auch wieder "kompliziert", weil dann auch der ARM-Core (bei einem Update per DOCSIS) wieder den ATOM-Core zum Update kriegen müßte. Dort gibt es dann allerdings auch wieder den Daemon für das "firmware update trace" - aber der wird (so wie ich das bisher sehe, anhand dessen, was ich in den Dateien finde - und dabei interessiert mich Puma7 nicht mal wirklich) auch nur kurz befragt und kann das noch ablehnen, wenn es eine Retail-Box ist (da hat AVM vermutlich tatsächlich eine Abfrage als Sperre eingebaut). Ansonsten finde ich auf dem ATOM-Core (ich habe eine 07.27 entpackt) nichts, was die neue Firmware selbst in die eMMC-Partitionen schreiben würde - und ich kann mir (s.o.) auch nur schwer vorstellen, daß AVM die notwendigen Entwicklungen für diese Updates (wenn beide Cores vollen Zugriff auf die eMMC-Partitionen haben, was beim Update des inaktiven Systems auch keinerlei Problem sein sollte) gleich zweimal ausführt.

Zwar ist das beim Puma7 schon "speziell", aber wenn man (offensichtlich) die Update-Funktionen auf das Intel-Tools "ausgelagert" hat, was auf dem CM ohnehin vorhanden ist (das hat AVM schon immer an eigene Vorlieben angepaßt), dann gibt es auch keinen (auf den ersten Blick plausiblen) Grund, das auf dem ATOM-Core noch einmal zu implementieren (selbst wenn die neue "Art" ggf. ein zuvor genutztes Vorgehen abgelöst haben sollte).
 
Zuletzt bearbeitet:
@Ajari:
Welchen Wert für linux_fs_start hat Deine Box eigentlich gerade aktiv? Ich überlege halt, wie es zu dem Wert -1 kommen könnte bei irgendeiner Berechnung ... und da wäre es für sinnvolle Spekulationen (über die von AVM vielleicht verwendete "Formel") interessant zu wissen, was der Ausgangswert ist. Außerdem könntest Du (wenn Dir nichts Besseres einfällt) auch mal schauen, was eigentlich beim burnuimg passiert, wenn beim Booten der Box das andere System aktiviert war (Du linux_fs_start also geändert hast).

Das mit dem sector hat sich AVM offenbar vom Intel-Tool abgeschaut (findet sich auch beim swdl2) ... nur gibt es da jetzt offenbar 1 und 2 als Wertevorrat, während linux_fs_start ja i.d.R. 0 und 1 verwendet. Das muß man nun irgendwie "umrechnen" und dann kommt noch dazu, daß man hier das gerade inaktive System haben will.

Das kann man mit irgendwelchen Berechnungen machen (dann könnte im ungünstigen Fall auch mal eine -1 daraus werden, wenn die Berechnung nicht stimmt) oder direkt mit Vergleich (wenn 0, dann sector=1 bzw. wenn 1, dann sector=2). Keine Ahnung, wie AVM das am Ende praktiziert - aber Tests mit den möglichen Werten könnten zumindest Hinweise darauf ergeben und vielleicht klappt es mit dem alternativen Wert sogar wieder mit dem Aufruf von burnuimg - das -1 für das zu flashende System steht ja offenbar nicht mit im uimg update-Kommando an den pumaglued und wird wohl erst von diesem "hinzugefügt" bzw. angenommen. Entweder generell, wenn das Kommando vom ATOM-Core kommt (weil dann eigentlich nur ein Update des inaktiven Systems in Frage kommt) oder als eigene Voreinstellung oder, oder, oder ... spannend wäre es, ob es noch andere Werte gibt, die mit "invalid sector" abgelehnt werden (wenn der Aufruf vom pumaglued erfolgt).
 
Ich denke /var/remote stimmt immer noch. Ich bewege mich eher holprig in der Linmux Welt und bin da nicht soo geübt wo man was wie am besten macht. Bin halt (leider) eher der Windows Typ.
Zur Kontrolle mal die /etc/init.d/E16-filesystem-update

#!/bin/sh
set -e
msg_noclear() {
local prefix
local newline=
if [ "$1" = "-n" ] ; then
newline=-n
shift
fi
case "$1" in
"fail") prefix="\r\e[m[\e[31;1m$1\e[m] \e[31m" ; shift ;;
"done") prefix="\r\e[m[\e[32m$1\e[m] " ; shift ;;
"warn") prefix="\r\e[m[\e[33m$1\e[m] \e[33;1m" ; shift ;;
"info") prefix="\r\e[m[\e[36m$1\e[m] " ; shift ;;
*) prefix=""
esac
echo ${newline:+"${newline}"} -e ${prefix:+"${prefix}"} "$@" "\e[1D\e[m" >&2
}
msg() {
msg_noclear "$@" "\e[1D\e[K"
}
fail() {
msg fail "${0##*/}: script execution failed abnormally!"
exit 1
}
trap fail EXIT
msg -n info "Checking for update scratch partition: "
## locate and clear update tmp partition ('^update_tmp=*' from /proc/avm_partitions) ########
## Get partition-info
AvmPartitionInfo="/proc/avm_partitions"
if [ -e "${AvmPartitionInfo}" ]; then
mtd_updtmp=$(sed -ne 's,^update_tmp=,,p' < ${AvmPartitionInfo})
msg "${mtd_updtmp}"
else
AvmPartitionInfo=""
mtd_updtmp=""
msg "not available"
fi
mountpoint="/var/remote"
prepare_and_mount_scratch_partition() {
## Note: mkfs option force '-F' needed to overwite existing ext4 with newer
## E2fsprogs 1.43 (May 17, 2016)
## 'The mke2fs command will now ask the user for confirmation if
## block device or image file contains an existing file system image,
## and stdout and stdin are connected to a tty.'
local umask_save=$(umask)
local fs="ext4"
local nand_erasestring="mkfs -F -t ${fs} -q -m 0 ${mtd_updtmp}"
msg info "Clearing update scratch partition:"
if ! ${nand_erasestring} ; then
msg fail "Filesystem creation on ${mtd_updtmp} failed (${nand_erasestring})"
return 1
fi
umask 0
if mount -t ${fs} "${mtd_updtmp}" "${mountpoint}" ; then
chmod 775 "${mountpoint}"
msg "done" "Mounted update scratch partition (${mountpoint})."
else
msg fail "Mounting update scratch partition failed"
return 1
fi
umask "${umask_save}"
return 0
}
scratch_partition_is_not_available() {
if [ -z "${mtd_updtmp}" ] || [ ! -e "${mtd_updtmp}" ] || [ ! -b "${mtd_updtmp}" ] ; then
msg warn "Temporary update scratch partition is not available"
return 0
fi
return 1
}
mount_ramdisk() {
fs="tmpfs"
if mount -t "${fs}" no-scratch "${mountpoint}" ; then
msg "done" "Mounted ${fs} as update scratch partition to ${mountpoint}"
return 0
fi
msg fail "Unable to mount ${fs} as update scratch partition replacement"
return 1
}
arch=$(uname -m)
mkdir -p "${mountpoint}"
chmod 775 "${mountpoint}"
if [[ $arch != i686 ]] || \
scratch_partition_is_not_available || \
! prepare_and_mount_scratch_partition ; then
mount_ramdisk
fi
ret=$?
trap EXIT
exit $ret
## vim: set ft=sh noet ts=8 sw=8:

Bei mir ist linux_fs_start=1 aktiv. Ich würde den auch mal auf 0 setzen, bin mir aber unschlüssig ob das funktioniert da mir FritzOS UNKNOWN für diese Partition angezeigt wird. Habe leider keine Recovery falls die Box nicht mehr booten will. Ich vermute zwar mal das man dann trotzdem die Partition wieder auf 1 über ADAM setzen kann. Würde sich dann eigentlich überhaupt ein freetz-ng Image flashen lassen auf der anderen Partition oder hab ich das gerade alles völlig falsch verstanden?

Als kleine Anmerkung schonmal, ich werde wohl frühstens morgen Abend oder Übermorgen wieder dazu kommen etwas zu kontrollieren.
 
Über EVA sollte sich - wenn Du ein System installieren konntest - auch das andere auf die Box bringen lassen. Oder hast Du tatsächlich bisher immer nur ein einzelnes System auf der Box benutzt?

Irgendwo gibt es doch für die Puma7-Boxen auch eine Auflistung/Anleitung, welcher MTD-Name im Bootloader für welche Partition steht - ja, das war iirc sogar das Modell, wo diese Namen dann Sonderzeichen enthalten, weil einfach die ASCII-Tabelle "durchlaufen" wird bei den Nummern und dann nach der 9 die ersten Sonderzeichen folgen. Zwar weiß ich auch nicht (ohne es erst zu suchen und das schaffst Du sicherlich alleine), wo das zu finden war - vermutlich wird sogar push-firmware aus Freetz-NG das irgendwo in Form von Code enthalten. Ich kann mich nur an irgendeine Stelle im 6591-Thread erinnern, wo es um das korrekte "Escapen" dieser Namen ging, wenn man einen "echten" FTP-Client benutzt.



Das mit der E16-filesystem-update war auch nur der Wink mit dem Zaunfeld, wo man das alles ganz exakt selbst nachlesen könnte (und sollte) - ich habe nicht immer Bock darauf, jeden Tipp, wo's eigentlich nur um ein Prinzip geht, durch eigenes "Nachsehen" in den Daten zu verifizieren (und dann stimmt schon mal ein Datei- oder Pfadname nicht, wie es bei /var/tmp/remote der Fall war oben) oder gar einen Link heraus zu suchen oder Teile aus solchen Dateien zu "zitieren" und/oder zu zeigen und deshalb schreibe ich dann ein "abschwächendes" "iirc" oder "m.W." o.ä. dazu.

Aber alles, was in den originalen AVM-Images enthalten ist (egal, ob auf dem ATOM- oder dem ARM-Core), kann ich mir (wie jeder andere Interessent auch) schon selbst ansehen (wenn ich es auch will), wie ein paar CODE-Kästen oben ja belegen. Es gibt auch keinen offensichtlichen Grund, warum sich die Datei in Deinem Image von der bei AVM vorhandenen unterscheiden sollte und es gibt (oben auch angemerkt) sogar zwei dieser E16-filesystem-update - auf jedem System jeweils eine.



Da dieses "invalid sector" offenbar ja nun doch nichts mit dem Aufbau der uimg-Datei zu tun hat, ist ja auch das Tool dafür als Ursache gleich wieder raus aus dem Rennen. Das Image enthält ja nur fünf Parts:
Rich (BBCode):
vidar:/home/FritzBox/FB6591 $ uimg -i firmware-update.uimg
Identifier: Intel_Unified_Image
Vermagic: 0x33524556 (VER3)
Timestamp (dd.mm.yyyy hh:mm:ss): 01.06.2021 09:58:12
partition_02_ATOM_KERNEL.bin size=9437184 crc=0x24023fba
partition_03_ATOM_ROOTFS.bin size=28721152 crc=0x09c1d075
partition_08_ARM_KERNEL.bin size=2766336 crc=0xbc73e6e8
partition_09_ARM_ROOTFS.bin size=15876096 crc=0x0762a110
partition_10_GWFS.bin size=450560 crc=0x23397f12
vidar:/home/FritzBox/FB6591 $
und die reichen nicht aus, um damit auch zwei Systeme (also die zwei Partition-"Sets", die für die abwechselnde Benutzung beim Update üblicherweise verwendet werden) zu füllen.

Und da auch nicht klar ist, welche Box beim Update gerade welches dieser zwei Systeme aktiv hat (also ob linux_fs_start nun 0 oder 1 ist), kann der Wert auch nicht aus dem AVM-Image (oder dem "nachgebauten" von Freetz-NG) kommen. Daher MUSS der irgendwo auf der Box ermittelt werden - bleibt nur die Frage, wie dabei noch ein Fehler auftreten soll.

Was in dem Zusammenhang auch noch spannend wäre, ist tatsächlich mal ein Update über das GUI mit einer originalen AVM-Datei (man kann dann ja über linux_fs_start auch wieder auf den Stand vor dem Update zurück nach dem nächsten Start, das sollte m.W. zuverlässig funktionieren, s. 6591-Thread) ... klappt das, wäre die Frage, was dabei dann anders sein soll, als beim selbst zusammengeklöppelten uimg aus Freetz-NG.

So rein von der Logik her, sollte das eben keine Rolle spielen dürfen, denn ein Zusammenhang zwischen uimg-Datei und diesem "sector" (wenn die Annahme, daß das die Intel-Entsprechung für linux_fs_start ist, auch stimmt) ist eben nicht zu erwarten ... Begründung steht oben.

Was ich mir noch vorstellen KÖNNTE (ohne das testen zu können), wäre eine Steuerung der Auswahl dieses "sectors" vom ATOM-Core aus, weil es wieder einen Unterschied macht, ob die Box ein uimg im "Update-Modus" (dann in die Partitionen für das inaktive System mit Umschaltung nach erfolgreicher Installation) oder im "Recovery-Modus" (dann wieder direkt in die Partitionen für das aktive System, weil vermutlich auch dabei dann das System nicht aus den eMMC-Partitionen gestartet wurde und die damit auch überschrieben werden können) ausführen soll. Dann würde eine solche Festlegung vom ATOM-Core aus wieder Sinn ergeben und dieser Schritt könnte fehlen, wenn man das burnuimg "von Hand" aufruft.

Denn es ist nicht automatisch gesagt, daß der Fehler beim Update-Versuch durch firmwarecfg (da steht ja etwas von einem Status-Code von 5120 im Protokoll) auch derselbe ist, der beim "händischen Aufruf" von burnuimg aufgetreten ist - das ist bisher nur eine Vermutung. Dazu könnte/müßte man noch einmal den Exit-Code vom burnuimg anschauen - wobei da der Wertebereich eigentlich nur von 0 bis 255 (bzw. -1) geht, weil da eigentlich nur ein 8-Bit-Integer verwendet wird. Vermutlich wird dieser Status-Code dann doch irgendwo anders seine Quelle haben oder er ist eine Kombination aus zwei einzelnen 8-Bit-Werten - die hexadezimale Darstellung von 5120 (0x1400) würde das zumindest als Theorie hergeben. Daher wäre es nützlich, den Wert am Ende von burnuimg zu kennen - und spätestens, wenn man den burnuimg-Aufruf dann doch über einen Wrapper laufen lassen wollte, hätte man (solange man das Original dann nicht über exec startet) diesen Return-Code auch automatisch, wenn man ihn nur irgendwo protokolliert.

Es gibt auch noch andere Optionen, wie man sich weiter "herantasten" kann - nur wird das immer komplexer und man braucht auch immer mehr Linux-Kenntnisse. Da bin ich nach Deinen eigenen Ausführungen nicht mehr ganz so sicher, daß das die richtige Aufgabe für Dich wäre - denn ich kann (und will) nicht alles bis ins Detail erklären, sondern eher "Prinzipien" aufzeigen und Tipps/Hilfestellungen geben.

Von strace habe ich schon geschrieben und wie man auch ein CGI-Binary (und das ist firmwarecfg, wenn man es für ein Firmware-Update aufruft) direkt von der Shell aus testen kann (da müssen dann bestimmte Werte beim Aufruf im (Shell-)Environment vorhanden sein und ein passender Datenstrom auf STDIN bereitgestellt werden - das ist der Inhalt des POST-Requests beim CGI-Call), ist keine "rocket science" und wurde von mir u.a. für die direkte Aufzeichnung von Netzwerk-Mitschnitten auf dem USB-Speicher der FRITZ!Box auch schon mal "gezeigt" in irgendeinem Thread hier.

Mit dieser Kombination kann man sich dann auch ansehen, was da beim firmwarecfg noch so alles passiert (zumindest alles, was in einen Syscall mündet), bevor von dort dann das burnuimg aufgerufen wird - das wäre der bzw. ein Ansatz, wenn man die Theorie, daß das irgendwie "außerhalb" des burnuimg-Aufrufs festgelegt wird (und daher bei Deinem Aufruf nicht dabei war), überprüfen wollte. Außerdem kann man natürlich mit einem Shell-Skript als Wrapper um /sbin/burnuimg auch dafür sorgen, daß die Option -s, die wohl von firmwarecfg hinzugefügt wird beim Aufruf, wieder ausgefiltert wird und man kann auch die Ausgaben vom "echten" Aufruf von burnuimg dann wieder (ggf. auch nur zusätzlich mit tee) in Dateien umleiten, wo man sie genauer ansehen kann (und vor allem auch für genau den Aufruf, der von firmwarecfg aus erfolgt).

Wie gesagt - das wird alles zunehmend komplexer, weil es (nach dem, was @fesc oben geschrieben hat) bisher offenbar noch "unentdecktes Land" (Terra incognita) ist, wie das neue AVM-Update bei den Puma7-Boxen genau arbeitet. Daher gibt es da eben keine "fertigen" Lösungen und man muß sich Stück für Stück weiter herantasten, was natürlich mit passendem Grundlagenwissen für Linux auch deutlich leichter ist, als wenn man nur "Anweisungen" ausführt.

Daher mußt Du selbst wissen, wieviel Energie Du da noch hineinstecken willst (am Ende winkt beim Erfolg halt auch für andere die Option, signierte Images ohne den Weg über EVA oder das UEFI-BIOS installieren zu können) - ansonsten mußt Du dann damit leben, daß wohl doch nur der Weg über den Bootloader bleibt bei der Installation.

Wobei man den auch so gestalten kann, daß man dazu eine Box - solange sie über ein LAN-Kabel irgendwo angebunden ist - nicht erst ausbauen und direkt an einen PC anschließen muß ... auch das ist keine Raketen-Wissenschaft, man braucht nur die passenden Tools und afaik, ist das bei den Puma7-Modellen auch nichts anderes als bei anderen DOCSIS-Modellen von AVM, wenn's um den Kontakt mit EVA geht und die Anleitung dazu (yourfritz.de/desc-docsis), sollte auch bei der 6591 funktionieren - zumindest der Teil mit der Suche nach der richtigen Box.

Ob das mit push_firmware auch noch geht, wenn man die Box bereits im FTP-Modus vorfindet, weiß ich nicht - an dem Tool habe ich einige Kritikpunkte (gerade im Hinblick auf das Suchen und Finden der richtigen Box), die irgendwo hier auch zu finden sind in einem Thread. Aber man kann den Teil, der in push-firmware bei den Puma7-Modellen abläuft (https://github.com/Freetz-NG/freetz...78d9460b657998d5683e/tools/push_firmware#L260), ja auch mit anderen Tools ausführen - das ist ja nichts anderes, als das aufeinander folgende Beschreiben der passenden MTD-Partitions.

Dann hängt man noch eine WLAN-Steckdose (~ 10 EUR) mit TASMOTA-Firmware an das Netzteil der FRITZ!Box (ggf. auch mit einer Routine, die auf Kommando den Strom ab- und nach 10-15 Sekunden von selbst wieder einschaltet - so eine "Treppenlicht-Routine" (hier halt dann "umgekehrt", weil die "Aus"-Zeit gesteuert/begrenzt wird) habe ich irgendwo im Tasmota-Thread mal gezeigt) und dann kann man die auf Kommando auch so neu starten (selbst wenn das WLAN über die Box selbst laufen sollte, wobei TASMOTA ja auch einen eigenen AP anbieten könnte), daß danach EVA tatsächlich erreichbar wird (das braucht neuerdings bei manchen Modellen ja ein Power-On-Reset).

Man muß dann nur noch irgendwie an eine Verbindung kommen können, die am Kabel bei der FRITZ!Box ankommt (also keinen Laptop per WLAN o.ä., solange es keinen zweiten AP gibt, der dann wieder auf das Kabel geht). Das mache ich (nunmehr seit Jahren) bei meinen Test-Boxen so in der Software-Entwicklung/-Analyse ... ich würde verrückt werden, wenn ich da jedesmal eine "Spezialverkabelung" herstellen oder irgendwelche Netzteile oder auch nur Rundstecker an der Box ziehen und wieder einstecken müßte. Wenn die Box hinter dem Schrank wirklich gar kein Kabel gesteckt hat, muß man eben für solche Fälle dann doch noch eines einstecken und liegen lassen. Das spart zumindest das Abrücken des Schranks und irgendwelche "Umzüge" mit der FRITZ!Box, solange man einen Rechner hat, mit dem man zur Box marschieren kann, ansonsten braucht man eben ein sehr, sehr langes Kabel, je nach Architektur ... und das kann man danach ja auch wieder "einrollen".



EDIT: OK, den Test mit dem Update über das AVM-GUI und dem Syslog-Eintrag für "invalid sector -1" hatte ich bisher nicht gesehen (da stand der Thread zu lange offen in einem Browser-Tab herum und nachträgliche Bearbeitungen werden dann nicht angezeigt - nur neue Beiträge) - damit tritt das offenbar auch dann auf, wenn man's über firmwarecfg aufruft/aufrufen läßt.

Die weiteren Überlegungen dazu, ob es dann einen Unterschied zwischen dem automatischen und dem manuellen Aufruf von burnuimg geben könnte, sind damit hinfällig - nur nicht die Frage, warum da dann offensichtlich ein falscher Wert "berechnet" oder angenommen/übergeben wird und wo diese Auswahl letztlich erfolgt. Da muß man dann wohl wirklich die AVM-Programme über Wrapper starten (da kann man ja auch nicht nur Ein-/Ausgaben umleiten und Parameter ändern, sondern auch noch ein strace verwenden, wenn man eines hat) und sich genauer ansehen, wer da was macht.

Kandidat dafür wäre primär das firmwarecfg (wobei das dann auch ein CGI-Environment braucht an dieser Stelle und das CGI verwendet bei AVM nur ein sehr ausgedünntes Shell-Environment, wo PATH u.ä. auch mal nicht gesetzt sein kann - das macht das Dazwischengrätschen etwas schwerer und so würde ich das immer "von Hand" starten und nicht über das GUI/den ctlmgr) auf dem ATOM-Core oder man schaut noch einmal genau nach, was bei einem Update-Versuch über TR-064 passiert - der wird (vermutlich) an anderer Stelle ausgelöst und nicht unbedingt über firmwarecfg laufen, sondern eher über tr069fwupdate (ohne packet). Wenn "sector" doch vom ATOM-Core festgelegt wird, wäre das zumindest mal ein anderes Binary auf diesem System und nicht mehr firmwarecfg (sofern alle Prämissen auch stimmen) .. .und das könnte man auch wieder leichter mit einem Protokoll-Wrapper versehen, weil's nicht über CGI aufgerufen wird.
 
Zuletzt bearbeitet:
Hat nun doch länger gedauert bis ich mich melden konnte. Da alle weiteren Schritte wohl doch mehr Kenntnisse in Linux brauchen wird es dann hier enden müssen mit der Fehlersuche. Ich werde wohl einfach weiter mit push-firmware weitermachen müssen.

Danke für die Hilfe bis hier.
 
Ich werde wohl [...] müssen.
Den Rest - wie man das auch ohne push-firmware und damit auch bei "bestehender Verkabelung" am Aufstellort lösen kann - hast Du nicht gelesen oder nicht komplett verstanden oder ist Dir auch das zu kompliziert?

Ich frage nur noch einmal so explizit nach, damit spätere Leser nicht auch zwangsläufig zu dem Schluß gelangen (manchmal liest man so einen Thread ja auch von hinten nach vorne), daß es keine Alternativen gäbe - zumindest nicht bei diesem Modell.

Und wenn man tatsächlich nur das Ziel verfolgt, so eine Box für das Update der Firmware nicht erst irgendwo deinstallieren zu müssen, dann ist die Lösung mit WLAN-Steckdose und Ethernet-Kabel (notfalls auch noch mit Laptop, wenn das Kabel ansonsten nicht verbunden ist) definitiv auch eine denkbare Alternative, solange das mit den signierten Images bei der 6591 nicht geklärt werden kann.

Offenbar sind anderen (6591-Besitzern) die Probleme bei dem "neuen Weg" für AVM-Updates noch nicht aufgefallen (und ich habe auch keine Ahnung, seit wann es bei AVM diesen neuen Weg für Updates gibt) - vielleicht setzt jemand ja eines Tages (wenn er durch Suche auf diesen Thread hier trifft) diese Tests dann auch fort - zumal das vermutlich dann sogar bei den Modellen, wo EVA nicht so ohne weiteres zu bezirzen ist, dasselbe Handling sein dürfte und Updates vereinfachen sollte (außer man macht sie gleich über eine zuvor eingerichtete Shell im laufenden System).
 
Doch habe ich gelesen. Ich denke aber das es per push-firmware nicht funktioniert wenn die Box schon im FTP Modus ist. Das Tool wartet auf eine unterbrechung der Verbindung. Ich hatte einige male versucht das Tool zu nutzen und es hat den Moment verpasst zum einloggen auf den FTP Server. Habe das dann mit deinem Powersehll Skript getan und musste dann immer das Netzwerkkabel ziehen damit push-firmware weiter macht.
 
Deshalb hatte ich ja auch dazugeschrieben, daß man für die Installation der vier Dateien auch etwas anderes benutzen kann - bei PS dann eben EVA-FTP-Client.ps (https://github.com/PeterPawn/YourFritz/blob/main/eva_tools/EVA-FTP-Client.ps1).

Da jetzt noch ein eigenes Skript außen herum zu erstellen, welches dann (1) die Box sucht und unmittelbar nach deren Auffinden dann (2) die vier Dateien auf die Box schiebt und danach das aktuelle System umschaltet, dürfte das allergeringste Problem sein, wenn man diese Aufrufe nicht jedesmal "von Hand" machen will.

Deine Obsession für bzw. Fixierung auf push-firmware war es dann bei Deinen Mißerfolgen mit den PS-Skripten auch, die Dir auf die Füße gefallen ist - wo bei der 6591 welches File hingehört, ist hier im Board im 6591-Thread mehrfach erklärt - oder zumindest mehrfach verlinkt. Irgendso eine "falsche Vorstellung" bzw. ein falsches Verständnis der dabei erforderlichen Schritte hatte ich mir schon fast gedacht - denn viel simpler geht es eigentlich wirklich nicht. Am Ende macht push-firmware auch nichts anderes, als das mit "richtigen" FTP-Clients umzusetzen, die aber auch gerne mal mit den Eigenheiten von EVA nicht zurecht kommen.

Genauer kann man das z.B. hier: https://bitbucket.org/fesc2000/ffritz/src/6591/README-6591.md nachlesen - es MUSS also nicht zwingend push-firmware aus Freetz-NG sein, wenn man dabei "Kröten schlucken" muß, weil es nicht zur eigenen Vorgehensweise paßt ... daß in diesem Skript die Suche nach der Box nicht wirklich smart abläuft, ist auch ein "ewiges Thema" in Diskussionen mit @cuma. Wenn's ganz schlecht läuft und die IP-Adresse im Bootloader NICHT dieselbe ist wie im laufenden FRITZ!OS, funktioniert das push-firmware am Ende gar nicht richtig, weil es auf der falschen Adresse sucht.

Wenn Du meine PS-Skripte verwenden willst (es gäbe ja auch die "normalen" Shell-Versionen und die stehen auch in einem Freetz-NG-Checkout zur Verfügung), mußt Du die Dateien ja ohnehin irgendwie auf ein Windows-System bringen (ich nehme jetzt mal nicht an, daß Du jemand bist, der PS Core tatsächlich auf Linux verwendet) - und wenn man sich damit mal etwas ausführlicher befaßt (s. Link oben), nimmt man dabei ohnehin gleich die vier einzelnen Dateien vom Freetz-Build-Host und nicht das zusammengepackte Image, wo man die dann erst wieder extrahieren muß auf dem Windows-PC. Da üblicherweise die Freetz-VMs auch noch Samba enthalten, kann man sogar dieses Kopieren noch automatisieren und wenn man's auf die Spitze treiben will (und nicht so viele verschiedene Builds für unterschiedliche Modelle hat), kann man sogar die Dateien direkt aus der Freetz-VM holen beim Flashen.
 
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.