Pagina 1 di 1

Regole UDEV per Webcam

Inviato: lun 14 dic 2009, 23:34
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... ;)


--

Re: Regole UDEV per Webcam

Inviato: mar 15 dic 2009, 11:58
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!

Re: Regole UDEV per Webcam

Inviato: mar 15 dic 2009, 12:59
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).

Re: Regole UDEV per Webcam

Inviato: mar 15 dic 2009, 19:22
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 :)

Re: Regole UDEV per Webcam

Inviato: mar 15 dic 2009, 21:54
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.

--

Re: Regole UDEV per Webcam

Inviato: mar 15 dic 2009, 22:01
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

Re: Regole UDEV per Webcam

Inviato: mar 15 dic 2009, 22:34
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