Bug 118161
Summary: | Regression: No right channel sound on Creative Xtreme Audio (CA0106) | ||
---|---|---|---|
Product: | Drivers | Reporter: | luke (lukebenes) |
Component: | Sound(ALSA) | Assignee: | Jaroslav Kysela (perex) |
Status: | RESOLVED CODE_FIX | ||
Severity: | normal | CC: | superquad.vortex2, tiwai |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 4.4.0-22-generic | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: | Mixer Setup |
Description
luke
2016-05-13 02:21:30 UTC
It can't be a regression since there are no relevant changes in ca0106 driver over 6 years. If it worked, it's very likely a regression in PulseAudio side. Try to go to runlevel 3, kill PA, unload snd-ca0106 module, and remove /var/lib/alsa/asound.state (or whatever alsactl stores). Then reload snd-ca0106 module again. At this state, how does the mixer setup look? If the mixers are unbalanced (no matter whether volume zero or full), we need to fix. If the mixer values are balanced, it's no driver bug, but it's PA who tries to set the unbalanced values. https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/log/sound/pci/ca0106 only few change if it work on ubuntu 12.04 do the virtual master alway expect max dB is 0 dB ? control.5 { iface MIXER name 'Analog Front Playback Volume' value.0 207 value.1 207 comment { access 'read write' type INTEGER count 2 range '0 - 255' dbmin -9999999 dbmax 1200 dbvalue.0 0 dbvalue.1 0 } } control.38 { iface MIXER name 'Master Playback Volume' value 202 comment { access 'read write' type INTEGER count 1 range '0 - 255' dbmin -9999999 dbmax 0 dbvalue.0 -1325 } } do the windows drier also have those iec958 front , rear, center/lfe amd side playback volume ut us strange that there is 12 dB gain on these controls control.9 { iface MIXER name 'IEC958 Front Playback Volume' value.0 211 value.1 211 comment { access 'read write' type INTEGER count 2 range '0 - 255' dbmin -9999999 dbmax 1200 dbvalue.0 100 dbvalue.1 100 } } control.10 { iface MIXER name 'IEC958 Rear Playback Volume' value.0 205 value.1 205 comment { access 'read write' type INTEGER count 2 range '0 - 255' dbmin -9999999 dbmax 1200 dbvalue.0 -50 dbvalue.1 -50 } } control.11 { iface MIXER name 'IEC958 Center/LFE Playback Volume' value.0 207 value.1 207 comment { access 'read write' type INTEGER count 2 range '0 - 255' dbmin -9999999 dbmax 1200 dbvalue.0 0 dbvalue.1 0 } } control.12 { iface MIXER name 'IEC958 Unknown Playback Volume' value.0 207 value.1 207 comment { access 'read write' type INTEGER count 2 range '0 - 255' dbmin -9999999 dbmax 1200 dbvalue.0 0 dbvalue.1 0 } } do the analog capture work since it is not clear how the driver switch between analog capture and iec958 capture and the driver has 4 capture devices imple mixer control 'Analog Source',0 Capabilities: cenum Items: 'Phone' 'Mic' 'Line in' 'Aux' Item0: 'Mic' Simple mixer control 'CAPTURE feedback',0 Capabilities: pvolume Playback channels: Front Left - Front Right Limits: Playback 0 - 255 Mono: Front Left: Playback 0 [0%] [-99999.99dB] Front Right: Playback 0 [0%] [-99999.99dB] Simple mixer control 'Digital Source',0 Capabilities: cenum Items: 'IEC958 out' 'i2s mixer out' 'IEC958 in' 'i2s in' 'AC97 in' 'SRC out' Item0: 'i2s in' Simple mixer control 'Shared Mic/Line in',0 Capabilities: cenum Items: 'Line in' 'Mic in' Item0: 'Mic in' **** List of CAPTURE Hardware Devices **** card 0: CA0106 [CA0106], device 0: ca0106 [CA0106] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: CA0106 [CA0106], device 1: ca0106 [CA0106] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: CA0106 [CA0106], device 2: ca0106 [CA0106] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: CA0106 [CA0106], device 3: ca0106 [CA0106] Subdevices: 1/1 Subdevice #0: subdevice #0 are the channel map correct ? https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pci/ca0106?id=21147f91f1be57c4cfc24e538e93c30636513ce8 seem no capture channel map http://git.alsa-project.org/?p=alsa-lib.git;a=blob_plain;f=test/chmap.c;hb=HEAD try speaker-test -c 2 -t wav -D hw:CARD=CA0106 do you get the correct sound if the application use alsa hw device ? 23.816| 0.000) D: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.pci-0000_01_07.0.analog-stereo becomes idle, timeout in 5 seconds. ( 23.816| 0.000) I: [pulseaudio] resampler.c: Forcing resampler 'copy', because of fixed, identical sample rates. ( 23.816| 0.000) D: [pulseaudio] resampler.c: Resampler: ( 23.816| 0.000) D: [pulseaudio] resampler.c: rate 48000 -> 48000 (method copy) ( 23.816| 0.000) D: [pulseaudio] resampler.c: format s16le -> s16le (intermediate s16le) ( 23.816| 0.000) D: [pulseaudio] resampler.c: channels 1 -> 2 (resampling 1) ( 23.816| 0.000) D: [pulseaudio] resampler.c: Channel matrix: ( 23.816| 0.000) D: [pulseaudio] resampler.c: I00 ( 23.816| 0.000) D: [pulseaudio] resampler.c: +------ ( 23.816| 0.000) D: [pulseaudio] resampler.c: O00 | 0.000 ( 23.816| 0.000) D: [pulseaudio] resampler.c: O01 | 1.000 ( 23.816| 0.000) I: [pulseaudio] remap.c: Using stereo arrange remapping ( 23.817| 0.000) D: [pulseaudio] memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0 ( 23.817| 0.000) D: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0 ( 23.817| 0.000) I: [pulseaudio] sink-input.c: Created input 2 "Front Right" on alsa_output.pci-0000_01_07.0.analog-stereo with sample spec s16le 1ch 48000Hz and channel map front-right ( 23.817| 0.000) I: [pulseaudio] sink-input.c: event.id = "audio-channel-front-right" ( 23.817| 0.000) I: [pulseaudio] sink-input.c: media.name = "Front Right" ( 23.817| 0.000) I: [pulseaudio] sink-input.c: media.role = "test" ( 23.817| 0.000) I: [pulseaudio] sink-input.c: media.filename = "/usr/share//sounds/freedesktop/stereo/audio-channel-front-right.oga" ( 23.817| 0.000) I: [pulseaudio] sink-input.c: application.name = "libcanberra" 0.343| 0.000) I: [pulseaudio] alsa-util.c: Successfully attached to mixer 'hw:0' ( 0.344| 0.000) D: [pulseaudio] alsa-mixer.c: Available mixer paths (after tidying): ( 0.344| 0.000) D: [pulseaudio] alsa-mixer.c: Path Set 0x860eda0, direction=1 ( 0.344| 0.000) D: [pulseaudio] alsa-mixer.c: Path analog-output (Analog Output), direction=1, priority=99, probed=yes, supported=yes, has_mute=yes, has_volume=yes, has_dB=yes, min_volume=0, max_volume=255, min_dB=-100000, max_dB=0 ( 0.344| 0.000) D: [pulseaudio] alsa-mixer.c: Element Master, direction=1, switch=1, volume=1, volume_limit=-1, enumeration=0, required=0, required_any=0, required_absent=0, mask=0x7ffffffffffff, n_channels=1, override_map=yes the fix is better done in driver by removing "Analog" prefix from those playback volume controls instead of adding "Element Analog xxx " in pulseaudio conf files ( 0.367| 0.000) D: [pulseaudio] alsa-mixer.c: Path analog-output (Analog Output), direction=1, priority=99, probed=yes, supported=yes, has_mute=yes, has_volume=yes, has_dB=yes, min_volume=0, max_volume=255, min_dB=-200000, max_dB=12 ( 0.367| 0.000) D: [pulseaudio] alsa-mixer.c: Element Master, direction=1, switch=1, volume=1, volume_limit=-1, enumeration=0, required=0, required_any=0, required_absent=0, mask=0x7ffffffffffff, n_channels=1, override_map=yes ( 0.367| 0.000) D: [pulseaudio] alsa-mixer.c: Element Analog Front, direction=1, switch=1, volume=1, volume_limit=-1, enumeration=0, required=0, required_any=0, required_absent=0, mask=0x6, n_channels=2, override_map=yes ( 0.367| 0.000) D: [pulseaudio] alsa-mixer.c: Element Analog Side, direction=1, switch=1, volume=1, volume_limit=-1, enumeration=0, required=0, required_any=0, required_absent=0, mask=0xc00, n_channels=2, override_map=yes ( 0.367| 0.000) D: [pulseaudio] alsa-mixer.c: Element Analog Center/LFE, direction=1, switch=1, volume=1, volume_limit=-1, enumeration=0, required=0, required_any=0, required_absent=0, mask=0x4900000000098, n_channels=2, override_map=yes ( On a clean install of Ubuntu 16.04, $ speaker-test -c 2 -t wav -D hw:CARD=CA0106 Only speaks "Front Left" I'm not sure what how you want me to force speaker-test to use ALSA. If I "killall pulseaudio", I get: Playback open error: -16,Device or resource busy With Lubuntu 14.4 Live CD (No PulseAudio), $ speaker-test -c 2 -t wav -D hw:CARD=CA0106 -> I only hear "Front Left" $ speaker-test -c2 -t wav -D pulse Playback device is pulse Stream parameters are 48000Hz, S16_LE, 2 channels WAV file(s) ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM pulse Playback open error: -2,No such file or directory What else do you need from me? Created attachment 216561 [details] Mixer Setup (In reply to Takashi Iwai from comment #1) > It can't be a regression since there are no relevant changes in ca0106 > driver over 6 years. If it worked, it's very likely a regression in > PulseAudio side. > > Try to go to runlevel 3, kill PA, unload snd-ca0106 module, and remove > /var/lib/alsa/asound.state (or whatever alsactl stores). Then reload > snd-ca0106 module again. > > At this state, how does the mixer setup look? If the mixers are unbalanced > (no matter whether volume zero or full), we need to fix. If the mixer > values are balanced, it's no driver bug, but it's PA who tries to set the > unbalanced values. Lubuntu doesn't have PA and I hosed my system trying to get runlevel 3 on Ubuntu 16.4 (followed old guide, forgetting it changed to systemd). Lubuntu doesn't have a /var/lib/alsa/asound.state file. But I did a $ alsa force-reload to reload the sound modules. Then ran $ alsamixer (In reply to luke from comment #10) > Created attachment 216561 [details] > Mixer Setup > > (In reply to Takashi Iwai from comment #1) > > It can't be a regression since there are no relevant changes in ca0106 > > driver over 6 years. If it worked, it's very likely a regression in > > PulseAudio side. > > > > Try to go to runlevel 3, kill PA, unload snd-ca0106 module, and remove > > /var/lib/alsa/asound.state (or whatever alsactl stores). Then reload > > snd-ca0106 module again. > > > > At this state, how does the mixer setup look? If the mixers are unbalanced > > (no matter whether volume zero or full), we need to fix. If the mixer > > values are balanced, it's no driver bug, but it's PA who tries to set the > > unbalanced values. > > Lubuntu doesn't have PA and I hosed my system trying to get runlevel 3 on > Ubuntu 16.4 (followed old guide, forgetting it changed to systemd). > > Lubuntu doesn't have a /var/lib/alsa/asound.state file. But I did a $ alsa > force-reload to reload the sound modules. Then ran $ alsamixer Just remove the whole init stuff (it might be /etc/asound.state or such path), but do modprobe snd-ca0106 instead. At best, rename or remove /usr/sbin/alsactl so that it won't be invoked before loading the module. And try the same procedure with the old kernel where you assuming it working as is. If there is really a difference, try to narrow down which kernel starts regression. When I did a dist-upgrade from Ubuntu 12.04 to 14.04, the sound in my right channel cut out, so something changed in alsa or kernel. This is not an Ubuntu specific issue, as I experienced the same issue with a fresh install of CentOS and Debian. This regression likely happened betweeen 3.2 (12.04) and 3.13 (14.04). I'll see if I can narrow it down more, but it will take some time. I installed Lubuntu 12.04, 3.2.0-102-generic-pae. Both channels played. I upgraded the kernel to 3.10.101-0310101-generic from here: http://kernel.ubuntu.com/~kernel-ppa/mainline/ Unlike the bootable iso image, once installed it had a /var/lib/alsa/asound.state I removed this and did a $ alsa force-reload and $ alsactl init, but asound.state wasn't recreated. Also the old alsamixer settings seemed to remain. How do I reset ALL the alsa settings to reproduce this bug with newer kernels? Verified fixed with a clean install of Ubuntu 16.10. $ uname -a Linux luke-PowerEdge-T105 4.4.0-9136-generic #55-Ubuntu SMP Fri Aug 26 05:58:34 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux Raymond, Thank you so much for all your help on this issue! |