udev et video

udev et video - Multimédia - Linux et OS Alternatifs

Marsh Posté le 09-06-2007 à 21:35:41    

Je possède une webcam Logitech USB et une carte TV Pinnacle PCI. Mon problème est que parfois l'un est sur /dev/video0 (et l'autre sur /dev/video1) et une autre fois c'est l'inverse; c'est assez aléatoire ... même si la webcam est branchée au démarrage.
 
J''aimerais configurer udev pour qu'il crée le fichier /dev/v4ltv pour la carte TV et /dev/v4lcam pour la Webcam de sorte que le nomage soit consistant et que mes scripts utilisant ces devices fonctionnent toujours.
 
La commande

udevinfo -a -p $(udevinfo -q path -n /dev/video1)

donne le résultat suivant :

looking at device '/class/video4linux/video1':
    KERNEL=="video1"
    SUBSYSTEM=="video4linux"
    DRIVER==""
    ATTR{card}=="39"
    ATTR{name}=="BT848A video _Pinnacle PCTV Stu"
    ATTR{dev}=="81:1"
 
  looking at parent device '/devices/pci0000:00/0000:00:09.0':
    KERNELS=="0000:00:09.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="bttv"
    ATTRS{msi_bus}==""
    ATTRS{broken_parity_status}=="0"
    ATTRS{enable}=="1"
    ATTRS{modalias}=="pci:v0000109Ed00000350sv00000000sd00000000bc04sc00i00"
    ATTRS{local_cpus}=="ffffffff"
    ATTRS{irq}=="22"
    ATTRS{class}=="0x040000"
    ATTRS{subsystem_device}=="0x0000"
    ATTRS{subsystem_vendor}=="0x0000"
    ATTRS{device}=="0x0350"
    ATTRS{vendor}=="0x109e"
 
  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""


et la commande

udevinfo -a -p $(udevinfo -q path -n /dev/video0)


donne

 looking at device '/class/video4linux/video0':
    KERNEL=="video0"
    SUBSYSTEM=="video4linux"
    DRIVER==""
    ATTR{name}=="QuickCam USB"
    ATTR{dev}=="81:0"


 
Ma carte TV fonctionne avec le module bttv et ma webcam avec le module quickcam (que je compile moi même). J'ai crée un fichier que j'ai appelé  /etc/udev/rules.d/75-video.rules dans lequel j'ai inscrit les règles suivantes :
 

DRIVERS == quickcam, KERNEL=="video[0-9]*", NAME="v4l/video%n", SYMLINK+="v4lcam", GROUP="video"
DRIVERS == bttv, KERNEL=="video[0-9]*", NAME="v4l/video%n", SYMLINK+="v4ltv", GROUP="video"


 
cela ne fonctionne pas.. j'ai également essayé ceci :
 

KERNEL=="video[0-9]*", ATTR{name}=="QuickCam USB", NAME="v4l/video%n", SYMLINK+="v4lcam", GROUP="video"
KERNEL=="video[0-9]*", ATTR{name}=="BT848A video _Pinnacle PCTV Stu", NAME="v4l/video%n", SYMLINK+="v4ltv", GROUP="video"


 
sans succès non plus... J'ai bien évidemment relancé udev a chaque changement, j'ai aussi redémarré l'ordinateur, déchargé et rechargé les modules... J'ai également essayé de commenter  les règles concernant la video dans le fichier 50-udev.rules. Et tout cela sans succès ....  
 
PS: j'utilise udev-111 avec linux 2.6.21.3. Le driver bttv est celui inclu dans linux par contre pour ma webcam j'utilise qc-usb-0.6.6


Message édité par mexx20 le 09-06-2007 à 21:38:05
Reply

Marsh Posté le 09-06-2007 à 21:35:41   

Reply

Marsh Posté le 10-06-2007 à 14:32:30    

J'ai résolu mon problème .... je vous explique comment jai fait si jamais vous avez ce prob..
 
Voici les règles que j'utilise à présent :

KERNEL=="video[0-9]*", ATTR{name}=="QuickCam USB", SYMLINK+="v4lcam"
KERNEL=="video[0-9]*", ATTR{name}=="BT848A*", SYMLINK+="v4ltv"


Et je laisse les règles d'origine dans 50-udev.rules.
Je pense que le probleme viens de l'underscore dans la chaine de caracteres pour la TV car en remplacant par BT848A* (avec l'etoile) ca marche bien.... J'ai aussi retiré le"NAME=.." et le "GROUP=.." car ca se fait dans udev.rules
 
 
Au fait, y a-t-il des conventions pour nommer les fichiers contenant les règles ? Je voudrais savoir si un fichier xx-blabla.rules s'execute avant le fichier yy-blabla2.rules ssi xx < yy ? Ou bien alors cela n'a strictement rien a voir ? Dans mon cas a quel numéro devrais je utiliser ?


Message édité par mexx20 le 11-06-2007 à 23:09:14
Reply

Marsh Posté le 29-06-2007 à 16:48:52    

Bonjour !
 
Topic très intéressant.
 
 J'utilise Suse 10.2 x86- 64  
 

Citation :

linux-6zgh:/home/jacqueline # uname -r
2.6.18.2-34-default


 
Au reboot je ne retrouve pas le periph /dev/video0 ni son lien symbolique /dev/video pour ma carte TV..
 
Je suis obligée de les créer à la main avec mknod et ln chaque fois !
 
j'ai pensé à udev , j'ai un peu regardé le man..
 
et j'ai trouvé dans les règles : /etc/udev/rules.d/50-udev-default.rules,  ceci pour la section video..
 
Apparemment ça devrait me créer ce periph /dev/video
 
 
 

Citation :

# video/graphics
SUBSYSTEM=="video4linux", GROUP="video"
SUBSYSTEM=="graphics" GROUP="video"
KERNEL=="vtx*|vbi*", GROUP="video"
KERNEL=="winradio*", GROUP="video"
KERNEL=="vttuner*", GROUP="video"
KERNEL=="nvidia*|nvidiactl*", GROUP="video"
KERNEL=="video0", SYMLINK+="video"
KERNEL=="radio0", SYMLINK+="radio"
KERNEL=="vbi0", SYMLINK+="vbi"
KERNEL=="pmu", GROUP="video"


 
 
bin ça marche pas.. il faut que je les crée à la main et là Kdetv trouve le periph et ça marche..en video composite sur le décodeur de ma livebox ! avec un cable à 15 euros.. ( pas la peine de demander à Orange ils savent rien de ce qu'ils vendent. )
 
c'est une carte TV PCI, je ne vois pas ce que ça fout dans udev, puisque ce periph y sera toujours..
 
j'ai essayé udevmonitor : il ne se passe rien en lançant l'appli Kdetv, par contre lorsque je branche mon imprimante, ça débite des infos !
 
J'ai cru comprendre dans un tuto quelconque mais assez peu détaillé que udev , ça créait un periph lors d'une connection à chaud ou bien en lançant une appli.. et ils nous renvoient tranquillement dans les règles de udev : démerdez vous avec ça !
 
http://www.linux-france.org/articl [...] ode19.html
 
je ne maîtrise pas assez udev et apparemment la video n'est pas oubliée..dans ces règles..
 
Si qqun peut m'aiguiller un peu en fonction de ces éléments un peu vagues, je le remercie par avance
 
j'ai bien imaginé aussi de rajouter ça dans un script de démarrage..au moins ce serait fait !
 
j'avais trouvé ça avec google :  
 
 

Citation :

Si les périphériques "/dev/video" et "/dev/video0" n'existent pas, alors vous devez les créer manuellement comme suit :
 
* cd /dev/
* mknod video0 c 81 0
* ln -s /dev/video0 /dev/video
* chmod 666 /dev/video0
* chmod 666 /dev/video


 
 
ca marche super mais , je suis obligée de le refaire  à la main après chaque reboot
 
 Ma version de udev :
 
 
linux-6zgh:/home/jacqueline # udevinfo --version
udevinfo, version 103
 
 
La cde  suivante sauvagement pompée dans l'exemple au dessus , mais j'avoue ne pas encore bien maîtriser les arguments de udevinfo donne :
 

Citation :

linux-6zgh:/home/jacqueline # udevinfo -a -p $(udevinfo -q path -n /dev/video0)
node name not found
udevinfo: option requires an argument -- p
linux-6zgh:/home/jacqueline #  


 
 
 
Merci de votre aide  :)  
 
Jacqueline


Message édité par jacquelineB le 29-06-2007 à 16:50:45
Reply

Marsh Posté le 01-07-2007 à 01:20:30    

une solution sans passer par des règles udev, ce qui serait plus propre, est de copier l'ensemble des commandes dans un fichier qui sera executé au démarrage, après le démarrage des services classiques, en runlevel 5.
Sur debian ces commandes sont dans le fichier rc.local, je ne sais pas comment tu fais pour suse mais ca doit être approchant.

Reply

Marsh Posté le 03-07-2007 à 23:53:15    

lut enfoiro..
 
 j'ai mis les quatres commandes   dans un script "video" dans init.d  
 
 un coup de yast  : niveaux d'éxécutions  et j'ai mis le script sur le niveau 5 ..  
 
 ca m'a fait le Sxxvideo et le Kxxxvideo ds  /init.d/rc5.d
 
 Il y a un fichier de conf pour les modules locaux, mais il est vide ..personne ne s'en sert !( exemple ma carte TV ..
 
 
 
 Alsa a ses propres règles udev pour le son..  Ma carte son est sur la CM, je ne vais pas l'arracher ! c'est du pur coldplug ! rien à foutre de udev pour la carte son..idem pour la carte Tv en PCI..
 
  A mon avis ils auraient du séparer le clod plug et le hotplug..
 
 
 C'est le bordel ces distribs prémachées.. :whistle:  
 
jacqueline

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed