Was ist los mit dem Raspberry Pi?

Published on February 17, 2019

Was ist los mit dem Raspberry Pi?

Ursprünglicher Autor: nachoparker
  • Übersetzung


Der Raspberry Pi ist ein unglaublich beliebtes Gerät, das für Verfügbarkeit, Vielseitigkeit, Fähigkeiten und aktive Community bekannt ist. Es ist leicht, Fan-Sites und Artikel zu finden, aber die meisten Menschen sind sich der Schwachstellen nicht bewusst, bis sie selbst darunter leiden und nach Informationen in den Foren suchen.

Ich werde versuchen, über einige der Probleme zu sprechen, mit denen ich persönlich konfrontiert war, sowie auf typische Probleme, die am häufigsten bei Menschen auftreten, die sich dessen nicht bewusst sind. Und schließlich empfehle ich Pi nicht für einige Anwendungen, insbesondere NAS-Dienste wie NextCloudPi und Open Media Vault. Ich hoffe, das spart mir Zeit, um das nicht in den Foren zu wiederholen.

Ich habe viel Himbeer-Pi gehabt und benutze sie seit Jahren. Als das erste Modell 2012 auf den Markt kam, wurde es zu einem wichtigen Meilenstein auf dem Einzelspieler-Markt. Obwohl es bereits einige gute Motherboards wie das Beagleboard und Odroid gab, waren sie recht teuer und nur Hardcore-Liebhaber konnten sie kaufen und testen.

Pi ist im Vergleich zu ihnen nicht so mächtig, aber aufgrund der erstaunlichen Billigkeit sprengte es buchstäblich den Markt in die Luft. Blogs, Erweiterungskarten, viele persönliche Projekte, Tonnen von Bibliotheken ... Raspberry Pi war der erste, der all dies erreicht hat. Bis heute ist eine florierende Community der größte Vorteil von Pi gegenüber anderen Boards.

Aber jetzt ist 2019 und es ist Zeit, sich wieder umzusehen. Meiner Meinung nach gibt es offenere Alternativen mit besserer Qualität zum gleichen Preis. Ich werde versuchen zu erklären.

Leistung




Himbeer-Pi hat den Preis gesenkt, indem er Ecken geschnitten hat. Daher ist das Board für manche Aufgaben im Vergleich zu Wettbewerbern nicht produktiv genug. Es ist insbesondere für Netzwerkaufgaben und USB-Funktionalität schlecht geeignet.

Hier steht der SMSC-LAN9514-Chip , der über einen USB-Kanal mit dem SoC verbunden wird und gleichzeitig als USB-zu-Ethernet-Adapter und USB-Hub fungiert. Daher sitzen Ethernet und USB auf demselben Kanal und konkurrieren miteinander. Dies steht im Gegensatz zur typischen NAS-Nutzung, wenn etwas über das Netzwerk geladen und auf einem USB-Laufwerk gespeichert wird, ganz zu schweigen von dem Hinzufügen von RAID.

Aus dem gleichen Grund, auch wenn letztes Jahr letztendlich ein Modell mit Gigabit-Ethernet-Unterstützung auf den Markt gebracht wurde, kam die tatsächliche Netzwerkleistung niemals in der Nähe von Gigabit und beträgt maximal 40 MB / s in reiner Geschwindigkeit und maximal 20 MB / s Übertragen auf ein USB-Gerät . Zu dieser Zeit gab es bereits günstige Motherboards mit echtem Gigabit-Ethernet und USB3.

Tatsächlich kommt Wi-Fi nicht über SMSC , sondern stellt eine Verbindung mit dem BCM4343-Chip über SDIO her , so dass dieser Engpass mithilfe von Wi-Fi irgendwie vermieden werden kann. Der Wi-Fi-Chip ist jedoch nicht allmächtig, er muss sich mit den umgebenden Störungen auseinandersetzen, so dass dies keine ideale Alternative ist.

Aus diesen Gründen würde ich nicht empfehlen, Pi als NAS zu verwenden, unabhängig davon, ob es sich um Open Media Vault oder Nextcloud handelt.

Reales Pi-Gehirn - geschlossene Quelle




