10 abril 2007

Regular a ordem de dispositivos de som

No tempo em que dava os meus primeiros passos na configuração de WebCams em linux deparei com um problema muito chato:

Arrancando o sistema com uma webcam ligada e se essa webcam tivesse um microfone incorporado, o sistema deixava de ter som, isto porque o sistema (a meu ver erradamente) metia o micro da webcam como 1º dispositivo de som... se configurasse o sistema para passar a usar o 2º dispositivo, então voltava a ficar sem som assim que desligasse a webcam.
Procurei várias vezes solução para este problema e achava sempre a solução de se apagar o módulo snd-usb-audio (que é o modulo que põe o micro a funcionar), mas isso invalidava o micro que até podia ser usado.

Então encontrei uma solução mais elegante:

no
/etc/modprobe.conf
adicionar linhas como se seguem

options (modulo do 1º disp) index=0
options snd-usb-audio index=1

o meu exemplo, tenho uma SbLive, uma Conexant, a placa on-board que quase não uso, e às vezes a webcam...

options snd-emu10k1 index=0
options cx88-alsa index=1
options snd-intel8x0 index=2
options snd-usb-audio index=3

Assim tenho a certeza que a ordem dos dispositivos está como eu quero
1- SbLive
2- Conexant
3- a fanhosa "onboard"
4- o micro da webcam

outra hipótese é;
options snd-usb-audio index=-2

o index=-2 vai impedir que o dispositivo tome o 1º lugar mas não define o lugar dele.


resta apenas dizer que alguns sistemas já têm o
/etc/modprobe.conf
substituido por vários ficheiros dentro de
/etc/modprobe.d/

por exemplo
/etc/modprobe.d/asound


Fica aqui a dica de como regularem a ordem pretendida dos dispositivos de som, julgo que esta técnica pode-se aplicar a outros dispositivos também, e como demorei tanto tempo para a encontrar, resolvi partilhá-la.

22 comentários:

Esta dica é-me muito útil. Eu estive a ver o meu modprobe.d e tenho lá o seguinte:

aliases blacklist-oss ipw3945
alsa-base blacklist-pata isapnp
arch/ blacklist-scanner lrm-video
arch-aliases blacklist-watchdog nvidia-kernel-nkc
blacklist bluez options
blacklist-framebuffer fuse toshiba_acpi.modprobe
blacklist-modem ibm_acpi.modprobe

O único que me parece estar relacionado com som é o alsa-base. Quando o abri, apareceu-me isto:

# autoloader aliases
install sound-slot-0 /sbin/modprobe snd-card-0
install sound-slot-1 /sbin/modprobe snd-card-1
install sound-slot-2 /sbin/modprobe snd-card-2
install sound-slot-3 /sbin/modprobe snd-card-3
install sound-slot-4 /sbin/modprobe snd-card-4
install sound-slot-5 /sbin/modprobe snd-card-5
install sound-slot-6 /sbin/modprobe snd-card-6
install sound-slot-7 /sbin/modprobe snd-card-7

# Cause optional modules to be loaded above generic modules
install snd /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-ioctl32 ; : ; }
install snd-pcm /sbin/modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-pcm-oss ; : ; }
install snd-mixer /sbin/modprobe --ignore-install snd-mixer $CMDLINE_OPTS && { /sbin/modprobe --Qb snd-mixer-oss ; : ; }
install snd-seq /sbin/modprobe --ignore-install snd-seq $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-seq-midi ; /sbin/modprobe --quiet snd-seq-oss ; : ; }

# Cause optional modules to be loaded above sound card driver modules
install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-emu10k1-synth ; }
install snd-via82xx /sbin/modprobe --ignore-install snd-via82xx $CMDLINE_OPTS && { /sbin/modprobe -Qb snd-seq ; }

# Load saa7134-alsa instead of saa7134 (which gets dragged in by it anyway)
install saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && { /sbin/modprobe -Qb saa7134-alsa ; : ; }
# Prevent abnormal drivers from grabbing index 0
options snd-bt87x index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
options snd-usb-audio index=-2
options snd-usb-usx2y index=-2

