LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1355|回复: 6

求救:创新X-Fi Surround 5.1 Pro usb 声卡alsa下不能调音量,oss4下不能出声音

[复制链接]
发表于 2011-2-23 02:51:58 | 显示全部楼层 |阅读模式
折腾了好久,实在搞不掂了,只好上来求救。

主要症状如下:

1. oss4 能认出来,但是不能发声,ossxmix 能显示 USB 声卡,但是音量调节面板是空白的,osstest 失败。oss4 驱动集成的 hda-intel 无问题。

alsa 下,问题更多:

2. alsaconf 不能认出任何声卡。但是我手动编辑 /etc/modprobe.d/alsa.conf 之后,两块声卡都能出声,其中集成声卡支持得很好,没有问题。

3. alsamixer 不能调节 USB 声卡的音量,显示  This sound device does not have any controls. 连声卡上的音量调节旋钮都失效。只有 mplayer 和 ncmpcpp 可以通过软件调节音量。其他音频播放器大多无法正常工作。

我已经严格按照 Gentoo 的官方文档来配置声卡,确信内核选项是正确的。alsa 和 oss4 是分开测试的,不存在混用的情况。

下面是我能抓到的一些信息:

--------------------------------------------------------------------

~ % lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 0a5c:2110 Broadcom Corp. Bluetooth Controller
Bus 003 Device 003: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader
Bus 004 Device 002: ID 041e:30df Creative Technology, Ltd
Bus 006 Device 002: ID 17ef:1003 Lenovo Integrated Smart Card Reader

---------------------------------------------------------------------

~ % lsmod | grep snd
snd_seq_dummy            951  0
snd_seq_oss            23455  0
snd_seq_midi_event      3704  1 snd_seq_oss
snd_seq                37038  5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event
snd_pcm_oss            32246  0
snd_mixer_oss          10403  1 snd_pcm_oss
snd_ctxfi              61438  0
snd_hda_codec_analog    54587  1
snd_hda_intel          18373  0
snd_usb_audio          62943  1
snd_usbmidi_lib        13328  1 snd_usb_audio
snd_hda_codec          55713  2 snd_hda_codec_analog,snd_hda_intel
snd_hwdep               4073  2 snd_usb_audio,snd_hda_codec
snd_pcm                52554  5 snd_pcm_oss,snd_ctxfi,snd_hda_intel,snd_usb_audio,snd_hda_codec
snd_rawmidi            13268  1 snd_usbmidi_lib
snd_timer              12752  2 snd_seq,snd_pcm
snd_seq_device          3970  4 snd_seq_dummy,snd_seq_oss,snd_seq,snd_rawmidi
snd                    36785  18 snd_seq_dummy,snd_seq_oss,snd_seq,snd_pcm_oss,snd_mixer_oss,snd_ctxfi,snd_hda_codec_analog,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_timer,snd_seq_device
soundcore               3388  1 snd
snd_page_alloc          5028  3 snd_ctxfi,snd_hda_intel,snd_pcm

-----------------------------------------------------------------------

~ % cat /etc/modprobe.d/alsa.conf  
alias /dev/mixer snd-mixer-oss
alias /dev/midi snd-seq-oss
alias char-major-116 snd
alias char-major-14 soundcore

options snd cards_limit=2

alias snd-card-0 snd-usb-audio
alias sound-slot-0 snd-card-0

options snd-usb-audio index=0 vid=0x041e pid=0x30df
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
alias /dev/dsp snd-usb-oss

alias snd-card-1 snd-hda-intel
alias sound-slot-1 snd-card-1
options snd-hda-intel index=1
alias sound-service-1-0 snd-mixer-oss
alias sound-service-1-1 snd-seq-oss
alias sound-service-1-3 snd-pcm-oss
alias sound-service-1-8 snd-seq-oss
alias sound-service-1-12 snd-pcm-oss
alias /dev/dsp1 snd-hda-intel

