Bug 74324

Summary: Creative USB Sound Blaster X-Fi HD: No sound on SPDIF output
Product: PulseAudio Reporter: Richard Körber <freedesktop>
Component: miscAssignee: pulseaudio-bugs
Status: RESOLVED NOTOURBUG QA Contact: pulseaudio-bugs
Severity: normal    
Priority: medium CC: lennart
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: commented screenshot
Output of alsa-info.sh
lsusb output (audio device only)

Description Richard Körber 2014-02-01 15:48:05 UTC
When connecting a Creative Sound Blaster X-Fi HD via USB, it is correctly detected and the analog outputs (headphone jack) and volume knob can be used out of the box.

However, the SPDIF output is muted. My amplifier detects a signal on the optical input, but no sound is played. I was unable to configure pavucontrol in order to have sound on the SPDIF output.

After searching the web, I found a solution [1], added this line to /etc/pulse/system.pa and restarted PulseAudio:

  load-module module-alsa-sink device=hw:0,1 

Now a second output device called "USB Sound Blaster HD" appears, and when I select it, the SPDIF output works fine. However, there are no "Advanced" settings where I could select AC3 and DTS.


Actual behaviour:
1. /etc/pulse/system.pa must be modified to use the SPDIF output
2. In the "Configuration" tab of pavucontrol, only one "USB Sound Blaster HD" appears. Even when I choose the IEC958 output there, the SPDIF output remains silent.
3. In the "Output Devices" tab of pavucontrol, there are two "USB Sound Blaster HD" entries. The first one controls the SPDIF output, but does not allow to change the "Advanced" settings. The second one belongs to the device shown in the Configuration tab and only controls the analog outputs. I am unable to use the SPDIF output there.


Expected behavior:
1. Plug in the USB Sound Blaster (without needing to modify any configuration files)
2. Choose the IEC958 output in the "Configuration" tab of pavucontrol
3. Configure the IEC958 output in the "Output Devices" tab (e.g. add AC3 and DTS, control the output volume)
4. Have sound on the SPDIF output


I don't have much experience with ALSA and PulseAudio. However I hope that I was able explain the issue properly.

Tried on a fresh Fedora 20 x86_64 installation.

[1] http://permalink.gmane.org/gmane.linux.alsa.user/36028
Comment 1 Richard Körber 2014-02-01 16:22:57 UTC
Created attachment 93173 [details]
commented screenshot

Commented screenshot of pavucontrol's "Output Devices" tab.
Comment 2 Raymond 2014-02-02 15:09:09 UTC
post the output of alsa-info.sh



lsusb -vvvv

post the output of your creative USB audio device only, please exclude the other USB devices
Comment 3 Richard Körber 2014-02-02 16:35:13 UTC
Created attachment 93231 [details]
Output of alsa-info.sh
Comment 4 Richard Körber 2014-02-02 16:35:57 UTC
Created attachment 93232 [details]
lsusb output (audio device only)
Comment 5 Richard Körber 2014-02-02 16:39:12 UTC
(In reply to comment #0)
 
> After searching the web, I found a solution [1], added this line to
> /etc/pulse/system.pa and restarted PulseAudio:
> 
>   load-module module-alsa-sink device=hw:0,1 

I made an error in my report. The original fix [1] mentioned /etc/pulse/system.pa, however changing it had no effect on my system.

I actually modified /etc/pulse/default.pa.
Comment 6 Raymond 2014-02-04 05:06:29 UTC
APLAY

**** List of PLAYBACK Hardware Devices ****
card 0: HD [USB Sound Blaster HD], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HD [USB Sound Blaster HD], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

which playback device is analog or digital

you need to add the device number of digital device into 
USB-Audio.pcm.iec958_device if device 0 is not the digital device

http://git.alsa-project.org/?p=alsa-lib.git;a=blob;f=src/conf/cards/USB-Audio.conf;hb=HEAD



# If a device does not use the first PCM device for digital data, the device
# number for the iec958 device can be changed here.
USB-Audio.pcm.iec958_device {



there are two capture devices

you have to ask alsa devel how to fix this if device 1 is not digital since the above changed the digital input device

ARECORD

**** List of CAPTURE Hardware Devices ****
card 0: HD [USB Sound Blaster HD], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HD [USB Sound Blaster HD], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Comment 7 Raymond 2014-02-04 05:15:03 UTC
you can study how to define analog and digital playback and capture devices 

http://git.alsa-project.org/?p=alsa-lib.git;a=commitdiff;h=a9b1299556598fed12d0d42c80aaa933aced8a42;hp=efda3e2bc766b4147f35f4b006d315ea7b3c55fe
Comment 8 Richard Körber 2014-04-06 14:52:26 UTC
Raymond, thank you very much for your explanation.

I was able to get the SPDIF output work properly when modifying the /usr/share/alsa/cards/USB-Audio.conf like this:

USB-Audio.pcm.iec958_device {
        "USB Sound Blaster HD" 1
}

I assume the SPDIF input is also on device 1, but I cannot test that.

The USB-Audio.conf header says that it is preferred to change /etc/asound.conf instead, but adding the line

cards.USB-Audio.pcm.iec958_device."USB Sound Blaster HD" 1

did not help at all. I had to change the USB-Audio.conf instead.

I will send a report to the ALSA project.
Comment 9 Raymond 2014-04-07 16:19:36 UTC
The driver should change use a user friendly name for the device if it know that it is a digital device instead of analog device

AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           4
        bDelay                  0 frames
        wFormatTag           8193 IEC1937_AC-3

AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             7
        wTerminalType      0x0605 SPDIF interface
        bAssocTerminal          0
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0 
        iTerminal               0
Comment 10 sara 2014-10-29 11:41:52 UTC
I have the same problem, what could I write exactly in the terminal to fix the problem with creative xfi hd? I don't know what to do...
Comment 11 sara 2014-10-29 13:17:52 UTC
I have Ubuntu 14.04 and creative xfi hd. I don't hear sound also if the card is recognized. I don't know how to fix this...
Comment 12 sara 2014-10-29 16:43:05 UTC
Now it's all ok :)
Comment 13 Pander 2016-01-20 11:19:40 UTC
What is the url of the report send to Alsa?
Comment 14 Arun Raghavan 2016-01-21 03:23:35 UTC
This seems to be resolved. Please feel free to reopen if it is not.
Comment 15 Raymond 2016-01-21 07:30:21 UTC
(In reply to Pander from comment #13)
> What is the url of the report send to Alsa?

https://bugzilla.kernel.org/enter_bug.cgi?product=Drivers

Sound alsa

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.