Regole UDEV per Webcam

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
kens
Linux 2.x
Linux 2.x
Messaggi: 208
Iscritto il: dom 6 giu 2004, 0:00
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: KDE

Regole UDEV per Webcam

Messaggio da kens »

Ho recentemente acquistato una Trust "WB-6250X". Un ottimo oggetto, specie tenendo conto del prezzo (30€) e della risoluzione nativa (1280x1024) assai migliore di tante pseudoblasonate e costose concorrenti. Ha dimostrato subito un buon feeling con la mia Slack 12.2, senza costringermi ad armeggiare troppo o a caricare driver particolari e, men che meno, patch. Sia Skype sia WxCam viaggiano senza apparenti incertezze.

E allora? Che scrivi a fare? Direte... :D :D :D Il problema è, indirettamente, l'audio.

La "WB-6250X" è provvista di microfono integrato (che tra l'altro non uso); quando accendo il pc con la webcam già collegata probabilmente questa sua caratteristica fa "imbizzarrire" UDEV che mappa in modo ancora non ben chiaro i device audio, al punto che alla partenza di kde ottengo l'avviso che è fallito l'avvio del sistema sonoro. Tutto ciò non accade in caso di accensione della macchina con il cavo USB scollegato e nemmeno collegando il cavo medesimo a pc già acceso.
Ecco... con udev non ho una gran confidenza; dove e come potrei agire per operare un minimo di messa a punto fine? :)


Grazie della pazienza... ;)


--

kanzy
Linux 2.x
Linux 2.x
Messaggi: 210
Iscritto il: sab 10 mag 2008, 15:02
Slackware: 14.2

Re: Regole UDEV per Webcam

Messaggio da kanzy »

Per quanto riguarda la mia esperienza con una Logitech che ha il microfono incorporato, ho dovuto caricare dei drivers supplementari.
Ecco qui:
- quello per il microfono incorporato
/lib/modules/2.6.xx-smp/kernel/sound/core/
snd_hwdep
- i relativi moduli audio
/lib/modules/2.6.xx-smp/kernel/sound/usb/
snd_usb_audio
snd_usb_lib

Ciao!
l'uomo ha bisogno di cibo rifugio e storie

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: Regole UDEV per Webcam

Messaggio da robbybby »

Ho giusto risolto ieri sera un problema analogo al tuo, sulla mia webcam Logitech.
Adesso non sono sulla mia Linux box.
Stasera, appena arriva a casa, ti posto la soluzione.

Si tratta di mettere mano al file .asoundrc, nella tua home: crei due alias per la scheda audio, e per il microfono della webcam.
Se non ti interessa usare il microfono della webcam, allora basta mettere in blacklist il modulo snd_usb_audio (o un nome del genere).

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: Regole UDEV per Webcam

Messaggio da robbybby »

Il problema risiede nel fatto che KDE tenta di usare la prima scheda audio che trova, ma. malauguratamente, essa corrisponde al microfono integrato nella webcam, e quindi non trova un dispositivo audio di output.
Alsa vede correttamente entrambe le schede audio.
Occorre innanzitutto, da un terminale, regolare i livelli di entrambe le schede, utilizzando alsamixer.
Da root, per la prima scheda:

Codice: Seleziona tutto

alsamixer -c0
per la seconda scheda:

Codice: Seleziona tutto

alsamixer -c1
infine li salviamo (sempre da root) con

Codice: Seleziona tutto