Eu li este post várias vezes, mas fiquei sem saber como por a minha soundblaster primeiro que a placa de som onboard. Se poderem dar uma ajuda, agradeço. Se não poderem, não há stress

a tua soundcard é uma live certo?

acredito que baste adicionar no mesmo ficheiro isto:

options snd-emu10k1 index=0
options snd-via82xx index=1

e reiniciar ;)


já agora, que distro é? este
options snd-usb-audio index=-2
nunca vinha em nenhum install que fiz.

É o Ubuntu Edgy.
A outra placa de som que tenho é uma NVidia qualquer coisa; já vinha com a board.

nvidia? bem como eu tinha visto um
snd-via82xx :|

nesse caso precisava ver que modulo está a activar essa nvidia
um
# lsmod|grep snd
bastava...

Acreditam realmente que um sistema operativo, em que é preciso fazer isto tudo para instalar uma simples webcam é o melhor de todos?

E por acaso o anónimo não desconfia porque é necessário fazer tudo isto para instalar uma simples placa?

Uma pequena pista:
-Porque os drivers, quando fazem parte de qualquer SO, são incluídos com a plena participação dos respectivos fabricantes.
Sabendo que a M$ é a melhor amiga dos fabricantes de Hardware, sendo necessário comprar um super computador, com super placas gráficas, super memória, super discos, super tudo, para correr um espécie de SO, e mesmo assim ainda se arrasta em plena agonia, é só seguir o raciocínio...

Já agora, mais uma pequena pista:
-Se os drivers fossem escritos pelas fantásticas cabecinhas da M$ o que aconteceria?
(Cá para mim - na pré-história!)

@Anónimo
Em Linux, sem drivers, basta escrever umas linhas e o hardware fica a funcionar. Em Windows chora-se e reza-se para que apareça um driver.

E não nos podemos esquecer que muito hardware tem melhor desempenho em Linux que em Windows.

E agora?!

@bruno:
Pelo motivo de apenas serem umas linhas alguns fabricantes assobiam para o lado quando se fala em LINUX.
Quando a comunidade SL se unir e disser BASTA!, ou ainda de outra forma, comprar apenas produtos que venham acompanhados com os respectivos ficheiros de instalação, teremos então a "tal" facilidade que os Windows tem.
Mas uma coisa é certa, o Linux é inimigo dos fabricantes de hardware. Enquanto os M$ techno-kids compram todas as novidades para poderem correr aplicações, ou jogos, à mesma velocidade que uma vestuta máquina com 5 anos com qualquer Linux instalado o faz, não estou a ver os poderes instalados a beneficiar o SL.
Mas o pior de tudo é que estes mesmos fabricantes ainda são obrigados a pagar para ter os respectivos drivers em qualquer versão do Window$.
Poderá parecer uma tolice, mas que eles gostam gostam. Se não gostassem tratavam todos os outros SO's da mesma forma.
Isto é a verdadeira liberdade de escolha.
Abaixo o monopólio$oft!

@braço.

@jocaferro
Os fabricantes pagam, mas depois têm lucros. Isso é bom para eles. Só acho estranho é eles aceitarem pagar a uma empresa que tem uns sistemas operativos que são uma bosta... Pagar por pagar, valia mais pagarem a quem faz sistemas operativos, e não a quem pensa que o faz.

E depois é como referes, e com toda a razão. A canalha dos jogos que tem balúrdios de dinheiro (dos papas) para comprar o último grito em hardware e tunar as caixas com luzes de natal, neons no monitor e colunas a passar trance carros-de-choque.

O meu athlon xp 2.6 já dura à uns 2 anos e vai durar outros tantos. E só dura tanto graças ao Linux. E é por isso que tento promover o uso do Linux e ajudar no pouco que ainda sei. É a minha forma de retribuir o esforço que a comunidade faz para criar esta pérola.

Cumps :)

E o meu PIII 1 GHz já dura há larguíssimos anos, agora como servidor, única e exclusivamente devido ao SL!
Esteve com Debian a bombar non-stop durante meses, ao mesmo tempo que, nos tempos livres, contribuía para Folding. Agora está com openSUSE.
Claro que demorou um pouco a afinar tendo sido necessárias umas linhas de código a que eu chamo TRABALHO, mas depois foi sempre a bombar, tendo apenas parado por falha de hardware - ventoinha com rolamento gripado- a que eu chamo DESCANSO.
Num servidor Windows, atenção que o(s) Windows Server ainda assim são um produto razoável, poderia ter pouco trabalho inicialmente mas depois "sai" um par de algemas para o Administrador do Sistema.

Ah!
E o consumo do PIII stepping E?
Ridículo!
Essa também é uma grande virtude do SL. Como se costuma dizer - é amigo do ambiente.
E não se pense que este factor não é decisivo.
Muitas das notícias da não aceitação imediata do ME2 (eu referi num post esta "nomenclatura" mas penso que o autor deves ter sido tu, logo, a bruno o que é de bruno) deve-se à crescente consciência ambiental, além dos caríssimos certificados ISO 14001, que muitas empresas por esse mundo fora começam a ter.
É que milhões de máquinas deitadas fora por causa do ME 2, além do lixo que produz, também potencializa o consumo de energia eléctrica.

Umas simples linhas, vistas por este prisma, podem, globalmente, significar muito.
@braço.

Por favor pessoal, não se alimenta trolls.

Bruno
conseguiste alinhar a ordem das tuas placas de som?

do que disse, apenas tens que substituir o "snd-via82xx" pelo nome do modulo que está a activar o teu chip de som nvidia.


diz coisas

@ArameFarpado
Ainda não porque não sei qual é o módulo da minha placa de som onboard. :(
Como vejo isso?

@JocaFerro
Comecei a usar o nome Millenium 2.0 num post que escrevi no Webtuga. Não sei se alguém já se tinha lembrado dele ou não, mas não guardo direitos de autor. É um termo livre. hehe

lsmod é um comando que lista os modulos carregados, neste caso apenas interessam os modulos que gerem dispositivos de som...

mostra o conteudo de
# lsmod|grep snd


que digo-te qual está a gerir a nvidia
(pode ser um "nforce" como um outro qualquer, já placas de som da nvidia a funcionar com o modulo das intel)

Executei o comando e foi isto que me apareceu:

snd_rtctimer 4364 0
snd_emu10k1_synth 8960 0
snd_emux_synth 39296 1 snd_emu10k1_synth
snd_seq_virmidi 8576 1 snd_emux_synth
snd_seq_midi_emul 8192 1 snd_emux_synth
snd_seq_dummy 4996 0
snd_seq_oss 36480 0
snd_seq_midi 9984 0
snd_seq_midi_event 8960 3 snd_seq_virmidi,snd_seq_oss,snd_seq_midi
snd_seq 59120 9 snd_emux_synth,snd_seq_virmidi,snd_seq_midi_emul,snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
snd_intel8x0 34844 1
snd_pcm_oss 47360 0
snd_mixer_oss 19584 1 snd_pcm_oss
snd_emu10k1 128288 2 snd_emu10k1_synth
snd_rawmidi 27264 3 snd_seq_virmidi,snd_seq_midi,snd_emu10k1
snd_ac97_codec 97696 2 snd_intel8x0,snd_emu10k1
snd_ac97_bus 3456 1 snd_ac97_codec
snd_seq_device 9868 8 snd_emu10k1_synth,snd_emux_synth,snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq,snd_emu10k1,snd_rawmidi
snd_util_mem 6016 2 snd_emux_synth,snd_emu10k1
snd_hwdep 10756 2 snd_emux_synth,snd_emu10k1
snd_pcm 84612 4 snd_intel8x0,snd_pcm_oss,snd_emu10k1,snd_ac97_codec
snd_timer 25348 4 snd_rtctimer,snd_seq,snd_emu10k1,snd_pcm
snd 58372 18 snd_emux_synth,snd_seq_virmidi,snd_seq_oss,snd_seq,snd_intel8x0,snd_pcm_oss,snd_mixer_oss,snd_emu10k1,snd_rawmidi,snd_ac97_codec,snd_seq_device,snd_hwdep,snd_pcm,snd_timer
soundcore 11232 1 snd
snd_page_alloc 11400 3 snd_intel8x0,snd_emu10k1,snd_pcm

Eu penso que é o snd_intel8x0, mas não tenho certeza...

Boas, antes de mais gostava de dar os parabens aos autores deste blog que esta de facto muito bem feito com noticias interessantes todos os dias. Em segundo lugar devo dizer que sou um utilizador de linux bastante recente, ubuntu edgy para ser mais exacto, e o que me leva a escrever este comentario foi o comentario do senhor anonimo e as reacções ao mesmo que se seguiram. Gostava de dizer aos senhores jocaferro e bruno que não é com essa atitude de quase ódio a quem compra pcs de topo para correr o SO da m$, aplicações, jogos e etc, que vai fazer com que isso acabe, pois as pessoas que o fazem são as que menos culpa têm.

Usando o meu exemplo é perfeitamente compreensivel a razão pela qual levou o senhor anonimo dizer o que disse, eu proprio desde que instalei o ubuntu tenho tido dificuldade em fazer compreender a amigos meus ( todos nós ávidos gamers ) o porquê de eu estar a perder tanto tempo com um SO onde à primeira vista a mais simples dificuldade tem soluções tão complicadas. Ora se eu, que desde 1988 tenho computador pessoal e o uso diariamente, tenho tido tantas dificuldades em utilizar com sucesso um SO linux como é o caso do ubuntu ( do ponto de vista de um gamer e não esquecer que somos nós os gamers que mais dinheiro dão a esta industria ) imaginem como será para a maioria das pessoas que mal compreendem o conceito do duplo click quanto mais o uso de um terminal.

Para terminar gostaria de enumerar algumas dificuldades com que me tenho deparado no ubuntu ( que supostamente é uma das distros mais userfriendly que existe no universo Linux ) :

1. Demorei alguns dias até perceber como alterar o mouse polling rate e ainda não consigo perceber como desligar as funções dos botões de aumento e diminuição dos dpis do meu logitech mx 518

2. Curiosamente de momento apenas jogo jogos opengl ( QuakeWorld, Enemy Territory Fortress, Quake 4 ) e mesmo assim não consigo instalar a modificação Fortress no ET. Devo ate' confessar que isto deixa-me bastante frustrado, pois sempre que quero jogar ETF tenho que fazer boot para o Windows.

3. Não consigo correr outras aplicações que usem som nomeadamente os jogos se eu estiver com o TeamSpeak aberto o que é bastante frustrante visto que o objectivo do TeamSpeak é ser usado para facilitar a comunicação com os meus amigos nos jogos :)

