So, I have found CM6206 datasheet via baidu.cn. I think most things must be 
similar to mine CM6206-LX chip.
It is unclear how to download pdf file, I am not very familiar with china 
language.
There is description of internal registers. There is no much interesting 
settings, already existed initial values in snd_usb_audio module must be ok. 
If somebody needs reg info feel free to contact me.

Next there is some information about volume control. I think it can be used for 
quirks that can fix following errors:
[31010.646123] usb 1-1: Warning! Unlikely big volume range (=8065), cval->res 
is probably wrong.
[31010.646126] usb 1-1: [9] FU [Mic Playback Volume] ch = 2, val = -6144/1921/1
[31010.646485] usb 1-1: Warning! Unlikely big volume range (=8065), cval->res 
is probably wrong.
[31010.646486] usb 1-1: [11] FU [Line Playback Volume] ch = 2, val = 
-6144/1921/1
[31010.647884] usb 1-1: Warning! Unlikely big volume range (=6928), cval->res 
is probably wrong.
[31010.647887] usb 1-1: [8] FU [Mic Capture Volume] ch = 2, val = -4096/2832/1
[31010.648291] usb 1-1: Warning! Unlikely big volume range (=6928), cval->res 
is probably wrong.
[31010.648295] usb 1-1: [15] FU [Line Capture Volume] ch = 2, val = -4096/2832/1
[31010.648662] usb 1-1: Warning! Unlikely big volume range (=6928), cval->res 
is probably wrong.
[31010.648664] usb 1-1: [2] FU [PCM Capture Volume] ch = 2, val = -4096/2832/1

I have uploaded images of related info from datasheet here 
https://yadi.sk/d/1kdCFs7Gpv8L8

I have tested arecord with mic and line in via simple test app. 
It seems only one avalible sample rate is 48000 Hz.

        printf("Sample rate = %d\n", SampleRate);
        snd_pcm_hw_params_set_rate_near(Handle, params,
                &SampleRate, &dir);
        printf("Sample rate = %d\n", SampleRate);

After calling these function SampleRate becomes 48000, even if before it was 
44100 or 96000.
But, according to 

cat /proc/asound/card2/stream0 
USB Sound Device at usb-0000:00:14.0-1, full speed : USB Audio

Playback:
  Status: Stop
  Interface 1
    Altset 1
    Format: S16_LE
    Channels: 8
    Endpoint: 6 OUT (ADAPTIVE)
    Rates: 44100, 48000
  Interface 1
    Altset 2
    Format: S16_LE
    Channels: 2
    Endpoint: 6 OUT (ADAPTIVE)
    Rates: 44100, 48000
  Interface 1
    Altset 3
    Format: S16_LE
    Channels: 4
    Endpoint: 6 OUT (ADAPTIVE)
    Rates: 44100, 48000
  Interface 1
    Altset 4
    Format: S16_LE
    Channels: 6
    Endpoint: 6 OUT (ADAPTIVE)
    Rates: 44100, 48000
  Interface 1
    Altset 5
    Format: S16_LE
    Channels: 2
    Endpoint: 6 OUT (ADAPTIVE)
    Rates: 96000

Capture:
  Status: Stop
  Interface 2
    Altset 1
    Format: S16_LE
    Channels: 2
    Endpoint: 5 IN (ASYNC)
    Rates: 44100, 48000

It is able to capture 44100.
Maybe it is related to following warning:
[31010.643908] usb 1-1: current rate 30464 is different from the runtime rate 
96000

I have tried to capture via arecord:
 arecord -D hw:2,0 -f cd -c 2 > ./test2.wav

and VLC said it is 44100, but I don`t have microphone at the moment to test is 
there proper sound recorded or not. I will try it later.

So, my questions:

1) How to make quirks for volume? 
I have try with mixer.c in sound/usb/ dir of kernel tree (4.2.0) and tried to 
add experimental code in volume_control_quirks function.
But it seems function is not called for my device for some reason. It is more 
complicated that I think first.
Maybe this mailing list is not proper place to ask it, than what is proper 
place to ask?

2) What reason can be, that I can`t record at 44,1kHz sample rate?

04.03.2016, 11:07, "Nikita Orlov" <nikitos1...@yandex.ru>:
> I don`t know much about it. But I can think following way as both C6206 and 
> CM6206LX have same ID, original Windows driver can read some internal 
> register and get such info.
> I will try to find datasheets for both chips and see it.
> As I know from mailing list archives reg init in quirk was done by sniffing 
> usb traffic under windows.
> But it was in 2009 year...
>
> 04.03.2016, 11:00, "Clemens Ladisch" <cladi...@googlemail.com>:
>>  Nikita Orlov wrote:
>>>   By the way CM6206-LX if different to CM6206.
>>>   CM6206 has 7.1 channels output and CM6206-LX has 5.1 channels output.
>>>
>>>   Maybe these init:
>>>     static int snd_usb_cm6206_boot_quirk(struct usb_device *dev)
>>>     ...
>>>   is not sutible to -LX version, because it somehow try turn off channels
>>>   that are not exist.
>>
>>  Well, how would it possible for the driver to differentiate the CM6206
>>  and the CM6206-LX?
>>
>>  Regards,
>>  Clemens
>
> --
> Nikita Orlov
> Skype: nik_stet
> QQ: 2717846083
>
> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> _______________________________________________
> Alsa-user mailing list
> Alsa-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/alsa-user

-- 
Nikita Orlov
Skype: nik_stet
QQ: 2717846083

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Alsa-user mailing list
Alsa-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to