alsactl store
Adesso e' ora di mettere mano alla configurazione audio da far digerire a KDE.
Le prossime operazioni le facciamo da utente non privilegiato (niente piu' root).
Come operazione preliminare diamo il comando

Codice: Seleziona tutto

aplay -L
con cui vediamo come il sistema identifica le nostre schede audio.
Nel mio caso l'output e' il seguente:

Codice: Seleziona tutto

default:CARD=U0x46d0x9a4
    USB Device 0x46d:0x9a4, USB Audio
    Default Audio Device
front:CARD=U0x46d0x9a4,DEV=0
    USB Device 0x46d:0x9a4, USB Audio
    Front speakers
surround40:CARD=U0x46d0x9a4,DEV=0
    USB Device 0x46d:0x9a4, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=U0x46d0x9a4,DEV=0
    USB Device 0x46d:0x9a4, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=U0x46d0x9a4,DEV=0
    USB Device 0x46d:0x9a4, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=U0x46d0x9a4,DEV=0
    USB Device 0x46d:0x9a4, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=U0x46d0x9a4,DEV=0
    USB Device 0x46d:0x9a4, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=U0x46d0x9a4,DEV=0
    USB Device 0x46d:0x9a4, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
null
    Discard all samples (playback) or generate zero samples (capture)
default:CARD=VT82xx
    HDA VIA VT82xx, ALC888 Analog
    Default Audio Device
front:CARD=VT82xx,DEV=0
    HDA VIA VT82xx, ALC888 Analog
    Front speakers
surround40:CARD=VT82xx,DEV=0
    HDA VIA VT82xx, ALC888 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=VT82xx,DEV=0
    HDA VIA VT82xx, ALC888 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=VT82xx,DEV=0
    HDA VIA VT82xx, ALC888 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=VT82xx,DEV=0
    HDA VIA VT82xx, ALC888 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=VT82xx,DEV=0
    HDA VIA VT82xx, ALC888 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
hdmi:CARD=VT82xx,DEV=0
    HDA VIA VT82xx
    HDMI Audio Output
Le uniche righe che ci interessano sono quelle che riportano la parola CARD. Esse vengono ripetute molte volte, ma sono quasi tutte uguali. Se si hanno due schede audio (come nel caso in oggetto) si avranno solo due CARD differenti.
Nel mio caso, le schede audio sono:

Codice: Seleziona tutto

CARD=U0x46d0x9a4
CARD=VT82xx
Quella che inizia con U, e che viene riportata come USB Device e' chiaramente il microfono integrato nella webcam.
Annotiamole e teniamole pronte per un uso futuro.

Adesso editiamo il file .asoundrc che si trova nella nostra home (si puo' anche mettere mano al file /etc/asound.conf per una modifica system wide, volendo).
Se non esiste creiamolo.
Riporto subito il mio file, e poi lo descrivero':

Codice: Seleziona tutto

#Use "aplay -L" to get a list of the audio hardware

#Create an alias for the main audio card
pcm.ALC888 {
  type hw
  card "VT82xx"
}

#Create an alias for the Webcam audio board (actually it contains
#only a microphone)
pcm.USBWebcam {
  type hw
  card "U0x46d0x9a4"
}

#Create a card that uses the input from ALC888 and the output to USBWebcam
pcm.SplitCard {
  type asym
  capture.pcm "USBWebcam"
  playback.pcm "ALC888"
}
Il nocciolo sta tutto nell'ultima sezione pcm.SplitCard, pero' dobbiamo creare un alias per ogni scheda, perche', se riportiamo il nome della scheda direttamente in questa sezione, non so perche', ma non funziona.

Con le righe

Codice: Seleziona tutto

pcm.ALC888 {
  type hw
  card "VT82xx"
}
Creiamo un alias per la scheda audio principale. il nome dopo pcm (in questo caso ALC888) e' del tutto arbitrario: potete mettere cio' che piu' vi piace. Il nome che appare tra virgolette, dopo card, e' invece il nome della scheda audio principale che avevamo annotato prima.

Con le righe

Codice: Seleziona tutto

pcm.USBWebcam {
  type hw
  card "U0x46d0x9a4"
}
facciamo lo stesso per il microfono contenuto nella webcam. Anche qui, in nome dopo pcm e' del tutto arbitrario, mentre il nome che appare tra virgolette, dopo card, e' il nome della scheda audio relativa al microfono della webcam.

Ancora un piccolo sforzo e ci siamo.
Con le righe

Codice: Seleziona tutto

pcm.SplitCard {
  type asym
  capture.pcm "USBWebcam"
  playback.pcm "ALC888"
}
creiamo una scheda audio ad uso e consumo di KDE, che ha il microfono della webcam come dispositivo di input, e la scheda audio principale come dispositivo di output.
Ancora una volta, il nome dopo pcm e' arbitrario (ma ricordiamocelo, perche' ci servira' nell'ultimo passo).
Il dispositivo dopo capture.pcm e' l'alias che abbiamo creato per il microfono della webcam, mentre quello dopo playback.pcm e' l'alias che abbiamo creato per la scheda audio principale.
E' quasi fatta. Il bello e' che non dobbiamo riavviare ne' KDE, ne' tantomeno rifare login, o boot.
Adesso, come ultima cosa, accediamo al Centro di Controllo di KDE, andiamo nel gruppo Sound & Multimedia (non so come sia stato tradotto in italiano), e infine nella sezione Sound System. Qui dentro, nella linguetta Hardware, spuntimao la voce Override device location, e inseriamo il nome che abbiamo dato alla nostra scheda audio speciale.Nel nsotro caso SplitCard.
Clicchiamo sul pulsante Applica, KDE riavvia da se' il server audio, e abbiamo il nostro audio funzionante.

Il mixer di KDE fara' riferimento al dispositivo misto SplitCard.
Se avete Skype, nelle sue impostazioni appariranno tutte le schede audio che abbiamo creato. Io ho messo ALC888 come uscita, e USBWebcam come microfono.

Spero che tutto questo sproloquio sia utile a qualcuno :)

Avatar utente
kens
Linux 2.x
Linux 2.x
Messaggi: 208
Iscritto il: dom 6 giu 2004, 0:00
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: KDE

Re: Regole UDEV per Webcam

Messaggio da kens »

Tanto di cappello robby, veramente! :)
Una spiegazione così articolata e paziente merita un ammirato inchino, un elogio incondizionato.
Me la studierò per bene, perché vorrei capire il più possibile e non applicarla "bovinamente" ;)

Mi sorge tuttavia un dubbio: dato che se non collego la webcam il sistema non rileva la seconda scheda audio (quella USB rappresentata dalla webcam medesima), ipotizzo che dovrà esistere un "demone", un processo, che si incarica di mappare il device quando lo trova all'avvio, no? Tant'è vero che se accendo il pc con la webcam scollegata e dò

