LINUX.ORG.RU

ALSA

 , ,


0

1

Привет!

Собрал генту, долго-долго копался, но в итоге смог все настроить и привести в рабочий вид. Всё, за исключением звука.

Я так толком и не раздуплился, какой порядок установки звуковых драйверов. Сперва я пытался их вкомпилить в ядро, не понял, что включать - включил тупо всё. Но звука нет. Потом прочитал кусочек хендбука и еще пару манов, понял, что мне надо внести юз-флаг с названием своего звукового чипа (ALSA_CARDS="...") и собрать пакет alsa-utils.

Отправился на ALSA SoundCard Matrix, чтобы выяснить, какой же мне нужен юз, но меня ожидала неудача. Я так и не смог найти свой звуковой чип, потому что lspci дает какой-то долбанский вывод, который вообще ничего мне не говорит — ни модели, ни номера какого-то. Внешней карты нет, есть только встроенный чип с HDMI и AC97.

Вывод lspci:

gentoo maks # lspci -v | grep -i audio
00:01.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI]
Trinity HDMI Audio Controller
Subsystem: ASUSTeK Computer Inc. Trinity HDMI Audio Controller
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD] FCH Azalia Controller (rev 01)
gentoo maks # modinfo soundcore
modinfo: ERROR: Module soundcore not found.



Последнее исправление: Flagitio (всего исправлений: 1)

Ответ на: комментарий от Flagitio

00:01.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Trinity HDMI Audio Controller
Subsystem: ASUSTeK Computer Inc. Trinity HDMI Audio Controller
Kernel driver in use: snd_hda_intel

00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD] FCH Azalia Controller (rev 01)
Subsystem: ASUSTeK Computer Inc. FCH Azalia Controller
Kernel driver in use: snd_hda_intel

Ну вот, драйвер есть
Убедись что в /etc/modprobe.d/50-alsa.conf есть строка

options snd-hda-intel index=1,0
Перегрузись после этого

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от Flagitio

У тебя все звуковухи уже работают с snd_hda_intel.
Запусти какой-нибудь микшер звука и повыбирай там устройства и поиграй с кнопками мута и ползунками громкости.

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

gentoo maks # cat /proc/asound/cards
0 [HDMI ]: HDA-Intel - HDA ATI HDMI
HDA ATI HDMI at 0xfef44000 irq 31
1 [Generic ]: HDA-Intel - HD-Audio Generic
HD-Audio Generic at 0xfef40000 irq 16

Меня не устраивает вывод через hdmi, мне нужен АС97.

snd_hda_intel — это, как я понял, тот модуль, который сам подгрузился, но не тот, который нужен. Иначе звук бы работал. Да чисто логически — у меня производитель чипа АМД, какой же тогда intel?

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

Думаешь? MOC так не считает.

gentoo maks # mocp
Running the server...
Trying ALSA...
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.0.29/work/alsa-lib-1.0.29/src/pcm/pcm_dmix.c:1024:(snd_pcm_dmix_open) unable to open slave

FATAL_ERROR: No valid sound driver!

FATAL_ERROR: Server exited!

gentoo maks #

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

в /etc/modprobe.d/50-alsa.conf

Не то что строк, а даже файла такого нет. Я создал и вписал. Щас перезагружусь. Но в успех не верю.

5 секунд, погоди.

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

включил тупо всё

На всякий случай стоит проверить

zgrep '^# CONFIG_SND_' /proc/config.gz

FATAL_ERROR: No valid sound driver!

С livecd грузиться не пробовали, есть ли там звук? Чтобы оттуда взять lsmod и lspci -k.

backbone ★★★★★
()
Последнее исправление: backbone (всего исправлений: 1)
Ответ на: комментарий от backbone

На лайвюсб звука тоже нет. Пробовал.

Я тут офигел слегка — после ребута отвалилась сеть. Делал уже dhcpcd enp3s0, но толку нет. Теперь у меня две беды: ни звука, ни сети. Сижу с телефона.

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

А миксер работает, звук включен.

Нашёл кое-что полезное: chip ATI R6xx HDMI, card HDA ATI HDMI, item S/PDIF.

Но мне, я полагаю, нужен вывод АС97, аналоговый, обычный джек. Ни спдиф, ни хдми мне не дадут звука.

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

Привет!
Собрал генту

нужно запилить на ЛОРе парсер на эти слова и отправлять в бан по IP на месяц-другой.

mos ★★☆☆☆
()
Ответ на: комментарий от Kroz

Почитаю сразу, как только налажу интернет.

С вашего позволения, господа, чтобы два треда не создавать, спрошу у вас помощи еще и по поводу сети.

Пользуюсь dhcpcd, конфиги удалены, работает инет рандомно, то есть, то нет. Вот перезагрузил машину - отвалилось, хотя при загрузке ошибок я не отметил, демон запущен. Есть какие-то рекомендации?

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

