Por que o Linux não me deixa brincar com / dev / dsp?

12

Estou trabalhando em um livro do Linux e ele está me falando sobre dispositivos. Ele diz que se eu enviar a saída apropriada para /dev/dsp, ele reproduzirá um som. O exemplo é cat file.wav > /dev/dsponde file.wav é qualquer arquivo .wav.

Quando faço isso, recebo permissão negada. Se eu executar isso com o sudo, ainda recebo permissão negada. Se eu suprimeiro, nenhum som é reproduzido.

Por que obtenho permissão negada sudo? Por que nenhum som é reproduzido su?

Korgan Rivera
fonte
1
Verifique se o seu usuário está no audiogrupo.
precisa
Você também pode precisar garantir que seu arquivo wav seja um áudio bruto - nem todos os arquivos .wav são brutos.
Drake Clarris
@DrakeClarris, que causaria a saída de ruído, não um erro de permissão negada.
Cjm
@cjm eu estava pensando mais em silêncio quando se joga usando su
Drake Clarris

Respostas:

14

/dev/dspfaz parte do OSS, que não faz parte do kernel do Linux há ... muito tempo. Há muito que é substituído pelo ALSA, que usa dispositivos diferentes, programas diferentes e uma API diferente.

Existe um módulo de camada de emulação. Se estiver disponível, carregar o snd-pcm-ossmódulo permitirá que você use os dispositivos PCM para OSS, como /dev/dsp.

Ou apenas mantenha a tubulação de dados para aplayou em paplayvez disso.

Ignacio Vazquez-Abrams
fonte
2
sudo modprobe snd-pcm-ossfunciona no meu ubuntu para carregar esse módulo. Eu recebo um /dev/dsp1e outro /dev/dsp2disso.
Veda
9

Se eu executar isso com o sudo, ainda recebo permissão negada.

Por esta declaração, parece que você está tentando um comando como:

sudo cat file.wav > /dev/dsp

O motivo pelo qual você continua recebendo "permissão negada" é que seu shell primeiro tenta abrir o /dev/dspdispositivo para saída, antes de executar o comando (que é sudo). Para que o shell abra o redirecionamento com privilégios de root, você teria que fazer algo como:

sudo sh -c 'cat file.wav > /dev/dsp'
Greg Hewgill
fonte
6

Livro desatualizado, conforme observado.
Então, para fazer os exemplos funcionarem com o linux mais moderno, onde diz algo como

cat music.wav > /dev/dsp

altere para:

cat music.wav | aplay

E você acabou de fazer sua primeira portabilidade de código! Ganhar! Sinta-se à vontade para enviar as correções do autor do livro. :-)

Hal
fonte