Created attachment 16764 [details] dmesg 6.11rc5 + DSDT Доброго дня. Начало было тут https://bugzilla.altlinux.org/51357 - остался нерабочий Cirrus Amplifier. Коротко. Система Alt Regular. Сизиф. Ядра un-def и последнее 6.11.0-rc5 пробовал. В Fedora работает из коробки, но с не правильной калибровкой. В Альт, как не пробовал у меня ни в какую не видит этот усилитель, как только его я не подкладывал в систему. Просьба помочь, очень не хочется пересобирать ядро в слепую. BIOS был как в статье 304 и 305, и 307, а вчера обновил до 308, так что тут точно новый с поправленным ACPI. Длинно. Изначально пробовал Альт, ничего не работало, пошёл искать дистр где работает - оказалось на Fedora работает с коробки, но калибровочные файлы и прошивка грузились не верные, а точнее стандартные из-за чего тихий моно звук был. Возможно это как-то поможет. Дальше пошёл заводить звук в Альте. Поправили sof, dummy output пропал. Но вот CS3551 никак вообще не подаёт признаков жизни не смотря на всё. Итак что есть это всё? 1. Первое и быстрое решение https://github.com/smallcms/asus_zenbook_ux3405ma применить патч DSDT, который уже подготовлен и должен был помочь системе понять, что усилитель есть и какой. По итогу у меня есть аналогичные ошибки дубля ACPI https://github.com/smallcms/asus_zenbook_ux3405ma/issues/7#issuecomment-2211962440 как у товарища в первом код-блоке, который ACPI BIOS Error (bug): Failure creating named object [\_SB.PC00.SPI1.SPK1], AE_ALREADY_EXISTS и далее. Основное отличие, что у него так же далее в dmesg есть попытка старта усилителя cs35l41-hda spi1-CSC3551:00-cs35l41-hda.0: Falling back to default firmware. А в моём случае полная тишина. Мой: [root@asus ~]# dmesg | grep -Ei 'sof|snd|hda|cs35l41' [ 0.061423] software IO TLB: area num 16. [ 0.323116] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.354008] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 0.354009] software IO TLB: mapped [mem 0x0000000046e69000-0x000000004ae69000] (64MB) [ 4.865757] snd_hda_intel 0000:00:1f.3: Digital mics found on Skylake+ platform, using SOF driver [ 5.003959] sof-audio-pci-intel-mtl 0000:00:1f.3: enabling device (0000 -> 0002) [ 5.004061] sof-audio-pci-intel-mtl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if 0x040100 [ 5.004132] sof-audio-pci-intel-mtl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915]) [ 5.010881] sof-audio-pci-intel-mtl 0000:00:1f.3: use msi interrupt mode [ 5.032525] sof-audio-pci-intel-mtl 0000:00:1f.3: hda codecs found, mask 5 [ 5.032529] sof-audio-pci-intel-mtl 0000:00:1f.3: using HDA machine driver skl_hda_dsp_generic now [ 5.032532] sof-audio-pci-intel-mtl 0000:00:1f.3: DMICs detected in NHLT tables: 2 [ 5.035468] sof-audio-pci-intel-mtl 0000:00:1f.3: Firmware paths/files for ipc type 1: [ 5.035471] sof-audio-pci-intel-mtl 0000:00:1f.3: Firmware file: intel/sof-ipc4/mtl/sof-mtl.ri [ 5.035472] sof-audio-pci-intel-mtl 0000:00:1f.3: Firmware lib path: intel/sof-ipc4-lib/mtl [ 5.035472] sof-audio-pci-intel-mtl 0000:00:1f.3: Topology file: intel/sof-ace-tplg/sof-hda-generic-2ch.tplg [ 5.036178] sof-audio-pci-intel-mtl 0000:00:1f.3: Loaded firmware library: ADSPFW, version: 2.10.0.1 [ 5.196145] sof-audio-pci-intel-mtl 0000:00:1f.3: Booted firmware version: 2.10.0.1 [ 5.201120] sof-audio-pci-intel-mtl 0000:00:1f.3: Topology: ABI 3:29:0 Kernel ABI 3:23:0 [ 5.201383] skl_hda_dsp_generic skl_hda_dsp_generic: ASoC: Parent card not yet available, widget card binding deferred [ 5.218032] snd_hda_codec_realtek ehdaudio0D0: autoconfig for ALC294: line_outs=1 (0x17/0x0/0x0/0x0/0x0) type:speaker [ 5.218037] snd_hda_codec_realtek ehdaudio0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) [ 5.218039] snd_hda_codec_realtek ehdaudio0D0: hp_outs=1 (0x21/0x0/0x0/0x0/0x0) [ 5.218041] snd_hda_codec_realtek ehdaudio0D0: mono: mono_out=0x0 [ 5.218042] snd_hda_codec_realtek ehdaudio0D0: inputs: [ 5.673109] skl_hda_dsp_generic skl_hda_dsp_generic: hda_dsp_hdmi_build_controls: no PCM in topology for HDMI converter 3 [ 5.689485] input: sof-hda-dsp Headphone as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input32 [ 5.689537] input: sof-hda-dsp HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input33 [ 5.689573] input: sof-hda-dsp HDMI/DP,pcm=4 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input34 [ 5.689609] input: sof-hda-dsp HDMI/DP,pcm=5 as /devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input35 При этом [root@asus ~]# lsmod | grep -Ei 'cs35l41' snd_hda_scodec_cs35l41_spi 12288 0 snd_hda_scodec_cs35l41_i2c 12288 0 snd_hda_scodec_cs35l41 65536 2 snd_hda_scodec_cs35l41_i2c,snd_hda_scodec_cs35l41_spi snd_hda_cs_dsp_ctls 16384 1 snd_hda_scodec_cs35l41 snd_soc_cs_amp_lib 16384 1 snd_hda_scodec_cs35l41 cs_dsp 73728 3 snd_hda_scodec_cs35l41,snd_hda_cs_dsp_ctls,snd_soc_cs_amp_lib snd_soc_cs35l41_lib 40960 3 snd_hda_scodec_cs35l41_i2c,snd_hda_scodec_cs35l41,snd_hda_scodec_cs35l41_spi snd 147456 28 snd_ctl_led,snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_sof,snd_hda_scodec_cs35l41,snd_timer,snd_soc_hdac_hdmi,snd_compress,snd_soc_core,snd_pcm,snd_hda_cs_dsp_ctls,snd_rawmidi И новые прошивки есть под усилитель [root@asus ~]# ls /lib/firmware/cirrus/*10431a63* /lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid0-l0.bin /lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid1-l0.bincfg /lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid0-l0.bincfg /lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid1-r0.bin /lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid0-r0.bin /lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid1-r0.bincfg /lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid0-r0.bincfg /lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63.wmfw /lib/firmware/cirrus/cs35l41-dsp1-spk-prot-10431a63-spkid1-l0.bin И SOF как упомянул ранее стоит и починили. 2. Есть гайд "как завести звук" https://asus-linux.org/guides/cirrus-amps/ я пробовал сделать свой DSDT. Тоже не получилось. Попытки притвориться другой аудиокартой через добавление в /etc/modprobe.d/alsa-base.conf содержимого options snd-hda-intel model=1043:17f3 или иных из статьи - результата не дали. И не уверен, что вообще должны были. Как итог. Я на сегодня перепробовал разные подходы с DSDT и система в упор не видит CS3551 Вложение dmesg с прошлых разов https://bugzilla.altlinux.org/attachment.cgi?id=16763 И прикреплю полный dmesg 6.11rc5 с DSDT патчем https://github.com/smallcms/asus_zenbook_ux3405ma ошибки ACPI, как у товарища с github :365 Но заветной инициализации усилителя на 1075+ нет. undef ведёт себя так же. Пробовал 6.11rc5 из-за патча https://github.com/torvalds/linux/commit/5f9f982dd71b418aeba7a0b37f87312545c06df4, который должен был принести это исправление специально для данного усилителя. При это в Fedora, оно как-то работает почему-то. Внешние устройства тоже работают корректно. А вот усилитель нет.
Created attachment 16765 [details] 6.6.48-un-def-alt1 + DSDT patch Ну и для справедливости 6.6.48-un-def-alt1 с DSDT
Есть одна зацепка. У федоры есть такой вот странный флаг CONFIG_SND_HDA_CIRRUS_SCODEC_KUNIT_TEST https://src.fedoraproject.org/rpms/kernel/blob/rawhide/f/kernel-x86_64-fedora.config#_6773 Он отсылает нас к https://lore.kernel.org/lkml/20230918095129.440-1-rf@opensource.cirrus.com/T/ А у арча CONFIG_SND_HDA_CIRRUS_SCODEC=m https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/blob/main/config?ref_type=heads#L7275 Предположу что на арче тоже работает. Так как для AUR пакет ничего нет особенного дополнительно
Провёл анализ чего есть у них и чего нет в альт https://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=blob;f=config;h=e82601aea85fbc9b1c90d904aeb62a4db1b45302;hb=9f24c7de98f4f6c1fe693d094597a4c912782397 тут Разница с arch + CONFIG_SND_HDA_CIRRUS_SCODEC=m + CONFIG_SND_HDA_SCODEC_COMPONENT=m + CONFIG_SND_HDA_SCODEC_CS35L56_I2C=m + CONFIG_SND_HDA_SCODEC_CS35L56_SPI=m + CONFIG_SND_HDA_SCODEC_CS35L56=m + CONFIG_SND_HDA_SCODEC_TAS2781_I2C=m Разница с Fedora - CONFIG_SND_HDA_CS_DSP_CONTROLS=m - CONFIG_SND_HDA_GENERIC_LEDS=y + CONFIG_SND_HDA_CIRRUS_SCODEC_KUNIT_TEST=m + CONFIG_SND_HDA_PREALLOC_SIZE=0 + CONFIG_SND_HDA_SCODEC_CS35L56_I2C=m + CONFIG_SND_HDA_SCODEC_CS35L56_SPI=m + CONFIG_SND_HDA_SCODEC_TAS2781_I2C=m Из того что изменено относительно fedora/arch alt CONFIG_SND_HDA_INPUT_BEEP_MODE=1 arch CONFIG_SND_HDA_INPUT_BEEP_MODE=0 fedora CONFIG_SND_HDA_INPUT_BEEP_MODE=0 alt CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 arch CONFIG_SND_HDA_POWER_SAVE_DEFAULT=10 fedora CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1 С последним - https://www.kernel.org/doc/html/latest/sound/designs/powersave.html получается в Alt выключено сбережение совсем.
Всё же решился пересобрать ядро. Это не так страшно, как 3 или 4 предупреждения, что так делать не стоит, на wiki. А ещё там кажется пропущена установка, после сборки. Что сделал. Стянул 6.11 Добавил флаги в конфиг, а именно: ```diff diff --git a/config b/config index 3c46b37df730..c6f47f6d202a 100644 --- a/config +++ b/config @@ -6780,6 +6780,12 @@ CONFIG_SND_HDA_CODEC_SI3054=m CONFIG_SND_HDA_GENERIC=m CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y +CONFIG_SND_HDA_CIRRUS_SCODEC=m +CONFIG_SND_HDA_SCODEC_COMPONENT=m +CONFIG_SND_HDA_SCODEC_CS35L56_I2C=m +CONFIG_SND_HDA_SCODEC_CS35L56_SPI=m +CONFIG_SND_HDA_SCODEC_CS35L56=m +CONFIG_SND_HDA_SCODEC_TAS2781_I2C=m # end of HD-Audio CONFIG_SND_HDA_CORE=m ``` gear-create-tag -n test1 -s kflavour=un-def gear-hsh -t test1 Установил ядро и headers... вообщем всё что не debuginfo установил и не domU, было в папке. >>> Звука нет. В dmesg появилась только одна строчка новая [ 16.524944] platform CSC3551:00: deferred probe pending: Serial bus multi instantiate pseudo device driver: failed to allocate SPI device CSC3551:00 from ACPI Которая вроде подтверждает, что ядро собралось с CS35L56 флагом и даже есть попытка запуска. Раз сборка не такая страшная, как описывают. Могу попробовать у себя локально патчи на драйвера пособирать. Хоть и собирается ядро полчаса.
Пошёл пробовать собрать с CONFIG_PINCTRL_METEORLAKE=m У меня ж метеор. И этой части нет
Чтобы не забыть, скажу там ещё один новый в 6.11 есть: CONFIG_PINCTRL_METEORPOINT
Created attachment 16777 [details] Какие флаги докинул в ядро Юху! Заработало. Так пробовал отдельно METEOR флаги и флаги для звука. По отдельности не работают. А вот вместе всё заработало.
Это патч над 6.11 если что.
Created attachment 16778 [details] dmesg 6.11 + patch + DSDT
Без DSDT патча по dmesg всё поднимается, а в реальности не работает :( Но с ним всё отлично.
(In reply to Toxblh from comment #7) > Created attachment 16777 [details] > Какие флаги докинул в ядро Эти опции конфига я включу.
Можно еще попробовать включить CONFIG_SND_SOC_INTEL_SOF_SSP_AMP_MACH
С этим конфигом по началу всё сломалось, как показалось. А оказывается эта штука кажется активировала режим сбережения. Пока звук в 0 не увёл и не начал добавлять, звука вообще не было.
Зато.. с ним не нужен DSDT патч! Огонь! :)
(In reply to Toxblh from comment #14) > Зато.. с ним не нужен DSDT патч! > Огонь! > > :) Спасибо за тест. Я добавлю эти опции пока в 6.10 и 6.11 (при следующей сборке), а потом и в остальные. https://git.altlinux.org/people/kernelbot/packages/?p=kernel-image.git;a=shortlog;h=refs/heads/6.11/sisyphus
За и вообще спасибо за поиск решения проблемы.
Это в моих же интересах, купил себе ноут, хочется, чтобы всё работало) Я ещё попробую на un-def ядре собрать с этими флагами, понять, как оно работает.
Обнаружилось ещё. Ну наверное можно в другой баг вынести Meteor по PState пакета не ходит от слова совсем Это те что в powerstat на вкладке Idle stats -> Pkg(HW). Всегда сидит в С2. А не проваливается до C10, как на других дистрах.
Проверил на чистую установку. После установки нового 6.10, всё работает из коробки с нюансом, что сначала нужно сделать громкость 0 и начинает работать.