Orange Pi 2G-IOT: carte du champ de mines



Il y a quelque temps, on m'a proposé de travailler un peu avec un PC à carte unique Orange Pi 2G-IOT (2G intégré et le prix semble très attractif). Après avoir lu un article sur le paradis orange , j'ai pensé que je répéterais ce chemin sans aucune difficulté, d'autant plus qu'avec Linux je suis sur le "vous" (ou plutôt, j'ai pensé il y a environ trois semaines) et j'avais déjà de l'expérience avec Raspberry Pi 2 B +. En pratique, ce chemin s'est avéré beaucoup plus long. Il y avait le sentiment que nos amis chinois créaient intentionnellement des difficultés (et parfois avec un cynisme particulier). Si vous souhaitez enregistrer et acheter ce forum, lisez d'abord cet article et détrompez-vous.

Si possible, j'essaierai de restreindre les émotions ou du moins de les traduire en humour.
Donc, ici, je reçois une carte et une carte SD de la dixième année. Allons-y.

Tout ce qui est écrit ci-dessous se réfère au modèle Orange Pi 2G-IOT, mais dans le chat Telegram (recherchez «Orange Pi et pas seulement»), ils disent que les modèles 2G, 3G et 4G se comportent de la même manière (tout aussi mauvais). L'écrit ne s'applique PAS, par exemple, à l'Orange Pi PC et à l'Orange Pi One, qui, selon les critiques, se comportent de manière stable.

Mina n ° 1 (formation): téléchargement de l'image du système d'exploitation


Il semblerait que cela pourrait être plus facile? Nous allons sur le site Web du fabricant et téléchargeons. Cependant, tous les liens mènent à mega.nz, qui les collecte directement dans le navigateur. Mon ordinateur portable bon marché avec 4 Go de RAM n'a pas tiré une telle tâche et l'onglet est tombé. Il serait possible d'utiliser un programme propriétaire pour le téléchargement à partir de Mega, mais cela ne m'a pas inspiré confiance (d'autant plus que certaines personnes écrivent sur Internet que le programme est reconnu par les antivirus comme un malware). Options de la solution: téléchargez à partir d'un site non officiel (par exemple, ici ), déployez une machine virtuelle et mettez-y un client pour le téléchargement à partir de Mega, demandez à quelqu'un avec un PC plus moderne de télécharger l'image.

Un peu plus sur les OS pour orange
Pour de nombreux modèles Orange, les utilisateurs recommandent Armbian, mais il ne m'a pas impressionné sur 2G-IOT: il ressemble à Raspbian minimaliste. Soit dit en passant, il n'y a pas d'image pour 2G-IOT sur le site Web d'Armbian, uniquement sur le site Web d'Orange Pi. J'ai également essayé Ubuntu Server, mais cela ne montrait aucun signe de vie. La NAND intégrée d'Android semble fonctionner, mais je ne l'ai pas étudiée du tout, très probablement, sans écran tactile, elle est de peu d'utilité. Au fait, je vous rappelle que le périphérique de démarrage est déterminé par la position du cavalier dans le coin de la carte, par défaut il y a un démarrage à partir de la mémoire NAND intégrée.

Mina n ° 2: accès Internet via modem


Suite à la configuration textuelle de wvdial et pppd sur Internet, j'ai soudainement découvert que les requêtes ping passaient bien, mais les paquets TCP normaux ne l'étaient en aucune façon:

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:~$ 

La solution a incité edtun : https://www.linux.org.ru/forum/admin/12135523 , bien que j'admette que cela aurait pu être plus simple.

Immédiatement alerté que le modem IMEI est rempli de zéros. Heureusement, l'opérateur télécom rouge-blanc n'y prête pas attention. (Soit dit en passant, le WiFi intégré n'a pas non plus d'adresse MAC: il est généré de manière aléatoire à chaque secousse de l'alimentation.)

Mina n ° 3: port USB


On colle un sifflet WiFi dans le connecteur USB et ... Rien ne se passe. lsusb a affiché un port USB vide. Un peu de creusement a montré que la carte n'a vraiment qu'un seul USB. Et par défaut, il est connecté au port microUSB. Pour le basculer sur un hôte USB standard, vous devez basculer les cavaliers sur la carte, qui sont situés à côté du cavalier pour sélectionner le démarrage. Leur description est sur w3bsit3-dns.com:
Solution: mettez les cavaliers en position: 1234 vers le bas, 5678 vers le haut.

Ce n'est qu'alors que j'ai trouvé une petite mention de cette nuance dans le manuel d'Orange Pi.

Mina n ° 4: Pilotes


Maintenant, le périphérique est détecté dans le système, lsusb affiche le fabricant et le code produit, mais l'interface réseau sans fil n'est pas détectée dans le système. Parce que les développeurs n'ont pas fourni de pilotes pour les adaptateurs WiFi sur une orange. Et pas du tout. Il n'y a de pilote que pour le WiFi intégré, ni plus ni moins. Et que faisons-nous lorsque nous n'avons pas de pilote pour notre matériel? C'est vrai, récupérons- les à partir du code source !

Mine # 5: Se préparer à construire


En correspondance, bad__day a suggéré d'assembler directement sur Orange Pi. C'est peut-être possible, mais j'ai échoué.

Pour Orange Pi, les développeurs ont créé un système de construction Orange Pi spécial, à l'aide duquel, en théorie, pour construire un noyau ou des modules, il suffit de suivre simplement les instructions à l'écran. Des instructions détaillées sont données dans le manuel à partir de la page 61. Il semblerait que juste suivre, et tout ira bien, mais non.

Tout d'abord, afin de ne pas éditer manuellement toutes les dépendances sur mon ordinateur (je mets régulièrement à jour des logiciels, c'est super, mais pas cette fois), j'ai déployé une machine virtuelle avec Ubuntu 16.04 et y ai effectué toutes les actions. Deuxièmement, une erreur s'est glissée quelque part dans les scripts et le système de construction n'a pas mis de chaîne d'outils pour la compilation multiplateforme. Ceci est résolu avec une telle béquille:

  1. Apt-get'om met manuellement la chaîne d'outils pour la compilation croisée sous ARM.
  2. Faire des liens symboliques:
     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 
    Attention: le compilateur est pris en version 4.9, rien ne sera collecté sur les versions ci-dessus.
  3. Ouvrez OrangePiRDA / scripts / Prepare_toolchain.sh et juste au cas où, commentez les lignes qui mentionnent la chaîne d'outils.

En fait, tous ces scripts appellent juste apt-get install -y ... et make. Le script n'offre pas à l'utilisateur de modifier la configuration en aucune façon (ou ne l'ai-je pas trouvé?).

Mais après tout, rien ne nous empêche de nous appeler

 make menuconfig 

et marquez les pilotes nécessaires. Nous faisons cela et collectons à nouveau (maintenant seuls les modules sont possibles) et ...

Mine n ° 6 (avec un capteur de mouvement infrarouge vissé et un détonateur de rechange): Ensemble pilote


... Et puis le script a commencé à poser des questions sur la façon de configurer le noyau. Il a appelé le configurateur de noyau à l'ancienne, mais pourquoi?! Qu'est-ce qui ne va pas?

Il s'est avéré que le Makefile est écrit pour vérifier les changements de configuration TIME (!!!)!



Le commentaire se lit littéralement "quelqu'un creusait." (Dans la capture d'écran, le Makefile déjà modifié, j'ai enregistré menuconfig.) J'ai essayé d'appeler make oldconfig, je n'ai pas remarqué que cela changeait quelque part. D'accord, maintenant après l'appel de la menuconfig pendant l'assemblage, ce n'est pas effrayant. J'appelle à nouveau l'assemblée, l'assemblée remarque que «quelqu'un creusait dans la config», appelle menuconfig, je quitte et j'attends la fin. Imaginez maintenant ma surprise quand je n'ai pas trouvé le pilote que j'ai sélectionné.

Avertissement avant de lire
À ce stade, j'ai quitté la compréhension de ce qui se passe, et j'ai finalement perdu le contact avec la réalité, le bon sens et la civilisation de la planète Ross 128 b. J'ai dépassé les limites de mes connaissances, de tous mes amis et de TARDIS. J'ai commencé à créer un non-sens complet, et le seul objectif était de récupérer ce pilote [CENSORÉ] à tout prix. Si, en lisant le texte ci-dessus, vous vous êtes agrippé la tête plus de deux fois, ne lisez pas le texte ci-dessous. Ce sera plus calme pour vous et moi. Si vous pouvez expliquer clairement ce qui se passe et expliquer où je me trompe et comment, alors dites-le-moi. Je vous en prie.



Eh bien, nous montons pour comprendre. Il s'avère que make crée le fichier modules.order, qui décrit tous les modules qui seront compilés. Et même après toutes les modifications de configuration et son enregistrement, ce fichier est rempli avec le même ensemble. Je n'ai rien trouvé de mieux que d'y ajouter manuellement des lignes (mon sifflet est assemblé sur le chipset RTL8192CU):

 kernel/driver/net/wireless/rtlwifi.ko kernel/driver/net/wireless/rtlwifi/rtl8192cu.ko 

Toutes les références à ce fichier dans le Makefile ont été remplacées par modules.order.fake. Je commence l'assemblage. Cette fois, l'assemblage est parti, mais s'est interrompu, car il n'y a pas de fichier similaire dans le dossier du code source rtlwifi. J'ai renommé les fichiers modules.order.fake en modules.order dans ce dossier et sous-dossiers, et c'était ma dernière aventure dans la construction du pilote. Après cela, le système m'a montré la menuconfig deux fois de plus, comme s'il me demandait "voulez-vous vraiment cela?", Mais a quand même collecté trois fichiers .ko précieux, qui se sont terminés comme prévu.

Mina n ° 7: Travail conjoint d'un WiFi externe et d'un modem


Après avoir joué un peu avec airodump et m'être assuré que l'appareil peut au moins attraper les paquets en mode moniteur, j'ai décidé de vérifier à nouveau le modem. Faire

 sudo wvdial 

Et le voyant de l'adaptateur WiFi externe s'éteint et SSH tombe. J'ai ensuite lu dans les journaux que l'adaptateur était déconnecté. La première pensée est le problème de la nutrition. Jusqu'à ce moment, j'ai utilisé mon chargeur pour 1,5 ampère, et le fabricant en recommande jusqu'à 3 (où tant? Elle ne mange même pas un ampère ). À portée de main était un chargeur de 2 ampères, qui alimentait régulièrement le Raspberry Pi pendant des années.

Pour le moment, je n'ai trouvé aucune solution stable à ce problème. Voici quelques tentatives de solution:

  • Avec une probabilité de 80%, vous pouvez désactiver le WiFi externe en utilisant:

     chmod 777 /sys/bus/usb/drivers/usb/unbind echo 1-1 > /sys/bus/usb/drivers/usb/unbind 

    puis exécutez wvdial, qui tentera d'établir une connexion avec 1 à 3 tentatives et vous pourrez vous connecter. Dans 20% de toutes sortes de blocages et de pépins.
  • Une fois, par hasard, il s'est avéré que wvdial a été tué, mais pppd a continué à fonctionner (comment pourrait-il être?), Après quoi le WiFi externe a augmenté (voir ci-dessus, nous écrivons bind au lieu de délier) et il y avait une connexion via le modem. Il n'a pas été possible de reproduire la situation.
  • Il s'est avéré que sans reconstruire le noyau, vous pouvez couper l'alimentation USB en utilisant un tel utilitaire avec la commande

     ./hub-ctrl -h 0 -P 1 -p 0 

    et allumez le pouvoir
     ./hub-ctrl -h 0 -P 1 -p 1 
    Sur 2G-IOT, le comportement est imprévisible: une panne de courant peut se produire soit pendant une seconde, soit avant un redémarrage. Dans certaines phases de la lune, une tentative de retour de l'alimentation fait geler la carte.
  • Basculez les cavaliers sur OTG (1234 vers le haut, 5678 vers le bas), appliquez une alimentation aux jambes des GPIO 2 et 6 (sonnerie, ils sont directement connectés à l'alimentation microUSB)

    Brochage


    Connectez l'adaptateur WiFi via l'adaptateur USB-OTG du smartphone. Le système ne voit pas du tout le périphérique USB. Vous devrez peut-être jouer de manière plus persistante avec les cavaliers.

Non testé, mais cela peut fonctionner (prévoit d'essayer toutes ces options):

  • Un autre adaptateur WiFi.
  • Alimentation très stable avec un courant maximum de 3 ampères.
  • Puissance supplémentaire aux pieds USB.
  • Essence et allumettes.

En général, la tâche ressemble à tirer une couverture triangulaire sur une orange quadrangulaire.

C'est tout pour l'instant.

Remerciements
Je voudrais exprimer ma gratitude à bad__day , edtun , A. Repin, aux utilisateurs du forum de w3bsit3-dns.com , aux anciens du chat Telegram et à Kotu, qui m'ont patiemment écouté tout ce temps et n'ont presque pas essayé de s'échapper.


UPD: Aujourd'hui, ils m'ont apporté une alimentation avec une sortie 5V 3A. Avec lui, il était possible de lancer simultanément le modem et l'adaptateur USB WiFi. Le modem arrose d'erreurs, cesse de répondre, mais en moyenne il se connecte à partir de la troisième tentative. Après cela, vous pouvez utiliser le WiFi USB.

Pour résumer.


L'Orange Pi 2G-IOT à carte unique est très brut et presque pas pris en charge par le fabricant. Même sur des choses simples, où il semblerait que rien ne présage de problème, quelque chose peut mal tourner. Si vous devez utiliser un appareil avec accès Internet via un réseau mobile et que vous n'êtes pas sûr de pouvoir faire face à Orange Pi, il est préférable de payer un supplément et de prendre quelque chose de plus fiable et débogué. Gagnez du temps et des nerfs.

Source: https://habr.com/ru/post/fr440960/


All Articles