Linux usb audio device

Ubuntu Documentation

Introduction

Most modern Linux distributions use a hot-pluggable architecture for USB devices. This is very useful for everyday use, but it becomes difficult for pro-audio use, as ALSA device numbers (hw:X) are not stable across reboots, or even when removed and reinserted. This means that Jack has to be reconfigured after every restart or change.

This document describes a method of maintaining ALSA device numbers for USB devices, including MIDI devices. It is not intended for beginning users, as the configuration is relatively arcane.

Preparation

Ensure that all of your USB audio devices are connected and detected by ALSA. Do this in a terminal by executing the command:

My configuration is copied below.

The first column is the ALSA device (major) number. In this case, on my laptop i have the following:

  • device 0 (hw:0) is the inbuilt Intel High Definition Audio chipset.
  • device 1 (hw:1) is a Behringer BCR2000 MIDI controller
  • device 2 (hw:2) is a Behringer UCA202 soundcard
  • device 3 (hw:3) is the laptop’s inbuilt microphone
  • device 4 (hw:4) is an M-Audio Axiom 49 MIDI keyboard

Take note of your configuration.

Now, in the same terminal, execute the following:

My configuration is copied below:

Note that active USB devices have two pairs of hexadecimal numbers for an ID, such as 08bb:2902, and generally have a manufacturer’s name, such as Texas Instruments Japan. This is where you may have to do some investigation. By removing a USB device and executing

you can see which device corresponds to which ID and manufacturer.

In this case, I have detached the UCA202:

Make a note of the ID number pair — ie, 08bb:2902. These numbers represent the Vendor ID (vid) and Product ID (pid) of the device, and will come in handy for configuring the ALSA device numbers.

Through a process of elimination, I discover that my USB devices have the following ID numbers:

  • the Behringer BCR2000 MIDI controller is ID 1397:00bc (and has no manufacturer’s name)
  • the Behringer UCA202 soundcard is ID 08bb:2902
  • the M-Audio Axiom 49 MIDI keyboard is ID 0763:0199 and has the manufacturer’s name ‘Midiman’

There’s another way to discover this information, but it requires scrolling through pages and pages of output. It’s how I discovered the inbuilt microphone. I had to closely examine the output of:

$ sudo lsusb -v | less

We use ‘sudo’ here so that we can see all the information about the device. Here’s the (very long) information for the BCR2000:

By looking for the ‘iProduct’ and iManager’ strings that correspond to the information from

You can identify some devices. However, the process of identifying some internal devices (such as my microphone) came down to a lot of investigation — look for devices that have the following identifiers:

My internal microphone has the ID 046d:08c6 and is manufactured by Logitech, Inc.

OK. Let’s move to the actual configuration!

Configuration

In the text editor of your choice, open (using sudo) /etc/modprobe.d/alsa-base. ie:

$ gksu gedit /etc/modprobe.d/alsa-base

Look for the following line:

options snd-usb-audio index=-2

and comment it out! (NEVER delete a line in a configuration file — you should always be able to roll back if it goes wrong!) In this configuration file, a ‘#’ is used as a comment marker, so make the line look like:

#options snd-usb-audio index=-2

This line usually prevents a USB device grabbing the hw:0 slot. However, it also prevents it from grabbing any specific spot in the ALSA cards list, so we need to comment it out.

Читайте также:  Windows form messagebox powershell

At the end of the file, we need to configure the order that the cards should be listed in. In my case, I want the following setup:

  • the first card (hw:0) should always be HDA-Intel
  • the second card (hw:1) should always be the inbuilt microphone
  • the third card (hw:2) should always be the BCR2000
  • the fourth card (hw:3) should always be the Axiom 49
  • the fifth card (hw:4) should always be the UCA202

This is so I can use my laptop for general work and still be able to use the inbuilt audio to listen to music, or use the microphone with the inbuilt webcam. I have a FireWire soundcard, so I don’t need to use the UCA202 so much. My Windows software (under WINE) expects MIDI controllers to be in the same place — I’m not sure why!

So, I have four USB devices and one Intel HDA device to configure. ALSA uses module names for audio driver configuration — in this case, Intel HDA is represented by the snd-hda-intel driver, and USB devices by the snd-usb-audio driver. Investigating the ALSA Support Matrix will help you identify the drivers for your particular cards.

My configuration means I have to add the following lines to /etc/modprobe.d/alsa-base

This tells ALSA to prepare five devices. To make the HDA Intel device appear as hw:0, add the following line:

Remember the ID numbers we noted down before? Here’s where they come in. ALSA expects USB device IDs in the form

so the internal microphone is

To give the internal microphone the device number hw:1, we enter the line

To configure multiple cards, I had to enter them on the same line, like this:

where is the vid number of the card corresponding to the card you want to appear first, and

is the pid number of that card, and so on. It can get confusing!

My configuration looks like:

Information as of 2014, March 20

The restart of the alsa system can be done with the command «sudo alsa force-reload». If that does not help getting the sound working in the USB headset, a full reboot will do it.

In one case, on a Logitech USB Headset, on an IBM/Lenovo Thinkpad laptop the above configuration with HDA Intel having the priority as first sound card did not allow for the sound to be output to the headset, so it had to be reverted.

Here is the information about this USB headset:

Here is what the end of the alsa-base.conf looks like now.

By doing so, the sound vanishes once the headset is unplugged, and the configuration needs to be reverted and the system rebooted in order to have the sound coming out of the integrated speakers. (But if the headset is plugged in again, the audio program can be resumed).

I also tried to configure the thinkpad_acpi audio control (some buttons to raise/lower or pause the sound above the keyboard of the laptop), but this didn’t work so far.

UbuntuStudio/UsbAudioDevices (последним исправлял пользователь meets 2014-03-20 14:32:11)

The material on this wiki is available under a free license, see Copyright / License for details
You can contribute to this wiki, see Wiki Guide for details

Источник

определение внешней USB звуковой карты

Внешняя usb-звуковая карта определяется в нескольких разных линукс-дистрах и с разными ядрами как voip-телефон, при этом исп-ся модуль cm109.

На сайте производителя драйвера под линукс нет.

Читайте также:  Windows drive google com

Пробовал передавать все доступные параметры модуля — всё равно кнопки на звуковой некорректно работают-громкость резко увеличивается или резко уменьшается. Как можно правильно сконфигурить сабж?

И сам факт того, что звуковая определяется как voip-телефон- это из-за одинакового чипсета?

lsusb -l aplay -l aplay -L

давай сюда вывод.

сам факт того, что звуковая определяется как voip-телефон- это из-за одинакового чипсета?

скорее всего да

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

менеджер горячих клавиш запущен или оно аппаратное?

все параметры модуля cm109 были опробованы:

результат тот же. при этом еще загружается модуль snd_usb_audio:

может имеет смысл явно запретить в ядре исп-ие модуля cm109 и карта определится нормально?

попробовал-теперь кнопки на звуковой вообще не увеличивают и не уменьшают громкость, в логе:

