В виду того, что мой принтер сломался, остался пустой USB на маршрутизаторе, решил поиграться со звуком.
К примеру, Windows Media Player умеет воспроизводить поток, который передаёт телефон (через DLNA или Airplay), всё здорово, давайте научим этому OpenWRT.
Для начала необходимо добыть USB-звуковую карту, на всем известном китайском сайте обнаружил такую за 99 центов, пока она ехала, изучал матчасть, поехали…
(Прошу учесть, что устанавливаемое ПО в маршрутизатор достаточно большое, необходимо иметь минимум 16 мегабайт флешку)
Изучаем сам процесс: телефон (DLNA transmiter) -> маршрутизатор -> upmpdcli (DLNA decoder) -> MPD Player -> ALSA -> Звуковая карта.
(ALSA — Advanced Linux Sound Architecture)
Теперь по каждому пункту отдельно:
Звуковая карта:
Подключаем звуковую карту, устанавливаем необходимые пакеты
kmod-usb-audio kmod-sound-core
Проверяем: cat /proc/asound/cards
, в ответ получаем нечто типа
0 [Device ]: USB-Audio - USB Audio Device GeneralPlus USB Audio Device at usb-1e1c0000.xhci-1, full speed
Теперь нам нужно установить MPD Player и DLNA Render. Это основной проигрыватель, который будет воспроизводить звук. Есть несколько ревизий, нам нужна ревизия full, это и съедает основное место
mpd upmpdcli
Теперь минимум настроек. Необходимо открыть файл конфигурации проигрывателя /etc/mpd.conf
и найти нечто похожее «An example of an ALSA output» и раскоментировать весь этот блок, Получится нечто подобное:
# An example of an ALSA output: audio_output { type "alsa" name "My ALSA Device" device "hw:0,0" # optional mixer_type "hardware" # optional # Изменить на "software" чтобы работал регулятор громкости в приложении mixer_device "default" # optional mixer_control "PCM" # optional mixer_index "0" # optional }
Сохраняем, перезагружаем маршрутизатор.
Приложение в телефоне может быть любое. я видел много DLNA — игралок, больше всего понравилась «Передача на Xcast ТВ». Открываем приложение, находим наш приёмник 🙂
Наслаждаемся 🙂
P.S.
Очень долго мучился чтобы появилась регулировка громкости из вещалки на телефоне. Уже даже добрался до исходников, которые гласили, что если это связка udmdcli + mpd, то идите лесом, демон сам умеет управлять громкостью и у кли громкость ставится 100%. Да, действительно, программным методом MPD умеет управлять громкостью, но почему нельзя было просто дописать маленькую строку в конфиг, как это сделал я???
Измените mixer_type «hardware» на «software» если у вас повисает служба mpd, или просто перестаёт играть музыка. Тоже добавило несколько седых волос