RPi4 EEPROM ohne Reboot flashen?

  • Ich habe aus Versehen den microSD-Card-Slot ruiniert. Leider ist die BOOT_ORDER so konfiguriert, dass Booten nur von SD-Karte oder TFTP möglich ist. Obwohl ich das System wunderbar per TFTP booten kann, lässt sich das EEPROM mit den herkömmlichen Mitteln nur über die SD-Karte flashen - zumindest mit meiner alten Firmware.

    Ist das Flashen bei einem laufenden System eventuell mit flashrom möglich?

    Möchte es schaffen die BOOT_ORDER auf 0xf241 zu ändern. (derzeit: 0xf21)

  • Herzlich willkommen im Forum :)

    Unter Advanced Options kannst Du mit raspi-config SD, USB oder TFTP einstellen. Ausserdem kannst Du dort die Bootloader Version updaten lassen.

    Oder Du siehst Dir den Code in raspi-config an. Dort gibt es do_config_order wo mit rpi-eeprom-config und rpi-eeprom-update rumhantiert wird um die Bootorder zu aendern. ;) Vermutlich ist das auch irgendwo dokumentiert bei der Forundation - z.B. hier.

  • Herzlich willkommen im Forum :)

    Danke!

    Das ist mir alles bekannt.


    Das Problem ist, dass sich das EEPROM (wo auch die Bootorder festgeschrieben ist) nur ändern lässt, wenn eine SD-Karte eingelegt ist.

    Zitat

    The BCM2711 ROM does not support loading recovery.bin from USB mass storage or TFTP. Instead, newer versions of the bootloader support a self-update mechanism where the bootloader is able to reflash the EEPROM itself. See ENABLE_SELF_UPDATE on the bootloader configuration page.

    Leider ist mein Bootloader fürs SelfUpdate zu alt. Die "herkömmlichen" Mechanismen um im Bootloader was umzustellen (raspi-config, rpi-eeprom-config --edit oder gar rpi-update) funktionieren somit allesamt NICHT, da ich das System nur über TFTP booten kann.

  • Möchte es schaffen die BOOT_ORDER auf 0xf241 zu ändern. (derzeit: 0xf21)

    Aus https://www.raspberrypi.com/documentation/…r-configuration

    "The BOOT_ORDER property defines the sequence for the different boot modes.

    It is read right to left and up to 8 digits may be defined.

    Ich würde das "1" weglassen, wenn der SD Reader im Pi kaputt ist.

    Mit 0xf24 sollte der Pi4 zuerst von USB (4) [SD Karte im USB Card Reader] und dann vom Netzwerk(2) ununterbrochen (f) booten,

    mit 0xf42 umgekehrt.

    Servus !

    RTFM = Read The Factory Manual, oder so

  • Herzlich willkommen im Forum :)

    Klar. Das 241 ist nur die Config, die ich auf allen andern 4er Raspberries setzen werde.

    Problem im konkreten Fall ist, dass ich die BOOT_ORDER über ein TFTP-gebootetes System nicht ändern kann. (ev. mit flashrom...)

  • Auf Stackexchange schreibt aber jemand, dass rpi-eeprom-update auch flashrom nutzt. Müsste also über rpi-eeprom-update auch irgendwi möglich sein. Ohne den Zwischenschritt über die .bin-Datei auf der SD-Karte...

    Dürfte schon etwas älter sein. flashrom ist in einer aktuellen rpi-eeprom-udate-Variante nicht mehr zu finden. Werde es dennoch so probieren.

  • Kurzbeschreibung, was hier im folgenden passiert
    Durch Kurzschließen zweier PINs eines Chips auf dem Raspberry Pi 4 wird dieser dazu genötigt, in den USB-Boot-Modus zu gehen. In diesem Modus kann anschließend von einem zweiten Rechner aus das EEPROM des RPi 4 geflasht werden.

    Der in den folgenden Schritten beschriebene "Linux-Rechner" ist eine zweite Maschine. Nicht der Pi selbst. (Nur bei Schritt 1, 3 und 4 ist der Raspberry Pi involviert. Alle anderen Schritte passieren ausschließlich vom als "Linux-Rechner" beschriebenen, zweiten PC)

    1. Zuallererst muss man den U5-Chip ausfindig machen. Es ist jener Chip mit 6 Pins direkt über der Soundbuchse.
    2. Danach setzt man an einem Linux-Rechner an und setzt ein "watch lsusb" ab.
    3. Als nächstes nimmt man einen kleinen Flachschraubenzieher und schließt die PINs A2 und GND des U5-Chips kurz. Es sind die PINs oben links (ganz links ist A2, der in der MItte GND).
    4. Nun steckt man ein USB-Kabel vom Linux-PC aus Schritt 2 am USB-C-Anschluss des RPi4 an. (Schraubenzieher noch kurz in Position halten)
    5. Man sollte im "watch lsusb"-Fenster nun zusätzlich ein USB-Device namens "Broadcom Corp. BCM2711 Boot" sehen. (Falls das nicht auf Anhieb klappt, die obigen Schritte einfach nochmal probieren)
    6. Danach macht man am Linux-Rechner ein "git clone --depth=1 https://github.com/raspberrypi/usbboot"
    7. Gegebenenfalls ist nun noch ein "sudo apt install libusb-1.0-0-dev pkg-config" nötig
    8. Nun setzt man im geclonten GIT-Verzeichnis ein "make" ab
    9. Anschließend im selben Verzeichnis ein "sudo ./rpiboot -d recovery"

    Hat man alles richtig gemacht, so sieht man nun folgendes:

    Voilà! EEPROM mit der aktuellsten Version (zum Zeitpunkt des Verfassens dieses Beitrages ist es die Version vom 11.1.2023, Stable EEPROMs GIT Repo) geflasht, die Out-of-the-Box von USB booten kann. Fertig.

    6 Mal editiert, zuletzt von ronzo (18. März 2023 um 10:12) aus folgendem Grund: Präzisierung

  • Für mich liest sich das aber anders, oder habe ich den falschen Thread erwischt ?

    Winbond W25X40CLUXIG ?

  • Es liest sich für dich deshalb etwas anders, weil der Originalartikel schon etwas gealtert ist.

    Das EEPROM im Recovery Verzeichnis des genannten GIT-Repositorys ist das derzeit aktuellste. Man muss sich um die Boot Order nicht mehr kümmern, da das aktuelle EEPROM ohnehin von USB bootet.

    Man kann sich daher einige Schritte sparen, wie von mir geschildert.

    (Ich empfehle das selbst durchzudenken und deinen Beitrag hier entsprechend anzupassen, sonst kennt sich hier kein Leser mehr aus.)

  • Es ist für mich nicht richtig nachvollziehbar, wo, was gemacht werden muss.


    >2.Danach setzt man an einem Linux-Rechner an und setzt ein "watch lsusb" ab.

    An einem anderen Linuxrechner, oder am Pi ?

    >Nun steckt man ein USB-Kabel vom Linux-PC aus Schritt 2 am USB-C-Anschluss des RPi4 an. (Schraubenzieher noch kurz in Position halten)

    Also Strom auf den Pi geben ? Oder das USB-Kabel von einem anderen Linuxrechner in den USB-C vom Pi ?

    Startet der Pi4 überhaupt von einem USB-Port, oder zieht der nicht zuviel Strom ?

    >Man sollte im "watch lsusb"-Fenster nun zusätzlich ein USB-Device namens "Broadcom Corp. BCM2711 Boot" sehen. (Falls das nicht auf Anhieb klappt, die >obigen Schritte einfach nochmal probieren)

    Also am anderen Linuxrechner, oder ?

    Dann auf dem anderen Linuxrechner usbboot kompilieren und sudo ./rpiboot -d recovery eingeben ?

  • Wenn du deinen obigen Beitrag (bis auf das Foto) entfernst, der hier eher Verwirrung stiftet, präzisiere ich alles was ich geschrieben habe gerne noch einmal. Bitte um Feedback ob es nun klar verständlich ist oder wo ich noch etwas genauer sein muss!

    2 Mal editiert, zuletzt von ronzo (18. März 2023 um 10:09)

  • Wenn du deinen obigen Beitrag (bis auf das Foto) entfernst, der hier eher Verwirrung stiftet, präzisiere ich alles was ich geschrieben habe gerne noch einmal. Bitte um Feedback ob es nun klar verständlich ist oder wo ich noch etwas genauer sein muss!

    Wenn die Methode bei deinem Problem geholfen hat, wäre es vielleicht besser, deinen Beitrag nochmal im Bereich Tutorial & Anleitungen zu erstellen. Es wäre echt schade um deine Mühe und dort ist diese Anleitung auch besser aufgehoben bzw. später mal zu finden.

  • Wenn die Methode bei deinem Problem geholfen hat, wäre es vielleicht besser, deinen Beitrag nochmal im Bereich Tutorial & Anleitungen zu erstellen. Es wäre echt schade um deine Mühe und dort ist diese Anleitung auch besser aufgehoben bzw. später mal zu finden.

    Kann ich gerne machen. Gebt mir ein paar Tage bis ich dazukomme...

    [Hätte gleich noch ein zweites Tutorial. Das wofür ich den RPi4 eigentlich brauche. Thema: "Wie installiere ich einen K3s-Cluster und lasse Anwendungen (wie OctoPrint, FHEM, HomeAssistant, Mosquitto MQTT, usw.) darauf containerisiert und ausfallsicher laufen.]

  • ronzo

    bis Punkt 5 klappt es und zeigt mir den BCN2711

    aber sorry bin Anfänger, und versteh die Punkte 6-9 nicht so richtig , was ich jetzt tun muss.

    könnte mir dabei jemand helfen was ich da tun muss ... auch auf der Site des rpi-eeprom .... ich kapiers nicht so ganz... :conf:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!