web-dev-qa-db-fra.com

Comment puis-je obtenir une sortie audio sur HDMI sans avoir à démarrer X?

J'ai une machine sans tête connectée à mon système audio et je l'utilise pour exécuter un démon de lecture de musique que je contrôle sur le réseau. (Entre autres)

Cependant, je n'arrive pas à faire en sorte que le son sorte de mes haut-parleurs sans exécuter X.

J'utilise Pulse audio dans une instance système et mon démon ne fonctionne pas sous X. Néanmoins, lorsque mon démon lit de la musique sans que je l'entende, je peux le réparer en exécutant startx dans une session indépendante. Après que X ait commencé, je peux entendre le son. Le son disparaît à nouveau si je tue le serveur X.

Fait intéressant/ennuyeux, le son s’arrête également après quelques minutes de fonctionnement de X. Cela pourrait être dû à un économiseur d'écran, mais je n'ai pas été en mesure de vérifier ou d'infalsifier cette théorie.

Donc, ma solution actuelle consiste à ssh dans la boîte à chaque fois que je veux de la musique et à startx, et de le redémarrer toutes les quinze minutes environ. J'aimerais faire mieux.


J'ai pu vérifier les éléments suivants:

  • Les ajustements dans alsamixer n'ont aucun effet sur ce problème. Le canal de sortie correspondant n'est jamais mis en sourdine
  • Dans alsamixer, je ne vois aucune différence entre le moment où le son fonctionne et le moment où il ne fonctionne pas.
  • Rien n'est mis en sourdine dans pactl list
  • Il n'y a pas de différence dans le résultat de pactl list entre le début de X et le suivant. (Sauf l'identifiant de l'instance pactl connectée à Pulse, qui est différente à chaque fois que vous exécutez pactl)
  • L'utilisateur qui exécute le démon musique est membre des groupes audio, Pulse et Pulse-access.
  • Le programme de démon de musique ne rapporte aucun message d'erreur et agit comme s'il jouait la musique comme il se doit
  • Une forme de démon dbus est en cours d'exécution. ps aux|grep dbus signale dbus-daemon --system --fork --activation=upstart avant et après le démarrage de X

Quelques détails sur mon matériel:

Sortie de lsmod:

Module                  Size  Used by
deflate                12617  0 
zlib_deflate           27139  1 deflate
ctr                    13201  0 
twofish_generic        16635  0 
twofish_x86_64_3way    25287  0 
twofish_x86_64         12907  1 twofish_x86_64_3way
twofish_common         20919  3 twofish_generic,twofish_x86_64_3way,twofish_x86_64
camellia               29348  0 
serpent                29125  0 
blowfish_generic       12530  0 
blowfish_x86_64        21466  0 
blowfish_common        16739  2 blowfish_generic,blowfish_x86_64
cast5                  25112  0 
des_generic            21415  0 
xcbc                   12815  0 
rmd160                 16744  0 
bnep                   18281  2 
rfcomm                 47604  12 
sha512_generic         12796  0 
crypto_null            12918  0 
parport_pc             32866  0 
af_key                 36389  0 
ppdev                  17113  0 
binfmt_misc            17540  1 
nfsd                  281980  2 
ext2                   73795  1 
nfs                   436929  1 
lockd                  90326  2 nfsd,nfs
fscache                61529  1 nfs
auth_rpcgss            53380  2 nfsd,nfs
nfs_acl                12883  2 nfsd,nfs
sunrpc                255224  16 nfsd,nfs,lockd,auth_rpcgss,nfs_acl
btusb                  18332  2 
vesafb                 13844  2 
pl2303                 17957  1 
ath3k                  12961  0 
bluetooth             180153  24 bnep,rfcomm,btusb,ath3k
snd_hda_codec_hdmi     32474  4 
nvidia              11308613  0 
ftdi_sio               40679  1 
usbserial              47113  6 pl2303,ftdi_sio
psmouse                97485  0 
snd_hda_codec_realtek   224173  1 
snd_hda_intel          33719  5 
snd_hda_codec         127706  3 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel
serio_raw              13211  0 
snd_seq_midi           13324  0 
snd_hwdep              17764  1 snd_hda_codec
snd_pcm                97275  3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_rawmidi            30748  1 snd_seq_midi
snd_seq_midi_event     14899  1 snd_seq_midi
snd_seq                61929  2 snd_seq_midi,snd_seq_midi_event
snd_timer              29990  2 snd_pcm,snd_seq
snd_seq_device         14540  3 snd_seq_midi,snd_rawmidi,snd_seq
snd                    79041  20 snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
asus_atk0110           18078  0 
mac_hid                13253  0 
jc42                   13948  0 
soundcore              15091  1 snd
snd_page_alloc         18529  2 snd_hda_intel,snd_pcm
coretemp               13554  0 
i2c_i801               17570  0 
lp                     17799  0 
parport                46562  3 parport_pc,ppdev,lp
r8169                  62154  0 

Des idées? Qu'est-ce que X fait qui est si important?

4
Magnus Hoff

La sortie HDMI est gérée par le pilote graphique, qui dans votre cas est le pilote à source fermée de Nvidia. Apparemment, ce pilote n'active l'encodeur audio HDMI que lorsque X est en cours d'exécution.

Se plaindre à Nvidia.

Vous pouvez également utiliser la sortie S/PDIF de votre carte mère.


Addendum du demandeur, Magnus Hoff:

En poursuivant cet angle, j'ai fini par exécuter X mais en désactivant dpms, de sorte que la sortie HDMI est maintenue à son état alimenté et entièrement fonctionnel. J'ai réalisé que je devais le faire en lisant documentation de nvidia .

Pour y parvenir, j'ai ajouté ce qui suit à mon .xinitrc:

xset s off
xset -dpms

Source: http://crunchbang.org/forums/viewtopic.php?pid=121360#p12136

2
CL.