Pages

mardi 28 décembre 2010

Kidizoom et Ubuntu Maverick

Pour Noël, nous avons offert un appareil photo Kidizoom Pro de chez Vtech à chacune de nos deux petites filles (hé oui, je suis grand-père). Malheureusement, au branchement du câble usb... rien ne se passe!
Comment? Un appareil photo non reconnu par Linux? Étrange! Un  "lsusb"  me montre que le KP est bien vu par le système mais ne se monte pas automatiquement. Un peu de Google m'apprend qu'un satané bug ne permettrait plus à notre cher OS le montage automatique des partitions en fat16.... Soit...
Après quelques recherches sur les règles udev , voici une solution qui vous permettra de ne pas à avoir à monter à la main le KP. Petite précision, c'est de l'usb1, ce qui explique la lenteur du débit de chargement. Et là votre OS n'y est pour rien.


Tout d'abord, créons et éditons un fichier de règles udev:
$ sudo touch /etc/udev/rules.d/90-kidizoom.rules
$ sudo gedit /etc/udev/rules.d/90-kidizoom.rules


Puis glissons y une ligne pour le montage...
KERNEL=="sd?1", SUBSYSTEMS=="scsi", ACTION=="add", ATTRS{vendor}=="VTech   ", ATTRS{model}=="Kidizoom        ", SYMLINK+="kidizoom", RUN+="/chemin/vers/mount-script %k"


...et une pour le démontage
KERNEL=="sd?1", SUBSYSTEMS=="scsi", ACTION=="remove", ENV{ID_VENDOR}=="VTech*",  RUN+="/chemin/vers/umount-script %k"


Le fichier est ici, attention ne pas oublier de changer le chemin des RUN et de recharger udev avec:
$ sudo service udev restart


Installer "pmount":
$ sudo apt-get install pmount


Voici pour le script de montage:
#!/bin/bash                                 
mk() {                                       
pumount /dev/$1                      
sleep 1                              
pmount -t vfat /dev/kidizoom KIDIZOOM
xhost local:$2                       
nautilus /media/KIDIZOOM      
}                                            
user=`who | grep :0\) | cut -f 1 -d ' '`     
export DISPLAY=:0.0                          
export -f mk                                 
su $user -c "mk $1 $user"


Et le script de démontage:
#!/bin/bash                                        
umk() {                                            
pumount /dev/$1                            
sleep 1                                    
xhost local:$2                             
zenity  --info --text "Kidizoom is unmount"
}                                                  
user=`who | grep :0\) | cut -f 1 -d ' '`           
export -f umk                                      
export DISPLAY=:0.0                                
su $user -c "umk $1 $user"


Pour les télécharger c'est ici et .

Ne pas oublier de les rendre exécutables:
$ chmod +x /chemin/vers/mount-scripts; chmod +x /chemin/vers/umount-script

Merci à sevkeifert pour son coup de main
Et voilà ...

