Changes between Initial Version and Version 1 of setup_target/bebop2


Ignore:
Timestamp:
Jan 16, 2020, 3:33:50 PM (5 years ago)
Author:
Bayard Gildas
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • setup_target/bebop2

    v1 v1  
     1Cette page contient les informations nécessaires pour utiliser le drone parrot bebop2 sous linux avec des programmes "maison". Tous les capteurs et actionneurs sont utilisables.
     2N'hésitez pas à contribuer en envoyant un mail à drones(at)hds.utc.fr
     3
     4Le drone bebop2 fonctionne avec une distribution linux Parrot. Certains logiciels spécifiques ajoutés par Parrot ont leurs sources sur https://github.com/Parrot-Developers
     5On y trouve notamment les sources du noyau utilisé.
     6
     7Une doc sur le "hack" du drone [https://github.com/nicknack70/bebop/blob/master/UBHG/UBHG1_7_3.pdf ici].
     8
     9== Connexion ==
     10Pendant son boot le drone crée un point d'accès wifi Bebop2-xxxxxx. Il faut s'y connecter depuis son PC. Ensuite il faut appuyer 4 fois rapidement sur le gros bouton rouge à l'arrière sous la batterie et un serveur telnet est lançé. Il suffit alors de taper {{{ telnet 192.168.42.1 }}}
     11
     12Si après les 4 appuis un câble USB est branché, alors le drone crée une connexion ethernet over USB. On peut donc aussi accéder au drone par cette interface avec {{{ telnet 192.168.43.1 }}}, ce qui est pratique en cas de problème avec une configuration wifi custom.
     13
     14== Procédure de démarrage ==
     15Au démarrage le premier processus exécuté ("init") correspond au binaire /sbin/boxinit (programme maison Parrot, fork d'android init. Non publié sur Parrot-devs).
     16
     17Celui-ci exécute les instructions présentent dans /etc/boxinit.rc. Les instructions sont organisées par "classes" qui contiennent des "services". La classe "core" est lancée au boot. Apparemment la classe "core-main" est lancée ensuite.
     18Le service rcs-init, membre de la classe core, correspond au principal script de démarrage, /etc/init.d/rcS. Ce script effectue les actions "one shot" qui doivent être faites au démarrage: configurer le réseau et les IOs notamment.
     19
     20== Logs ==
     21Toutes les opérations sont loguées par le démon ulogger. Il s'agit d'un binaire Parrot (sources fournis sur Parrot-devs, projet "ulog").
     22{{{ ulogger -h }}} pour les options.
     23Les logs peuvent être consultés avec le binaire ulogcat.
     24Très intéressant pour suivre toutes les étapes du démarrage.
     25
     26== Réseau ==
     27=== démarrage ===
     28Lors du démarrage le script /etc/init.d/rcS démarre udev (/usr/bin/udevd_init). La configuration d'udev se trouve dans /lib/udev (histoire qu'on galère un peu pour la trouver...). le fichier rules.d/50-network.rules rassemble les règles associées à la gestion du réseau principal (wifi).
     29Au démarrage le bsp créé un périphérique usb broadcom. Udev le détecte, ce qui active une règle qui exécute {{{/sbin/broadcom_setup.sh insmod}}}. En conséquence les modules wl (driver broadcom propriétaire) et bcm_dbus sont chargés.
     30Le chargement du driver wl entraîne la déclaration de l'interface eth0 dans le noyau.
     31Udev le détecte, ce qui active une règle qui exécute {{{/sbin/broadcom_setup.sh create_net_interface}}}. En conséquence l'interface eth0 est configurée en mode wifi access point.
     32
     33à la fin du démarrage on lance un chroot sur un système de fichier maison afin de continuer avec nos programmes. Le système de fichier, obtenu avec robomap3, se trouve là [https://devel.hds.utc.fr/software/flair/wiki/setup_target]
     34=== watchdog ===
     35Au démarrage un démon de surveillance est démarré /usr/bin/bcm-watchdog. {{{bcm-watchdog -h}}} pour les options.
     36Appelle {{{broadcom_setup.sh reboot}}} en cas de perte de connexion. Ce script appelle broadcom_reset.sh. Ce script désactive l'interface réseau, attend 3s et la réactive (ça doit faire bizarre en vol!)
     37
     38== Gros bouton ==
     39Pendant le démarrage un démon est lancé pour surveiller les appuis sur le gros bouton rouge à l'arrière sous la batterie. Les différents comportements sont décrits dans le répertoire /bin/onoffbutton.
     40Les comportement sont
     41  * 1 appui court: shutdown
     42  * 4 appuis courts: mode debug. Démarrage du démon telnet, du démon adb (android debug) et configuration d'une liaison "ethernet over usb" sur l'interface réseau rndis0.
     43  * 1 appui long: changement de bande wifi
     44  * 1 appui trèèèès long: '''DANGER! ''' factory reset: toute la partie /data est écrasée, on perd tout ce qu'on a installé
     45
     46=== rootfs ===
     47
     48We use a chrooted environment
     49https://uav.hds.utc.fr/src/bebop/robomap3/core-image-flair-bebop.tar.bz2
     50
     51=== chroot script ===
     52chroot script (''/data/ftp/internal_000/bebop_chroot.sh''):
     53
     54{{{
     55#!/bin/sh
     56
     57kk
     58
     59mount -o bind /dev /data/ftp/internal_000/rootfs/dev/
     60mount -o bind /sys /data/ftp/internal_000/rootfs/sys/
     61mount -o bind /proc /data/ftp/internal_000/rootfs/proc/
     62
     63mount -t tmpfs -o mode=0755,nodev,nosuid tmpfs /data/ftp/internal_000/rootfs/run
     64mount -t devpts devpts /data/ftp/internal_000/rootfs/dev/pts
     65
     66chroot  /data/ftp/internal_000/rootfs/ /etc/init.d/dropbear start
     67}}}