Кухонное интернет радио. На дровах.

С каждой новой реализацией градус хардкора растет :).

Предыдущая реализация, работающая на KODI, иногда залипала по непонятным причинам (не подключать же монитор, для "посмотреть" что там случилось), да и как верно заметил klink0v 40 зеленых президентов несколько многовато для такой задачи (+к этому надо прибавить ВайФай брелок и звуковую карту).

Изначальное реализация предполагала использовать модуль hlk-rm04 с установленной OpenWRT. Пока модуль лежит в коробке, приспособим под это дело останки роутера, коих у меня накопилось некоторое количество, да и на авито при желании их можно взять от 300 рублей за штуку, что будет дешевле даже недавно ставшего известным Омега2. Благо даже инструкция есть.

Разбираем роутер, и распаиваем гребенку для доступа к ком порту. (Можно и без этого обойтись, если включить пакет с SSH сервером).

Подключаем "переходник" USB->UART и звуковую карту

В инструкции предлагается два пути "трудный" и "простой" (взять готовый файлик и залить в роутер). Я так и сделал, но внезапно оказалось, что WPA2 в клиентском режиме оно не понимает. (Возможно и понимает - я в качестве параметра писал wpa2, а не psk2).

Сложный путь предполагает сборку из исходников. СВН репозиторий ушел в небытие, а так как я не настоящий сварщик по линуксам, я выбрал нечто среднее - собрать образ :)

Создаем образ.

Крайнее, что можно запустить на Асус520Гу - "Backfire", оно же 10.03. Ничего не получилось - виснет напрочь. Пришлось пилить на основе kamikaze/8.09.2 .

Добываем компутер с линуксом. У меня оказалась Убунта 16-какая-то. Скачиваем собиралку образов OpenWrt-ImageBuilder-brcm-2.4-for-Linux-x86_64.tar.bz2 куда нибудь.

mkdir ~/kam.8.09.2.ib
cd ~/kam.8.09.2.ib

wget https://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/OpenWrt-ImageBuilder-brcm-2.4-for-Linux-x86_64.tar.bz2

и распаковываем

tar -xvjf OpenWrt-ImageBuilder-brcm-2.4-for-Linux-x86_64.tar.bz2

теперь можно собрать образ
* Несмотря на указание профиля Броадком - собирается без вайфая, добавил kmod-brcm-wl wlc nas kmod-wlcompat
* mpd в пакетах какой-то неполноценный. собранный без возможности играть потоковое аудио при попытке добавить поток, вылезает вот такое вот:

root@OpenWrt:/# mpc add http://air2.radiorecord.ru:805/rr_320
adding: http://air2.radiorecord.ru:805/rr_320
error: ACK [50@0] {add} unsupported URI scheme

* пакет mpd брал у автора инструкции, и заменил в каталоге packages на mpd_0.13.2-1_mipsel.ipk 
* alsa-lib остался от старого пакета mpd, без него не запускалось mpd: can't load library 'libasound.so.2'
* dropbear добавил для SSH
* -ppp -ppp-mod-pppoe убрал ибо не требуется
* можно выкинуть сразу firewall
* можно было бы выкинуть dnsmasq, но без него "пропадает" локалхост, и mpc не запускается.
* можно было бы выкинуть еще чего нибудь, но он и так отлично влезает в 4 мегабайта флеша.


cd OpenWrt-ImageBuilder-brcm-2.4-for-Linux-x86_64

make image PROFILE="Broadcom" PACKAGES="kmod-usb-core kmod-usb-ohci kmod-usb-audio kmod-sound-core alsa-lib madplay mpc mpd dropbear -ppp -ppp-mod-pppoe kmod-brcm-wl wlc nas kmod-wlcompat"

После минутного ожидания получаем файлик openwrt-brcm-2.4-squashfs.trx размером 2 428 928 байт (еще полтора мегабайта осталось). Прошиваем. Подключаем USB-UART (раз уж распаяли гребенку). Pin 1 (От белой полоски): 3.3V; Pin 2: RX; Pin 3: TX; Pin 4: GND (источник. но землю и +3.3 можно и так померить, а РХ/ТХ найти :)). Открываем консольку (новую, Ctrl+Alt+T) для посмотреть что там творится на порту

sudo screen /dev/ttyUSB0 115200

Переводим роутер в режим загрузки прошивки: - Выключаем - Нажимаем и держим кнопку ресет - Подключаем питание - Как только светодиод питания "заморгал" - отпускаем кнопку ресет На компьютере выставляем для соединения адрес 192.168.1.2/24 В окне терминала

Reading :: TFTP Server.
Failed.: Timeout occured
Reading :: TFTP Server.
Failed.: Timeout occured

В консольке, где собирали образ переходим в каталог bin, и заливаем

cd bin
tftp
timeout 1
mode binary
connect 192.168.1.1
put openwrt-brcm-2.4-squashfs.trx

В процессе заливки

Reading :: TFTP Server.
TFTP_BLKLEN!!
break!! last block!!
Done. 1918724 bytes read
Download of 0x1d4704 bytes completed
Write kernel and filesystem binary to FLASH (0xbfc20000)

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

Programming...
copysize=1918724, amtcopy=1918724

как только появилось - все ок, "перезагружаем" (питание дергаем) роутер. После перезагрузки ждем появления строк

mini_fo: using base directory: /
mini_fo: using storage directory: /jffs

давим ентор и переходим к настройке

Настройка. Для настройки надо прокачать навыки владения vi /VI - текстовый редактор кошмар для случайного пользователя. Если его удается в конце-концов закрыть, то вздыхаешь с облегчением и твердой уверенностью, что больше не будешь запускать эту программу ни в коем случае/ Беспроводное соединение (изменяемые строки жирные) vi /etc/config/wireless config wifi-device wl0 option type broadcom option channel 5 # Канал, точки доступа # комментируем строку ниже # option disabled 1 config wifi-iface option device wl0 option network lan option mode sta # клиентский режим option ssid MyNetwork # SSID сети option encryption psk2 # WPA2 option key XXXXXXXXXX # ключ сети X...X Сетевые настройки (изменяемые строки жирные) vi /etc/config/network #### LAN configuration config interface lan option type bridge option ifname "eth0.0" option proto dhcp #option ipaddr 192.168.1.1 #option netmask 255.255.255.0 Перезапускаем сетку /etc/init.d/network restart Проверяем root@OpenWrt:/# ping www.ya.ru PING www.ya.ru (213.180.193.3): 56 data bytes 64 bytes from 213.180.193.3: seq=0 ttl=56 time=92.837 ms 64 bytes from 213.180.193.3: seq=1 ttl=56 time=27.538 ms Настраиваем mpd (хотя у меня он и так работал, без залезания в конфиг) vi /etc/mpd.conf находим буквы похожие на, и убираем # # An example of an OSS output: # audio_output { type "oss" name "My OSS Device" device "/dev/sound/dsp" format "44100:16:2" } тут его бы стоило перезагрузить (я вместе с роутером перегружал) Проверяем как оно давим mpc если видим нечто вида root@OpenWrt:~# mpc volume:100% repeat: off random: off стало быть работает. добавляем поток mpc add http://air2.radiorecord.ru:805/rr_320 и включаем воспроизведение mpc play В процессе воспроизведения потребляет ресурсы в пределах 30-60 процентов, но в целом производительности "процессора" в 240МГц хватает.

Разного рода пичаль: - Не всегда поднимается сеть после запуска "роутера". После рестарта поднимается всегда. Добавил буков в секцию boot(): ifup -a, но все равно иногда не поднимается. Возможно, стоит сетку поднимать после USB - Щелкает звуковуха, примерно как при проигрывании с пластинки. Включенная в Одроид-Ц1+ подобного не наблюдалось. Жду с китая "нормальную". Возможно артефакты декодирования. - В процессе сборки образа надо допилить файле rules.mk: закомментировать 19ю строку export SHELL=/usr/bin/env bash -c '. $(TOPDIR)/include/shell.sh; eval "$$2"' --  и добавить примерно 149ю export SH_FUNC:=. $(INCLUDE_DIR)/shell.sh;  - Литрушка напитка со скрина ИМХО многовато :( UPD 12.09.16 Поменял звуковуху на пришедшую с PCM2704. Щелков не стало, да и в целом звук получше стал.