С каждой новой реализацией градус хардкора растет :).
Предыдущая реализация, работающая на 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_320adding:
http://air2.radiorecord.ru:805/rr_320error: 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. Щелков не стало, да и в целом звук получше стал.