Testlauf mit dem StromPi 3

Nach dem Zusammenfassen der Funktionen ist es Zeit für einen Testlauf mit dem StromPi 3. Und hier kommt auch schon für Besitzer eines Raspberry Pi 3 eine unschöne Überraschung: Bluetooth und StromPi 3 bedeuten, dass wir etwas ändern müssen. Die serielle Schnittstelle, die normalerweise zwischen dem Raspberry Pi und dem Bluetooth-Chip benutzt wird, benötigt der StromPi 3 für die Kommunikation und Parametrierung. Dies wird erst ersichtlich, wenn wir uns die Installationsanleitung ansehen. Nach der Modifikation der Schnittstelle können wir den StromPi 3 und Bluetooth nutzen, jedoch kann es nun beim Bluetooth zu Einschränkungen kommen. Für Bluetooth und StromPi 3 können die folgenden Zeilen an die /boot/config.txt angehängt werden:
dtoverlay=pi3-miniuart-bt
core_freq=250
init_uart_clock=3000000

Nach der Konfiguration kann per serieller Konsole auf den StromPi und seine Einstellungen vorgenommen werden. Nach einem kurzen Blick auf die Homepage findet sich eine Beta-Firmware, die ein paar sehr nützliche Funktionen nachrüstet und ein paar kleine Unschönheiten bei einigen Parametern behebt. Also eben schnell mal die Firmware neu flashen.

Das Firmware-Update

Für das Firmware-Update wird eine Anleitung bereit gestellt. Wir sollen mit dem stm32flash-Tool die neue Firmware in den Chip schreiben. In der aktuellen Konfiguration nutzen wir den UART des Raspberry Pi 3B+, der miniUART, also eine abgespeckte Variante, fehlen einige Funktionen. Dieser miniUART wird mit der angepassten Funktion für das Bluetooth verwendet. Folgende Funktionen fehlen:
 
  • Break Erkennung
  • Framing-Fehler Erkennung
  • Parity Bit
  • Receiver Timeout Interrupt
  • DCD, DSR, DTR und RI Signale

Das meiste davon stört uns nicht weiter, aber das fehlende Parity Bit macht die Verwendung des UART nötig. Das stm32flash-Tool kommuniziert mit dem STM32 auf dem StromPi mit 9600 Baud 8 Datenbits einem Stoppbit und grader Parität (96008E1). Damit das funktioniert, müssen wir in /boot/confi.txt Änderungen durchführen. Durch den Eintrag in /boot/config.txt:  
dtoverlay=pi3-miniuart-bt

Wird der miniUART für das Bluetooth verwendet, steht nun der normale UART, an den GPIO-Pins des Pin-Header, bereit. Wir müssen noch aus der Paketeverwaltung stm32flash installieren und die aktuelle Firmware herunterladen. Das Update wird nun gemäß Anleitung durchgeführt. Für das Flashen wird im Terminal
stm32flash /dev/serial0 -w RB-StromPi3_Revxxxxxx.binary -b 9600
eingegeben. Alles ganz einfach so weit, was kann schon schief gehen? Nun, wenn man kurz nicht aufpasst und anstatt des .binary eine andere Datei erwischt, z. B. bei dem tab completion nicht aufgepasst, dann wird diese auch ohne Rücksicht auf Verluste in den Chip geschrieben.

Und das ist leider auf dem Labortisch passiert. Als dieses bemerkt wurde, war es zu spät, der Pi und der StromPi 3 waren neu gestartet, und durch den Inhalt der falschen Datei leider auch alle Sicherheitsfunktionen des Chips gesetzt. Damit war das Wiederherstellen der Firmware nicht mehr möglich, auch nicht per Debbuger. Es ist also Vorsicht geboten, es gibt hier kein Netz oder doppelten Boden, falls eine falsche Datei in den Chip geschrieben wird, kann es die Hardware komplett unbrauchbar machen. Auch der Bootloader im ROM des Chips hilft uns hier nicht mehr weiter. „Only a few StromPi 3 were harmed in making this presentation“, das ist ein Satz den man ungerne schreiben möchte, der aber hier leider zutrifft. Also StromPi V3 Nummer 2 aus der Packung geholt und weiter. Die Platine mit der falschen Firmware wurde dann erst mal zur Seite gelegt, um später den STM32 gegen einen neuen zu tauschen.

Inbetriebnahme und Konfiguration

Nach dem erfolgreichen Update auf die aktuelle Beta-Firmware geht es mit der Inbetriebnahme nun Konfiguration los. Wir setzen auch den Jumper „CAP“ auf „ON“, damit uns die 1F Kapazität für das Umschalten zwischen den Eingängen die Versorgungsspannung puffern. Ohne die Kondensatoren kann der StromPi 3 bei Umschalten der Quellen den Pi nicht durchgehend mit genug Leistung versorgen. Der StromPi 3 wird über ein serielles Terminal konfiguriert. In unserem Fall wollen wir den Pi mit 12 Volt über den Weitbereichseingang versorgen und den LiFePo4-Akku als Reserve verwenden.

Für die Konfiguration wird nach Handbuch vorgegangen, wir setzen dem Modus des StromPi 3 auf 4 und setzen den Timer für das Herunterfahren auf 10 Minuten (600 Sekunden). Sollte in den 10 Minuten die primäre Spannungsquelle wieder kommen, so wird der Timer abgebrochen und der Pi läuft weiter. Also nach Anleitung „set-timer 600” eingegeben und als Antwort “The Shutdown-Timer has been set to 88 seconds” erhalten. Nun dann testen wir mal „set-timer 255“, Antwort “The Shutdown-Timer has been set to 255 seconds” und bei “set-timer 256”, Antwort “The Shutdown-Timer has been set to 0 seconds”. Okay irgendwie scheint es dort ein Limit bei 255 zu geben, aber anscheinend wird die eingegebene Zahl größer 256 korrekt interpretiert. Der Bug wurde per Mail an den Support gemeldet, ein anderer Weg wäre das Supportforum, aber da sich noch die eine oder ander Frage ergeben hatte, war die Mail hier mein bevorzugter Weg.

Firmware-Updates und Support

Die Antwort auf den Bugreport kam schnell, und auch Fragen nach dem Quelltext und den Pinbelegungen des verbauten STM32 hielten eine kleine Überraschung bereit. Bei einigen Produkten sind die Hersteller bei der Firmware sehr schweigsam, hier ist jedoch das Gegenteil eingetreten. Inzwischen ist der Quelltext der Firmware komplett auf GitHub hochgeladen, sowie das Schematic um den STM32, und damit die Pinbelegung und die Funktionen der Hardware ersichtlich. Damit wird jeder in die Lage versetzt, die Firmware nach eigenen Bedürfnissen zu patchen oder selbst auf Bugsuche zu gehen. Solche Schritte sehen wir leider bei Produkten, in denen Software steckt, viel zu selten und so ist es dem Unternehmen und auch dem Entwicklern hoch anzurechnen, dass Sie diesen Schritt gegangen sind. Inzwischen ist auch der gemeldete Bug behoben, und mit jeder neuen Firmware-Version werden die Anregungen der Kunden aufgenommen und wenn möglich sinnvoll eingepflegt. Es bleibt zu hoffen, dass die Firmware und das Produkt mit dieser Aufmerksamkeit weiter betreut werden.