Unlikely big volume range volume range on EMEET webcam
Hi,
Speaker-webcam eMeet C980 Pro does not play, outputs only silent noise. The digital volume seems to be down.
dmesg:
[22406.805176] input: HD Webcam eMeet C980 Pro: HD We as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-7/1-7.1/1-7.1:1.0/input/input27 [22406.829048] usb 1-7.1: current rate 16000 is different from the runtime rate 48000 [22406.933044] usb 1-7.1: Warning! Unlikely big volume range (=10240), cval->res is probably wrong. [22406.933048] usb 1-7.1: [5] FU [PCM Playback Volume] ch = 1, val = -7168/3072/1 [22407.001043] usb 1-7.1: Warning! Unlikely big volume range (=3072), cval->res is probably wrong. [22407.001047] usb 1-7.1: [6] FU [Headset Capture Volume] ch = 1, val = -1536/1536/1
amixer contents: ..... numid=3,iface=MIXER,name='PCM Playback Switch' ; type=BOOLEAN,access=rw------,values=1 : values=on numid=4,iface=MIXER,name='PCM Playback Volume' ; type=INTEGER,access=rw---R--,values=1,min=0,max=10240,step=0 : values=10240 | dBminmax-min=-28.00dB,max=12.00dB numid=5,iface=MIXER,name='Headset Capture Switch' ; type=BOOLEAN,access=rw------,values=1 : values=on numid=6,iface=MIXER,name='Headset Capture Volume' ; type=INTEGER,access=rw---R--,values=1,min=0,max=3072,step=0 : values=3072 | dBminmax-min=-6.00dB,max=6.00dB .....
I tried playing with csetting numid=4 to various values, no effect.
Please what should be the correct min,max,res in volume_control_quirks for the 'PCM Playback Volume' control for such device?
Capture seems to be OK (maybe the range should be adjusted too for the complete range of control)
Also, the device does not seem to get the current rate correctly, but IIUC that should not have any adverse effect (not marked with QUIRK_FLAG_GET_SAMPLE_RATE yet):
[22407.178045] usb 1-7.1: current rate 16000 is different from the runtime rate 48000 [22407.199046] usb 1-7.1: current rate 16000 is different from the runtime rate 48000 [22407.220045] usb 1-7.1: current rate 16000 is different from the runtime rate 48000 [22407.282044] usb 1-7.1: current rate 16000 is different from the runtime rate 48000 [22811.235851] usb 1-7.1: current rate 16000 is different from the runtime rate 48000 [22829.335494] usb 1-7.1: current rate 16000 is different from the runtime rate 48000
cat /proc/asound/card2/stream0 SHENZHEN EMEET TECHNOLOGY CO., LTD. HD Webcam eMeet C980 Pro at usb-0000:02:00. : USB Audio
Playback: Status: Stop Interface 3 Altset 1 Format: S16_LE Channels: 1 Endpoint: 0x01 (1 OUT) (ADAPTIVE) Rates: 48000 Data packet interval: 1000 us Bits: 16 Channel map: FL
Capture: Status: Stop Interface 4 Altset 1 Format: S16_LE Channels: 1 Endpoint: 0x83 (3 IN) (SYNC) Rates: 16000 Data packet interval: 1000 us Bits: 16
alsa-info dump: http://alsa-project.org/db/?f=7af42635d88e858818932578aa8445810916a947
lsusb -v -d 328f:1912 attached.
Thank you very much for any hints.
Best regards,
Pavel.
Dne 10. 03. 23 v 14:43 Pavel Hofman napsal(a):
Hi,
Speaker-webcam eMeet C980 Pro does not play, outputs only silent noise. The digital volume seems to be down.
dmesg:
[22406.805176] input: HD Webcam eMeet C980 Pro: HD We as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-7/1-7.1/1-7.1:1.0/input/input27 [22406.829048] usb 1-7.1: current rate 16000 is different from the runtime rate 48000 [22406.933044] usb 1-7.1: Warning! Unlikely big volume range (=10240), cval->res is probably wrong. [22406.933048] usb 1-7.1: [5] FU [PCM Playback Volume] ch = 1, val = -7168/3072/1 [22407.001043] usb 1-7.1: Warning! Unlikely big volume range (=3072), cval->res is probably wrong. [22407.001047] usb 1-7.1: [6] FU [Headset Capture Volume] ch = 1, val = -1536/1536/1
Maybe it's a problem with endianness, like e.g. reported in https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg2181737.html
All the large numbers are divisible by 256.
But honestly I do not know what the fix should be - converting the min/max (min >>=8) or the resolution (res >>=8)?
What difference do the two methods make? What effect does rewriting the cval min/max/res values actually have, with regards to the reading from the device (get) and writing to the device (put) methods?
Thanks a lot for any hint.
Best regards,
Pavel.
amixer contents: ..... numid=3,iface=MIXER,name='PCM Playback Switch' ; type=BOOLEAN,access=rw------,values=1 : values=on numid=4,iface=MIXER,name='PCM Playback Volume' ; type=INTEGER,access=rw---R--,values=1,min=0,max=10240,step=0 : values=10240 | dBminmax-min=-28.00dB,max=12.00dB numid=5,iface=MIXER,name='Headset Capture Switch' ; type=BOOLEAN,access=rw------,values=1 : values=on numid=6,iface=MIXER,name='Headset Capture Volume' ; type=INTEGER,access=rw---R--,values=1,min=0,max=3072,step=0 : values=3072 | dBminmax-min=-6.00dB,max=6.00dB .....
On Fri, 17 Mar 2023 14:40:21 +0100, Pavel Hofman wrote:
Dne 10. 03. 23 v 14:43 Pavel Hofman napsal(a):
Hi,
Speaker-webcam eMeet C980 Pro does not play, outputs only silent noise. The digital volume seems to be down.
dmesg:
[22406.805176] input: HD Webcam eMeet C980 Pro: HD We as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-7/1-7.1/1-7.1:1.0/input/input27 [22406.829048] usb 1-7.1: current rate 16000 is different from the runtime rate 48000 [22406.933044] usb 1-7.1: Warning! Unlikely big volume range (=10240), cval->res is probably wrong. [22406.933048] usb 1-7.1: [5] FU [PCM Playback Volume] ch = 1, val = -7168/3072/1 [22407.001043] usb 1-7.1: Warning! Unlikely big volume range (=3072), cval->res is probably wrong. [22407.001047] usb 1-7.1: [6] FU [Headset Capture Volume] ch = 1, val = -1536/1536/1
Maybe it's a problem with endianness, like e.g. reported in https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg2181737.html
All the large numbers are divisible by 256.
But honestly I do not know what the fix should be - converting the min/max (min >>=8) or the resolution (res >>=8)?
What difference do the two methods make?
The difference is what are real values to be passed to the hardware. The driver scales down and shifts to 0-minimum for ALSA controls in anyway, so the appearance on user-space would be same, but the values to be actually applied to the hardware matter.
What effect does rewriting the cval min/max/res values actually have, with regards to the reading from the device (get) and writing to the device (put) methods?
You should check the actual raw values and see the influence on the hardware at first in trial-and-error manners. This also means to figure out the corresponding dB level, too. The rest depends whether it's a linear mapping with a parameter correction or better to replace with the fixed values, etc.
Takashi
participants (2)
-
Pavel Hofman
-
Takashi Iwai