wiki:setup_target/mambo

le rolling spider

une fois branché en usb, le drone monte un réseau via usb (ip drone 192.168.2.1)

mais un script vérifie l'état de la connexion et force l'extinction du drone si non connecté en bluetooth (voir /bin/device_monitoring.sh)

pour y remédier, faire sur le drone:

touch /tmp/.shell.userconnected

Organisation de la flash drone original

  • mtd0: 0x000000000000-0x000000040000 : "Pbootloader" 256 Ko
  • mtd1: 0x000000040000-0x000001040000 : "Pmain_boot" 16 Mo
  • mtd2: 0x000001040000-0x000001840000 : "Pfactory" 8 Mo
  • mtd3: 0x000001840000-0x000003840000 : "Psystem" 32 Mo
  • mtd4: 0x000003840000-0x000008000000 : "Pupdate" 73472 Ko

mtd1 : contient les noyaux, 2 partitions ubifs

  • "main_boot" (8.1 Mo) noyau principal au format plf
  • "alt_boot" (6.7 Mo) noyau alternatif au format plf, avec un initrd contenant l'updater

mtd2 : contient des infos produit (mac address, no série, etc), ubifs ("factory") monté dans /factory

mtd3 : rootfs, ubifs ("system") monté dans /

mtd4 : 2 partitions ubifs

  • "update" (15 Mo) monté dans /update
  • "data" (51 Mo) monté dans /data

bootparams :

parrotparts=nand0:256K(Pbootloader),16M(Pmain_boot),8M(Pfactory),32M(Psystem),73472K(Pupdate) console=ttyPA1,115200 loglevel=5 quiet lpj=1038336 ubi.mtd=Pfactory,2048 ubi.mtd=Psystem,2048 root=ubi1:system rootfstype=ubifs ubi.mtd=Pupdate,2048   androidboot.bootloader=ecos-bootloader-omap3630-start-26-gbe3a3db

montages usb

  • Voir ici pour la doc sur le montage usb
  • monter localement un fichier image
    losetup -o 4096 /dev/loop0 /data/usb_disk.img 
    mount -t vfat /dev/loop0 /data/hds/usb/
    

les minidrones (blaze, mars et swat)

une fois branchés en usb, appuyer 4 fois sur le bouton pour monter un réseau via usb (ip drone 192.168.2.1) (ne semble marcher que sur le blaze!)

  • ram 32Mo
  • flash 128Mo
  • cpu ARM926EJ-S 200MHz
  • noyau 2.6.36
  • mpu6050: 3 acc et 3 gyros (i2c)
  • capteur pression MS5607 (i2c)
  • magneto akm8963?? (listé dans /dev) mais pas sur que le capteur soit la
  • ultra son

Se présente comme une clé usb par défaut. Les données sont dans /data/usb_disk.img

Lorsque l'on appuie 4 fois sur le bouton, se présente comme une clé usb, un eth et un port série. Les données sont dans /data/usb_debug_disk.img

remonter / en rw

pour faire des modifs sur le rootfs:

mount -o remount,rw /

montages usb

  • Voir ici pour la doc sur le montage usb
  • changer la taille des montages usb:
    vi /bin/delos_shell.sh
    
    et redémarrer le drone
  • monter localement un fichier image
    mount -o loop /data/usb_disk.img /data/hds/usb/
    

récuperer un rootfs custom

en vue d'en faire un chroot

procédure complexe (à cause du peu de flash dispo), à voir si simplifiable

  • régler la taille du usb_disk.img pour mettre le rootfs
    mount -o remount,rw /
    vi /bin/delos_shell.sh
    
  • mettre le tar.gz sur la clé usb
  • appuyer 4 fois sur le bouton
  • libérer de la mémoire (pour le tmpfs)
    kk
    killall BLEproxy
    
  • faire un tmpfs
    mount -t tmpfs -o size=32M tmpfs /data/hds/tmp
    
  • monter localement le fichier image
    mount -o loop /data/usb_disk.img /data/hds/usb/
    
  • copier le tar.gz sur le tmpfs
  • effacer le disk.img pour gagner de la place
  • décompresser le tar.gz
  • régler la taille du usb_disk.img à une valeur faible
    vi /bin/delos_shell.sh
    

lancer le chroot

et un serveur ssh

#kk

#shutdown camera, dragon-prog uses too much cpu for optical flow
echo 0 > /sys/devices/platform/user_gpio/HRESET_CAM/value

mount -o  bind /dev /data/hds/rootfs/dev/
mount -t sysfs sys /data/hds/rootfs/sys/
mount -t proc proc /data/hds/rootfs/proc/
 
mount devpts /data/hds/rootfs/dev/pts -t devpts

unset LD_PRELOAD 
chroot  /data/hds/rootfs/ /etc/chroot_init

bluetooth

voir ici

lancer automatiquement un programme au démarrage

Les minidrones (en tout cas le mambo) utilisent comme système de démarrage "boxinit". Probablement un développement maison parrot.

Pour démarrer notre système automatiquement en fin de démarrage il faut

  • créer le fichier /etc/boxinit.d/99-hds.rc qui contient
    service hds /data/hds/start.sh
        disabled
        oneshot
        
    on boot
        start hds
    
  • créer /data/hds/start.sh avec le contenu
    #!/bin/sh
    /data/hds/chroot.sh > /data/hds/start.log
    
  • rendre le script exécutable
    chmod +x /data/hds/start.sh
    

On peut donc ensuite récupérer le log dans /data/hds/start.log

Mambo

  • ram 64Mo

Nécessite un custom firmware pour avoir le réseau sur bluetooth et le telnet: https://github.com/Parrot-Developers/MinidronesEdu

placer le fichier à la racine de la clé usb (testé avec un firmware original en 2.6.6)

  • hostname

On peut spécifier le hostname dans /etc/boxinit.rc

  • IP usb

Editer le fichier binaire /usr/bin/delosd et remplacer 192.168.2.1 par 192.168.n.1 avec n le numéro du drone /!\ le fichier n'est pas facilement éditable car le fichier est chargé en mémoire et apparemment protégé. Si on tue delosd il est relançé dans la femtoseconde. Une solution est de copier delosd en delosd1, de l'éditer, puis de supprimer delosd et de renommer delosd1 en delosd...

Last modified 14 months ago Last modified on Sep 1, 2020, 10:26:38 AM