🛠 Override du device tree : OTG en gadget, UART2, et l'Euler bus oublié

Pine64 PINE A64 / PINE A64+ (Allwinner A64) · avance · Schéma : IMG-pine64-avance-3-device-tree-otg-euler.svg — PINE A64 avec son connecteur micro-USB OTG relie a un PC en mode peripherique, overlay device tree dr_mode peripheral affiche dans un terminal, connecteur Euler 2x17 annote (UART, SPI, SPDIF, CAN) a cote du connecteur Pi-2, module RTL8723BS enfiche sur son port SDIO

Objectifs

Le device tree mainline de la PINE A64 (sun50i-a64-pine64.dts, compatible pine64,pine64) fait des choix pragmatiques que l'on peut contester : le port OTG est figé en hôte (usb_otg dr_mode = "host"), l'UART2 du connecteur Pi-2 est désactivé, et le bus Euler 2×17 — la vraie originalité de la carte, avec UARTs supplémentaires, SPI, SPDIF et CAN — n'est exploité par aucune image par défaut. Ce tuto avancé : comprendre la structure du DTS, écrire un overlay, et réclamer à son compte les périphériques silencieux de la carte.

Matériel

Code complet

/* pine64-otg-peripheral.dts — overlay : rendre l'OTG périphérique */
/dts-v1/;
/plugin/;
&usb_otg {
    dr_mode = "peripheral";   /* le mainline impose "host" */
    status  = "okay";
};
&uart2 {
    status = "okay";          /* PB0/PB1 = broches UART2 du connecteur Pi-2 */
};
# Compiler l'overlay :
dtc -@ -I dts -O dtb -o pine64-otg-peripheral.dtbo pine64-otg-peripheral.dts
sudo cp pine64-otg-peripheral.dtbo /boot/dtb/allwinner/overlay/
# Déclarer l'overlay (Armbian : /boot/armbianEnv.txt, ligne : overlays=...)
# reboot, puis vérifier côté PC hôte : lsusb voit apparaître la carte (gadget).

# Inventaire des contrôleurs présents mais désactivés :
ls /sys/firmware/devicetree/base/soc/ | head -40
grep -rl '"disabled"' /sys/firmware/devicetree/base/ 2>/dev/null | head

# Les banques GPIO exposées (PB..PH) et leur numérotation bank*32+pin :
#   PD16 -> 112   PH2 -> 226   (pinctrl-sun50i-a64.c)
gpioinfo gpiochip0 | grep -E 'PD|PH'

Vérification attendue

Après reboot avec l'overlay, le port micro-USB OTG est vu comme périphérique depuis le PC hôte (lsusb côté PC, dmesg | grep -i gadget côté carte) — preuve que le dr_mode du DTS mainline était bien le verrou. L'UART2 activé apparaît (ls /dev/ttyS* ou ttySN selon l'ordre d'numérotation) sur les broches PB0/PB1 du connecteur Pi-2. Pour l'Euler bus (2×17 broches : UARTs supplémentaires, SPI, SPDIF, CAN), le chemin est le même : activer les contrôleurs concernés dans un overlay et câbler selon le PDF officiel de pinnage — la carte offre plus de connecteurs que son image par défaut n'en active.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels