Portál AbcLinuxu, 25. dubna 2024 18:33


Dotaz: Genius FaceCam 2025R X TV karta

7.5.2011 14:28 effaeffa
Genius FaceCam 2025R X TV karta
Přečteno: 269×
Odpovědět | Admin
Zdravím všechny. rozhodl jsem se přidal web-kameru, koupil Genius FaceCam, mám distro suse 11.3, kameru jsem připojil, podpora uvcvideo je v jádře, takže v podstatě nebyl problém. Ale přeci jenom jeden háček. Když je připojena kamera, nejde analogová TVkarta leadtek PVR2000, a naopak. Z výpisu dmesg a lscpi jsem zjistil, že před instalací webkamery byla TV karta namapovaná na dev/video0, dev/video1, dev/vbi0, dev/radio0. Když tam ale připojím web-kameru, namapuje ji na dev/video0, TV kartu posune na dev/vide1 a 2, ostatní zůstane stejné. A samo TV pak nefakčí. Pro tu web-kameru v udev pravidlo přímo není, teda aspoň já sem ho nenašel, takže jí to pravděpodobně namapuje podle modulu v jádře. Tak fajn,zkusím vytvořit pro udev pravidlo, aby ta web-kamera se namapovala jako třeba dev/video6 a to dříve něž pci TV karta. Aby TV karta měla zase to svoje dev/video0....

A tady jsem narazil, ono to udělalo dev/video0 pro webkameru a pak symlink na dev/video6. A TV karta zase nejede. Bylo to dle návodu z netu, kontroloval jsem to a chybu jsem neudělal.

Tak jsem zkoušel najít parametr v modulu pro tu webkameru, abych udev obešel. Jedná se o modul uvcvideo, a myslím, že i modul v4l. Ale tady mé linuxové schopnosti končí, a ani na netu se mi nepodařilo najít použitelné řešení, jaké argumenty a jak je upravit.. Prosím o pomoc, o nakopnutí, jak to řešit. Díky
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.5.2011 19:52 effaeffa
Rozbalit Rozbalit vše Re: Genius FaceCam 2025R X TV karta
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zdravím, pomoci jsem se zde nedočkal, ale vůbec to nevadí. Nakonec jsem k tomu sednul znovu a problém se mi podařilo zdolat. Samozřejmě, že hlavní vada na kráse byla mezi klávesnicí a .... Pro nezkušené uživatele, jako jsem já,tedy několik základní info: hardware Leadtek Winfast PVR2000, Genius FaceCam 2025R, distro Suse11.3, kernel 2.6.31

Podpora v kernelu je. Modul uvcvideo, v4l. Podrobné informace získáte například zadáním:
# dmesg | grep FaceCam
[    1.004588] usb 1-2: Product: FaceCam 2025R
[    7.946230] uvcvideo: Found UVC 1.00 device FaceCam 2025R (0458:7079)
[    7.950439] input: FaceCam 2025R as /devices/pci0000:00/0000:00:02.1/usb1/1-2/1-2:1.0/input/input5
a taky
udevadm info -q env -n /dev/video2
UDEV_LOG=3
DEVPATH=/devices/pci0000:00/0000:00:06.0/0000:01:07.2/video4linux/video2
MAJOR=81
MINOR=4
DEVNAME=/dev/video2
ID_PATH=pci-0000:01:07.2
ACL_MANAGE=1
DEVLINKS=/dev/char/81:4 /dev/v4l/by-path/pci-0000:01:07.2-video-index0
Zjistíme tak zástupce zařízení, najdeme je v adresáři /dev/, například video0,1..., vbi0..., radio0... počet dle množství hw.Pokud tam zařízení nenajdete, je chyba v zavedení a nastavení modulu.

Hodně důležitá věc jsou práva, vlastník je vždy root, ale skupina by měla být video. Když potom všechny uživatele přidáme do skupiny video, máme přístup k zařízení vyřešen. V Suse to je snadné, k nastavení využijeme program yast.

Velmi laicky a jednoduše řečeno, po startu PC kernel pobere všechna zařízení, "očichá" si je, a pošle informace dál. Ty informace pobere system udev a podle pravidel vytvoří zástupce zařízení. Pokud není v udev nastaveno pravidlo pro dané zařízení, zůstane mu označení, jaké dostal od kernelu. Kernel posílá informace dle rychlosti jednotlivých hw. Takže se může klidně stát, že jednou je /dev/video0 pro TV kartu, a podruhé je to webcamera. Když ale správně nastavíte pravidla udev, bude vždy označení shodně. Pravidla udev najdeme v /etc/udev/rules.d/ , jsou tam soubory končící *.rules System udev prochází pravidla postupně podle názvu. Projdeme tedy všechny pravidla, jestli se některé netýká našeho hw. Pokud ne, vytvoříme svoje pravidlo. Základní info najdeme na googlu, nebo třeba http://linux.die.net/man/7/udev. Postup je jednoduchý, vytvoříme soubor pojmenovaný 10-rules. 10 aby ho udev bral nejdříve .rules udev ví, že jde o pravidlo, jinak by soubor byl ignorován. Aby udev fungoval správně, musíme zařízení přesně identifikovat. Využijeme opět příkaz "udevadm info -q env -n...". Z takto získaných informací jsem sepsal pravidlo:
KERNEL=="radio0", ENV(ID_PATH)=="pci-0000:01:07.0", NAME="radio1"
Co se stane, zařízení označené kernelem "radio0", na portu "pci-0000:01:07.0" udev pojmenuje "radio1". Jako název může být cokoliv. Moje kompletní pravidlo vypadalo následovně:
BUS=="usb", KERNEL=="video*", ENV(ID_VENDOR_ID)=="0458", NAME="video1%n"
KERNEL=="radio0", ENV(ID_PATH)=="pci-0000:01:07.0", NAME="radio1"
KERNEL=="vbi0", ENV(ID_PATH)=="pci-0000:01:07.0", NAME="vbi1"
První řádek vezme webkameru a označí ji /dev/video10. U TV karty jsem označí kernel /dev/video1 a dev/video2 automaticky Já jsem na druhým a třetím řádkem označil /dev/vbi0 na vbi1 a /dev/radio0 na radio1 Podle toho jsem si pak nastavil TVtime a MYTHTV. Díky tomu vždy budu mít stejné pojmenování a nebudu v tom mít "guláš", nebudu muset měnit konfiguraci TV, nebo skype... Udev umí tvořit i symlinky, spouštět případně skript atd.. Po nastavení pravidla stačí restartovat komplík a zkontrolovat, jestli je vše dle nastavení. Pro funkci TV, případně webkamery můžeme využít modul v4l, příkaz v4l-conf. A to je konec přátelé. PS: Linux-machři, prosím o toleranci..

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.