Как установить драйвер alsa
Оригинал: Control Audio volume through the Ubuntu Command Line
Автор: Karim Buzdar
Дата публикации: 10 июля 2019 года
Перевод: А. Кривошей
Дата перевода: февраль 2020 г.
Человек, разбирающийся в терминале, найдет способ выполнить любое действие, находясь в командной строке. В основном мы делаем системные настройки в графическом интерфейсе Ubuntu, но есть определенные ситуации, когда вы можете сделать это из командной строки. ALSA или Advanced Linux Sound Architecture обеспечивает поддержку аудио для большинства дистрибутивов Linux.
В этой статье мы объясним, как вы можете установить пакет утилит ALSA, если он еще не установлен в вашей Ubuntu. Мы также объясним, как вы можете управлять звуковыми свойствами ваших звуковых карт с помощью:
Alsamixer - графический интерфейс для ALSA
Amixer - командный интерфейс для ALSA
Мы запускали команды и процедуры, упомянутые в этой статье, в системе Ubuntu 18.04 LTS.
Установка ALSA
Пакет Alsa-utils содержит утилиты Alsamixer и Amixer. Этот пакет доступен в официальных репозиториях Ubuntu и может быть легко установлен в командной строке с помощью команды apt-get.
Откройте терминал либо через системный поиск приложений, либо с помощью сочетания клавиш Ctrl+Alt+T.
Следующим шагом является обновление индекса репозиториев вашей системы с помощью следующей команды:
Это поможет вам установить последнии доступные версии программ из интернета. Обратите внимание, что только авторизованный пользователь может добавлять, удалять и настраивать программное обеспечение в Ubuntu.
Теперь вы готовы установить Alsa-utils; вы можете сделать это, выполнив следующую команду от имени sudo:
Система может попросить вас ввести пароль для sudo, а также запросить выбор Y/n для продолжения установки. Введите Y, а затем нажмите Enter; программное обеспечение будет установлено в вашей системе. Однако процесс может занять некоторое время в зависимости от скорости вашего интернета.
Использование Alsamixer - графического интерфейса для Alsa
Alsamixer предлагает графическое представление звуковых карт, установленных в вашей системе, и позволяет вам легко просматривать и управлять свойствами этих карт. Alsamixer создан на базе Ncurses, так что вы можете оставаться в терминале, работая с громкостью звуковой карты.
Вы можете запустить этот графический интерфейс, выполнив следующую команду в вашем терминале:
Alsamixer отобразит свойства вашей звуковой карты по умолчанию следующим образом:
Если вы не можете увидеть все свойства, как показано на снимке экрана выше, либо разверните окно терминала или используйте клавиши со стрелками влево и вправо, чтобы просмотреть свойства, которые не видны.
Представления Alsamixer
Когда вы открываете интерфейс Alsamixer, вы видите его в представлении Payback. Это означает, что из этого представления вы можете управлять только параметрами, связанными с воспроизведением звука. Два других вида, на которые вы можете переключиться:
Представление Capture
Представление All
Чтобы просмотреть свойства, связанные как с захватом, так и с воспроизведением звука, вы можете переключиться в режим «All», нажав клавишу F5, когда открыт Alsamixer. Вот так выглядит All:
Представление Playback
Чтобы вернуться в режим Playback, нажмите кнопку F3.
Выбор звуковой карты
Утилита Alsamixer отображает свойства карты, которая выбрана «по умолчанию». Для просмотра/редактирования свойств другой звуковой карты, установленной в вашей системе, вы можете нажать F6.
Меню звуковой карты, как показано выше, появляется при нажатии клавиши F6. Вы можете перемещаться вверх и вниз по меню и затем нажать Enter, чтобы выбрать другую карту. Вы также можете вручную ввести имя карты, если оно не отображается в списке, выбрав пункт меню «enter device name».
Вы можете выйти из этого меню, нажав Esc.
Управление свойствами звука
Самая важная часть использования Alsamixer - это возможность увеличивать и уменьшать громкость определенного устройства.
Вы можете перемещаться влево и вправо, чтобы выбрать устройство, громкость которого вы хотите увеличить, уменьшить или отключить.
Когда вы выбрали устройство, используйте клавиши вверх и вниз, чтобы увеличить или уменьшить громкость соответственно.
Чтобы отключить устройство/элемент управления, нажмите клавишу m, когда выбрано это свойство.
Для получения информации обо всем, что вы можете сделать с помощью Alsamixer, нажмите элемент управления F1. Это отобразит справку следующим образом:
Вы можете использовать клавишу Esc, чтобы выйти из этого окна справки.
Использование Amixer для управления звуком с помощью команд
Amixer - это командный подход к управлению свойствами ваших звуковых карт. Он предоставляет набор команд, которые можно использовать для увеличения, уменьшения и даже отключения звука указанного устройства.
Введите следующую команду, чтобы увидеть все, что вы можете сделать с Amixer:
Ваша команда amixer выглядит в целом так:
Во всех ваших командах amixer вам нужно указывать три вещи:
1. Звуковая карта (номер карты), свойством которой вы хотите управлять.
2. Устройство/элемент управления, громкостью которого вы хотите управлять.
3. Значение громкости в процентах или децибелах, которое вы хотите установить, увеличить или уменьшить. Вы также можете указать, хотите ли вы отключить звук для звуковой карты.
Команда scontrols позволяет просматривать список элементов управления, которыми вы можете управлять:
1. Следующая команда установит громкость на главном элементе управления/устройстве первой звуковой карты на 100%.
2. Следующая команда установит громкость на элементе управления/устройстве Speaker второй звуковой карты на 30%.
3. Следующая команда установит громкость на элементе управления/устройстве Speaker второй звуковой карты на 3 дБ.
4. Следующая команда увеличит громкость на элементе управления/устройстве Speaker второй звуковой карты на 2 дБ.
5. Используйте следующие команды, чтобы отключить или включить звук устройства.
ALSA (Advanced Linux Sound Architecture) – архитектура звуковых драйверов, обеспечивающая поддержку множества звуковых карт. Главными особенностями ALSA являются:
Широкая поддержка аудиоаппаратуры, начиная от потребительских звуковых карт и заканчивая профессиональными мультиканальными аудио интерфейсами.
Обновление ALSA
Если у вас возникают какие-либо проблемы в работе звуковой подсистемы попробуйте обновить ALSA из PPA, поддерживаемого Ubuntu Audio Development Team.
Сборка, установка и конфигурирование ALSA
Все дальнейшие действия выполняются в терминале. Все команды рекомендуется вводить по одной, чтобы отслеживать процесс на возможные ошибки. Продолжать сборку при возникновении ошибки бессмысленно. Если не можете выяснить ее причину обратитесь на форум.
Для начала следует установить необходимые пакеты для сборки ПО из исходных текстов:
Установка этих пакетов потянет за собой около 400МБ траффика. Выполнять дальнейшие инструкции без их установки бессмысленно.
Скачиваем исходные коды ALSA с официального сайта, желательно самые последние (на момент последнего обновления статьи 29 Января 2012г. это была версия 1.0.25) :
Поддержка Alsa версий выше 1.0.23 есть в ядрах версий 2.6.38 и выше. Сборка на старом ядре в результате приведет к тому, что Alsa не будет распознавать звуковые карты. Последние сборки ядра можно скачать отсюда.
Собираем и устанавливаем alsa-driver:
Собираем и устанавливаем alsa-lib:
Собираем и устанавливаем alsa-utils:
Если при компиляции alsa-utils выдает ошибку вроде такой:
то нужно установить пакет gettext :
Внимательно смотрите чтобы сборка alsa-utils прошла без ошибок! На некоторых компьютерах сборка не проходит. Если ошибка всеже есть, скачиваем готовый пакет по ссылкам:
Собираем и устанавливаем alsa-plugins:
Судя по багу 29597 не стоит использовать alsaconf так как он нарушает работу других скриптов настройки.
Выбираем нужную звуковую карту, нажимаем «ок» и на последующие вопросы отвечаем всегда «Да/Y»:
Начиная с версии 1.0.24 alsaconf нужно брать в папке alsa-utils/alsaconf:
Перезаружаем систему и настраиваем громкость вывода звука, ставим все на максимум (кроме PC Beep):
Если после обновления ядра пропал или неправильно воспроизводится звук, нужно проделать все действия заново.
Возможные проблемы и их решение
Если звука по прежнему нет, попробуйте выполнить следующие действия:
Откройте в файл /etc/modprobe.d/alsa-base.conf в текстовом редакторе:
Добавьте в конце строчку
с одним из значений:
В выводе будут строчки с информацией о чипе наподобие этих:
В таблице ищем свой чип и берем оттуда значения. Описанию большого значения не придавать, оно подобрано владельцами этих звуковых карт.
Если вам помогло какое-нибудь значение, а в описании этого значения нет модели вашего ноутбука, можете ее смело добавить в таблицу.
Существует два способа использования звуковых модулей ALSA. Я предпочитаю делать это, как описано в инструкции, этот метод подразумевает, что во время запуска системы модуль подгружается. Драйверы ALSA были спроектированы как двоякие, то есть существует возможность их применения как догружаемых модулей, так и не подгружаемых (установленных). После загрузки они не сбивают настроек микшера, поэтому вы можете воспользоваться другим способом их эксплуатации — при помощи kerneld . Если у вас старое ядро, то для обеспечения поддержки звука прочтите главу Разд. Обратная совместимость.
Установка modprobe
Самые большие проблемы могут возникнуть с чипсетами Crystal — для них у драйверов ALSA нет автоматического определения. Более подробную информацию можно прочитать в файле INSTALL, который находится в каталоге драйвера. Вот два примера: первый для Gravis UltraSound (GUS) и аналогов: /sbin/modprobe snd-card-gusclassic Для всех карт 16-bit Soundblaster (SoundBlaster 16 (PnP), SoundBlaster AWE 32 (PnP), SoundBlaster AWE 64 (PnP): /sbin/modprobe snd-card-sb16 Если вы используете драйвер 0.3.0-pre4 , драйвер GUS Classic называется snd-gusclassic , а модуль SoundBlaster 16 называется snd-sb16 (без уточнения конкретной модели карты).
Какой модуль для какой карты?
Не забудьте, что в версиях ALSA до 0.4.x иногда употребляют названия моделей карт. Это отмечено звездочкой (*).
Gravis UltraSound Extreme Разд. ForteMedia FM801
Gravis UltraSound MAX Разд. ForteMedia FM801
ESS AudioDrive Разд. ForteMedia FM801
ESS AudioDrive 18xx Разд. ForteMedia FM801
Gravis UltraSound PnP Разд. ForteMedia FM801
Gravis UltraSound PnP, Dynasonic 3-D/Pro, STB Sound Rage 32, ExpertColor MED3201 и другие карты, основанные на чипе AMD InterWave™. modprobe snd-card-interwave
UltraSound 32-Pro Разд. ForteMedia FM801
UltraSound 32-Pro (карты STB используемые Compaq) и другие карты, основанные на чипе AMD InterWave (tm), с улучшенной схемой управления низкими частотами TEA6330T, управлением высоких частот и громкостью modprobe snd-card-interwave-stb
Soundblaster Разд. ForteMedia FM801
Soundblaster 16 Разд. ForteMedia FM801
Карты 16-bit SoundBlaster (SoundBlaster 16 (PnP), SoundBlaster AWE 32 (PnP), SoundBlaster AWE 64 (PnP). Замечание: этот модуль не поддерживает карту SoundBlaster VibraX16. modprobe snd-card-sb16
OAK Mozart Разд. ForteMedia FM801
modprobe snd-mozart OPTi 82C9xx Разд. ForteMedia FM801 Группа карт, использующих чипсет OPTi 82C9xx, такие как Audio 16 Pro EPC-SOUN9301 (основанная на 82C930), ExpertColor MED-3931 v2.0 (основанная на 82C931), ExpertMedia Sound 16 MED-1600 ( AD1848, основанная на 82C928 ), Mozart S601206-G ( CS4231, основанная на OPTI601) и Sound Player S-928 modprobe snd-card-opti9xx
AD1847/48 and CS4248
Yamaha OPL3-SA2/SA3 soundcards Разд. ForteMedia FM801
Команда modprobe snd-opl3sa не будет работать, так как этот драйвер не проводит автоматического определения. Смотрите далее.
S3 SonicVibes Разд. ForteMedia FM801
Ensoniq/Soundblaster PCI64 Разд. ForteMedia FM801
CS4231
Команда modprobe snd-card-cs4231 не будет работать, так как не проводится автоматического определения. Смотрите далее.
CS4232/4232A
Для всех карт, основанных на чипе CS4232/CS4232A команда modprobe snd-card-cs4232 не будет работать, так как не проводится автоматического определения. Смотрите далее.
4235 и выше
Для всех карт основанных на чипе CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239, команда modprobe snd-card-cs4236 не будет работать, так как не проводится автоматического определения. Смотрите далее.
4610/4612/4615 и 4680
ESS Solo 1 Разд. ForteMedia FM801
ForteMedia FM801
Это карты PCI, основанные на чипе FM801. modprobe snd-card-fm801 (*) Для версии ALSA 0.3.0-pre4, вы должны пропустить card- (не для всех!) в названиях драйверов. Строка snd-card-sb16 превращается в snd-sb16 , а snd-cs4232 остается snd-card-cs4232 ( modprobe snd-cs4232 начнет что-то выполнять, но не будет воспроизводить звук!) (**) В более старых версиях ALSA драйвер называется snd-card-trid4wave и snd-trid4wave . modprobe для драйверов без автоматического определения карты Если у вас драйвер без автоматического определения, то для его работы вам потребуется внести больше информации при его загрузке. Более подробно это описано в файле INSTALL каталога драйвера.
OPL3-SA2 и OPL3-SA3
Чипы CS4231
Чипы CS4232/CS4232A
Чипы CS4235/CS4236/CS4236B/CS4237B/CS4238B/CS4239
Вместо NN вы должны поставить числовые значения, но я не могу вам подсказать наилучшие значения. Моя карта CS4237B прекрасно работает без указания dma .
Использование kerneld
- Отредактируйте свой /etc/conf.modules (примеры смотрите ниже)
- Запустите modprobe snd-card , где card это название вашей карты [Хотя мне это кажется очень странным, так как kerneld предполагает их загрузку VS]
Обратная совместимость
Если вы хотите сохранить совместимость OSS/Free или OSS/Linux, то вам придется установить еще один драйвер snd-pcm1-oss для совместимости с OSS. Наберите: modprobe snd-pcm1-oss Это даст вам поддержку устройств /dev/audio и /dev/dsp так же, как это делают драйверы OSS/Free (находятся в ядре) и OSS/Linux (стоят $25). Замечу, что это всего лишь эмуляция.
Драйверы ALSA далеко не новы. Их разработка началась еще для ядер 2.0, затем и для ядер 2.2 (у которых есть собственное звуковое ядро). У меня замечательно работает версия 0.4 , я думаю, что и версии 0.4.1e (или более новые) будут не хуже. Если у вас ядро 2.0.x, вам понадобятся версии 0.3.0 или более старые. Я бы посоветовал использовать alsa-driver-0.3.0-pre4, alsa-lib-0.3.0-pre4 и alsa-utils-0.3.0-pre3. Более старые версии, такие как 0.2.0-pre10p3 или старше, работают под ядром 2.0.x, но я не смог их запустить под 2.2.x.
Разархивирование
Вы можете разархивировать драйверы командой типа tar -zxf . Было бы сподручнее если бы вы сделали это в каталоге /usr/src , но для этого вы должны зайти как пользователь root . Наберите su и пароль root для того, чтобы получить права одноименного пользователя. Но лучше не пользоваться этими правами без лишней необходимости. Итак: cd /usr/src tar -zxf ˜/alsa-driver-0.4.1e.tar.gz tar -zxf ˜/alsa-lib-0.4.1d.tar.gz tar -zxf ˜/alsa-utils-0.4.1.tar.gz Есть еще один проверочный файл, найдите ~ -name alsa* -exec tar -zxf <> \; (нежелательно это прослушивать в присутствии детей). Замечание: если вы скачиваете файлы при помощи Netscape, вы можете скачать неразархивированные драйверы с расширением .tgz . Если tar будет ссылаться на неправильный формат файла, уберите z в настройках tar .
Сборка
Вы можете вообще не делать make install для утилит и даже не собирать библиотеки и утилиты, если вам просто надо проверить, работает ли драйвер.
Приготовление к работе устройств
В каталоге драйвера есть скрипт, который установит звуковые устройства ALSA в ваш каталог /dev . Наберите ./snddevices в каталоге драйвера. Теперь там должен появиться подкаталог /dev/snd (проверьте это. Если вы при помощи команды ls не нашли соответствующего каталога, то вам придется прочесть другой HOWTO. У вас должны быть кое-какие навыки работы с Linux для того, чтобы установить эти драйверы). Теперь вы можете установить драйвер. Это описано в следующей главе.
Микшер
Наконец-то, драйверы для вашей карты установлены и файловая система /proc подтверждает это, теперь вы можете пользоваться картой. Для этого нужно настроить микшера на нужные значения громкости. Для этого вам понадобится amixer из пакета alsa-utils . Сначала установите пакет или, хотя бы, amixer в какое-нибудь доступное место, например /usr/local/bin . Версия 0.3.2 или более поздняя имеют интерфейс, отличающийся от аналогов в драйверах OSS. Если вы наберете amixer , увидите составляющие и их значения. Одной из этих составляющих будет Master volume . Это будет выглядеть примерно так: Group 'Master',0 Capabilities: volume Channels: Front-Left Front-Right Limits: min = 0, max = 31 Front-Left: 31 [100%] [on] [---] Front-Right: 26 [84%] [on] [---] К сожалению, я не знаю, как раздельно установить громкость на каналах. При помощи amixer вы можете менять громкость командой amixer set . Например, для того, чтобы установить Master volume, вам следует ввести: amixer set Master 15 Не забывайте, что названия элементов в каждой карте могут звучать по разному. Если у вас установлена версия 0.3.0-pre4 ALSA, то amixer будет работать, как нормальный микшер. Вы можете посмотреть его настройки, набрав amixer . Эта команда выводит список настроек микшера. Выходные сигналы с карт могут сильно различаться, на моей Soundblaster 16 они следующие: Master 0 % (-14.00dB) : 0 % (-14.00dB) Bass 0 % (-14.00dB) : 0 % (-14.00dB) Treble 0 % (-14.00dB) : 0 % (-14.00dB) Synth 0 % (-62.00dB) : 0 % (-62.00dB) PCM 0 % (-62.00dB) : 0 % (-62.00dB) Line-In 0 % (-62.00dB) : 0 % (-62.00dB) Mute MIC 0 % (-62.00dB) : 0 % (-62.00dB) Mute CD 0 % (-62.00dB) : 0 % (-62.00dB) Mute In-Gain 0 % (-18.00dB) : 0 % (-18.00dB) Out-Gain 0 % (-18.00dB) : 0 % (-18.00dB) PC Speaker 0 % (-18.00dB) : 0 % (-18.00dB) Если вы при такой команде получаете строку типа amixer: Specify command. , то, скорее всего, вы используете утилиты ALSA 3.2 . Я бы посоветовал, установить версию 0.4.1e или более позднюю или 0.3.0-pre4.
Установки микшера для воспроизведения
Вы наверное заметили, что на установках некоторых устройств стоит Mute. Это означает, что это устройство выключено. На некоторых картах (например CS4237B) можно отключить и основной канал. Поэтому для CS4237B, я бы написал amixer set "Master d" unmute для того, чтобы карта могла воспроизводить звук. У Soundblaster нельзя отключить основной канал, но я пишу amixer set Master 100 unmute для того, чтобы звук на выходе воспроизводился на 100%. Наберите amixer set "Master d" 100; amixer set PCM 100 unmute для того, чтобы установить выходной звук с карты CS4237B на максимум и то же самое сделать для устройства PCM. Если вы используете более старую версию amixer , то вам надо пропустить set в команде и просто напечатать: amixer "master d" 100
Элементы микшера
Различные части микшера могут быть вам не знакомы, если вы не имели дела с цифровым звуком. В этом вам может помочь sound-HOWTO, а здесь описаны основные термины. В действительности, вы будете использовать некоторые элементы микшера: один из них CD (это аналоговый сигнал с вашего CDROM, большинство CD ROM соединяются со звуковой картой 3-ех или 4-ех жильным красно/бело/черным проводом). Установка PCM используется для большинства приложений. Такие программы, как mpg123, xmms, speakfreely, realplayer, в основном, используют канал PCM. Установки MIC относятся к микрофону, line-in — это дополнительный вход звука на вашу карту. Различные gain — это дополнительное усиление сигналов. (Например record-gain — это дополнительное усиление для канала записи, которое может быть полезно при использовании микрофона).
Установки микшера для записи
Вы можете установить канал CD на запись командой: amixer set CD capture и остановить запись командой: amixer set CD nocapture Напомню, что более старый amixer для этого использует команды amixer CD rec и amixer CD norec . Для канала микрофона эти команды выглядят как: amixer set "Input Gain" 100; amixer set Mic 100 capture mute (Using the Большинство микрофонов имеет установку gain, для регулировки громкости. Опять же, старый amixer использует команды amixer "input gain" 100; amixer mic 100 rec mute .
Другие установки микшера
Устройства /dev/snd/
Дополнительная информация
В файле INSTALL упомянуты настройки, которые должен использовать драйвер ALSA. Но их использование зависит от того, какой программой вы пользуетесь при воспроизведении звука. Обычные программы типа: mpg123 , sox или программы X11 типа RealPlayer, будут прекрасно работать и без них.
Читайте также: