Задать вопрос

Как сделать id usb-устройства статическим?

Всем доброго времени суток!
Поставил mpd-плеер и подключил две внешних usb-аудиокарты, транслирую на каждую различную музыку, но проблема в том, что мне нужна определенная музыка с определенных каналов, что возможно, если настроить машину и не перезагружать, после перезагрузки же usb устройства меняются местами и я хотел бы это исправить, но не могу найти где это сделать
устройства смотрел через так:
#cat /proc/asound/cards
 0 [Codec          ]: H3_Audio_Codec - H3 Audio Codec
                      H3 Audio Codec
 1 [Device         ]: USB-Audio - USB PnP Sound Device
                      C-Media Electronics Inc. USB PnP Sound Device at usb-1c1b400.usb-1, full speed
 2 [Device_1       ]: USB-Audio - USB Audio Device
                      GeneralPlus USB Audio Device at usb-1c1d400.usb-1, full speed

тоже, что и aplay -l
Подскажите, пожалуйста, может можно как-то в файл cards дописать что-то, чтобы закрепить порядковый номер за определенной картой?
  • Вопрос задан
  • 930 просмотров
Подписаться 3 Средний Комментировать
Решения вопроса 1
@ceh9_lat Автор вопроса
После долгих поисков я наткнулся на интересный файл /etc/modprobe.d/alsa-base.conf
У меня его содержимое было таково:
options snd-usb-audio index=1
# autoloader aliases
install sound-slot-0 /sbin/modprobe snd-card-0
install sound-slot-1 /sbin/modprobe snd-card-1
install sound-slot-2 /sbin/modprobe snd-card-2
install sound-slot-3 /sbin/modprobe snd-card-3
install sound-slot-4 /sbin/modprobe snd-card-4
install sound-slot-5 /sbin/modprobe snd-card-5
install sound-slot-6 /sbin/modprobe snd-card-6
install sound-slot-7 /sbin/modprobe snd-card-7

# Cause optional modules to be loaded above generic modules
install snd /sbin/modprobe --ignore-install snd $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-ioctl32 ; /sbin/modprobe --quiet --use-blacklist snd-seq ; }
#
# Workaround at bug #499695 (reverted in Ubuntu see LP #319505)
install snd-pcm /sbin/modprobe --ignore-install snd-pcm $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-pcm-oss ; : ; }
install snd-mixer /sbin/modprobe --ignore-install snd-mixer $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-mixer-oss ; : ; }
install snd-seq /sbin/modprobe --ignore-install snd-seq $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; /sbin/modprobe --quiet --use-blacklist snd-seq-oss ; : ; }
#
install snd-rawmidi /sbin/modprobe --ignore-install snd-rawmidi $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq-midi ; : ; }
# Cause optional modules to be loaded above sound card driver modules
install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-emu10k1-synth ; }
install snd-via82xx /sbin/modprobe --ignore-install snd-via82xx $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist snd-seq ; }

# Load saa7134-alsa instead of saa7134 (which gets dragged in by it anyway)
install saa7134 /sbin/modprobe --ignore-install saa7134 $CMDLINE_OPTS && { /sbin/modprobe --quiet --use-blacklist saa7134-alsa ; : ; }
# Prevent abnormal drivers from grabbing index 0
options bt87x index=-2
options cx88_alsa index=-2
options saa7134-alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
options snd-usb-audio index=-2
options snd-usb-caiaq index=-2
options snd-usb-ua101 index=-2
options snd-usb-us122l index=-2
options snd-usb-usx2y index=-2
# Ubuntu #62691, enable MPU for snd-cmipci
options snd-cmipci mpu_port=0x330 fm_port=0x388
# Keep snd-pcsp from being loaded as first soundcard
options snd-pcsp index=-2
# Keep snd-usb-audio from beeing loaded as first soundcard
options snd-usb-audio index=-2

и это именно тот файл, где можно статически привязать звуковые карты
Так как я хотел задать статические значения для звуковых устройств, если смотреть их через aplay - l, то это цифра, после слова "card", пришлось залезть в /proc/asound/, где я увидел card1 и card2, если заглянуть в эти директории, то можно увидеть файл usbid, в котором увидел значения наподобие xxxx:xxxx, далее, я взял это значение и прописал его в /etc/modprobe.d/alsa-base.conf в виде
options snd-usb-audio index=2 id="xxxx:xxxx"
где snd-usb-audio - это идентификатор любой usb-аудиокарты
index - порядковый номер
id - usbid, а котором говорилось выше
После добавления перезагрузил машину, прописал aplay - l
и получил желаемый результат, сколько бы не перезагружался, сколько бы не переставлял карты, они всегда будут под тем номером, который я прописал в index
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@q2digger
никого не трогаю, починяю примус
Я не пробовал такого в USB звуковыми картами, но USB модемы развешивать по правильным устройствам, нам помогает udev. Вот для начала ссылочка, там примеры есть неплохие.
https://www.tecmint.com/udev-for-device-detection-...
Ответ написан
Комментировать
@Krakish
Был такой вопрос только с Arduino. Также пользовался rules в udev. Сделал по этому примеру, все работает:
Вы можете попробовать создать правило udev, которое создаст символическую ссылку на это USB-устройство, а затем вы сможете использовать что-то вроде / dev / myUSB, которое всегда будет оставаться неизменным для этого конкретного USB-устройства.

Сначала вам нужно найти некоторую идентифицирующую информацию для USB-накопителя. При наборе lsusb должна отобразиться некоторая информация, которая выглядит следующим образом:

Bus 001 Device 004: ID 0403:6001 Future Technology Devices International

В этом примере 0403 - это идентификатор поставщика, а 6001 - это идентификатор продукта.

Создайте файл с именем 99_usbdevice.rules (я не думаю, что имя имеет значение, просто каталог):

sudo nano /etc/udev/rules.d/99_usbdevices.rules

Обратите внимание, что каталог выше может быть специфичным для Raspbian.

Скопируйте / вставьте строку ниже в файл и сохраните ее:

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="myUSB"

Перезагрузите Pi или отключите USB и снова вставьте его. Теперь должна быть запись / dev / myUSB, которую вы можете использовать так же, как и запись ttyUSB #.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы