Pourquoi Linux ne me laisse-t-il pas jouer avec / dev / dsp?

12

Je travaille sur un manuel Linux, et ça me parle des appareils. Il dit que si j'envoie la sortie appropriée à /dev/dsp, alors il jouera un son. L'exemple est cat file.wav > /dev/dsp, où file.wav est n'importe quel fichier .wav.

Quand je fais cela, ma permission est refusée. Si je lance ceci avec sudo, je reçois toujours une autorisation refusée. Si je l'ai d' suabord, aucun son ne joue.

Pourquoi ai-je obtenu une autorisation refusée sudo? Pourquoi aucun son ne joue-t-il même avec su?

Korgan Rivera
la source
1
Assurez-vous que votre utilisateur est dans le audiogroupe.
Carl Groner
Vous devrez peut-être également vous assurer que votre fichier wav est audio brut - tous les fichiers .wav ne sont pas bruts.
Drake Clarris
@DrakeClarris, qui provoquerait la sortie de bruit, pas une erreur d'autorisation refusée.
cjm
@cjm Je pensais davantage au silence en jouant avec su
Drake Clarris

Réponses:

14

/dev/dspfait partie d'OSS, qui n'a pas fait partie du noyau Linux depuis ... très longtemps. Il a longtemps été supplanté par ALSA, qui utilise différents appareils, différents programmes et une API différente.

Il existe cependant un module de couche d'émulation. S'il est disponible, le chargement du snd-pcm-ossmodule vous permettra d'utiliser les périphériques PCM pour OSS tels que /dev/dsp.

Ou simplement s'en tenir aux données de canalisation vers aplayou à la paplayplace.

Ignacio Vazquez-Abrams
la source
2
sudo modprobe snd-pcm-ossfonctionne sur mon ubuntu pour charger ce module. J'en tire un /dev/dsp1et un /dev/dsp2.
Veda
9

Si je lance ceci avec sudo, je reçois toujours une autorisation refusée.

Par cette déclaration, il semble que vous essayez une commande comme:

sudo cat file.wav > /dev/dsp

La raison pour laquelle vous continuez à obtenir une "autorisation refusée" est que votre shell essaie d' abord d'ouvrir le /dev/dsppériphérique pour la sortie, avant d' exécuter la commande (qui est sudo). Pour que le shell ouvre la redirection avec les privilèges root, vous devez faire quelque chose comme:

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

Livre périmé, comme indiqué.
Donc, pour que les exemples fonctionnent avec Linux plus moderne, où cela dit quelque chose comme

cat music.wav > /dev/dsp

changez-le en:

cat music.wav | aplay

Et vous venez de faire votre premier portage de code! Gagner! N'hésitez pas à envoyer les patchs de l'auteur du livre. :-)

Hal
la source