L'Orange Pi PC qui n'avait rien
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.
Sur Ubuntu, il faut installer la bibliothèque USB pour que la compilation fonctionne.
Voici le fichier fex généré depuis le .bin :
Pour ma part j'ai rajouté la directive suivante dans la section "hdmi_para".
Bon après il reste un problème de ratio mais ça fonctionne.
Voilà, fin de l'histoire.
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.