4. A medio/curto prazo irão sair jogos que me interessam bastante como é o caso do ET:QW, do HL2:FF e do HL2:TF2 e talvez à excepção do ET:QW quase de certeza que la vou ter que comprar pc novo para jogar os restantes no Windows visto que mesmo que os conseguisse correr atraves do wine nunca seria com a performance desejavel.

Desculpem o tamanho do comentario e mais uma vez parabens pelo blog :)

Luís Moedas

bem bruno...

a tua nvidia está a ser gerida pelo modulo
snd_intel8x0

entao adiciona ao teu
/etc/modprobe.d/alsa-sound

estas duas linhas

options snd-emu10k1 index=0
options snd-intel8x0 index=1

e reinicia

as tuas duas placas de som vão trocar de ordem, tens que configurar o gnome (é gnome certo?) para usar o 1º disp, assim como todos os progs que não usam o servidor de som do gnome.

vá... hunga :)

@Luís Moedas
Não tenho ódio, tenho pena. Pena deles e pena de mim por não ter € para comprar hardware novo de 2 em 2 meses.

Pena deles porque são obrigados a comprar hardware novo só para usar um sistema operativo que até berra com um cursor animado. Tenho pena de mim porque não tenho €€ para andar a gastar assim.

Tens essas dificuldades por culpa dos fabricantes. Como eles não querem desenvolver drivers para o Linux, a comunidade tem que andar a criá-los; isso é um processo moroso porque não devem ter acesso a todas as especificações do hardware.