-------------------------------------------------------------
~ % cat /proc/asound/cards
0 [Pro            ]: USB-Audio - SB X-Fi Surround 5.1 Pro
                      Creative Technology Ltd SB X-Fi Surround 5.1 Pro at usb-0000:00:1a.1-1, full sp
1 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xfe220000 irq 49

--------------------------------------------------------------

~ % cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.23.

---------------------------------------------------------------

~ % cat /proc/asound/oss/sndstat
Sound Driver:3.8.1a-980706 (ALSA v1.0.23 emulation code)
Kernel: Linux Wentoo 2.6.37-gentoo #31 SMP Wed Feb 23 01:54:08 CST 2011 i686
Config options: 0

Installed drivers:
Type 10: ALSA emulation

Card config:
Creative Technology Ltd SB X-Fi Surround 5.1 Pro at usb-0000:00:1a.1-1, full sp
HDA Intel at 0xfe220000 irq 49

Audio devices:
0: USB Audio (DUPLEX)
1: AD198x Analog (DUPLEX)

Synth devices: NOT ENABLED IN CONFIG

Midi devices: NOT ENABLED IN CONFIG

Timers:
31: system timer

Mixers:
0: USB Mixer
1: Analog Devices AD1984

----------------------------------------------------------------

~ %  cat /proc/asound/modules
0 snd_usb_audio
1 snd_hda_intel

------------------------------------------------------------------

~ % cat /proc/asound/card0/usbmixer
USB Mixer: usb_id=0x041e30df, ctrlif=0, ctlerr=0
Card: Creative Technology Ltd SB X-Fi Surround 5.1 Pro at usb-0000:00:1a.1-1, full sp

-------------------------------------------------------------------

~ % aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Pro [SB X-Fi Surround 5.1 Pro], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Pro [SB X-Fi Surround 5.1 Pro], device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Intel [HDA Intel], device 0: AD198x Analog [AD198x Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Intel [HDA Intel], device 1: AD198x Digital [AD198x Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

-----------------------------------------------------------------------

~ % aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
dsp
    My dmix dsp0
default:CARD=Pro
    SB X-Fi Surround 5.1 Pro, USB Audio
    Default Audio Device
front:CARD=Pro,DEV=0
    SB X-Fi Surround 5.1 Pro, USB Audio
    Front speakers
surround40:CARD=Pro,DEV=0
    SB X-Fi Surround 5.1 Pro, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Pro,DEV=0
    SB X-Fi Surround 5.1 Pro, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Pro,DEV=0
    SB X-Fi Surround 5.1 Pro, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Pro,DEV=0
    SB X-Fi Surround 5.1 Pro, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Pro,DEV=0
    SB X-Fi Surround 5.1 Pro, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Pro,DEV=0
    SB X-Fi Surround 5.1 Pro, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
default:CARD=Intel
    HDA Intel, AD198x Analog
    Default Audio Device
front:CARD=Intel,DEV=0
    HDA Intel, AD198x Analog
    Front speakers
surround40:CARD=Intel,DEV=0
    HDA Intel, AD198x Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Intel,DEV=0
    HDA Intel, AD198x Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Intel,DEV=0
    HDA Intel, AD198x Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Intel,DEV=0
    HDA Intel, AD198x Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Intel,DEV=0
    HDA Intel, AD198x Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Intel,DEV=0
    HDA Intel, AD198x Digital
    IEC958 (S/PDIF) Digital Audio Output

------------------------------------------------------------

没有列出的信息,我可以再补充。
发表于 2011-2-23 12:00:44 | 显示全部楼层
之前我买过一张surround 5.1的行货(不是pro版的),旋钮用不了,但是可以用alsamixer调音量的,并且各个声道都可以,录音没有试过。

现在用的是digital music premium,碰到的问题是录不了音....

snd-usb-audio不需要加到 alsa.conf中,alsasound启动时会自动加载的。

内核和alsa相关软件是什么版本?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-2-23 14:13:57 | 显示全部楼层
Post by acevery;2128886
之前我买过一张surround 5.1的行货(不是pro版的),旋钮用不了,但是可以用alsamixer调音量的,并且各个声道都可以,录音没有试过。

现在用的是digital music premium,碰到的问题是录不了音....

snd-usb-audio不需要加到 alsa.conf中,alsasound启动时会自动加载的。

内核和alsa相关软件是什么版本?

多谢。我把 snd-usb-audio 加到 alsa.conf 中,主要是为了让USB声卡成为默认设备,因为我不知道怎么切换两块声卡。

~ % uname -a
Linux Gentooo 2.6.37-gentoo #31 SMP Wed Feb 23 01:54:08 CST 2011 i686 Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz GenuineIntel GNU/Linux

~ % qlist -v -I alsa     
dev-python/pyalsa-1.0.24
media-libs/alsa-lib-1.0.24.1
media-plugins/alsa-plugins-1.0.24
media-plugins/gst-plugins-alsa-0.10.31
media-sound/alsa-firmware-1.0.24.1
media-sound/alsa-headers-1.0.24
media-sound/alsa-tools-1.0.24.1
media-sound/alsa-utils-1.0.24.2
media-sound/gnome-alsamixer-0.9.6

~ % grep CARD /etc/make.conf
VIDEO_CARDS="vesa nvidia nouveau intel"
AUDIO_CARDS="hda-intel usb-audio"
ALSA_CARDS="hda-intel usb-audio"

声卡上的音量旋钮失效,有点奇怪,我找个时间到 Windows 下试试看是不是硬件问题。
回复 支持 反对

使用道具 举报

发表于 2011-2-23 16:53:54 | 显示全部楼层
alsa够新了,在win7下系统自带的驱动就能发声,但旋钮需要装创新的驱动才能用的

我自己是用的是pulesaudio,切换是在pulseaudio切换输出的。

你用的是pro版,我不知道会不会和标准版在硬件上也有不同

Post by Err;2128911
多谢。我把 snd-usb-audio 加到 alsa.conf 中,主要是为了让USB声卡成为默认设备,因为我不知道怎么切换两块声卡。

~ % uname -a
Linux Gentooo 2.6.37-gentoo #31 SMP Wed Feb 23 01:54:08 CST 2011 i686 Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz GenuineIntel GNU/Linux

~ % qlist -v -I alsa     
dev-python/pyalsa-1.0.24
media-libs/alsa-lib-1.0.24.1
media-plugins/alsa-plugins-1.0.24
media-plugins/gst-plugins-alsa-0.10.31
media-sound/alsa-firmware-1.0.24.1
media-sound/alsa-headers-1.0.24
media-sound/alsa-tools-1.0.24.1
media-sound/alsa-utils-1.0.24.2
media-sound/gnome-alsamixer-0.9.6

~ % grep CARD /etc/make.conf
VIDEO_CARDS="vesa nvidia nouveau intel"
AUDIO_CARDS="hda-intel usb-audio"
ALSA_CARDS="hda-intel usb-audio"

声卡上的音量旋钮失效,有点奇怪,我找个时间到 Windows 下试试看是不是硬件问题。
回复 支持 反对

使用道具 举报

发表于 2011-2-23 17:44:12 | 显示全部楼层
oss是不是应该使用闭源版本,支持更多硬件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-3-4 01:07:35 | 显示全部楼层
Post by jarryson;2128919
oss是不是应该使用闭源版本,支持更多硬件


创新的oss驱动现在都交给开源社区做了。所以应该没有闭源版本了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-3-4 01:13:23 | 显示全部楼层
oss驱动认不出声卡的问题已经解决。

我参考了这两个讨论:

http://www.4front-tech.com/forum ... trol+write+error+32

https://wiki.archlinux.org/index.php/Open_Sound_System

看来是oss4对这块声卡的一个bug,直接原因是 write_control_value 这个函数返回了一个不正常的 -32 值,解决的办法是强制其返回 1. 我不会C,不知道真正原因。但是这么做的确解决了问题。

我现在转到oss4了. 可惜 ossxmix 仍然不能控制这块声卡的音量,只有 mplayer 和 mpd 这类软件可以控制。

总的感觉,这块外置声卡比笔记本集成的好多了,呵呵
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表