Articles - Banana Pi/Orange Pi

L'Orange Pi PC qui n'avait rien

  |   1136  |   Commentaires (2)  |  Banana Pi/Orange Pi
J'ai trouvé sur eBay un Xunlong Orange Pi (modèle "PC" en version 1.2) indiqué comme HS pour pièces. Cela a attisé ma curiosité car c'est rare que ces babioles se retrouvent HS. Bien que tout soit possible, même si on inverse les polarités il y a des protections (diodes).

Bref je l'ai acheté pour voir, 6 euros FDP IN. Bien évidemment il faut une carte SD et un OS dessus.

Alimenté en 5V par le port adéquat RAS, toutes les tensions sont présentes, 5V sur l'USB, 3.3V, 1.5V, 1.25V etc... il y a plein de points de tests partout.

J'ai vite fait cherché une image à mettre sur une carte SD. En l’occurrence une vieille Debian 8 (il existe une version plus récente en 10 buster). Tada !!!


Ca fonctionne même sur la télé Philips du salon.

Cet Orange Pi n'a absolument rien de défectueux.
Allez je vous dit la vérité, au départ chez moi aussi il ne fonctionnait pas, je l'ai testé relié à mon écran Samsung 4/3 1280x1024 qui a une entrée DVI seulement. Et dès qu'on utilise un câble HDMI vers DVI cela ne fonctionne pas par défaut sur les Orange Pi. C'est un bug connu (voir Google). L'Orange Pi démarre bien (boot sur linux) et les LED s'activent, mais pas d'affichage vidéo. J'ai triché car les photos ci-dessus montrent l'Orange Pi connecté en HDMI. Cet aspect est mieux géré sur le Rasbperry Pi où cela fonctionne nativement. Il faut donc se connecter en SSH pour bidouiller en ligne de commande (sudo h3disp) etc... Pour "corriger" cela il faut donner des directives spéciales au SOC AllWinner. Pour cela il existe le fichier script.bin à la racine de la partition de BOOT de la carte SD. L'équivalent du config.txt sur le Raspi.

Mais comme son extension l'indique c'est un fichier binaire. Donc pas éditable facilement en tant que tel.

Mais à la base c'est un fichier texte classique de type INI nommé FEX, comme les fichiers Windows .ini. Ce fichier est ensuite transformé pour être exploité par le SOC. Sunxi fournit les commandes pour passer d'un format à l'autre fex2bin et bin2fex. On récupère les sources.
Code BASH :
jonathan@cerise:~$ git clone git://github.com/linux-sunxi/sunxi-tools.git
Clonage dans 'sunxi-tools'...
remote: Enumerating objects: 1961, done.
remote: Total 1961 (delta 0), reused 0 (delta 0), pack-reused 1961
Réception d objets: 100% (1961/1961), 689.33 KiB | 1.46 MiB/s, fait.
Résolution des deltas: 100% (1202/1202), fait.
jonathan@cerise:~$ cd sunxi-tools/

Sur Ubuntu, il faut installer la bibliothèque USB pour que la compilation fonctionne.
Code BASH :
jonathan@cerise:~/sunxi-tools$ make
Setting version information: v1.4.2-69-g42ffc5f
cc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SO                         URCE -D_DEFAULT_SOURCE -Iinclude/   -o sunxi-fexc fexc.c script.c script_uboot.c                          script_bin.c script_fex.c
cc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SO                         URCE -D_DEFAULT_SOURCE -Iinclude/   -o sunxi-bootinfo bootinfo.c
cc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SO                         URCE -D_DEFAULT_SOURCE -Iinclude/  `pkg-config --cflags libusb-1.0` `pkg-config                          --cflags zlib`  -o sunxi-fel \
        fel.c progress.c soc_info.c fel_lib.c fel-spiflash.c  `pkg-config --libs                          libusb-1.0` `pkg-config --libs zlib`
Package libusb-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libusb-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libusb-1.0' found
Package libusb-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libusb-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libusb-1.0' found
fel_lib.c:26:10: fatal error: libusb.h: Aucun fichier ou dossier de ce type
 #include <libusb.h>
          ^~~~~~~~~~
compilation terminated.
Makefile:141: recipe for target 'sunxi-fel' failed
make: *** [sunxi-fel] Error 1

Code BASH :
sudo apt-get install libusb-1.0-0-dev

Code BASH :
jonathan@cerise:~/sunxi-tools$ make
cc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SOURCE -D_DEFAULT_SOURCE -I-1.0` `pkg-config --cflags zlib`  -o sunxi-fel \
        fel.c progress.c soc_info.c fel_lib.c fel-spiflash.c  `pkg-config --libs libusb-1.0` `pkg-config
cc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SOURCE -D_DEFAULT_SOURCE -I-part-main.c
cc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SOURCE -D_DEFAULT_SOURCE -Ipart.c -D A10
cc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SOURCE -D_DEFAULT_SOURCE -Ipart.c -D A20
cc  -o sunxi-nand-part nand-part-main.o nand-part-a10.o nand-part-a20.o
cc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SOURCE -D_DEFAULT_SOURCE -I
ln -nsf sunxi-fexc bin2fex
ln -nsf sunxi-fexc fex2bin

Code BASH :
jonathan@cerise:~/sunxi-tools$ ./bin2fex /nas/docs/script.bin /nas/docs/script.fex
fexc-bin: /nas/docs/script.bin: version: 1.2
fexc-bin: /nas/docs/script.bin: size: 35988 (81 sections), header value: 35988
jonathan@cerise:~/sunxi-tools$ 

Voici le fichier fex généré depuis le .bin :

Pour ma part j'ai rajouté la directive suivante dans la section "hdmi_para".

Code BASH :
jonathan@cerise:~/sunxi-tools$ ./fex2bin /nas/docs/script.fex > /nas/docs/script.bin

Bon après il reste un problème de ratio mais ça fonctionne.


Voilà, fin de l'histoire.