LINUX.ORG.RU

C-Media 8738

 ,


0

1

В системе есть две звуковых карты: встроенная Intel и PCI C-Media 8738. При этом, звук первой регулируется нормально, на 8738 наблюдается такое: на 3% звука нет, на 6% очень громко. Что делать?

Debian 10.

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: CMI8738 [C-Media CMI8738], device 0: CMI8738 [C-Media PCI DAC/ADC]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: CMI8738 [C-Media CMI8738], device 1: CMI8738 [C-Media PCI 2nd DAC]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: CMI8738 [C-Media CMI8738], device 2: CMI8738 [C-Media PCI IEC958]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 0: ALC887-VD Analog [ALC887-VD Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 7: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 8: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 9: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #

Вопросы:

  1. Такое поведение всегда наблюдалось и началось в какой-то конкретный момент?

  2. Чем и через что воспроизводишь звук?

  3. Как и чем регулируешь громкость?

Deleted
()
Ответ на: комментарий от Deleted

Такое поведение всегда наблюдалось и началось в какой-то конкретный момент?

Только сегодня поставил.

Как и чем регулируешь громкость?

Alsamixer.

scanner
() автор топика
Ответ на: комментарий от scanner

Alsamixer.

А дальше? Ну, то есть, там же есть несколько «вкладок», разные ползунки и переключатели.

Чем и через что воспроизводишь звук? - на этот вопрос ты тоже не ответил.

Deleted
()
Ответ на: комментарий от Deleted

А дальше? Ну, то есть, там же есть несколько «вкладок», разные ползунки и переключатели.

Регулирую Master. Регулировка PCM на громкость не влияет.

Чем и через что воспроизводишь звук? - на этот вопрос ты тоже не ответил.

Голая ALSA. Приложения - Mpv, Chromium. Слушаю через наушники.

scanner
() автор топика

Покажи вывод вот такой команды:

aplay -v -f cd -t raw -D default:CMI8738 /dev/null

И еще конфиги mpv или как ты его заставляешь играть через CMI8738. Есть подозрение, что ты намудрил с конфигами (их в интернете много водится неправильных) и сломал слайдер «PCM».

AEP ★★★★★
()
Ответ на: комментарий от AEP
Playing raw data '/dev/null' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Plug PCM: Rate conversion PCM (48000, sformat=S16_LE)
Converter: libspeex (builtin)
Protocol version: 10002
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 16
  buffer_size  : 15052
  period_size  : 940
  period_time  : 21333
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 940
  period_event : 0
  start_threshold  : 15052
  stop_threshold   : 15052
  silence_threshold: 0
  silence_size : 0
  boundary     : 4236761349448794112
Slave: Direct Stream Mixing PCM
Its setup is:
  stream       : PLAYBACK
  access       : MMAP_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 16
  buffer_size  : 16384
  period_size  : 1024
  period_time  : 21333
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 1024
  period_event : 0
  start_threshold  : 16384
  stop_threshold   : 16384
  silence_threshold: 0
  silence_size : 0
  boundary     : 4611686018427387904
Hardware PCM card 2 'C-Media CMI8738' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : MMAP_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 16
  buffer_size  : 16384
  period_size  : 1024
  period_time  : 21333
  tstamp_mode  : ENABLE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 1024
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 4611686018427387904
  silence_threshold: 0
  silence_size : 4611686018427387904
  boundary     : 4611686018427387904
  appl_ptr     : 0
  hw_ptr       : 0

Mpv:

audio-device=alsa/default

scanner
() автор топика
Ответ на: комментарий от AEP

aplay -v -f cd -t raw -D default:CMI8738 /dev/null

Я бы ещё попробовал воспроизвести шум на «голом» устройстве, без юзерспейсных плагинов ALSA и, соответственно, без влияния потенциально кривых конфигов. И попробовать покрутить громкость во время воспроизведения.

Не помню как именно это делается, но вроде в качестве устройства надо указать hw:CMI8738. И дополнительно указать поддерживаемый картой аппаратно формат сэмплов и частоту.

Если так тоже будет проблема воспроизводиться, то это почти 100% баг в драйвере в ядре или аппаратная проблема звуковухи.

Deleted
()
Ответ на: комментарий от scanner

Вижу, что конфиг ALSA идентичен конфигу по умолчанию для 2-канального или 6-канального варианта CMI8738 (бывает еще 8-канальный). Так что да, нерабочий регулятор PCM - это баг в ядре, возможно связанный с неправильным определением варианта чипа. Судя по git log’у, изменений в процедуре определения чипа между версиями ядра 4.19 и 5.3 не было, поэтому пробовать новейшее ядро бесполезно. Надо сразу жаловаться в рассылку alsa-devel.

Так что вот тебе универсальный конфиг для стереофонического звука с программным регулятором громкости PCM и соответствующей потерей качества - т.е. ровно то же, что ALSA дает по умолчанию обладателям 8-канального варианта карты. Сохранить как /etc/asound.conf.

pcm.!default {
        @args [ CARD ]
        @args.CARD {
                type string
                default 0
        }
        type asym
        playback.pcm {
                type plug
                slave.pcm {
                        type softvol
                        slave.pcm {
                                @func concat
                                strings [ "dmix:" $CARD ]
                        }
                        control {
                                name "PCM Playback Volume"
                                card $CARD
                        }
                }
        }
        capture.pcm {
                type plug
                slave.pcm {
                        @func concat
                        strings [ "dsnoop:" $CARD ]
                }
        }
}
AEP ★★★★★
()

Карта C-Media 8738LX. Что интересно, в mpv я могу уменьшить громкость, а в alsamixer/amixer - нет.

scanner
() автор топика
Ответ на: комментарий от scanner

видимо у mpv используется свой микшер

вообще, это похоже такая фича cmedia чипов. впрочем, у других (usb от creative например) тоже такое наблюдается. хз в чем дело, скорее всего калибровка в линухе драйверах используется неправильная. частично можно вылечить настройкой software микшера в alsa. качество при этом прострадает немного и вырастет нагрузка на cpu.

Rost ★★★★★
()
Ответ на: комментарий от scanner

Оно и не должно помогать против слишком чувствительного мастера. А вот слайдер PCM должен стать работающим. Если это не так, ищи, кто и почему выводит звук напрямую через hw:X или front:X, т.е. в обход default:X.

AEP ★★★★★
()
4 июня 2020 г.

Такой конфиг работает:

pcm.!default {
        type plug
        slave.pcm "dmixer"
}

pcm.dmixer  {
        type dmix
        ipc_key 1024
        slave {
                pcm "hw:0,0"
                period_time 0
                period_size 1024
                buffer_size 4096
                rate 44100
        }
        bindings {
                0 0
                1 1
        }
}

ctl.dmixer {
        type hw
        card 0
}
scanner
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.