Eu também sou um novo utilizador do Linux. Também tenho o Ubuntu Edgy porque decidi começar com uma distro acessível e com uma comunidade grande. 1 mês depois de instalar o Edgy, apaguei a partição de Windows. Se quiser uns jogos, crio uma máquina virtual.

WOO OO! Funcionou!! Até agora não tive necessidade de alterar nada!!

Obrigado pela dica e pela paciência que tiveste comigo!!

Um abraço

Fixe :)

@Luís Moedas:
Nunca, mas mesmo nunca, critiquei quem compra PC's topo de gama. Aliás, também gostava de ser techno-kid pois o máximo que posso almejar será techno-velhadas. ;-)
Todos os problemas referidos tem a ver com a postura, i.e. desigual tratamento em termos de suporte, dos principais fabricantes de hardware, como facilmente se depreende numa leitura atenta do meu comentário.
O que condeno é ver empresas a mudar parques informáticos, ainda com uma esperança de vida de um ou dois anos, pelo brinquedo mais moderno apenas por uma questão de "estilo" e não por necessidade.
Posso não simpatizar muito com os produtos da M$, porém o mencionado ódio não vem daí mas sim do monopólio que esta empresa, não está em cuasa se conscientemente ou não, instaurou no mercado.
O que condeno é ver empresas a mudar parques informáticos, ainda com uma esperança de vida de um ou dois anos, pelo brinquedo mais moderno porque alguém assim entende.
Posso adiantar que faço recolha de PC's, toda a maquinaria que tenho em casa vem do material que colecto quando vendo/monto novos PC's, dou-lhes uma limpeza e/ou uma reparação e dou-os gratuitamente a quem necessita. Mais, se vierem com algum Windows legal, mantenho o Windows + Linux em dual-boot, Linux em 1º ;-). Se não tiver Windows legal vai apenas com Linux. A aceitação tem sido enorme, especialmente nos depauperados "Jardins de Infância"/Creches, principalmente derivada dos jogos didácticos que acompanham a instalação Linux. O 1º PC deste género, apenas com Linux, já tem 3 anos e apenas lá fui 2 vezes sempre para introduzir coisas novas.
Aqueles que levam o Windows e que geralmente correm este SO estão sempre a dar chatices. A estes sou obrigado a cobrar a minha intervenção senão não conseguia fazer mais nada na vida.

No fundo é isto:
-Um pouco de trabalho inicial, leia-se algumas "linhas", pode dar muitos meses, ou alguns anos, de descanso.

No entanto, para quem essencialmente usa o PC para jogos não tenho dúvidas em aconselhar, por muito que me custe, o Windows com a opção dual-boot para Linux. Só que, aconselho vivamente o XP. Mais uma vez a questão do monopólio está subjacente à enorme oferta de títulos para Windows, mas neste caso já não condeno os "fabricantes" de jogos. No lugar deles faria o mesmo.

@braço.

Xiii.
Estou mesmo a ficar velho!
Já começo a repetir.

Na boa, bruno e jocaferro, eu apenas chamei a atenção que quem lê o que escreveram pode ficar com a ideia que vocês têm alguma coisa contra quem compra hardware para jogar a ultimas novidades. E verdade seja dita, infelizmente, não há grandes alternativas a essa situação. Mas se então o objectivo de algumas distros, como é o caso do ubuntu, é massificar o linux como SO desktop, então devo dizer que, alguma coisa não está bem quando eu que apenas jogo jogos freeware/opengl acabo por ser "obrigado" a fazer boot para windows para os jogar porque verdade seja dita os clientes linux destes jogos são paupérrimos. Desde não conseguir fazer copy/paste na consola destes jogos, passando por não haver a possibilidade de aceder ao desktop sem sair do jogo no caso do QuakeWorld, até ao caso de eu não conseguir instalar o jogo porque simplesmente o instalador linux desse mesmo jogo não funciona pelo menos na distro que uso. E se de facto existe um "mercado" capaz de inverter a situação das empresas comerciais de hardware/software ignorarem quase por completo o universo Linux esse "mercado é o dos gamers. É apenas a minha modesta opinião de recente usuário de Linux :)