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

Aug 22, 2016 02:26

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


Предыдущая реализация, работающая на 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. Щелков не стало, да и в целом звук получше стал.

diy, openwrt, iot, linux

Previous post Next post
Up