Bug 664586 - ALSA - backport the recent USB audio driver from upstream (to fix low audio volume issue, new hw enablement)
Summary: ALSA - backport the recent USB audio driver from upstream (to fix low audio v...
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: kernel
Version: 6.1
Hardware: x86_64
OS: Linux
Target Milestone: rc
: ---
Assignee: Jaroslav Kysela
QA Contact: Desktop QE
Depends On:
Blocks: 637248 747123 782183 727267 828194 840683
TreeView+ depends on / blocked
Reported: 2010-12-20 20:49 UTC by Matthew Mosesohn
Modified: 2018-11-30 22:58 UTC (History)
13 users (show)

Fixed In Version: kernel-2.6.32-330.el6
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2013-02-21 05:50:31 UTC
Target Upstream Version:

Attachments (Terms of Use)
alsa-info output (26.99 KB, text/plain)
2010-12-20 20:49 UTC, Matthew Mosesohn
no flags Details

System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2013:0496 0 normal SHIPPED_LIVE Important: Red Hat Enterprise Linux 6 kernel update 2013-02-20 21:40:54 UTC

Description Matthew Mosesohn 2010-12-20 20:49:02 UTC
Created attachment 469850 [details]
alsa-info output

Description of problem:
If you attach a USB headset, PulseAudio gives it a very low volume.  gnome-sound-properties seems unable to raise this volume effectively higher.  The only way to get the volume up is to use alsamixer -Dhw -c1  and raise the master volume from there.  This, of course, does not persist across reboots.

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1. Plug in any USB headset 
2. Attempt to use a soft phone application such as Twinkle and see how low your audio is
3. Look at alsamixer -Dhw -c1 and raise the volume up
Actual results:

The volume is set very low.

Expected results:

The default volume should be configured to a reasonable level.

Additional info:

Changing /etc/pulse/default.pa to flat-volumes = no doesn't fix this.
You could save the settings with alsactl store, but this doesn't help.

If you install pavumixer (from Fedora), you can configure these volume levels as well.

Attached is the output of alsa-info from an affected system.

Comment 2 RHEL Program Management 2011-01-07 15:50:37 UTC
This request was evaluated by Red Hat Product Management for
inclusion in the current release of Red Hat Enterprise Linux.
Because the affected component is not scheduled to be updated
in the current release, Red Hat is unfortunately unable to
address this request at this time. Red Hat invites you to
ask your support representative to propose this request, if
appropriate and relevant, in the next release of Red Hat
Enterprise Linux. If you would like it considered as an
exception in the current release, please ask your support

Comment 6 Alexander Todorov 2011-06-01 08:28:40 UTC
Possibly related to bug #679122 (or vice versa).

Comment 9 Matthew Mosesohn 2012-01-24 16:38:56 UTC
Can this be acked for 6.3? Is there a patch yet?

Comment 13 Lennart Poettering 2012-06-20 07:28:15 UTC
PA doesn't apply any default volumes, it will just inherit what the lower level ALSA bits defaulted to. Reassigning.

Comment 14 Lennart Poettering 2012-06-20 07:31:40 UTC
And note, that the defaults really depend on the hw used, so we'd need information about the hw in question (such as the lsusb/lspci output of it) before anything can be done.

Anyway, this is really more Jaroslav turf rather than mine, so I'll leave anything further to him.

Comment 15 RHEL Program Management 2012-07-10 07:55:36 UTC
This request was not resolved in time for the current release.
Red Hat invites you to ask your support representative to
propose this request, if still desired, for consideration in
the next release of Red Hat Enterprise Linux.

Comment 16 Jaroslav Kysela 2012-07-10 13:29:33 UTC
The Speaker volume and Master volume should be initialized/restored using 'alsactl restore 1' (1 is the card number to be initialized). This command in called from the udev rules.

About the attached alsa-info.sh:

The command tries to set the Speaker volume to sane -20dB value if Master controls are not present and to 0dB if Master is present. According dump:

Simple mixer control 'Speaker',0
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 44
  Front Left: Playback 0 [0%] [0.00dB] [on]
  Front Right: Playback 0 [0%] [0.00dB] [on]

The 0% means 0dB for the user space mixer layer. This information is obtained from the driver which computes these values according the USB specification. Unfortunately, many USB devices have trouble to follow these specs.

There is bunch of dB related changes in the recent ALSA USB driver:





So, there are two options - backport the recent ALSA Audio USB driver or backport the above changes to the RHEL 6 kernel.

To be in sync and to support more recent hw, I would propose to backport the whole USB driver.

Comment 17 RHEL Program Management 2012-07-10 13:39:02 UTC
This request was evaluated by Red Hat Product Management for
inclusion in a Red Hat Enterprise Linux release.  Product
Management has requested further review of this request by
Red Hat Engineering, for potential inclusion in a Red Hat
Enterprise Linux release for currently deployed products.
This request is not yet committed for inclusion in a release.

Comment 20 Jaroslav Kysela 2012-09-21 09:17:08 UTC
Backported commits:

    ALSA: snd-usb-us122l: add support for US-144
    ALSA: snd-usb-us122l: corrent error number for not probing US-144 on ehci-hcd
    sound: usb-audio: allow switching altsetting on Roland USB MIDI devices
    sound: usb: make the USB MIDI module more independent
    sound: usxxx: cleanup chip field
    sound: usb-audio: add Roland UA-1G support
    ALSA: sound: usbmidi: Use hweight16
    ALSA: usb - Fix mixer map for Hercules Gamesurround Muse Pocket LT
    ALSA: snd-usb-us122l: add product IDs of US-122MKII and US-144MKII
    sound: add Edirol UA-101 support
    sound: usb-audio: use vmalloc buffer helper functions
    ALSA: usb-audio - Added functionality for E-mu 0404USB/0202USB/TrackerPre
    ALSA: usb-audio: make buffer pointer based on bytes instead on frames
    ALSA: usb-audio: relax urb data align. restriction HVR-950Q and HVR-850 only
    ALSA: usb-audio: use usbquirk.h for detection of HVR-950Q/850
    ALSA: usbmixer - add possibility to remap dB values
    ALSA: usb-audio: reduce MIDI packet size to work around broken firmware
    ALSA: USB MIDI support for Access Music VirusTI
    ALSA: usbmixer - introduce /proc/asound/card#/usbmixer file
    ALSA: usbmixer - add usb_id value to usbmixer proc file
    ALSA: usbmixer - use MAX_ID_ELEMS where possible
    ALSA: usbaudio Mbox support, output only
    ALSA: usbaudio: parse USB descriptors with structs
    ALSA: usbaudio: introduce new types for audio class v2
    ALSA: usbaudio: implement basic set of class v2.0 parser
    ALSA: usbmixer: bail out early when parsing audio class v2 descriptors
    ALSA: usbaudio: consolidate header files
    ALSA: usb/audio.h: Fix field order
    ALSA: usbaudio - remove debug "SAMPLE BYTES" printk line
    ALSA: sound/usb/caiaq/midi.h: Checkpatch cleanup
    ALSA: usbaudio: Fix wrong bitrate for Creative Creative VF0470 Live Cam
    ALSA: ua101: add Edirol UA-1000 support
    ALSA: usb/caiaq: Add support for Traktor Kontrol X1
    ALSA: usb-audio: move ua101 driver
    ALSA: usb-audio: header file cleanups
    ALSA: usb-audio: refactor code
    ALSA: usb-mixer: factor out quirks
    ALSA: usb-audio: rename substream format field to altset_idx
    ALSA: usb-audio: use a format bitmask per alternate setting
    ALSA: usb-audio: support multiple formats with audio class v2 devices
    ALSA: usb-audio: add support for samplerate setting on v2 devices
    sound: linux/usb/audio.h: split header
    ALSA: usb: fix usb build error when PM is not enabled
    ALSA: usb-mixer: use defines from audio.h
    ALSA: usbmixer: rename usbmixer.[ch] -> mixer.[ch]
    ALSA: usb-mixer: parse descriptors with structs
    ALSA: usb-mixer: Add support for Audio Class v2.0
    ALSA: usbaudio: Add basic support for M-Audio Fast Track Ultra series
    ALSA: usb - use of kmalloc/kfree requires the include of slab.h
    ALSA: usb pcm: use of kmalloc requires the include of slab.h
    ALSA: usb - update gfp/slab.h includes
    ALSA: usb/mixer - use get_iface_desc() rather than direct structure
    ALSA: sound/usb: fix UAC1 regression
    include/linux/usb/audio.h: add __attribute__((packed))
    ALSA: sound/usb: add preliminary support for UAC2 interrupts
    USB: include/usb/*.h checkpatch cleanup
    ALSA: usb-audio: fix selector unit string index accessor
    sound: fixup for usb_buffer_alloc/free rename
    ALSA: usb-audio: add support for Akai MPD16
    ALSA: usb/caiaq: fix Traktor Kontrol X1 ABS_HAT2X axis
    ALSA: usb-audio: parse more format descriptors with structs
    ALSA: usb-audio: fix return values
    ALSA: usb-audio: parse UAC2 endpoint descriptors correctly
    ALSA: usb-audio: add support for UAC2 pitch control
    ALSA: usb-audio: fix feature unit parser for UAC2
    ALSA: snd-usb-caiaq: Restore 'Control vinyl' input mode on A4DJ
    ALSA: snd-usb-caiaq: Simplify single case to an 'if'
    ALSA: Revert "ALSA: snd-usb-caiaq: Set default input mode of A4DJ"
    ALSA: snd-usb-caiaq: Bump version number to 1.3.21
    ALSA: usb-audio: UAC2: clean up parsing of bmaControls
    include/linux/usb/audio-v2.h: add more UAC2 details
    ALSA: usb-audio: support partially write-protected UAC2 controls
    ALSA: usb-audio: parse clock topology of UAC2 devices
    ALSA: usb-audio: unify constants from specification
    ALSA: usb-audio: add UAC2 sepecific Feature Unit controls
    ALSA: usb-audio: clean up find_audio_control_unit()
    ALSA: usb-audio: export UAC2 clock selectors as mixer controls
    ALSA: usb-audio: add check for faulty clock in parse_audio_format_rates_v2()
    ALSA: usb-audio: fix control messages for USB_RECIP_INTERFACE
    ALSA: usb-audio: parse UAC2 sample rate ranges correctly
    ALSA: usb-audio: fix UAC2 control value queries
    ALSA: usb/endpoint, fix dangling pointer use
    ALSA: usb-audio - Add volume resolution quirk for some Logitech webcams
    ALSA: usb-audio: clean up includes in clock.c
    ALSA: usb-audio: unify UAC macros and struct names
    ALSA: usb-midi: whitespace fixes
    ALSA: usb-audio: move and add some comments
    ALSA: usb-audio: simplify control interface access
    ALSA: usb - Fix compile error with CONFIG_SND_DEBUG_VERBOSE=y
    ALSA: usb-audio: silence a superfluous warning
    fix comnment/printk typos concerning "empty"
    ALSA: usb - Correct audio problem for Hauppage HVR-850 and others rel. to urb data align
    ALSA: sound/usb/format: silence uninitialized variable warnings
    ALSA: usb: USB3 SuperSpeed sound support
    ALSA: usb-audio: Assume first control interface is for audio
    ALSA: usb-audio: fix detection of vendor-specific device protocol settings
    ALSA: usb - Release capture substream URBs properly
    ALSA: usb-audio: add Edirol PCR-1 PCM support
    ALSA: usb-audio: add Roland A-PRO support
    ALSA: usb-audio: add BOSS ME-25 support
    ALSA: usb-audio: fix Fast Track Ultra (8R) 44.1 sample rates
    ALSA: snd-usb-caiaq: drop version number
    ALSA: snd-usb-caiaq: Add support for Traktor Kontrol S4
    ALSA: usb-audio: add more Yamaha USB MIDI devices
    ALSA: usb-audio - Fix an unused-variable compile warning
    ALSA: usb/mixer: remove bogus cast
    ALSA: sound/usb/usx2y: simplify conditional
    ALSA: usb-audio: add Novation Launchpad support
    ALSA: usb - Creative USB X-Fi volume knob support
    ALSA: usb-audio: automatically detect feedback format
    ALSA: usb - driver neglects kmalloc return value check and may deref NULL
    ALSA: usb-audio - Support for Power/Status LED on Creative USB X-Fi S51
    sound: fixed typos
    ALSA: usb-audio: use enum control info helper
    ALSA: usb-audio: add Edirol SD-90 PCM support
    ALSA: snd-usb-us122l: Fix MIDI output
    ALSA: snd-usb-us122l: Fix missing NULL checks
    ALSA: usb/6fire - Driver for TerraTec DMX 6Fire USB
    ALSA: usb-audio: add Cakewalk UM-1G support
    ALSA: usbaudio - Enable the E-MU 0204 USB
    ALSA: snd-usb-caiaq: Add support for Traktor Audio 2
    ALSA: usb-audio: add support for Native Instruments MK2 devices
    ALSA: usb-audio: reconstruct some dispatcher functions to use switch-case
    ALSA: usb-audio: fix oops due to cleanup race when disconnecting
    ALSA: usb-audio - Add volume range check and warn if it too big
    ALSA: usb-audio - Add "cval->res = 384" quirk for Logitech Webcam C600
    ALSA: usbaudio: fix suspend/resume
    ALSA: usbaudio: implement USB autosuspend
    ALSA: usb - Remove trailing spaces from USB card name strings
    ALSA: usb-audio - Support for Boss JS-8 Jam Station
    ALSA: usb-audio: define another USB ID for a buggy USB MIDI cable
    ALSA: usb-audio: Add quirks for Audio Kontrol 6
    ALSA: usb-audio - Don't expose broken dB ranges
    ALSA: usb-audio - Terratec Aureon 7.1 USB ID as C-Media cm6206 quirks
    ALSA: usb-audio: make hwc_debug a noop in case HW_CONST_DEBUG is not set
    ALSA: usb-audio: include format.h in format.c
    ALSA: usb-audio: remove invalid extra mixers for Komplete Audio 6
    ALSA: usb-audio: Add quirk for KORG PANDORA PX5D MIDI interface
    ALSA: usb-audio: add quirks for Roland GR-55
    ALSA: usb-audio: assume valid clock
    ALSA: usb-audio: handle "Fast Track Ultra" with USB_DEVICE_VENDOR_SPEC()
    ALSA: usb-audio - Add support for USB X-Fi S51 Pro
    ALSA: usb-audio: move assignment of chip->ctrl_intf
    ALSA: usb-audio: rework add_control_to_empty()
    ALSA: usb-audio: export snd_usb_feature_unit_ctl
    ALSA: usb-audio: add new quirk type QUIRK_AUDIO_STANDARD_MIXER
    ALSA: usb-audio: more control quirks for M-Audio FastTrack devices
    ALSA: usb - turn off de-emphasis in s/pdif for cm6206
    ALSA: usb-audio: replace "void *" with more specific pointers
    ALSA: usb-audio - Add quirks for M-Audio Fast Track Pro and Quattro
    ALSA: usb-audio - Add quirk for Roland / BOSS BR-800
    ALSA: snd-usb: Accept UAC2 FORMAT_TYPE descriptors with bLength > 6
    ALSA: snd-usb: avoid dividing by zero on invalid input
    ALSA: snd-usb: operate on given mixer interface only
    ALSA: usb-audio - add quirk for Keith McMillen StringPort
    ALSA: snd-usb: Fix uninitialized variable usage
    ALSA: snd-usb-caiaq: Fix keymap for RigKontrol3
    ALSA: usb-audio - Add quirk for BOSS Micro BR-80
    ALSA: snd-usb-caiaq: Correct offset fields of outbound iso_frame_desc
    ALSA: snd_usb_caiaq: track submitted output urbs
    ALSA: usb-audio - Fix missing mixer dB information
    ALSA: usb-audio - Check the dB-range validity in the later read, too
    ALSA: usb-audio: add Starr Labs USB MIDI support
    ALSA: usb: refine delay information with USB frame counter
    ALSA: snd-usb: re-order the Makefile
    ALSA: snd-usb: re-order code
    ALSA: snd-usb: move code from urb.c to endpoint.c
    ALSA: usb-audio: Added support for Roland UM-ONE midi-usb interface
    ALSA: usb-audio - clear chip->probing on error exit
    ALSA: usb-audio: Check for possible chip NULL pointer before clearing probing flag
    ALSA: usb-audio: increase control transfer timeout
    ALSA: snd-usb-caiaq: Fix NULL dereference in input.c
    ALSA: snd-usb-caiaq: Add support for Maschine
    ALSA: usb-audio - Fix possible access over audio_feature_info[] array
    ALSA: usb-audio - Fix the missing volume quirks at delayed init
    ALSA: snd_usb_audio: add Logitech HD Webcam c510 to quirk-384
    ALSA: usb-audio: Use kmemdup rather than duplicating its implementation
    ALSA: usb-audio - Support for Roland GAIA SH-01 Synthesizer
    ALSA: snd-usb: added VOX ToneLab ST midi handling
    ALSA: usb-audio: add Yamaha MOX6/MOX8 support
    USB: convert sound/* to use module_usb_driver()
    ALSA: usb-audio: fix possible hang and overflow in parse_uac2_sample_rate_range()
    ALSA: snd-usb-us122l: Delete calls to preempt_disable
    ALSA: usb-audio - Avoid flood of frame-active debug messages
    ALSA: usb-audio: add Edirol UM-3G support
    ALSA: usb-audio: avoid integer overflow in create_fixed_stream_quirk()
    ALSA: snd-usb-caiaq: Fix the return of XRUN
    ALSA: usx2y: Fix typo in usbusx2yaudio.c and usx2yhwdeppcm.c
    ALSA: usb-audio - Fix build error by consitification of rate list
    ALSA: snd-usb: add snd_usb_audio-wide mutex
    ALSA: snd-usb: implement new endpoint streaming model
    ALSA: snd-usb: switch over to new endpoint streaming logic
    ALSA: snd-usb: remove old streaming logic
    ALSA: snd-usb: add support for implicit feedback
    ALSA: snd-usb: add some documentation
    ALSA: usb: Remove unused variable
    ALSA: usb: Fix fill_max flag set
    ALSA: usb: Remove obsoleted fields from struct snd_usb_substream
    ALSA: snd-usb-audio: Skip un-parseable mixer units instead of erroring
    ALSA: snd-usb-audio: Replace mixer for Electrix Ebox-44
    ALSA: snd-usb: remove refactorization left-overs
    ALSA: usb-audio: Unify M-Audio Fast Track Ultra and Ebox-44 mixer quirks.
    ALSA: usb-audio: Rename and export mixer_vol_tlv
    ALSA: usb-audio: Add TLV to M-Audio Fast Track Ultra controls
    ALSA: usb-audio: Rename Fast Track Ultra mixer quirk functions
    ALSA: usb-audio: M-Audio Fast Track Ultra: Add effect controls
    ALSA: usb-audio: Add missing error checks in snd_ebox44_create_mixer()
    ALSA: usb-audio: sound/usb/endpoint.c: suppress warning
    ALSA: snd-usb: fix some typos in endpoint.c documentation
    ALSA: usb-audio: Fix comment
    ALSA: usb-audio - Call get_min_max_*() after determining the name string
    ALSA: snd-usb: fix stream info output in /proc
    ALSA: usb-audio: fix rate_list memory leak
    ALSA: usb-audio: Fix substream assignments
    ALSA: snd-usb: fix sync pipe check
    ALSA: snd-usb: make snd_usb_substream_capture_trigger static
    ALSA: usb-audio: Use a table of mixer controls
    ALSA: usb-audio: Convert table to preferred C99 format
    ALSA: snd_usb_audio: ignore ctrl errors on QuickCam E3500
    ALSA: snd_usb_audio: ignore ctrl errors on QuickCam Pro for Notebooks
    ALSA: usb-audio: add BOSS GT-100 support
    ALSA: usb-audio: Fix the first PCM interface assignment
    ALSA: snd-usb: move calls to usb_set_interface
    ALSA: snd-usb-caiaq: initialize card pointer
    ALSA: snd-usb: fix clock source validity index
    ALSA: usb-audio: Fix scheduling-while-atomic bug in PCM capture stream
    ALSA: usb-audio: Remove obsoleted fields in struct snd_usb_substream
    ALSA: snd-usb: Fix URB cancellation at stream start
    ALSA: snd-usb: use list_for_each_safe for endpoint resources
    ALSA: snd-usb: restore delay information
    ALSA: snd-usb: fix calls to next_packet_size
    ALSA: snd-usb: fix cross-interface streaming devices
    ALSA: USB: Support for (original) Xbox Communicator
    ALSA: snd-usb: Add quirks for Playback Designs devices
    ALSA: usb-audio: Fix bogus error messages for delay accounting
    ALSA: usb-audio: set period_bytes in substream.
    ALSA: usb-audio: Don't require hw_params in endpoint.
    ALSA: usb-audio: Move configuration to prepare.
    ALSA: usb-audio: Avoid unnecessary EP setups in prepare
    ALSA: snd-usb-6fire: remove driver version information
    ALSA: 6fire - Add support of digital-thru mixer
    ALSA: snd-usb-6fire: add tlv to controls
    ALSA: snd-usb-6fire: add individual volume control for analog channels
    ALSA: snd-usb-6fire: add mute control for analog outputs
    ALSA: snd-usb-6fire: add analog input volume control
    ALSA: 6fire - Improve firmware loader
    ALSA: 6fire: use the kernel's built-in bit reverse table
    ALSA: 6fire: Don't leak firmware in error path
    ALSA: 6fire: Fix double-free bug in usb6fire_fw_ezusb_upload()
    ALSA: 6fire: don't use custom hex_to_bin()
    ALSA: 6fire: use NULL instead of 0 for pointer assignment
    ALSA: print small buffers via %*ph[C]
    ALSA: usb - disable broken hw volume for Tenx TP6911
    ALSA: USB: 6fire: signedness bug in usb6fire_pcm_prepare()
    ALSA: 6fire - Fix pcm rate assignment
    ALSA: 6fire - Add support for S32_LE format
    ALSA: 6fire - Fix signedness bug
    ALSA: ua101: remove experimental status
    ALSA: 6fire - Update kernel configuration
    ALSA: snd-usb-6fire: Select missing SND_VMASTER option in Kconfig
    ALSA: ua101: fix crash when unplugging
    ALSA: usb - use old usb_buffer_alloc()/usb_buffer_free() fcns
    ALSA: core, oxygen, virtuoso: add an enum control info helper
    sound: pcm: add vmalloc buffer helper functions
    sound: ua101: use vmalloc buffer helper functions
    ALSA: pcm - Call pgprot_noncached() for vmalloc'ed buffers
    USB: Add endpoint usage definitions to ch9.h
    RHEL: Enable ALSA "TerraTec DMX 6Fire USB" and "Edirol UA-101/UA-1000" drivers

Comment 23 Jarod Wilson 2012-10-12 18:03:10 UTC
Patch(es) available on kernel-2.6.32-330.el6

Comment 31 errata-xmlrpc 2013-02-21 05:50:31 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.


Note You need to log in before you can comment on or make changes to this bug.