Lack of hardware volume no longer supported with HifimeDIY Tiny
Submitted by Jerome
Assigned to pul..@..op.org
Description
Hi,
I'm using a HifimeDIY Tiny USB DAC (http://hifimediy.com/DACs/ready-made-dacs/tiny-dac), which doesn't support hardware volume (fixed analog gain). This used to work on Debian Jessie, but no longer with Stretch.
This USB DAC is peculiar: it has a first DAC, the TI Burr-Brown, which is only used for its USB interface. Its analog interface is not connected nor used, but the Burr-Brown SPDIF output is connected to the input of a Sabre DAC. It's the Sabre that is actually used to generate the analog output. And the set-up has a fixed analog gain, so the volume control must be done in software.
In Debian Jessie, I could see the two outputs of the Burr-Brown under pulseaudio, analog and SPDIF (IEC958). Analog was the default and of course gave no output, but I just had to select the IEC958 output to get a working system, with proper volume control.
Now on Stretch I don't see the IEC958 output at all. The output is configured as analog stereo by default, and I do have audio output! So the SPDIF output of the burr-Brown must be used then? However pulseaudio/alsa believe there is hardware volume control, which is not the case: if the volume is at any value but zero, then the output level is full blast. It's really a step function: mute or max output.
I guess this could be solved in one of two ways?:
- show back the IEC958 option
- disable hardware volume control for this card I've tried to look for ways to do this without success, but then Linux sound support is new to me so I may have missed something. Thanks for any help/pointer.
I add some info on the dongle as seen by the system:
== pacmd list-cards (just the dongle) ===========================
index: 2
name: <alsa_card.usb-Burr-Brown_from_TI_USB_Audio_DAC-00>
driver: <module-alsa-card.c>
owner module: 29
properties:
alsa.card = "2"
alsa.card_name = "USB Audio DAC"
alsa.long_card_name = "Burr-Brown from TI USB Audio DAC at usb-0000:00:14.0-1, full speed"
alsa.driver_name = "snd_usb_audio"
device.bus_path = "pci-0000:00:14.0-usb-0:1:1.0"
sysfs.path = "/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/sound/card2"
udev.id = "usb-Burr-Brown_from_TI_USB_Audio_DAC-00"
device.bus = "usb"
device.vendor.id = "08bb"
device.vendor.name = "Texas Instruments"
device.product.id = "2706"
device.product.name = "PCM2706 Audio Codec"
device.serial = "Burr-Brown_from_TI_USB_Audio_DAC"
device.string = "2"
device.description = "PCM2706 Audio Codec"
module-udev-detect.discovered = "1"
device.icon_name = "audio-card-usb"
profiles:
output:analog-mono: Analog Mono Output (priority 200, available: unknown)
output:analog-stereo: Analog Stereo Output (priority 6000, available: unknown)
off: Off (priority 0, available: unknown)
active profile: <output:analog-stereo>
sinks:
alsa_output.usb-Burr-Brown_from_TI_USB_Audio_DAC-00.analog-stereo/#2: PCM2706 Audio Codec Analog Stereo
sources:
alsa_output.usb-Burr-Brown_from_TI_USB_Audio_DAC-00.analog-stereo.monitor/#3: Monitor of PCM2706 Audio Codec Analog Stereo
ports:
analog-output: Analog Output (priority 9900, latency offset 0 usec, available: unknown)
properties:
== pacmd list-sources (only USB DAC) =====================
index: 3
name: <alsa_output.usb-Burr-Brown_from_TI_USB_Audio_DAC-00.analog-stereo.monitor>
driver: <module-alsa-card.c>
flags: DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
state: SUSPENDED
suspend cause: IDLE
priority: 1040
volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
base volume: 65536 / 100% / 0.00 dB
volume steps: 65537
muted: no
current latency: 0.00 ms
max rewind: 0 KiB
sample spec: s16le 2ch 44100Hz
channel map: front-left,front-right
Stereo
used by: 0
linked by: 0
configured latency: 0.00 ms; range is 0.50 .. 2000.00 ms
monitor_of: 2
card: 2 <alsa_card.usb-Burr-Brown_from_TI_USB_Audio_DAC-00>
module: 29
properties:
device.description = "Monitor of PCM2706 Audio Codec Analog Stereo"
device.class = "monitor"
alsa.card = "2"
alsa.card_name = "USB Audio DAC"
alsa.long_card_name = "Burr-Brown from TI USB Audio DAC at usb-0000:00:14.0-1, full speed"
alsa.driver_name = "snd_usb_audio"
device.bus_path = "pci-0000:00:14.0-usb-0:1:1.0"
sysfs.path = "/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/sound/card2"
udev.id = "usb-Burr-Brown_from_TI_USB_Audio_DAC-00"
device.bus = "usb"
device.vendor.id = "08bb"
device.vendor.name = "Texas Instruments"
device.product.id = "2706"
device.product.name = "PCM2706 Audio Codec"
device.serial = "Burr-Brown_from_TI_USB_Audio_DAC"
device.string = "2"
module-udev-detect.discovered = "1"
device.icon_name = "audio-card-usb"
== lsusb -d 08bb:2706 -v ==========================
Bus 001 Device 005: ID 08bb:2706 Texas Instruments PCM2706 Audio Codec
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x08bb Texas Instruments
idProduct 0x2706 PCM2706 Audio Codec
bcdDevice 1.00
iManufacturer 1 Burr-Brown from TI
iProduct 2 USB Audio DAC
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 190
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 0
iInterface 0
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 1.00
wTotalLength 40
bInCollection 1
baInterfaceNr( 0) 1
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 1
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bNrChannels 2
wChannelConfig 0x0003
Left Front (L)
Right Front (R)
iChannelNames 0
iTerminal 0
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 2
wTerminalType 0x0301 Speaker
bAssocTerminal 0
bSourceID 3
iTerminal 0
AudioControl Interface Descriptor:
bLength 10
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 3
bSourceID 1
bControlSize 1
bmaControls( 0) 0x01
Mute Control
bmaControls( 1) 0x02
Volume Control
bmaControls( 2) 0x02
Volume Control
iFeature 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 0
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 0
iInterface 0
AudioStreaming Interface Descriptor:
bLength 7
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 1
bDelay 0 frames
wFormatTag 1 PCM
AudioStreaming Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bNrChannels 2
bSubframeSize 2
bBitResolution 16
bSamFreqType 3 Discrete
tSamFreq[ 0] 32000
tSamFreq[ 1] 44100
tSamFreq[ 2] 48000
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 9
Transfer Type Isochronous
Synch Type Adaptive
Usage Type Data
wMaxPacketSize 0x00c0 1x 192 bytes
bInterval 1
bRefresh 0
bSynchAddress 0
AudioControl Endpoint Descriptor:
bLength 7
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 512 Decoded PCM samples
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 2
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 0
iInterface 0
AudioStreaming Interface Descriptor:
bLength 7
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 1
bDelay 0 frames
wFormatTag 1 PCM
AudioStreaming Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bNrChannels 1
bSubframeSize 2
bBitResolution 16
bSamFreqType 3 Discrete
tSamFreq[ 0] 32000
tSamFreq[ 1] 44100
tSamFreq[ 2] 48000
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 9
Transfer Type Isochronous
Synch Type Adaptive
Usage Type Data
wMaxPacketSize 0x0060 1x 96 bytes
bInterval 1
bRefresh 0
bSynchAddress 0
AudioControl Endpoint Descriptor:
bLength 7
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 512 Decoded PCM samples
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.00
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 36
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x85 EP 5 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0001 1x 1 bytes
bInterval 10
Device Status: 0x0000
(Bus Powered)