15 commentaires:

  1. Bonjour,
    Merci pour vos conseils.
    Par contre je pense qu'il y a une petite erreur dans le script de montage :
    dans la commande pmount, ne faut-il pas mettre /dev/$1 au lieu de /dev/kidizoom ?

    Par contre (même avec cette correction) ça ne marche pas sur mon PC (ubuntu 10.10, portable Siemens). Dans dmesg je vois les erreurs suivantes lorsque je branche l'appareil : "... Buffer I/O error on device sdb, ..."
    Du coup je pense que la règle /etc/udev/rules.d/90-kidizoom.rules n'est pas appelée.
    Je ne sais pas trop comment faire, à part lancer les scripts de montage/démontage à la main...

    RépondreSupprimer
  2. Thanks very much for this solution! At least now I can access the cameras the kids got for Christmas.
    Cheers
    Andy

    RépondreSupprimer
  3. @stedusud: les règles udev créent un /dev/kidizoom grâce à ...SYMLINK+="kidizoom"... dans 90-kidizoom.rules et le /dev/$1 correspond au "device" lu pas le kernel c'est à dire dans votre cas /dev/sdb1 à en croire votre "dmesg". L'erreur qui se trouve dans "dmesg" est la même pour tous, c'est pourquoi j'ai fait ce billet, à ceci près: le nom du "device" peut changer en fonction du nombre de disques montés. Chez vous c'est sdb1, chez moi sdi1 ...
    Pour le reste regardez si /dev/kidizoom est crée quand vous branchez votre KP, si c'est le cas la règle fonctionne en partie et dans ce il faudra creuser un peu plus pour lui donner plus de précision...

    @Andy McMaster: Thank you very much, i hope your kids are very happyare very happy

    RépondreSupprimer
  4. @stedusud: Juste une petite précision /dev/kidizoom est un lien symbolique vers /dev/sd?1

    RépondreSupprimer
  5. @rcspam:
    Merci pour vos précisions. Effectivement le lien symbolique /dev/kidizoom est bien créé par la règle rajoutée lorsque l'appareil est branché (désolé pour ma remarque fausse...). Et il est bien supprimé lorsque je débranche l'appareil.
    Mais le montage ne s'effectue pas, il faut quand même que je lance le script manuellement (j'ai remis /dev/kidizoom ald /dev/$1).
    Il faut donc renseigner un peu plus la règle ?

    RépondreSupprimer
  6. @stedusud: Avez vous téléchargé le fichier ou l'avez vous créé en copiant les lignes du billet?
    Dans ce dernier cas, il y des espaces dans la valeur de certains ATTR.
    Est-ce que les chemins pour atteindre les scripts sont bons?
    Éventuellement, faire un 'udevadm monitor' et brancher le KP pour avoir d'autres attributs, la je n'ai plus de KP sous la main, mes petites filles ne vivent pas avec moi malheureusement;)
    En espérant que tout ceci vous aidera ... Bonne chance et tenez moi au courant.

    RépondreSupprimer
  7. Bonjour,
    cet article est la seule piste que j'ai trouvé concernant l'utilisation du Kidizoom pro avec ubuntu. J'utilise Linux Mint Katya (base Ubuntu 11.04) et je dois passer à coté de quelquechose parcequ'impossible de démonter l'appareil "umount: /media/KIDIZOOM n'est pas dans fstab (et vous n'êtes pas l'usager ROOT)" ... je suis novice. Pouvez vous m'aider s'il vous plait ?
    Merci par avance.
    Cdlt

    RépondreSupprimer
  8. @ftha
    Avez vous suivi le tuto dans son ensemble ?

    Il y un oubli dans ma note, il faut rendre exécutables les deux scripts "mount-script" et "umount-script" avec:

    $ chmod a+x ./mount-script
    $ chmod a+x ./umount-script

    et les placer dans dans le chemin des exécutables.
    Par exemple placer les scripts dans un répertoire "/home/votre login/bin" avec:

    $ mv ./mount-script ./umount-script /home/votre login/bin

    et ajouter "/home/votre login/bin" à la variable $PATH de votre .bashrc avec:

    $ gedit "/home/votre login/.bashrc"

    et ajoutez PATH=$PATH:/home/votre login/bin/ à la fin du fichier.

    En espérant que cet précision vous aidera ...

    RépondreSupprimer
  9. Bonjour

    J'ai trouvé l'erreur (dans le billet et dans le script à télécharger). Il manque des guillemets dans le "run" de la "rule" pour monter :
    RUN+="/path/to/mount-script %k

    Ce devrait être :
    RUN+="/path/to/mount-script %k"

    Une fois que c'est fait, ça marche impeccable.
    Merci pour ce travail de documentation.

    RépondreSupprimer
  10. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
  11. Ce commentaire a été supprimé par l'auteur.

    RépondreSupprimer
  12. Bonjour,
    Bon pour etre franc, je nage total avec les explications.
    De pire en pire puisqu'àpres quelques manipulations j'etais meme dans l'impossibilité de voir le contenu du kidizoom.

    Ce matin, en chinant, je suis parvenu à cette page : https://help.ubuntu.com/community/MountingWindowsPartitions

    et j'ai utilisé les commandes suivantes dans un terminal:

    sudo mkdir /media/fat_partition
    sudo mount -t vfat -o defaults,user,exec,uid=1000,gid=100,umask=000 /dev/sdc1 /media/fat_partition

    Le kidizoom est apparu dans l'arborescence et j'ai pu récupérer les photos...Ouf !

    Pour démonter,
    sudo umount -t vfat /dev/sdc1 /media/fat_partition

    Voilà pour mon retour personnel avec Mint 11 toujours et ça fonctionne parfaitement et je suis heureux en plus ;o)
    Peut etre cela sera t il utile à quelqu'un d'autre.

    Dites moi s'il vous plait si vous avez des remarques concernant cette méthode.

    Bon dimanche et encore sincèrement merci pour cet espace.

    RépondreSupprimer
  13. @ftha: Ce billet a été écrit pour un montage automatique... Mais merci car il est bien sur possible de faire un montage manuel de la kidizoom. Si votre kidizoom apparait toujours en /dev/sdc1, alors vous pouvez ajouter une ligne du style:
    /dev/sdc1 /media/KIDIZOOM defaults,user,exec,uid=1000,gid=100,umask=000 0 1
    dans votre fichier /etc/fstab
    et un "sudo mount /dev/sdc1" devrait suffir.
    En rajoutant un alias du style:
    alias mk="sudo mount /dev/sdc1"
    dans votre .bashrc
    un "mk" sera encore plus court sur la ligne de commande

    RépondreSupprimer
  14. @ftha: ....
    alias umk="sudo umount /dev/sdc1"
    pour démonter

    RépondreSupprimer