Wenn Sie an Debatten über Software-Freiheit beteiligt waren, besteht das Hauptproblem in unseren Linux-Systemen in binären Closed Source-Blobs. Ich werde nicht ins Detail gehen, aber das Problem ist, dass diese Teile des Systems nicht überprüft werden können und sie Zugriff auf alles haben, was auf dem Gerät passiert. Dies hat zu großen Open-Source-Projekten wie Android Replicant geführt , die unsere Systeme von binären Blobs befreien: ein schmerzhafter, langwieriger und langsamer Prozess.

Ein ähnliches Problem besteht beim Raspberry Pi, bei dem CPU und GPU in denselben Chip BCM2837B0 eingebettet sind. Der Zentralprozessor ist ein 64-Bit-Quad-Core-ARM A53 mit 1.400 MHz (in Pi 3B) und der Grafikprozessor ist ein 32-Bit-Dualcore-VideoCore IV mit einer Frequenz von 400 MHz. Die Integration von CPU und GPU ist in der mobilen Welt sehr beliebt, da sie den Preis und den Stromverbrauch senkt. Die Konkurrenten NXP iMX und Allwinner verwenden einen ähnlichen Ansatz.

Im letzten Pi gibt es also sechs Kerne, aber nur vier davon sind ARM. Der Prozessor läuft unter Linux, aber Sie sind vielleicht überrascht, dass Linux auf diesem Gerät ein Bürger zweiter Klasse ist. Die GPU-Cores führen das Echtzeitbetriebssystem ThreadX aus. Dieses Closed-Source-Betriebssystem verwaltet das System ohne Kenntnis des Linux-Kernels.

Zu Beginn des Herunterladens des Raspberry Pi ist der Prozessor vollständig deaktiviert (technisch im Reset- Zustand)) und die GPU startet das System. Sie können den Ordner aussehen /boot - und Binärblob finden, durch die läuft die CPU und GPU eigenen OS ThreadX ( bootcode.bin und start.elf ). Weitere Informationen zum Download finden Sie hier .

Es ist die GPU, die die SD-Karte einfügt , diese Blobs lädt und die Konfiguration aus der Textdatei config.txt liest , die wir bearbeiten, um die Videoeinstellungen anzupassen oder die GPU zu übertakten. Linux ist hier nicht beteiligt.

Wenn die CPU den Linux-Kernel mit der CPU laden kann, verlässt sie nicht nur die Bühne, sondern arbeitet nur als Grafikprozessor . Nein, die GPU ist immer noch zuständig. Haben Sie jemals darüber nachgedacht, wer diese Logos anzeigt, wenn Pi eine Verbindung zu HDMI herstellt? Oder dieseGibt es Symbole für Blitz- oder Temperaturwarnzeichen ? Das ist richtig, das macht das System zu ThreadX auf der GPU, und Linux weiß überhaupt nicht, was los ist.

Wir können nicht alle Funktionen der GPU kennen, aber wir wissen etwas, für das er verantwortlich ist. Für diesen Artikel ist es wichtig, dass ThreadX die Spannungsreduzierung überwacht - ein weit verbreitetes Problem, wie wir später sehen werden, und die Frequenz des Prozessors reduziert, um Prozessorabstürze und -staus zu verhindern. Daher arbeiten Geräte beim Menschen bestenfalls mit einer Frequenz von 600 MHz anstelle von 1.400 MHz. Diese Drosselung beginnt bei 4,65 V und kann auch durch die Temperatur ausgelöst werden. Zur gleichen Zeit glaubt Linux immer noch, dass das System normal mit voller Frequenz arbeitet.

Genau das sehen wir. Da das Haupt-Betriebssystem proprietär ist, können wir nicht wissen, was es sonst noch tun kann oder kann, daher gibt es immer ein Problem mit der Privatsphäre.

In dem Closed-Source-Blob ist mindestens ein Patent enthalten, das das Öffnen des Codes bis mindestens 2025 verbietet. Wir wissen jedoch nicht, ob dies auch dann der Fall ist. Es wurden Versuche unternommen, VideoCore IV rückzuentwickeln und Open Source-Firmware dafür zu erstellen. Leider starb das Projekt, bevor es etwas Nützliches gab. Wie bei Android-Blobs ist dies eine unglaublich schwierige Aufgabe.

Probleme mit der Stromversorgung



Dies ist kein technischer Fehler des Raspberry Pi, sondern eher ein typischer Benutzerfehler.

Das erste Modell benötigte kaum 80 mA, aber jede neue Generation wurde leistungsfähiger und aus diesem Grund energieintensiver. Darüber hinaus schließen viele Benutzer USB-Geräte an, die ebenfalls Strom verbrauchen, wenn sie nicht mit eigenen Stromquellen versorgt werden.