ну т.е. VendorID и ProductID правильные, куда дальше копать не знаю(((

модуль cm109 отсутствует:

cm109 Это не тот модуль. Нужен модуль ALSA. Судя по aplay она вообще не видит эту карту. Поищи здесь http://www.alsa-project.org/main/index.php/Matrix:Main . Если есть модуль для твоего чипа, то есть и настройки, если нет, то увы, карту не завести.

не всё так просто, прописал в /etc/modprobe.d/alsa-base.conf

в списке aplay карта была ранее вторая, теперь первая:

ситуация та же- через нее звук играется, но кнопки на звуковой некорректно увеличивают, уменьшают звук (резко до максимума или до минимума)

насколько я понимаю, воспроизведение звука обеспечивает модуль snd-usb-audio, а вот управление кнопками (keymap) занимается модуль cm109 (при этом все параметры keymap этого модуля перепробовал-то же самое. )

на сайте производителя есть только драйвер под винду Cmedia USB Audio Driver, и чип на сайте CM108AH (http://www.cmedia.com.tw/ProductsDetail/page-p/C1Serno-25/C2Serno-26/PSerno-7. ), а не CM109.

как вообще идеологически правильно в линухе прикручивать подобные устройства -> headset phone usb device (пересобирать ядро?)

Какой смысл пересобирать? Тем более udev все должен подключать автоматически.

я думал, что если в ядре явно убрать поддержку модуля CM109 (для voip-телефонов), ядро сможет подгрузить более подходящий модуль с более правильной kymap. Попробовал-unsuccessfull ((

Звуковуха на CM106, кнопки обычное hid устройство.

showkey при нажатии кнопок, что показывает? ‘dmesg | tail’ после втыкания зкуковухи?

Источник

Настройка usb звукового устройства, неизвестного ALSA

Имеется китайский DAC с usb входом на чипе C-Media CM6631. Сам чип явным образом не поддерживается ALSA, однако в списке имеется DAC Asus Xonar Essence One с тем же чипом, который поддерживается полностью: http://www.alsa-project.org/main/index.php/Matrix:Vendor-Asus

Под Ubuntu 16.04 DAC работает, но только в умолчальном режиме: 16бит/48Кгерц, громкость программная. А хочется всего. Под Windows с драйверами от C-Media DAC работает в полном объёме — можно установить любые частоты дискретизации и разрядность, включить сигнальный процессор. Без драйверов от C-Media DAC работает только в режиме 16/44 с программной громкостью, и Windows не пытается искать для него драйвера — говорит, что всё ништяк, все драйвера имеются.

Вопрос: как сказать ALSA, что мой DAC — это Asus Xonar Essence One?

Напрямую девайс в плеере укажи, у тебя ALSA ресемплит. Все прекрасно работает.

громкость программная. А хочется всего.

Вот с этим, кстати, облом у тебя будет. Нет там громкости. Так что все равно программно рулить будешь.

Можно линк на DAC?

Имеется ввиду где купить

Напрямую девайс в плеере укажи, у тебя ALSA ресемплит. Все прекрасно работает.

Всё прекрасно работает — это, конечно, обнадёживает. Но. Я понимаю, что у меня «ALSA ресемплит». Вопрос — как ей сказать, чтобы она этого не делала. Разумеется, мимо ALSA никакой звук не идёт, но указать девайс в смысле ALSA — мысль хорошая. Вот например, VLS в модуле вывода alsa показывает все интерфейсы, видимые по aplay -L, и позволяет указать, каким играть. Среди них есть, например,

Читайте также:  Графическая оболочка windows что такое утилиты

и, что характерно, оно им играет flac как есть, без передискретизации. Лампочки на DAC, по крайней мере, горят как надо, и на слух тоже всё в порядке. Тогда должно быть достаточно указать в /etc/asound.conf

Имеется ввиду где купить

На aliexpress, вестимо. Но я свой лет пять назад покупал, теперь таких нет. Но есть аналогичные по смыслу, только надо тщательно следить, чтобы продали то, что надо. Китайцы и хитрые, и разбираются слабо.

Я свой DAC изначально покупал под SPDIF, а usb интерфейс (это отдельная плата, и надо отдельно указать) взял потому, что в комплекте дешевле. Пока оно играло mp3 — меня режим 16/48 вполне устраивал 🙂

Кстати, что не так с аппаратной громкостью?: aplay -L

В других плеерах ты так же само можешь указывать в качестве устройства вывода не default у ALSA, а hw:0. Но при этом у плеера будет эксклюзивный доступ к карте, другие приложения вывести на ЦАП ничего не смогут, пока плеер запущен.

на ctl ругается? Создай такую же секцию под него.

всё по-умолчанию играло через этот интерфейс

Если именно «по умолчанию» — тебе default нужен. Но тут уже или программная обработка (как оно у тебя сейчас есть — для работы всяких там микшеров, громкостей и т.п.), или эксклюзивный доступ. Или делать какой-то промежуточный вариант — например, разрешить софтовые примочки, но тут же ресемплить все на какую-то высокую частоту для ЦАПа.

Кстати, что не так с аппаратной громкостью?

Ну, у меня ее, например, просто нет. В микшере можно только заглушить звук.

Меняй софтово, если на ЦАПе ручки нет.

В других плеерах ты так же само можешь указывать в качестве устройства вывода не default у ALSA, а hw:0. Но при этом у плеера будет эксклюзивный доступ к карте, другие приложения вывести на ЦАП ничего не смогут, пока плеер запущен.

Хех. Опять же — это не совсем так. Эксклюзивный доступ будет к устройству в смысле ALSA. Ежели карта имеет несколько независимых устройств — нивапрос играть каждым. Кроме того, может быть dmix. Софт может уметь им пользоваться. В случае CM6631 — всё это есть. По aplay -L показывается.

А вот с использованием — всё очень непонятно. Конкретно — я хочу заставить KODI играть через hw интерфейс. Конкретно в KODI руками указать это невозможно, хотя какие-то похожие настройки есть. Но — при любых манипуляциях настройками KODI играет через интерфейс sysdefault (ну, насколько я понял), который 16/48

при любых манипуляциях настройками KODI играет через интерфейс sysdefault (ну, насколько я понял), который 16/48

Попробуй просто не создавать новый девайс, а описать все желаемое в рамках default.

программная обработка (как оно у тебя сейчас есть — для работы всяких там микшеров, громкостей и т.п.)

В CM6631 есть аппаратные микшеры и громкости. Там много чего есть, только «Supports USB Audio Class 2.0 and high-speed mode with Cmedia vendor drivers» ( https://www.cmedia.com.tw/products/USB20_HIGH_SPEED/CM6631A ) Ну и что из этого китайцы подключили.

Ага. Похоже, проще на это попросту не рассчитывать.

Дело, видимо, все же не в китайцах.

На трёх ноутбуках DAC определяется и работает искаропки. ALSA устанавливает умолчальным устройством 16/48, но в проигрывателях, в которых можно выбрать, чем играть (VLC, Deedbeaf) — выбор устройства hw приводит к проигрыванию звука с частотой дискретизации исходного файла.

Но только не на том компьютере, с которого всё началось. Там при любых установках, любых настройках ALSA и в любом проигрывателе играется 16/48 🙁 Возможно, на старой плате кривой usb.

А может оно на USB 1.1 заводится? Глянь в dmesg при подключении.

Источник

Оцените статью