Создаем Сетевую Звуковую Карту С Преферансами И Поэтессами

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

В наличии: — Один усилитель с динамиками — Один настольный компьютер — Один ноутбук — Желание слушать интернет-радио независимо от двух предыдущих пунктов и тыкания в провода В результате родился план собрать «аудиокарту по Ethernet».

Изучив вопрос совместимости оборудования, я остановил свой выбор на роутере TP-link MR3020 и USB-аудиокарте Creative SB Play. Что из этого получилось:

Создаем сетевую звуковую карту с преферансами и поэтессами

О том, как это получить, смотрите в кат. Начну сразу с цены.

Роутер можно найти за 700 рублей, звуковую карту за 800 рублей, USB-хаб за 200 рублей.

Итого 1700 рублей или 55$.

И почему никто до сих пор не запустил это в производство? Все недостатки прошивки OpenWRT (USB и пакетная сборка) затронули только предыдущую версию 10.03. Последняя стабильная версия 12.09 почти идеальна.



Перемещение раздела /overlay на USB-накопитель
На роутере около 800кб свободного места.

Чтобы нас это не беспокоило, подключим к роутеру флешку.

Сначала форматируем раздел на флешке в ext4. Инструкции уже есть Есть , суммируя:

обновление опкг opkg install блок-монтирование блок-горячее подключение блок-извлечение kmod-usb-core kmod-usb2 kmod-usb-ohci kmod-usb-storage kmod-fs-ext4 mkdir /mnt/sda1 монтировать /dev/sda1 /mnt/sda1 tar -C /overlay -cvf - .

| tar -C /mnt/sda1 -xf —

В /etc/config/fstab пишем
конфигурация монтирования параметр цель/оверлей дополнительное устройство /dev/sda1 опция fstype ext4 опции опции rw,синхронизация опция включена 1 опция Enabled_fsck 0
Перезагрузите роутер и проверьте:
крепление | Греп СДА /dev/sda1 на типе /overlay ext4 (rw,sync,relatime,user_xattr,barrier=1,data=ordered)


Подключение USB-аудиокарты
Установка необходимых модулей
opkg установить kmod-usb-audio kmod-sound-core
Подключаем флешку звуковой карты к USB хабу и проверяем:
dmesg | grep -я аудио [41.080000] usbcore: зарегистрирован новый драйвер интерфейса snd-usb-audio


Настройка пульсаудио
opkg установить пульсаудио-демон
Отредактируйте /etc/pulse/system.pa:
load-module Module-native-protocol-unix auth-anonymous=1 # для ПО, запускаемого с самого роутера load-module Module-alsa-sink device=hw:0,0 tsched=0 #tsched=0 — грязный хак для устранения треска и хрипа load-module module-simple-protocol-tcp port=4712rate=44100 format=s16lechannels=2 # для воспроизведения звука из окон load-module modul-rtp-recv # для воспроизведения звука с устройств Linux через Wi-Fi load-module Module-native-protocol-tcp auth-anonymous=1 # для воспроизведения звука с устройств Linux через Ethernet
Pulsaudio запускается как пользовательский импульс, поэтому мы редактируем скрипт инициализации, чтобы предоставить права на запись для аудиоустройств /etc/init.d/pulseaudio:
  
  
   

--- pulseaudio_old 2013-06-19 12:30:18.425539419 +0400 +++ pulseaudio 2013-06-19 12:30:04.077704388 +0400 @@ -19,6 +19,9 @@ chmod 0750 /var/lib/pulse chown pulse:pulse /var/lib/pulse } + [ -d /dev/snd ] && { + chown -R pulse:pulse /dev/snd + } service_start /usr/bin/pulseaudio --daemonize --system --disallow-exit --disallow-module-loading --disable-shm --exit-idle-time=-1 }

Добавьте PulseAudio в автозагрузку и запустите:
/etc/init.d/pulseaudio включить /etc/init.d/pulseaudio начало
Добавьте свежеиспеченный аудиосервер к источнику звука:
pacmd модуль загрузки модуля-туннеля-приемника server=%serverIP% pacmd set-default-sink 1 # номер может меняться в зависимости от выходного списка pacmd list-sink
Попробуем воспроизвести звук.



Обучение MPD работе с PulseAudio
Внимание, хардкор! Составить MPD может быть проще, но я пошел другим путем.

Загрузите исходники OpenWRT:

СВНКО svn://svn.openwrt.org/openwrt/tags/attitude_adjustment_12.09/
Собираем SDK (не забываем указать ваш роутер и платформу в make менюconfig):
компакт-диск Relationship_adjustment_12.09 сделать инструменты/установить сделать набор инструментов/установить
Получаем фиды с приложениями и «устанавливаем» их в свою песочницу:
.

/scripts/обновление каналов .

/scripts/feeds установить пульсаудио .

/scripts/feeds установить mpd

Пакет Pulseaudio dev не устанавливает все библиотеки, поэтому редактируем package/feeds/packages/pulseaudio/Makefile:

--- Makefile_old 2013-06-19 12:12:00.458287669 +0400 +++ Makefile 2013-06-19 12:07:43.225298052 +0400 @@ -139,7 +139,8 @@ $(INSTALL_DIR) \ $(1)/usr/lib/pkgconfig \ $(1)/usr/include/pulse \ - $(1)/usr/lib + $(1)/usr/lib \ + $(1)/usr/lib/pulseaudio $(CP) \ $(PKG_INSTALL_DIR)/usr/include/pulse/* \ $(1)/usr/include/pulse @@ -149,6 +150,9 @@ $(CP) \ $(PKG_INSTALL_DIR)/usr/lib/*.

so* \ $(1)/usr/lib/ + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/pulseaudio/*.

so* \ + $(1)/usr/lib/pulseaudio/ endef define Package/pulseaudio-daemon/install

Редактирование Makefile для mpd (package/feeds/packages/mpd/Makefile):

--- Makefile_old 2013-06-18 17:47:56.277865458 +0400 +++ Makefile 2013-06-18 17:37:35.037187159 +0400 @@ -49,7 +49,7 @@ DEPENDS+= \ +AUDIO_SUPPORT:alsa-lib \ +libaudiofile +BUILD_PATENTED:libfaad2 +libffmpeg +libid3tag \ - +libmms +libogg +libshout +libsndfile +libvorbis + +libmms +libogg +libshout +libsndfile +libvorbis +pulseaudio-daemon PROVIDES:=mpd VARIANT:=full endef @@ -137,7 +137,7 @@ $(if $(CONFIG_BUILD_PATENTED),MAD_LIBS="$(TARGET_LDFLAGS) -lmad") \ TARGET_CFLAGS += -std=gnu99 -TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib +TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib,-rpath-link=$(STAGING_DIR)/usr/lib/pulseaudio # use gcc instead of g++ to avoid unnecessary linking against libstdc++ TARGET_CXX:=$(TARGET_CC) @@ -160,6 +160,7 @@ --enable-sndfile \ --enable-vorbis \ --enable-vorbis-encoder \ + --enable-pulse \ --with-faad="$(STAGING_DIR)/usr" \ --with-tremor=no \

Запустите make menuconfig, выберите Sound/pulseaudio-daemon, Libraries/libffmpeg-mini, а затем Sound/mpd-full. Последний этап:

сделать пакет/mpd/компилировать сделать пакет/mpd/установить
Если все прошло без ошибок, то мы должны получить готовую посылку.

bin/ar71xx/packages/mpd-full_0.16.5-2_ar71xx.ipk .

Если компилятор на что-то жалуется, то запустите сделать пакет/mpd/компилировать V=99 и посмотреть, что именно пошло не так.

Скопируйте пакет в маршрутизатор scp bin/ar71xx/packages/mpd-full_0.16.5-2_ar71xx.ipk tplink_ip:/tmp и установите пакет mpd:

обновление опкг opkg установить завиток rm /tmp/opkg-lists/attitude_adjustment opkg install /tmp/mpd-full_0.16.5-2_ar71xx.ipk
Настройте MPD /etc/mpd.conf:
вход { плагин "завиток" } аудио выход { набери "импульс" имя «Мое устройство» }
Включаем его в автозагрузку и запускаем:
/etc/init.d/mpd включить /etc/init.d/mpd начало
Давайте проверим это на Linux:
МПЦ добавить pub4.di.fm :80/di_latinhouse MPC играть
Или в Windows, установив QMPDClient (ИМХО лучший мультиплатформенный клиент mpd).



проблема с AAC
Стандартная библиотека libfaad2 играет aac при 100% загрузке процессора, т.к.

на роутерах процессоры плохо справляются с вычислениями с плавающей запятой.

Для таких случаев разработчики библиотеки предусмотрели опцию FIXED_POINT, но разработчики OpenWRT не успели ею воспользоваться до релиза.

Relationship_adjustment_12.09 .

В последней версии Makefile для faad2 добавлена возможность компиляции с FIXED_POINT. Просто загрузите последнюю версию Makefile:

wget dev.openwrt.org/export/34527/packages/libs/faad2/Makefile
Выберите в сделать конфигурацию меню Дополнительные параметры конфигурации -> Целевые параметры -> Использовать программную плавающую запятую по умолчанию и перекомпилировать пакет:
сделать пакет/faad2/компилировать сделать пакет /faad2install
Получаем пакет bin/ar71xx/packages/libfaad2_2.7-2_ar71xx.ipk, устанавливаем его так же, как и mpd (только в данном случае командой opkg update).

Наслаждаемся теплым ламповым звучанием AAC.

Подключение Windows в качестве источника звука
Я нашел единственное работоспособное решение для трансляции звука в PulseAudio из Windows. Здесь .

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

Виртуальный аудиокабель .

Это запускается по моему имени летучей мыши:

linco.exe -B 16 -C 2 -R 44100 | nc.exe tplink_IP 4712
Да, есть задержки звука, особенно по Wi-Fi, но при просмотре видео это легко исправляется настройками плеера.

Вместо bat-файлов можно попробовать запустить linco через srvany. У кого получится, просьба отписаться в комментариях.



Моддинг
Те, кто хорошо владеет паяльником и руками (если вы это читаете, значит, вы наверняка хорошо владеете руками?), смогут собрать все в один корпус.

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

Таким образом получилось повернуть сами разъемы на 90 градусов.

На самом роутере я отпаял от платы контакты USB-разъёма, провёл провода от самой платы к USB-хабу, а от самого USB-хаба провёл провода к внешнему USB-разъёму.

В корпусе фрезера я просверлил два отверстия для гнезд и мне удалось все уместить достаточно компактно.

К сожалению, плотно закрыть крышку роутера уже невозможно, но для этих нужд умные люди придумали синюю изоленту.

На что это похоже:

Создаем сетевую звуковую карту с преферансами и поэтессами

Рабочее место в 2 часа ночи:

Создаем сетевую звуковую карту с преферансами и поэтессами

Незаменимая вещь в хозяйстве.

Планируем сделать еще один такой для кухни, а также подключить OLED-дисплей через I2C и ИК-приемник через UART. P.S. Комментарии и сообщения об ошибках принимаю в личку.

П.

П.

С.

Для тех, кто не хочет компилировать, вот скомпилированные пакеты mpd и libfaad2. rghost.ru/46934574 rghost.ru/46934558 УПД: 06.10.2013 — rghost.net/49184760 Pulsaudio 4.0 для OpenWRT Теги: #pulseaudio #OpenWRT #linux #mpd #tp-link #MR3020 #TL-MR3020 #open source

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.