Portál AbcLinuxu, 10. května 2025 05:06
# 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/input5a 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-index0Zjistí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..
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.