
Vor einiger Zeit wurde mir angeboten, ein wenig mit einem Einplatinen-PC Orange Pi 2G-IOT zu arbeiten (eingebautes 2G und der Preis sieht sehr attraktiv aus). Nachdem ich einen Beitrag über das
Orangenparadies gelesen hatte, dachte ich, dass ich diesen Weg ohne Schwierigkeiten wiederholen würde, zumal ich unter Linux auf dem „Du“ bin (oder besser gesagt, ich habe vor ungefähr drei Wochen darüber nachgedacht) und bereits Erfahrung mit Raspberry Pi 2 B + hatte. In der Praxis stellte sich heraus, dass dieser Weg viel länger war. Es schien, dass unsere chinesischen Freunde absichtlich Schwierigkeiten verursachten (und manchmal mit besonderem Zynismus). Wenn Sie dieses Board speichern und kaufen möchten, lesen Sie zuerst diesen Beitrag und überlegen Sie es sich noch einmal.
Wenn möglich, werde ich versuchen, Emotionen zurückzuhalten oder sie zumindest in Humor umzusetzen.
Also, hier bekomme ich ein Board und eine SD-Karte der zehnten Klasse. Lass uns gehen.
Alles, was unten geschrieben steht, bezieht sich auf das Orange Pi 2G-IOT-Modell, aber im Telegramm-Chat (suchen Sie nach „Orange Pi und nicht nur“) heißt es, dass sich die 2G-, 3G- und 4G-Modelle gleich verhalten (gleich schlecht). Das Geschriebene gilt beispielsweise NICHT für den Orange Pi PC und den Orange Pi One, die sich laut Bewertungen stabil verhalten.
Mina Nr. 1 (Schulung): Herunterladen des Betriebssystem-Images
Es scheint, dass das einfacher sein könnte? Wir gehen auf
die Website des Herstellers und laden sie herunter. Alle Links führen jedoch zu mega.nz, das es direkt im Browser sammelt. Mein billiger Laptop mit 4 GB RAM hat eine solche Aufgabe nicht erledigt und die Lasche ist gefallen. Man könnte ein proprietäres Programm zum Herunterladen von Mega verwenden, aber es hat kein Vertrauen in mich geweckt (zumal einige Leute im Internet schreiben, dass das Programm von Antivirenprogrammen als Malware erkannt wird).
Lösungsoptionen: Herunterladen von einer inoffiziellen Site (z. B.
hier ), Bereitstellen einer virtuellen Maschine und Einfügen eines Clients zum Herunterladen von Mega, Bitten Sie jemanden mit einem moderneren PC, das Image herunterzuladen.
Ein bisschen mehr über Betriebssysteme für OrangeFür viele Orange-Modelle empfehlen Benutzer Armbian, aber er hat mich bei 2G-IOT nicht beeindruckt: Es sieht aus wie minimalistisches Raspbian. Auf der Armbian-Website gibt es übrigens kein Bild für 2G-IOT, nur auf der Orange Pi-Website. Ich habe auch Ubuntu Server ausprobiert, aber es zeigte überhaupt keine Lebenszeichen. Das in Android integrierte NAND scheint zu funktionieren, aber ich habe es wahrscheinlich überhaupt nicht studiert, ohne Touchscreen ist es von geringem Nutzen. Ich erinnere Sie übrigens daran, dass das Startgerät durch die Position des Jumpers in der Ecke der Platine bestimmt wird. Standardmäßig wird vom integrierten NAND-Speicher gebootet.
Mina Nr. 2: Internetzugang über Modem
Nach der wörtlichen Konfiguration von wvdial und pppd im Internet stellte ich plötzlich fest, dass Ping-Anforderungen einwandfrei bestanden, reguläre TCP-Pakete jedoch in keiner Weise:
orangepi@OrangePi:~$ curl --interface ppp0 195.201.201.32 curl: (7) Failed to connect to 195.201.201.32 port 80: Connection timed out orangepi@OrangePi:~$ curl --interface ppp0 195.201.201.32 curl: (7) Failed to connect to 195.201.201.32 port 80: Connection timed out orangepi@OrangePi:~$ curl --interface ppp0 195.201.201.32 curl: (7) Failed to connect to 195.201.201.32 port 80: Connection timed out orangepi@OrangePi:~$ curl --interface wlan0 195.201.201.32 46.0.208.54 orangepi@OrangePi:~$ ping 195.201.201.32 -I ppp0 PING 195.201.201.32 (195.201.201.32) from 10.33.64.21 ppp0: 56(84) bytes of data. 64 bytes from 195.201.201.32: icmp_seq=1 ttl=52 time=664 ms 64 bytes from 195.201.201.32: icmp_seq=2 ttl=52 time=240 ms 64 bytes from 195.201.201.32: icmp_seq=3 ttl=52 time=234 ms 64 bytes from 195.201.201.32: icmp_seq=4 ttl=52 time=246 ms 64 bytes from 195.201.201.32: icmp_seq=5 ttl=52 time=241 ms 64 bytes from 195.201.201.32: icmp_seq=6 ttl=52 time=237 ms ^C --- 195.201.201.32 ping statistics --- 7 packets transmitted, 6 received, 14% packet loss, time 6032ms rtt min/avg/max/mdev = 234.634/310.971/664.998/158.370 ms orangepi@OrangePi:~$
Die Lösung veranlasste
edtun :
https://www.linux.org.ru/forum/admin/12135523 , obwohl ich
zugebe , dass es irgendwie einfacher hätte sein können.
Sofort benachrichtigt, dass das IMEI-Modem mit Nullen gefüllt ist. Glücklicherweise beachtet der rot-weiße Telekommunikationsbetreiber dies nicht. (Das eingebaute WiFi hat übrigens ebenfalls keine MAC-Adresse: Es wird zufällig bei jedem Ruckeln des Netzteils generiert.)
Mina Nr. 3: USB-Anschluss
Wir stecken eine WiFi-Pfeife in den USB-Anschluss und ... nichts passiert. lsusb zeigte einen leeren USB-Anschluss an. Ein wenig Graben zeigte, dass das Board wirklich nur
einen USB hat. Standardmäßig ist es mit dem microUSB-Port verbunden. Um es auf einen normalen USB-Host umzuschalten, müssen Sie die Jumper auf der Platine schalten, die sich neben dem Jumper befinden, um den Boot auszuwählen. Ihre Beschreibung ist auf w3bsit3-dns.com:
Lösung: Jumper auf Position schalten: 1234 runter, 5678 rauf.
Erst dann fand ich eine kleine Erwähnung dieser Nuance im Orange Pi-Handbuch.
Mina Nr. 4: Fahrer
Jetzt wird das Gerät im System erkannt, lsusb zeigt den Hersteller und den Produktcode an, aber die drahtlose Netzwerkschnittstelle wird im System nicht erkannt. Weil die Entwickler keine Treiber für WiFi-Adapter auf Orange geliefert haben. Und überhaupt keine. Es gibt einen Treiber nur für eingebautes WiFi, nicht mehr und nicht weniger. Und was machen wir, wenn wir keinen Treiber für unsere Hardware haben? Das stimmt,
sammeln wir
sie aus dem Quellcode !
Mine Nr. 5: Vorbereitung zum Bauen
In der Korrespondenz schlug
bad__day vor, direkt auf Orange Pi zu montieren. Vielleicht ist das möglich, aber ich habe versagt.
Für Orange Pi haben die Entwickler ein spezielles Orange Pi-Build-System erstellt, mit dessen Hilfe theoretisch zum Erstellen eines Kernels oder von Modulen die Anweisungen auf dem Bildschirm einfach befolgt werden müssen. Detaillierte Anweisungen finden Sie im
Handbuch ab Seite 61. Es scheint, dass nur folgen, und alles wird gut, aber nein.
Erstens, um nicht alle Abhängigkeiten auf meinem Computer manuell zu bearbeiten (ich aktualisiere regelmäßig die Software, das ist großartig, aber diesmal nicht), habe ich eine virtuelle Maschine mit Ubuntu 16.04 bereitgestellt und dort alle Aktionen ausgeführt. Zweitens hat sich irgendwo ein Fehler in den Skripten eingeschlichen, und das Build-System hat keine Toolchain für die plattformübergreifende Kompilierung erstellt.
Dies wird mit einer solchen Krücke
gelöst :
- Manuell passend dazu, die Toolchain für die Cross-Kompilierung unter ARM zu stellen.
- Symlinks erstellen:
mkdir $HOME/OrangePiRDA/toolchain/bin ln -s $(which arm-linux-gnueabi-ld) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-ld ln -s $(which arm-linux-gnueabi-gcc-4.9) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-gcc ln -s $(which arm-linux-gnueabi-g++-4.9) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-g++ ln -s $(which arm-linux-gnueabi-ar) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-ar ln -s $(which arm-linux-gnueabi-nm) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-nm ln -s $(which arm-linux-gnueabi-objcopy) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-objcopy ln -s $(which arm-linux-gnueabi-size) $HOME/OrangePiRDA/toolchain/bin/arm-linux-gnueabi-size
Bitte beachten Sie: Der Compiler ist Version 4.9, auf den oben genannten Versionen wird nichts gesammelt. - Öffnen Sie OrangePiRDA / scripts / Prepare_toolchain.sh und kommentieren Sie für alle Fälle Zeilen, in denen die Toolchain erwähnt wird.
Tatsächlich rufen alle diese Skripte einfach apt-get install -y ... auf und machen. Das Skript bietet dem Benutzer nicht die Möglichkeit, die Konfiguration in irgendeiner Weise zu ändern (oder habe ich sie nicht gefunden?).
Aber nichts hindert uns daran, uns selbst anzurufen
make menuconfig
und markieren Sie die erforderlichen Treiber. Wir machen das und sammeln wieder (jetzt sind nur noch Module möglich) und ...
Mine Nr. 6 (mit angeschraubtem IR-Bewegungssensor und Ersatzzünder): Treiberbaugruppe
... Und dann begann das Skript freundlich, Fragen zur Konfiguration des Kernels zu stellen. Er rief den altmodischen Kernel-Konfigurator auf, aber warum ?! Was ist los?
Es stellte sich heraus, dass das Makefile geschrieben wurde, um die Konfigurationsänderungen von TIME (!!!) zu überprüfen!

Der Kommentar lautet wörtlich "jemand hat gegraben". (Im Screenshot, dem bereits geänderten Makefile, habe ich menuconfig vorgeschrieben.) Ich habe versucht, make oldconfig aufzurufen. Ich habe nicht bemerkt, dass dies irgendwo etwas geändert hat. Okay, jetzt, nachdem die menuconfig während der Assembly aufgerufen wurde, ist es nicht beängstigend. Ich rufe die Assembly erneut auf, die Assembly bemerkt, dass "jemand in die Konfiguration gegraben hat", ruft menuconfig auf, beende und warte auf den Abschluss. Stellen Sie sich jetzt meine Überraschung vor, als ich den von mir ausgewählten Fahrer nicht gefunden habe.
Haftungsausschluss vor dem LesenZu diesem Zeitpunkt verließ ich das Verständnis dessen, was passiert, und verlor schließlich den Kontakt zur Realität, zum gesunden Menschenverstand und zur Zivilisation vom Planeten Ross 128 b. Ich ging über die Grenzen meines Wissens, aller meiner Freunde und TARDIS hinaus. Ich fing an, völligen Unsinn zu schaffen, und das einzige Ziel war, diesen [ZENSIERTEN] Treiber um jeden Preis zu sammeln. Wenn Sie beim Lesen des obigen Textes mehr als zweimal am Kopf gepackt haben, lesen Sie den folgenden Text nicht. Es wird ruhiger für dich und mich. Wenn Sie eine klare Erklärung geben können, was passiert, und erklären können, wo ich falsch liege und wie es geht, dann sagen Sie es mir bitte. Bitte.