Если я не ошибаюсь, то лор — это не ложа для аксакалов-админов со стажем в 30 лет. Это форум, где каждый пользователь никсов может спросить совета или сам что-то рассказать.

Так что не пойму твоего недовольства. Тем более, что я сперва активно курил маны, а уж потом пошел спросить сюда.

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

Lspci видит адаптер сети.

Dmesg пишет:

enp3s0: renamed from eth0

enp3s0: link down

ipv6: addrconf(netdev_up): enp3s0: link is not ready

Ifconfig не показал айпишника, все по нулям.

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

На лайвюсб звука тоже нет. Пробовал.

Такое чувство, что надо установить карту по умолчанию или отключить лишнюю.

dhcpcd enp3s0

Не в тему, но можно менять имена вроде enp3s0 на привычные

$ cat /etc/udev/rules.d/76-net-name-use-custom.rules
SUBSYSTEM=="net", ACTION=="add", ENV{ID_NET_NAME_PATH}=="enp5s0f2", NAME="wan0"
SUBSYSTEM=="net", ACTION=="add", ENV{ID_NET_NAME_PATH}=="wlp4s0", NAME="wifi0"

А миксер работает, звук включен.

Ещё в alsamixer по F6 можно выбрать карту или опцией --card=номер|имя, чтобы сообщение об ошибке получить.

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

Есть какие-то рекомендации?

Смотреть. Сравни когда есть сеть, и когда не сети:

$ ifconfig # Покажет только поднятые интерфейсы
$ ifconfig -a # Покажет все интерфейсы
$ route -n
$ cat /etc/resolv.conf
$ ethtool <интерфейс>

демон запущен

Демон может быть запущен, но адреса не получить и назначить дефолтный - да, там есть такая фича.

Если нет сети, запусти вручную dhcpcd. У меня было такое, что тупит секунд 30, только потом находит адрес. Решалось какими-то ключами.

Еще есть ерунда - кабель. Да, из-за плохо проложенного кабеля у меня интерфейс иногда негошиируется на 1Gbps, иногда на 100Mbps, ну, и, естественно 1Gbps линк нестабилен. Выявляется ethtool (указал выше), решается принудительной установкой на 100Mbps тем же ethtool.

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от backbone

Пускай будет имя enp3s0, нестрашно. Я не пойму, чому сломалась сеть. Демона перезапустил. Мои диагностические умения исчерпаны, вижу, что карту видно, драйвер загружен, служба запущена, айпишника нету. Как быть?

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

Не в тему, но можно менять имена вроде enp3s0 на привычные

https://wiki.gentoo.org/wiki/Handbook:X86/Full/Networking#Using_the_old-style...

Before this change, network interface cards were named by the Linux kernel itself, depending on the order that drivers are loaded (amongst other, possibly more obscure reasons). This behavior can still be enabled by setting the net.ifnames=0 boot parameter in the boot loader.

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

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

Dhcpcd запускал не раз, ждал, нет эффекта.

Вывод ифконфига с ключом -а и без оного отличаются наличием в первом случае некой службы sit0 ipv6-in-ipv4. Я ее впервые вижу. Enp3s0 и lo запущены.

Вторая строка ifconfig enp3s0:

ether 08:06:6e:e7:2f:a9 txqueuelen 1000 (Ethernet)

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

net.ifnames=0 boot parameter in the boot loader

Буду знать, спасибо.

Просто было 3 сетевухи на сервере, пробовал все предложенные в wiki методы, стабильно работал после многократных перезагрузок указанный мною. net.ifnames=0 пробовал ли, не вспомню, года 3-4 назад это было... Ну и такие имена wan0, lan0 яснее, чем eth0, eth1.

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

Вернул конфиги - все равно не работает. Оставил dhcpcd.

Ребята, неужели мне не суждено быть с работающим интернетом? Я все свои возможности исчерпал, всюду поковырялся, где знал как.

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

sit0 ipv6-in-ipv4.

А туннелирование осознанно сделано или оно само?

grep net-pf-10 /etc/modprobe.d/aliases.conf

Возможно, модуль sit грузится

lsmod | grep sit

backbone ★★★★★
()
Последнее исправление: backbone (всего исправлений: 2)
Ответ на: комментарий от backbone

Я уж точно не создавал туннель. Загрузился с лайвюсб, там ядро генкернеловское, всегда само сеть ловило и работало. Не работает. Нет подключения мол. Разобрал машину, все целое. Ну ладно, почищу от пыли заодно. Неужели коннектор испортился? Обжимали год назад.

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

Обнаружил на плате маленький чип, даже скорее чипик, могу рассмотреть знакомого реалтековского крабика, значит это звуковой процессор. Но прочесть надписи на крышке не представляется возможным без лупы, хоть я и близорукий. А жаль.

Заодно сменил термопасту, чтобы два раза не вставать.

По-прежнему нет ни звука (меньшая из проблем), ни сети.

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