Der microUSB-Anschluss wurde ursprünglich nur für 1,8 A entwickelt. Obwohl dies ein alter Standard ist, können Sie Ladegeräte finden, die mehr ausgeben. Daher versuchen viele, alte Ladegeräte zu verwenden oder billige Adapter für das Internet zu kaufen "Himbeere". Pi ist jedoch ein Computer und erfordert eine hochwertige, stabilisierte Stromversorgung, die am Eingang stabile 5 V mit einem Strom von bis zu 2,5 A liefert. Es ist nicht nur ein anständiger Transformator erforderlich, sondern auch eine gute Verbindung (oder ein Spannungsabfall), aber noch wichtiger dass Sie ein gutes Kabel benötigen , sonst fällt die Spannung ab. Fehlerhafte Kabel sind häufiger als instabile Spannungsquellen. Verwenden Sie daher ein gutes Kabel: vielleicht 20AWGoder ähnlich, oder kaufen Sie einfach die offizielle Stromversorgung. Die Schlussfolgerung ist, dass kein USB-Ladegerät ordnungsgemäß funktioniert, selbst wenn es 2,5 A und 5 V ist.

Fügen Sie dies dem hinzu, was wir im letzten Abschnitt besprochen haben, und fangen Sie an, das große Ganze zu verstehen. Die meisten Benutzer arbeiten an ihren Geräten mit einer reduzierten Frequenz, und die GPU verbirgt sie vor ihnen, sodass sie tatsächlich mit einer reduzierten Frequenz von 600 MHz arbeiten: Fast gleich wie bei ARMv6 auf dem allerersten Pi.

In vielen Fällen reicht die GPU nicht aus, und das System stürzt zufällig ab oder friert ein, wodurch möglicherweise Daten oder die SD-Karte beschädigt werden. Dies geschieht normalerweise unter Last , dh wenn Transistoren maximale Leistung benötigen. Dann kommt der Benutzer in die Foren und beschwert sich:Mein Netzteil ist in Ordnung, ich lief das und das und nichts ist fehlgeschlagen . Natürlich stimmt das nicht, aber oft glauben sie es nicht.

Meiner Meinung nach können die Japaner Poka Yoke so nennen , das heißt, wir müssen solche Systeme entwerfen, die es ihrem Benutzer nicht erlauben, sich selbst ins Bein zu schießen. Auch hier ist die offizielle Stromquelle für ihren Preis von sehr guter Qualität, und ich kann sie wärmstens empfehlen.

Ich mag es nicht, dass das verborgene proprietäre System die Frequenz außerhalb unserer Kontrolle senkt. Es wäre besser, wenn das System aufgelegt würde: Dann können Sie sofort sehen, was passiert, und eine Person kann das Netzteil austauschen. Meiner Meinung nach ist das besser, als die Nutzer zu täuschen und sie dazu zu bringen, sich im Internet zu beschweren .. Es ist schwer vorstellbar, warum Pi-Entwickler dies tun würden, wenn sie das Problem von Poka Yoke nicht verbergen würden.

Überprüfen Sie, ob Stromprobleme auftreten




Es hat zu lange gedauert, aber wir haben es trotzdem geschafft, das Problem auf Kernelebene zu protokollieren. Wenn Sie eine solche Nachricht in den Systemprotokollen sehen:

Kern: krit: [1701.464833 2.116656] Unterspannung erkannt! (0x00050005)
Kern: info: [1707.668180 6.203347] Normierte Spannung (0x00000000)

dann nimmt die Spannung ab. Es ist gut, dass Linux jetzt zumindest solche Informationen erfasst, aber wenn wir mehr erfahren möchten, benötigen wir direkten Zugriff auf die GPU.

Der Befehl vcgencmd kann Systeminformationen von der ThreadX-Firmware abrufen.

# vcgencmd get_config int
arm_freq=1000
core_freq=500
sdram_freq=600
over_voltage=6
disable_overscan=1
force_pwm_open=1

Mit den Befehlen vcgencmd measure_clock armund vcgencmd measure_voltskönnen Sie die tatsächliche Frequenz und Spannung überprüfen. Hier ist ein Beispiel für die Ausgabe des Tkaiser- Überwachungsskripts .