Nun, wir klettern, um zu verstehen. Es stellt sich heraus, dass make die Datei modules.order erstellt, die alle Module beschreibt, die kompiliert werden. Und selbst nach all den Konfigurationsänderungen und deren Speicherung wird diese Datei mit demselben Satz gefüllt. Ich habe mir nichts Besseres ausgedacht, als manuell Zeilen hinzuzufügen (meine Pfeife ist auf dem RTL8192CU-Chipsatz montiert):
kernel/driver/net/wireless/rtlwifi.ko kernel/driver/net/wireless/rtlwifi/rtl8192cu.ko
Alle Verweise auf diese Datei im Makefile wurden durch modules.order.fake ersetzt. Ich starte die Montage. Diesmal ging die Assembly los, brach jedoch ab, da sich keine ähnliche Datei im Quellcodeordner von rtlwifi befindet. Ich habe die Dateien modules.order.fake in modules.order in diesem Ordner und in diesen Unterordnern umbenannt, und dies war mein letztes Abenteuer beim Erstellen des Treibers. Danach zeigte mir das System noch zweimal die Menükonfiguration, als würde ich gefragt: "Wollen Sie das wirklich?", Sammelte aber immer noch drei weitere geschätzte .ko-Dateien, die wie erwartet landeten.
Mina Nr. 7: Gemeinsame Arbeit eines externen WiFi und eines Modems
Nachdem ich ein bisschen mit Airodump gespielt und sichergestellt hatte, dass das Gerät zumindest Pakete im Überwachungsmodus abfangen kann, entschied ich mich, das Modem erneut zu überprüfen. Tun
sudo wvdial
Die LED am externen WLAN-Adapter erlischt und SSH fällt ab. Dann habe ich in den Protokollen gelesen, dass der Adapter getrennt wurde. Der erste Gedanke ist das Problem mit der Ernährung. Bis zu diesem Moment habe ich mein Ladegerät für 1,5 Ampere verwendet, und der Hersteller empfiehlt bis zu 3 (wo so viel? Sie
isst nicht einmal ein Ampere ). Zur Hand war ein 2-Ampere-Ladegerät, das jahrelang regelmäßig den Raspberry Pi speiste.
Im Moment habe ich keine stabile Lösung für dieses Problem gefunden. Hier sind einige Lösungsversuche:
- Mit einer Wahrscheinlichkeit von 80% können Sie externes WLAN deaktivieren, indem Sie:
chmod 777 /sys/bus/usb/drivers/usb/unbind echo 1-1 > /sys/bus/usb/drivers/usb/unbind
Führen Sie dann wvdial aus, um eine Verbindung mit 1-3 Versuchen herzustellen, und Sie können online gehen. In 20% aller Arten von Hängen und Störungen. - Einmal stellte sich zufällig heraus, dass wvdial getötet wurde, aber pppd funktionierte weiter (wie könnte es sein?). Danach stieg externes WiFi (siehe oben, wir schreiben bind statt entbinden) und es gab eine Verbindung über das Modem. Es war nicht möglich, die Situation zu reproduzieren.
- Es stellte sich heraus, dass Sie ohne Neuerstellung des Kernels die Stromversorgung von USB mithilfe eines solchen Dienstprogramms mit dem Befehl ausschalten können
./hub-ctrl -h 0 -P 1 -p 0
und schalten Sie den Strom ein ./hub-ctrl -h 0 -P 1 -p 1
Bei 2G-IOT ist das Verhalten nicht vorhersehbar: Ein Stromausfall kann entweder eine Sekunde lang oder vor einem Neustart auftreten. In einigen Mondphasen friert das Board ein, wenn die Stromversorgung wiederhergestellt wird. - Schalten Sie die Jumper auf OTG (1234 hoch, 5678 runter), schalten Sie die Beine von GPIO 2 und 6 ein (klingeln, sie sind direkt mit Micro-USB-Strom verbunden).
Verbinden Sie den WLAN-Adapter über den USB-OTG-Adapter des Smartphones. Das System sieht das USB-Gerät überhaupt nicht. Vielleicht müssen Sie beharrlicher mit Springern spielen.
Nicht getestet, aber es kann funktionieren (plant, alle diese Optionen auszuprobieren):
- Ein weiterer WiFi-Adapter.
- Sehr stabile Stromversorgung mit einem maximalen Strom von 3 Ampere.
- Zusätzliche Leistung für USB-Füße.
- Benzin und Streichhölzer.
Im Allgemeinen sieht die Aufgabe so aus, als würde man eine dreieckige Decke über eine viereckige Orange ziehen.
Das ist alles für jetzt.
DanksagungIch möchte mich bei
bad__day ,
edtun , A. Repin, den Benutzern des Forums von
w3bsit3-dns.com , den Oldtimern im Telegramm-Chat und Kotu
bedanken , die mir die ganze Zeit geduldig zugehört haben und fast nicht versucht haben zu entkommen.
UPD: Heute haben sie mir ein Netzteil mit einem 5V 3A Ausgang gebracht. Damit war es möglich, sowohl das Modem als auch den USB-WLAN-Adapter gleichzeitig zu starten. Das Modem ist mit Fehlern übersät, reagiert nicht mehr, stellt jedoch im Durchschnitt ab dem dritten Versuch eine Verbindung her. Danach können Sie USB WiFi verwenden.
Zusammenfassend.
Das Single-Board Orange Pi 2G-IOT ist sehr roh und wird vom Hersteller fast nicht unterstützt. Selbst bei einfachen Dingen, bei denen es den Anschein hat, dass nichts auf Ärger hindeutet, kann etwas schief gehen. Wenn Sie ein Gerät mit Internetzugang über ein Mobilfunknetz verwenden müssen und nicht sicher sind, ob Sie mit Orange Pi umgehen können, ist es besser, extra zu zahlen und etwas zuverlässigeres und debuggteres zu nehmen. Sparen Sie Zeit und Nerven.