Codice: Seleziona tutto

"aplay -L"
la seconda "card" non compare affatto:

Codice: Seleziona tutto

Nicola@k6_400:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: CS46xx [Sound Fusion CS46xx], device 0: CS46xx [CS46xx]
  Subdevices: 30/31
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
  Subdevice #8: subdevice #8
  Subdevice #9: subdevice #9
  Subdevice #10: subdevice #10
  Subdevice #11: subdevice #11
  Subdevice #12: subdevice #12
  Subdevice #13: subdevice #13
  Subdevice #14: subdevice #14
  Subdevice #15: subdevice #15
  Subdevice #16: subdevice #16
  Subdevice #17: subdevice #17
  Subdevice #18: subdevice #18
  Subdevice #19: subdevice #19
  Subdevice #20: subdevice #20
  Subdevice #21: subdevice #21
  Subdevice #22: subdevice #22
  Subdevice #23: subdevice #23
  Subdevice #24: subdevice #24
  Subdevice #25: subdevice #25
  Subdevice #26: subdevice #26
  Subdevice #27: subdevice #27
  Subdevice #28: subdevice #28
  Subdevice #29: subdevice #29
  Subdevice #30: subdevice #30
card 0: CS46xx [Sound Fusion CS46xx], device 1: CS46xx - Rear [CS46xx - Rear]
  Subdevices: 31/31
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
  Subdevice #8: subdevice #8
  Subdevice #9: subdevice #9
  Subdevice #10: subdevice #10
  Subdevice #11: subdevice #11
  Subdevice #12: subdevice #12
  Subdevice #13: subdevice #13
  Subdevice #14: subdevice #14
  Subdevice #15: subdevice #15
  Subdevice #16: subdevice #16
  Subdevice #17: subdevice #17
  Subdevice #18: subdevice #18
  Subdevice #19: subdevice #19
  Subdevice #20: subdevice #20
  Subdevice #21: subdevice #21
  Subdevice #22: subdevice #22
  Subdevice #23: subdevice #23
  Subdevice #24: subdevice #24
  Subdevice #25: subdevice #25
  Subdevice #26: subdevice #26
  Subdevice #27: subdevice #27
  Subdevice #28: subdevice #28
  Subdevice #29: subdevice #29
  Subdevice #30: subdevice #30
card 0: CS46xx [Sound Fusion CS46xx], device 2: CS46xx - IEC958 [CS46xx - IEC958]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: CS46xx [Sound Fusion CS46xx], device 3: CS46xx - Center LFE [CS46xx - Center LFE]
  Subdevices: 31/31
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
  Subdevice #8: subdevice #8
  Subdevice #9: subdevice #9
  Subdevice #10: subdevice #10
  Subdevice #11: subdevice #11
  Subdevice #12: subdevice #12
  Subdevice #13: subdevice #13
  Subdevice #14: subdevice #14
  Subdevice #15: subdevice #15
  Subdevice #16: subdevice #16
  Subdevice #17: subdevice #17
  Subdevice #18: subdevice #18
  Subdevice #19: subdevice #19
  Subdevice #20: subdevice #20
  Subdevice #21: subdevice #21
  Subdevice #22: subdevice #22
  Subdevice #23: subdevice #23
  Subdevice #24: subdevice #24
  Subdevice #25: subdevice #25
  Subdevice #26: subdevice #26
  Subdevice #27: subdevice #27
  Subdevice #28: subdevice #28
  Subdevice #29: subdevice #29
  Subdevice #30: subdevice #30
A questo punto, non interessandomi assolutamente il riconoscimento del microfono integrato nella webcam, non sarebbe meglio creare una regola o editare un qualche file di configurazione in modo da toglierselo dai piedi sin da subito e definitivamente? :D

Grazie ancora della pazienza.

--

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: Regole UDEV per Webcam

Messaggio da robbybby »

Toglierti dalle scatole il microfono della webcam e' semplicissimo.
Da root, aggiungi, alla fine del file /etc/modprobe.d/blacklist il modulo snd_usb_audio

Codice: Seleziona tutto

# added to exclude the microphone of my webcam
blacklist snd_usb_audio
Io invece utilizzo il microfono della webcam, perche' si sente molto meglio di quello (trovato nelle patatine :) ) che posso collegare all'ingresso della scheda audio.

PS: hai fatto un errore

Codice: Seleziona tutto

aplay -L
con la L maiuscola
e non

Codice: Seleziona tutto

aplay -l

Avatar utente
kens
Linux 2.x
Linux 2.x
Messaggi: 208
Iscritto il: dom 6 giu 2004, 0:00
Slackware: 12.2
Kernel: 2.6.27.7-smp
Desktop: KDE

Re: Regole UDEV per Webcam

Messaggio da kens »

fatto! E pare funzionare :) :)
Per quanto riguarda la sintassi del comando "aplay" hai ragione:

Codice: Seleziona tutto

       -l, --list-devices
              List all soundcards and digital audio devices

       -L, --list-pcms
              List all PCMs defined
cosa saranno mai 'sti PCMs? :-k

Rispondi