net.ifnames=0 работает нормально, НО не с именами вида eth*, потому что в новом udev параллельное назначение имен сетевым устройствам(или переименования имеющихся). И если у тебя две сетевухи ядро обозвало eth0 и eth1, а udev считает, что их надо переименовать в eth1 и eth0 соответственно(то есть грубо говоря поменять местами) - тут у него МОЖЕТ случится гонка и он переименовать ничего не сможет(причем при некоторых перезагрузках он это таки сделает, так что ты даже не сразу можешь заметить). Раньше в udev это решалось костыльным переименованием одной из сетевух во временное eth0_чо-то-там, но т.к. была введена многопоточность, апстрим видать смекнул, что они не осилят нормально запилить такую фичу плюс понадеялись что, учитывая предсказуемые(ага-ага, есть хорошая статья насчет их «предсказуемости») имена интерфейсов заморачиваться не придется.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Ответ на: комментарий от Flagitio

Это логика уровня бабок у подъезда. Интел выкатил спецификацию, все остальные производят по ней, потому так драйвер называется.

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

Проблема оказалась со стороны провайдера — у них сгорел свитч в коробке, в подъезде. Интернет починили, теперь осталось решить проблему со звуком.

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

net.ifnames=0 работает нормально, НО не с именами вида eth*, потому что... ...гонка...

Понял, развёрнуто, спасибо!

По идее, нужно в этом случае добавлять 2 объекта синхронизации в udev и проводить переименование в 2 этапа, как Вы написали с промежуточными именами вроде eth#_хэш.

понадеялись что, учитывая предсказуемые(ага-ага, есть хорошая статья насчет их «предсказуемости») имена интерфейсов

Когда пытался настроить у себя 3 сетевухи, predictable получался только ID_NET_NAME_PATH. MAC нужно было менять для провайдера, ONBOARD вообще был не постоянен. Про SLOT в Udev/Upgrade Guide раньше не было вроде.

backbone ★★★★★
()
Последнее исправление: backbone (всего исправлений: 1)
Ответ на: комментарий от Flagitio

Как твоя сеть?
Добрался, могу выложить свои конфиги.

У меня сетевуха с и-нетом eth1 (eth0 нету). Линк принудительно выставляю в 100Mpbs.

wlan0 - wifi, который не нужен, потому я его сразу выключаю чтоб понапрасну не светил (хотя, возможно, это рудимент от прошлой конфигурации, не помню).

В dhcpcd.conf просто добавил последние 2, остальное было и так.

$ cat /etc/dhcpcd.conf | grep -v "^#"
hostname
duid
persistent
option rapid_commit
option domain_name_servers, domain_name, domain_search
option classless_static_routes
option ntp_servers
option interface_mtu

require dhcp_server_identifier

nohook lookup-hostname

noipv4ll
quiet

$ cat /etc/conf.d/net

modules="ifconfig iwconfig dhcpcd"

# Ethernet
config_eth1="dhcp"
dhcpcd_eth1="-4"
dhcp_eth1="release nontp nonis"
# fallback_eth0="10.0.0.2 netmask 255.255.0.0"

preup() {
        # echo "Pre ${IFACE} +++++++++++++"
        if [ "${IFACE}" = "eth1" ]; then
                echo "Setting eth1 link parameters...................."
                /bin/ifconfig eth1 up
                /usr/sbin/ethtool -s eth1 speed 100 duplex full autoneg on
        fi
        return 0
}


postup() {
        # echo "Postup ${IFACE} --------------"
        if [ "${IFACE}" = "wlan0" ]; then
                /bin/ifconfig wlan0 down
        fi
        return 0
}

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

Нормально, это была поломка на стороне провайдера.

Времени сейчас нет совсем, поэтому в звуке не разбирался пока.

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

Ну тогда и хер бы с этйо альсой, я соберу поттеринговский pulseaudio. Надоело уже мне возиться, звук настраиваю неделю.

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

Не поможет же, пульс через алсу работает. Алса это драйвер, пульс обёртка. Алсо не в ней дело, а в генте, собиратьт должны специально обученные майнтейнеры а не пользователь которому нужно чтобы просто работало.

anonymous
()
20 октября 2017 г.
Ответ на: комментарий от dpronyaev

В чём проблема?

Загрузись с LiveCD, где есть звук, например Ubuntu, посмотри вывод

lspci -k
смотри для аудио устройства строку kernel_modules.

Далее смотри какой кодек используется в твоей звуковой карте:

grep Codec /proc/asound/card*/codec*

Ну а далее при конфигурации ядра ищешь где включается эта опция и кодек для нужного тебе драйвера.

Для поиска в menuconfig нажимай клавишу «/» вводи критерий поиска и нажимай ввода, читай вывод, там указано где находится опция в конфигураторе, если её там нет, то читай внимательно строку Deps:, в ней указаны зависимости.

Скорее всего, у тебя драйвер (модуль) snd_hda_intel.

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

Их не нужно искать, ты на человеческом языке максимально понятно попытайся рассказать и объяснить в чем именно у тебя проблема.

Bruce_Lee ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.