Como criar um dispositivo de placa de som fictício no servidor Linux?


20

Quero executar o programa Linux que requer uma placa de som em um servidor que não possua placa de som. É possível criar uma placa de som fictícia? Desconheço totalmente os aspectos internos do sistema de som do Linux. Por favor, aponte-me na direção certa.

Eu segui este exemplo: http://alsa.opensrc.org/.asoundrc, mas não deu certo.

PS: Há uma pergunta semelhante: como criar um dispositivo de som virtual no Linux? . Mas isso é totalmente diferente no contexto em que o usuário está criando um alias para a placa de som já disponível.


Edit:
Quero que um dispositivo fictício seja criado em / dev / .. para que qualquer aplicativo que precise de um dispositivo de som o encontre.
Eu sou completamente inconsciente, como alsa funciona. Então, simplesmente segui o exemplo. Eu criei o /etc/asound.conf com:

pcm.card0 {
    type hw
    card 0
}
ctl.card0 {
    type hw
    card 0
}

E aplay -Lme dá:

null
    Discard all samples (playback) or generate zero samples (capture)

Sim, existe um dispositivo de som "fictício" no Alsa. Mas você precisa elaborar o que exatamente "não deu certo" para você. Mensagem de erro, não detectada pelo software, etc. Além disso, o "programa linux" de destino usa o ALSA? Porque se isso não acontecer, mexer nos arquivos de configuração do ALSA não lhe dará muito.
haimg

Eu quero um dispositivo de som virtual a ser criado em / dev / ...
ssapkota

Veja a edição para mais.
ssapkota

Respostas:


14

Você precisa carregar um driver de som fictício . Consulte o Alsa Wiki para obter informações detalhadas, mas aqui estão os princípios básicos:

  1. Carregue o driver:

    modprobe snd-dummy; modprobe snd-pcm-oss; modprobe snd-mixer-oss; modprobe snd-seq-oss

  2. Tenha o arquivo .asoundrc adequado (você o tem coberto)

  3. Configure o carregamento automático dos drivers. Adicione isto a /etc/modules.conf:

    # OSS / Free porção - placa # 1
    alias sound-slot-0 snd-card-0
    alias sound-service-0-0 snd-mixer-oss
    alias sound-service-0-1 snd-seq-oss
    alias sound-service -0-3 snd-pcm-oss
    alias sound-service-0-8 snd-seq-oss
    alias sound-service-0-12 snd-pcm-oss

Na verdade, existem algumas coisas envolvidas, sugiro que você visite a página do Wiki acima para obter explicações mais detalhadas.


Uma pergunta. É possível criar um driver de dispositivo do kernel do Linux que simule uma placa de som para o Linux, em seguida, alsa, OSS, etc? Estou lendo um dispositivo Linux e me perguntando se é possível.
DeFreitas

O módulo principal do seqüenciador parece mostrar agora como snd-seq-dummy.
precisa saber é o seguinte

11

Eu também tive problemas com isso ao tentar fazer com que um dispositivo Dummy Sound funcionasse no Raspberry Pi executando o Raspian (derivado do Debian). O Pi on tem uma saída de áudio, mas nenhuma entrada, e eu quero usar um aplicativo que procure por ambos, mesmo que eu precise apenas de uma saída (PJSIP).

No entanto, as informações acima não funcionaram para mim e a página WiKi também não. Depois de falar com um usuário da lista de discussão da ALSA, eles sugeriram que as informações na página da WikI estavam desatualizadas, no entanto, me deram dicas sobre como resolver isso.

Primeiramente, eu só preciso carregar o módulo 'snd-dummy' usando:

sudo modprobe snd-dummy

No entanto, o dispositivo não permanece presente após uma reinicialização. No Pi, este módulo pode ser carregado através do arquivo '/ etc / modules'. A edição desse arquivo para carregar o driver produziu os resultados desejados:

sudo nano /etc/modules

Meu arquivo / etc / modules simplesmente se parece com isso:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
snd-dummy

Portanto, o driver padrão é carregado primeiro e, em seguida, o driver Dummy é carregado em seguida. Tarefa concluída!

Boa sorte

Chris


@logoff você acha que funcionaria em um contêiner docker, bem como no rasberry pi?
thataustin

@thataustin Acho que você precisa dar acesso ao hardware para o contêiner do Docker. Sugiro que tente primeiro sem o Docker e, se tiver êxito, tente com o Docker.
logoff

0

Eu também o uso para o Linphone no RaspberryPi, pois requer um dispositivo de entrada; no entanto, tive que adicionar fake_buffer = 0 param; caso contrário, o dispositivo de captura fictícia capta muito ruído aleatório e isso seria estranho ... você pode fazer como:

sudo modprobe snd-dummy fake_buffer=0
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.