# With a crappy PSU and/or Micro USB cable output looks like this
# on a RPi 3:
#
# 44.0'C  600 MHz 1010000000000000000 1.2V
# 44.5'C  600 MHz 1010000000000000000 1.2V
# 44.0'C  600 MHz 1010000000000000101 1.2V
# 44.0'C  600 MHz 1010000000000000101 1.2V
# 44.0'C  600 MHz 1010000000000000101 1.2V
# 44.5'C  600 MHz 1010000000000000000 1.2V
# 45.1'C  600 MHz 1010000000000000101 1.2V
# 
# With an ok-ish cable it looks like this (when running cpuburn-a53):
# 
# 48.3'C 1200 MHz 0000000000000000000 1.3312V
# 48.3'C 1200 MHz 0000000000000000000 1.3312V
# 48.3'C 1200 MHz 0000000000000000000 1.3312V
# 48.3'C 1200 MHz 0000000000000000000 1.3312V
# 50.5'C 1200 MHz 0000000000000000000 1.3312V
# 56.4'C  600 MHz 0000000000000000000 1.2V
# 54.8'C  600 MHz 1010000000000000101 1.2V
# 55.3'C  600 MHz 1010000000000000101 1.2V
# 55.8'C  600 MHz 1010000000000000101 1.3312V
# 53.7'C  600 MHz 1010000000000000101 1.2V
# 51.5'C  600 MHz 1010000000000000101 1.2V
# 51.0'C  600 MHz 1010000000000000101 1.2V
# 
# And only by bypassing the crappy connector you can enjoy RPi 3
# performing as it should (please note, there's a heatsink on my RPi
# -- without throttling would start and then reported clockspeed
# numbers start to get funny):
# 
# 75.2'C 1200 MHz 1010000000000000000 1.3250V
# 75.8'C 1200 MHz 1010000000000000000 1.3250V
# 75.8'C 1200 MHz 1010000000000000000 1.3250V
# 76.3'C 1200 MHz 1010000000000000000 1.3250V
# 76.3'C 1200 MHz 1010000000000000000 1.3250V
# 73.6'C 1200 MHz 1010000000000000000 1.3250V
# 72.0'C 1200 MHz 1010000000000000000 1.3250V
# 70.4'C 1200 MHz 1010000000000000000 1.3250V
#
# Now with a pillow on top for some throttling:
#
# 82.2'C 1200/ 947 MHz 1110000000000000010 1.3250V
# 82.7'C 1200/ 933 MHz 1110000000000000010 1.3250V
# 82.7'C 1200/ 931 MHz 1110000000000000010 1.3250V
# 82.7'C 1200/ 918 MHz 1110000000000000010 1.3250V
# 82.2'C 1200/ 935 MHz 1110000000000000010 1.3250V
# 79.9'C 1200/1163 MHz 1110000000000000000 1.3250V
# 75.8'C 1200 MHz 1110000000000000000 1.3250V
#
# And here on RPi 2 with crappy USB cable and some load
#
# 50.8'C  900 MHz 1010000000000000000 1.3125V
# 49.8'C  900 MHz 1010000000000000000 1.3125V
# 49.8'C  900/ 600 MHz 1010000000000000101 1.2V
# 49.8'C  900/ 600 MHz 1010000000000000101 1.2V
# 48.7'C  900/ 600 MHz 1010000000000000101 1.2V
# 49.2'C  900/ 600 MHz 1010000000000000101 1.2V
# 48.7'C  900 MHz 1010000000000000000 1.3125V
# 46.5'C  900 MHz 1010000000000000000 1.3125V
#
# The funny thing is that while the kernel thinks it's running
# with 900 MHz (performance governor) in reality the 'firmware'
# throttles down to 600 MHz but no one knows :)


Fazit



Ich denke wirklich, dass Raspberry Pi zu einem sehr wichtigen Ereignis in der Geschichte von Einplatinencomputern geworden ist, aber heute ist es hinsichtlich Qualität, Leistung und Offenheit hinterher. Es gibt erschwingliche Alternativen, bei denen Entwickler diesen Aspekten mehr Aufmerksamkeit gewidmet haben.

Trotzdem verwende ich immer noch Raspberry Pi, um Benutzern zu helfen, ihr eigenes Cloud-Hosting zu installieren. Angesichts der Beliebtheit dieses Boards ist es für mich sinnvoll, es zu unterstützen, solange es für die Menschen nützlich ist.