Здравствуй, мой читатель!
Расскажу тебе о российской разработке — миниатюрном компьютере Black Swift, о его применении для создания мобильного Wi-Fi интернетрадио и трансляции звукового потока с компьютера. Если у тебя нету этого маленького компьютера (а скорее всего купить Black Swift в ближайшее время ты не сможешь), то сделать трансляцию потока звука со своего компьютера ты сможешь с помощью любого роутера под OpenWRT.
В конце декабря 2014 г., я прочитал статью на всем известном сайте
habrahabr.ru/company/blackswift/blog/246673/ про российскую разработку. Black Swift — это очень маленький компьютер для самодельщиков с мощным для такого размера процессором и большим объемом памяти. Сделал предзаказ на компьютер, корпус и стал «ждуном» этой маленькой платки.
Платку получил неделю назад — в середине января 2016 г. Почему так произошло — ответ прост. Сначала накосячили китайцы и первую партию плат пришлось перевыпускать. Потом разработчики разругались и исчезли на некоторое время. Появились только осенью 2015. Точнее появились две компании, которые занимаются этим проектом —
www.black-swift.ru/ и
www.unwireddevices.ru/. Активисты занялись рассылкой заказов с
www.black-swift.ru/ (мой случай), а
www.unwireddevices.ru/ заявила, что будет дальше двигать проект и рассылает заказы с Kickstarter. Остался еле живой форум
www.black-swift.ru/forum. Так что, если вы хотите попробовать купить платку — то обращайтесь на форум или в
www.unwireddevices.ru/. Может быть остались лишние платы с первой партии. Жалко конечно, что так получилось — разработка очень достойная и интересная. В любом случае, то о чем я буду писать дальше можно проделать на любом роутере с прошивкой OpenWRT.
Традиционное фото упаковки, сделанной активистами (которым огромное спасибо, что помогли прислать эту платку мне и другим заказчикам). Упаковано аккуратно и надежно.
Фото платы:
Технические характеристики устройства:
Чипсет: Qualcomm Atheros AR9331
Процессорное ядро: 32-битное MIPS 24K
Рабочая частота: 400 МГц (номинальная),200 МГц (экономичный режим)
Постоянная память: 16 МБ NOR-флэш
Оперативная память: 64 МБ DDR2 SDRAM
Разъёмы: 1×microUSB (интерфейс USB),1×microUSB (питание 3,4...6 В),1×PLLD-1,27-30 (все интерфейсы, питание),1×PLLD-1,27-20 (все интерфейсы, питание)
Интерфейсы:Wi-Fi 802.11 b/g/n (1×1, до 150 Мбит/с, 2,4 ГГц, встроенная антенна),1×USB 2.0 (хост/клиент),26×GPIO (логические входы/выходы общего назначения),1×I²S/SPDIF,2×Fast Ethernet 10/100 Мбит/с,1×SPI,1×I²C,1×16550 UART
GPIO: Ток нагрузки до 24 мА
Минимальный уровень логической «1»: 2,44 В
Максимальный уровень логического «0»: 0,1 В
Максимальное входное напряжение: 3,3 В
Рекомендуемое входное напряжение: 2,75 В
Напряжение питания: 5 В (при работе с USB-портами),3,3 В (при работе без USB-портов), 3,6...6 В (при использовании встроенного стабилизатора и работе без USB-портов)
Потребляемый ток: Максимальное: 300 мА (без внешней нагрузки), Минимальное: 60 мА (200 МГц, Wi-Fi выключен)
Встроенный стабилизатор: 3,3 В, импульсный, внешняя нагрузка до 700 мА,2,75 В, линейный LDO, внешняя нагрузка до 300 мА
Суммарная внешняя нагрузка: не более 700 мА
Операционная система: OpenWRT 14.07 «Barrier Breaker»
Габаритные размеры: 25×35×4 мм
Вес: 3 г
После подключения питания через некоторое время появиться сеть «Black Swift». Подключаемся к этой сети и заходим на адресу
192.168.1.1. Вебинтерфейс Luci OpenWRT:
Внимание! Для работы с вебинтерфейсом Luci лучше использовать браузер, отличный от Mozilla Firefox. Например, тот же MS IE. Глючит Luci под Огнелисом.
Логин/пароль для первого входа — root/admin
Далее заходим в настройки WiFi делаем сканирование сетей, подключаемся к вашей домашней Wi-Fi сети, ставим галку в настройках файервола на «lan». И перегружаем устройство.
Если к сети не удастся загрузиться, то можно всегда сбросить устройство, нажав во включенном состоянии кнопку Reset на плате в течении 10 сек.
Подробнее о подключении к wi-fi тут
www.unwireddevices.com/wiki/index.php/Configuring_Wi-Fi_Network
Я на роутере в настройках DHCP прописал фиксированный IP для платки по MAC адресу. Чтобы каждый раз не искать адрес платки.
Смотрим настройки платы на стоковой прошивке:
Смотрим установленные пакеты.
Установленные пакеты
alsa-lib 1.0.27.2-1
alsa-utils 1.0.28-2
avahi-daemon 0.6.31-6
base-files 156-r46287
block-mount 2015-02-25.1-914b023e71559e033ec5a1f9840511eb1ccaf386
busybox 1.22.1-3
chat 2.4.7-2
comgt 0.32-23
dnsmasq 2.71-4
fdisk 2.24.1-1
firewall 2014-09-19
fstools 2015-02-25.1-914b023e71559e033ec5a1f9840511eb1ccaf386
fswebcam 20110717-1
gdbserver 7.5-1
glib2 2.41.1-2
hostapd-common 2014-06-03.1-2
io 1
ip6tables 1.4.21-1
iptables 1.4.21-1
iw 3.15-1
iwinfo 51
jshn 2014-08-04-dffbc09baf71b294185a36048166d00066d433b5
jsonfilter 2014-06-19-cdc760c58077f44fc40adbbe41e1556a67c1b9a9
kernel 3.10.49-1-9e41cf26ff31ce72658968ab63e490d1
kmod-ath 3.10.49+2014-05-22-1
kmod-ath9k 3.10.49+2014-05-22-1
kmod-ath9k-common 3.10.49+2014-05-22-1
kmod-cfg80211 3.10.49+2014-05-22-1
kmod-crypto-aes 3.10.49-1
kmod-crypto-arc4 3.10.49-1
kmod-crypto-core 3.10.49-1
kmod-crypto-hash 3.10.49-1
kmod-fs-autofs4 3.10.49-1
kmod-fs-ext4 3.10.49-1
kmod-fs-msdos 3.10.49-1
kmod-fs-ntfs 3.10.49-1
kmod-fs-vfat 3.10.49-1
kmod-gpio-button-hotplug 3.10.49-1
kmod-gpio-irq-handler 3.10.49-1
kmod-gpio-timer-pwm 3.10.49-1
kmod-hid 3.10.49-1
kmod-hid-generic 3.10.49-1
kmod-i2c-algo-bit 3.10.49-1
kmod-i2c-core 3.10.49-1
kmod-i2c-gpio 3.10.49-1
kmod-i2c-gpio-custom 3.10.49-2
kmod-input-core 3.10.49-1
kmod-input-evdev 3.10.49-1
kmod-ip6tables 3.10.49-1
kmod-ipt-conntrack 3.10.49-1
kmod-ipt-core 3.10.49-1
kmod-ipt-nat 3.10.49-1
kmod-ipt-nathelper 3.10.49-1
kmod-ipv6 3.10.49-1
kmod-leds-gpio 3.10.49-1
kmod-ledtrig-default-on 3.10.49-1
kmod-ledtrig-gpio 3.10.49-1
kmod-ledtrig-heartbeat 3.10.49-1
kmod-ledtrig-netdev 3.10.49-1
kmod-ledtrig-oneshot 3.10.49-1
kmod-ledtrig-timer 3.10.49-1
kmod-lib-crc-ccitt 3.10.49-1
kmod-lib-crc16 3.10.49-1
kmod-mac80211 3.10.49+2014-05-22-1
kmod-mii 3.10.49-1
kmod-nls-base 3.10.49-1
kmod-nls-cp437 3.10.49-1
kmod-nls-iso8859-1 3.10.49-1
kmod-ppp 3.10.49-1
kmod-pppoe 3.10.49-1
kmod-pppox 3.10.49-1
kmod-pwm 3.10.49-1
kmod-pwm-gpio 3.10.49-1
kmod-scsi-core 3.10.49-1
kmod-scsi-generic 3.10.49-1
kmod-slhc 3.10.49-1
kmod-sound-core 3.10.49-1
kmod-spi-bitbang 3.10.49-1
kmod-spi-dev 3.10.49-1
kmod-spi-gpio 3.10.49-1
kmod-spi-gpio-custom 3.10.49-1
kmod-timer-irq-handler 3.10.49-2
kmod-usb-audio 3.10.49-1
kmod-usb-core 3.10.49-1
kmod-usb-net 3.10.49-1
kmod-usb-net-cdc-ether 3.10.49-1
kmod-usb-net-rndis 3.10.49-1
kmod-usb-ohci 3.10.49-1
kmod-usb-storage 3.10.49-1
kmod-usb-storage-extras 3.10.49-1
kmod-usb2 3.10.49-1
kmod-usbmon 3.10.49-1
kmod-video-core 3.10.49-1
kmod-video-uvc 3.10.49-1
kmod-video-videobuf2 3.10.49-1
libattr 20140610-1
libavahi 0.6.31-6
libblkid 2.24.1-1
libblobmsg-json 2014-08-04-dffbc09baf71b294185a36048166d00066d433b5
libc 0.9.33.2-1
libcurl 7.38.0-1
libdaemon 0.14-4
libdbus 1.8.8-1
libexpat 2.1.0-1
libffi 3.0.13-1
libflac 1.2.1-1
libgcc 4.8-linaro-1
libgd 2.1.0-1
libid3tag 0.15.1b-4
libip4tc 1.4.21-1
libip6tc 1.4.21-1
libiwinfo 51
libiwinfo-lua 51
libjpeg 6b-1
libjson-c 0.11-2
libjson-script 2014-08-04-dffbc09baf71b294185a36048166d00066d433b5
liblua 5.1.5-1
libmad 0.15.1b-3
libncurses 5.9-1
libnl-tiny 0.1-3
libogg 1.3.2-2
libopenssl 1.0.2d-1
libpng 1.2.51-1
libpolarssl 1.3.9-2
libpthread 0.9.33.2-1
librt 0.9.33.2-1
libstdcpp 4.8-linaro-1
libthread-db 0.9.33.2-1
libubox 2014-08-04-dffbc09baf71b294185a36048166d00066d433b5
libubus 2014-09-17-4c4f35cf2230d70b9ddd87638ca911e8a563f2f3
libubus-lua 2014-09-17-4c4f35cf2230d70b9ddd87638ca911e8a563f2f3
libuci 2014-04-11.1-1
libuci-lua 2014-04-11.1-1
libusb-1.0 1.0.9-1
libustream-polarssl 2014-03-25-fc0b5ec804ee43c532978dd04ab0509c34baefb0
libuuid 2.24.1-1
libv4l 1.2.1-2
libvorbisidec 1.0.2+svn18153-2
libxtables 1.4.21-1
lua 5.1.5-1
luci 0.12+git-15.112.69076-6153b99-1
luci-app-firewall 0.12+git-15.112.69076-6153b99-1
luci-base 0.12+git-15.112.69076-6153b99-1
luci-i18n-russian 0.12+git-15.112.69076-6153b99-1
luci-lib-nixio 0.12+git-15.112.69076-6153b99-1
luci-mod-admin-full 0.12+git-15.112.69076-6153b99-1
luci-proto-3g 0.12+git-15.112.69076-6153b99-1
luci-proto-ppp 0.12+git-15.112.69076-6153b99-1
luci-ssl 0.12+git-15.112.69076-6153b99-1
luci-theme-bootstrap 0.12+git-15.112.69076-6153b99-1
madplay 0.15.2b-3
mjpg-streamer r182-1
motion 20110826-051001-2
mountd 0.1-6
mpd-mini 0.17.6-4
mtd 20
nano 2.3.6-1
netifd 2014-09-08.1-46c569989f984226916fec28dd8ef152a664043e
odhcp6c 2014-12-10-722226c4f1d45c8bf4ac9189523738abcf7d648f
odhcpd 2014-09-25-a6e2953843eaf6c93764f9feef10466e7a84ec85
openssh-keygen 6.6p1-1
openssh-server 6.6p1-1
openssh-sftp-server 6.6p1-1
opkg 9c97d5ecd795709c8584e972bfdf3aee3a5b846d-7
ppp 2.4.7-2
ppp-mod-pppoe 2.4.7-2
procd 2014-09-15-c1a558f7d0c1e6c1ffa5a47d557a7b45205eef1d
px5g 3
swconfig 10
terminfo 5.9-1
uboot-envtools 2014.04-4
ubox 2015-02-25.1-31f0ff358b360ee461d845c1b3b5e5d38fa27925
ubus 2014-09-17-4c4f35cf2230d70b9ddd87638ca911e8a563f2f3
ubusd 2014-09-17-4c4f35cf2230d70b9ddd87638ca911e8a563f2f3
uci 2014-04-11.1-1
uclibcxx 0.2.4-1
uhttpd 2014-10-27-fd8e5e379c23c5fbcec3e76894b839233df09067
uhttpd-mod-ubus 2014-10-27-fd8e5e379c23c5fbcec3e76894b839233df09067
usb-modeswitch 2014-07-18-01ecc3b9764d1dd89cf36ede0a2d98f9adb0cd33
usbutils 007-1
v4l-utils 1.2.1-2
wpad-mini 2014-06-03.1-2
zlib 1.2.8-1
Как видно, в стоке установлена поддержка USB, USB-Audio для подключения звуковых карт, плеер музыки madplay, урезанная версия плеера mpd-mini и много разного другого программного обеспечения.
Подключаемся по ssh через putty.exe. Смотрим сколько свободного места:
Свободного места, как видим, очень много в этой платке. Это очень хорошо.
Встроенный wi-fi уверенно ловит через две железобетонные стены. Плата почти не греется.
Займемся применением этой платы. Дальше пойдет сплошной Линух и техническая информация.
Сплошной баян. Разные секреты про инетрадио, о которых я хочу рассказать.
Делаем интернетрадио и трансляцию звука с компьютера по wi-fi
1. Техническое задание
Хотим транслировать весь звук с компьютера на Windows по квартире самым простым способом. Включил и слушай где хочешь в квартире. Раньше делал такую трансляцию через FM-трасмитер
mysku.club/blog/aliexpress/33980.html. По понятным причинам качество не очень. Организуем такую трансляцию через WiFi. Создадим собственное интернетрадио в домашней локальной сети и будем транслировать на устройство. За основу такого устройства возьмем Black Swift. Попутно устройство будет выполнять функции простого интернетрадио.
Вместо Black Swift можно взять любой роутер с прошивкой OpenWRT. Например, народные Gl.iNet 6416A (
https://mysku.club/blog/china-stores/26421.html) или NEXX WT3020H (
https://mysku.club/blog/aliexpress/29103.html). Лучше Gl.iNet 6416A — там больше флешпамяти для установки пакетов. Если в устройстве флешпамяти мало — то возможны три варианта действий.
1. Не ставить лишние пакеты и надеяться, что хватит места на флеше роутера
2. Весь софт перенести на USBфлешку, подключить ее к роутеру через USB-Hub (который работает достаточно надежно) и ставить пакеты на USB флешку — этот способ описан тут —
forum.openwrt.org/viewtopic.php?id=49013
3. После отладки по способу 2, собрать свой образ OpenWRT, включить только необходимые пакеты
В любом случае «просто роутера на OpenWRT» нужно ставить необходимые пакеты (если их нет в стоковой OpenWRT).
1. Поддержка USB устройств
2. Драйвера звуковой USB карты (USB Audio)
3. Остальные пакеты, про которые напишу в статье ниже.
Все эти этапы подробно описаны много где, например, в указанной выше статье —
forum.openwrt.org/viewtopic.php?id=49013.
2. Железо для клиента
1. Сердце нашего интернетрадио — Black Swift.
2. Звуковая карта — пойдет любая USB звуковая карта или DAC, которые поддерживает в Linux USB Audio. Например, такая
mysku.club/blog/ebay/34007.html — у этой есть кнопки. Можно их задействовать для управления громкостью или переключением треков. Ноу меня был более компактный свободный вариант «мини-привет»
https://aliexpress.com/item/item/Muse-Audio-X5-Mini-hi-fi-USB-DAC-PCM2704-sonido-cartas-de-plata/32363719826.html — я использовал его.
3. Корпус — от pawerbank пластиковый —
mysku.club/blog/aliexpress/36754.html
4. Два аккумулятора 18650
5. Включатель питания — в местном магазине радиокомпонентов купил.
После сборки (подпаял к USB разъему Black Swift звуковую карту на прямую, подключил питание через USB разъем павербанка через выключатель):
В работе:
Естественно, перед сборкой я отладил программную часть.
3. Делаем интернетрадио
Наш Black Swift подключен к интернету по WiFi, к нему подключена звуковая карта и питание. К звуковой плате подключаем усилитель по AUX. Для тестирования работы звука используем простой плеер madplay (он стоит у Black Swift в прошивке). При использовании другого роутера его нужно дополнительно установить:
opkg update
opkg install madplay
Но помним, что любой лишний пакет съедает драгоценную флешпамять. Берем адрес потока любой интернетрадиостанции, которая играет в mp3, например:
wget -q -O - http://85.214.149.124:9000/ | madplay -
Если играет бодрая немецкая попса — тогда все сделано и подключено правильно (USB, звуковая карта, усилитель). Может играть тихо — значит в настройке звуковой системы установлена минимальная громкость. Ну да ладно — мы ее потом увеличим.
Madplay как плеер для интернет радио не годиться — после выгрузки или вылета не освобождает звуковую карту, не играет ААС.
Перегружаем роутер и подключаемся к нему по ssh. В Black Swift установлен плеер mpd-mini. Это урезанная версия сервера-плеера музыки mpd. Для mpd есть куча клиентов для управления под различные системы — Windows (Cantata), Android (MPDroid), Linux и прочее. Почитать про mpd можно тут —
ru.wikipedia.org/wiki/Music_Player_Daemon. В другие роутеры этот плеер нужно установить
Ставим в другие роутеры mpd-mini и текстовый редактор nano
opkg update
opkg install mpd-mini
opkg install nano
заодно установили и текстовый редактор конфигов nano. Он нам пригодиться.
Создаем каталоги для mpd:
mkdir /overlay/mpd
mkdir /overlay/music
mkdir /overlay/mpd/playlists
Редактируем конфигурационный файл mpd. Можно оставить только эти строчки, переименовав дефолтный файл настроек /etc/mpd.conf:
cp /etc/mpd.conf /etc/mpd.conf.old
rm /etc/mpd.conf
Или можно подредактировать дефолтный файл настроек. Команда для редактирования —
nano /etc/mpd.conf
Вставляем (или изменяем):
# Сonfiguration file for MPD.
music_directory "/overlay/music"
playlist_directory "/overlay/mpd/playlists"
db_file "/overlay/mpd/database"
bind_to_address "any"
input {
plugin "curl"
}
#размер буфера - от количества ОЗУ роутера зависит
audio_buffer_size "4096"
Создаем плейлист радиостанций,
которые вещают в mp3 —
nano /overlay/mpd/playlists/mp3_radio.m3u
http://85.214.149.124:9000/
http://s0.radiohost.pl:9005/
http://81.19.85.197/echo.mp3
Запускаем mpd
killall mpd
mpd
Подключаемся к коробочке из клиента mpd. Я использую программу Cantata под Windows (ее нужно настроить на нашу коробочку — вбить в настройки IP адрес плеера).
Заходим в плейлисты, выбираем наш плейлист, выбираем радиостанцию и запускаем прослушивание. Можно увеличить громкость.
Простейший вариант интернетрадио мы получили.
4. Транслируем весь звук с компьютера
Организуем свое интернетрадио в локальной сети. Будем стримить весь звук с компьютера. Т.е. то, что мы слышим из различных программ будем отправлять в сеть. Для компьютера под Windows в этом нам поможет замечательная бесплатная программа
Stream What You Hear (SWYH) http://www.streamwhatyouhear.com/.
Что умеет SWYH?
1. Стримить весь звук по UPnP/DLNA на указанное устройство (render)
2. Записывать весь звук в файл
3. Транслировать звук как интернетрадио в локальной сети
Третья функция нам и понадобиться.
Устанавливаем программу. После запуска в трее появиться иконка программы
Правая кнопка мышки на иконке и выбираем пункт «setting». Выбираем параметры транскодирования и ставим галки на Automaticaly run SWYH when I log in (автозапуск после перезагрузке, точнее при входе пользователя) и Use specific HTTP port:5901 (фиксируем порт для интернет радио)
У меня компьютер при загрузке получает от роутера определенный IP адрес, привязанный к МАС адресу сетевой карты (настройки DHCP). Лучше сделать так, чтобы каждый раз IP адрес не менялся. Далее правая кнопка по иконке в трее и выбираем следующий пункт:
Появляется адрес стримингового потока:
Запускаем на компе для тестов проигрывание какой-нибудь музыки и тестируем поток с помощью другого устройства. Например, для телефонов на Android есть самая лучшая бесплатная программа интернетрадио
XiiaLive —
play.google.com/store/apps/details?id=com.android.DroidLiveLite. Устанавливаем эту программу. Заходим в «любимые», затем жмем плюс и добавляем нашу локальную станцию (вставляем адрес, указанный выше)
А можно сразу протестировать на нашем интернетрадио на OpenWrt.
Для этого в той же Cantata добаляем URL со стримингом из программы SWYH (в моем случае
192.168.0.2:5901/stream/swyh.mp3).
Жмем Play и слушаем на коробочке звук с компьютера. Из-за буферизации будет небольшая задержка.
На Linux такую трансляцию тоже можно сделать. Возможность трансляции потока есть в mpd — в настройках в файле /etc/mpd.conf раскомментировать строчки и установить настройки
# An example of a httpd output (built-in HTTP streaming server):
#
#audio_output {
# type "httpd"
# name "My HTTP Stream"
# encoder "vorbis" # optional, vorbis or lame
# port "8000"
# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
## quality "5.0" # do not define if bitrate is defined
# bitrate "128" # do not define if quality is defined
# format "44100:16:1"
# max_clients "0" # optional 0=no limit
#}
Плеер vlc, вроде pulse умеет в поток транслировать. Как вариант использовать программу для трансляций интернетрадио ICECAST.
Как дела с трансляцией в Андроиде — не знаю.
Заметь, мой читатель, до сих пор мы не установили на Black Swift ни одного пакета. Все работает из коробки.
Итак мы можем транслировать звук с компьютера на наше устройство. Устройство работает от аккумуляторов, поэтому можно переносить его везде, где есть доступ к домашнему WiFi.
Перейдем к следующему этапу.
5. Автоматическая настройка при загрузки нашего интернетрадио. Боремся со сбоями в сети
Сделаем так, чтобы при загрузке коробочки автоматический начинал играть поток с компьютера. Так же есть проблема — WiFi не стабилен, канал может пропасть на некоторое время. Встроенный буфер mpd- это все-таки защита. Но хочется, чтобы после опустошения буфера радиостанция начала играть заново (переконнект). Для этих целей нам понадобится консольная программа управления mpd — она называется mpc и есть в репозиториях OpenWRT.
В случае Black Swift нужно
подключить репозиторий openwrt.
Исправляем командой nano /etc/opkg.conf.
Нижняя строчка должна быть закомментирована (этот репозиторий уже нет его), предпоследняя включена в конфиг.
В файле должно быть так:
root@BlackSwift:~# cat /etc/opkg.conf
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
src/gz barrier_breaker_base http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/base
src/gz barrier_breaker_luci http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/luci
src/gz barrier_breaker_oldpackages http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/oldpackages
src/gz barrier_breaker_packages http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/packages
src/gz barrier_breaker_routing http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/routing
src/gz barrier_breaker_telephony http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/telephony
src/gz barrier_breaker_management http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/management
#src/gz black_swift http://files.black-swift.com/files/openwrt/bbreaker/1.0/packages/
Если вы будите настраивать интернетрадио на роутере, то пути репозитория менять не нужно.
Далее устанавливаем mpc
opkg update
opkg install mpc
Для проверки наберите просто mpc — отобразиться текущее состояние mpd.
Теперь установим специальный скрипт и запустим его резидентно. Скрипт устанавливает начальные установки mpd, проверяет не вылетел ли mpd, не прервалась трансляция, запускает трансляцию радио с нашего компа. За основу взял этот скрпит
http://mpd.wikia.com/wiki/Hack:stream-monitor?oldid=3932. Должна быть установлена утилита nc. Если не установлена — установите. Русские комментарии можно удалить.
Создаем каталог для скриптов:
mkdir /overlay/scripts/
Скрипт /overlay/scripts/stream-monitor.sh (создаем nano /overlay/scripts/stream-monitor.sh)
#!/bin/sh -e
#
#stream-monitor.sh
#Developed on Debian
#Requires mpd
#
#Its an extension of http://mpd.wikia.com/wiki/Hack:stream-monitor?oldid=3932
#
#This script monitors mpd while it is playing an internet stream. It checks every $INTERVAL_CHECK seconds
# to see if the status time variable has changed. (The stream is not playing when the time
# is not changing.) Then it restart playing.
#It also checks the current state of MPD and only take care of state 'play'. This provides you the comfort
# to use MPD like before without have to care about the watchdog when you want to pause or stop the stream.
#If the mpd daemon is not running for some reason, it starts it. i.e. if mpd were to crash.
#
#This is great for a robust stream player that keeps on playing, even after a network
# outage or stream server outage. Useful in situations where the networking is less than perfect.
#
#Check with your streaming server provider before running this. It's not nice to connect to
# a stream 24/7 if you don't need it or own it.
#
#
LOGGER ()
{
## ---- logger unit ----
inf=$1
if [ $LOG -eq 1 ]; then
echo $inf>>$LOG_FILE
fi
}
RESTART_MPD ()
{
## Test mpd and restart mpd it
STATUS=`ps | grep -c mpd`
if [ $STATUS -lt 2 ]; then
LOGGER "no mpd processes, starting mpd"
/etc/init.d/mpd start
sleep $INTERVAL_WAIT
LOGGER "mpd is load!-ok"
# Начальные установки mpd
# mpc repeat on - вкл повтор плейлиста
# mpc single on - вкл режим воспроизведения только одной записи - чтобы при сбое не переходило на другую радиостанцию
# mpc volume 100 - макс громкость
# mpc add http://192.168.0.2:5901/stream/swyh.mp3 - стриминг по умолчанию, сразу после загрузки.
# Я установил трансляцию со своего основного компа из программы SWYH
# Поменяйте на адрес совего компа или на какую-то радиостанцию
#
mpc repeat on; mpc single on; mpc volume 100; mpc add http://192.168.0.2:5901/stream/swyh.mp3; mpc play
LOGGER "initial setup - Ok"
fi
}
LOG_FILE="/tmp/stream-monitor-log"
# Логирование работы 1-включить логи в файл $LOG_FILE
LOG=0
INTERVAL_CHECK=5 # Seconds between checks
INTERVAL_WAIT=10 # Seconds to wait after mpd (re)start (buffering)
INTERVAL_SLEEP=2 #Sleep interval
killall mpd
OLD_TIME=
OLD_STATE="UNKNOWN"
LOGGER "start monitor"
LOGGER "START MAIN PROCESS....."
while sleep $INTERVAL_CHECK;
do
RESTART_MPD
TIME="0"
STATE="UNKNOWN"
STATE=`echo -e "status\\nclose" | nc localhost 6600 | sed -n '/state/p'|sed -e 's/state: //g'`
TIME=`echo -e "status\\nclose" | nc localhost 6600 | sed -n '/time/p'|sed -e 's/time: //g'`
# проверка если вдруг mpd перестал играть музыку
if [ "$OLD_STATE" == "stop" ]; then
LOGGER "MPD changed state from STOP"
mpc play
sleep $INTERVAL_WAIT
fi
# проверка на остановку трансляции потока - перезапускаем текущую радиостанцию в этом случае
if [ "$STATE" == "play" ]; then
tmp=$(echo -e "status\\nclose" | nc localhost 6600 | sed -n '/song/p'| sed -n '1p;1q' |sed -e 's/song: //g')
let tmp=$tmp+1
if [ "$TIME" = "$OLD_TIME" ]; then
LOGGER "mpd hanging, restarting"
mpc stop
sleep $INTERVAL_SLEEP
mpc play
sleep $INTERVAL_WAIT
LOGGER "mpd is ok"
fi
fi
OLD_STATE=$STATE
OLD_TIME=$TIME
done
Даем права на выполнение
chmod 755 /overlay/scripts/stream-monitor.sh
Скрипт для запуска stream-monitor.sh резидентно при загрузке компьютера
/etc/init.d/stream-monitor (nano /etc/init.d/stream-monitor )
#!/bin/sh /etc/rc.common
# Copyright © 2010 OpenWrt.org
START=99
STOP=10
IGMP_OPTS=""
IGMP_BIN="/overlay/scripts/stream-monitor.sh"
PID_F="/var/run/stream-monitor.pid"
start() {
echo "Starting stream-monitor"
start-stop-daemon -S -x $IGMP_BIN -p $PID_F -b -m -- $IGMP_OPTS
}
stop() {
echo "Stopping stream-monitor"
start-stop-daemon -K -p /var/run/stream-monitor.pid -q
}
Даем права на запуск, запускаем при загрузке системы
chmod 755 /etc/init.d/stream-monitor
/etc/init.d/stream-monitor enable
/etc/init.d/mpd enable
Перегружаем наш плеер с OpenWRT. После перезагрузки примерно через минуту должно начать играть трансляция с компьютера.
Для проверки работы скриптов подключите мобильную колонку к роутеру и уйдите подальше ;-) Туда, где ваш вай-фай не работает. Звук прекратиться. Вернитесь через некоторое время. Звук должен продолжить играть.
Задача выполнена — наш плеер умеет играть трасляцию с компьютера, может играть сетевые радиостанции в формате mp3. Но нам хочется большего:
6. Учим наше интернет радио играть радиостанции в ААС
Очень многие радиостанции в интернете вещают в формате AAC. mpd-mini не умеет играть этот формат в силу своего минимализма. Из всех аудиоплееров для openwrt только mpd-full умеет играть этот формат. Установим его. Плеер занимает много места — может не поместиться на флешпамять плеера. Что делать в этом случае — писал в начале обзора.
Удаляем mpd-mini
killall mpd; opkg remove mpd-mini; rm /etc/mpd.conf
Устанавливаем mpd-full
opkg update
opkg install mpd-full
/etc/init.d/mpd enable
Настраиваем конфигурационный файл /etc/mpd.conf
cp /etc/mpd.conf /etc/mpd.conf.old
rm /etc/mpd.conf
Или можно подредактировать дефолтный файл настроек. Команда для редактирования —
nano /etc/mpd.conf
Вставляем (или изменяем):
# Сonfiguration file for MPD-Full.
music_directory "/overlay/music"
playlist_directory "/overlay/mpd/playlists"
db_file "/overlay/mpd/database"
bind_to_address "any"
input {
plugin "curl"
}
audio_output {
type "alsa"
name "My ALSA Device"
device "hw:0,0" # optional
format "44100:16:2"
## mixer_type "hardware" # optional
## mixer_device "default" # optional
## mixer_control "PCM" # optional
## mixer_index "0" # optional
}
#размер буфера - от количества ОЗУ роутера зависит
audio_buffer_size "4096"
Внимание! Строчки настройки alsa плагина обязательны для mpd-full.
Без строчки device «hw:0,0»
будет не играть, а хрюкать!
Создаем плейлист с радиостанциями в AAC
nano /overlay/mpd/playlists/ACC.m3u
/overlay/mpd/playlists/ACC.m3u
http://79.111.119.111:9033/
http://79.120.77.11:9097/
http://79.120.77.11:9091/
http://79.120.39.202:9029/
Перегружаем устройство и в клиенте mpd (у меня Cantata) выбираем плейлист радиостанций в AAC. Слушаем :-)
Где брать адреса радиостанций? Есть такой очень хороший сервис Радио Каприз
www.radcap.ru/ — куча радиостанций на все случаи жизни. Вещают AAC 48кбс (ЭТО НЕ mp3 48кбс — это около 128 кбс мп3) — годно для халявного слушанья, если инет ограничивают 64 кбс, а за большее берут денежку. Плейлисты часто обновляют и модерируют отлично.
Например, мы просто обожаем Depressive Black Metal. Выбираем радиостанцию. Скачиваем файлик m3u, смотрим его содержимое и добавляем адрес потока в наш файл /overlay/mpd/playlists/ACC.m3u и слушаем с плеера на OpenWRT.
В конце предвижу вопросы и сразу отвечу на них
1. У меня на телефоне стоит программа с интернетрадио — зачем этот огород? Я через нее слушаю музыку. Ответ — у меня на телефоне стоит XiiaLive. Я тоже через нее слушаю музыку.
2. Почему не использовал технологию UPnP/DLNA? Она более сложная, чем просто стриминг как радиостанция. И еще не встречал безглючного рендера для клиента под Linux. Из трех известных мне вариантов — у всех есть глюки. Если желаете, соберите плагин UPnP/DLNA для mpd и подключите его к mpd-full для OpenWrt. Тут лежит (
http://www.lesbonscomptes.com/pages/mpd-upnp.html) У него есть глюки — но работает
3. Почему не используешь технологию Logitech Media Server/Squeeze для мультирумов. Будет время изучу и протестирую. У меня сейчас более простая задача слушать звук с компа, когда я в ванной или кушать готовлю ;-)
4. Использовать pulse для линуха — статья была тут для OpenWRT —
http://habrahabr.ru/post/184110/. Интересная идея. Видел развитие этой идеи с синхронизацией звука, как при мультирумах. Два момента — очень плохо работает в условиях нестабильного канала (вай-фай), нужен широкий канал. Годиться для проигрывания музыки по проводу на стационарные плееры. Еще вопрос как с Windows в pulse звук загнать?
Спасибо за внимание!
Да и жить мне не сложно, мне «это дело» даже нравится! )))))
И вправду все сложно…
И тут ему захотелось через интернет купить радио-приёмник. Он как-то сам сделал заказ (введя мой адрес email вместо своего, так как не понимал что такое вообще email и что за адреса eMail у него на листочке записаны).
Когда я ему, через удалённый доступ (я живу от него далеко), показывал как искать товар, как правильно регистрироваться в магазинах, как зайти на электронную почту, как читать сообщения и, если надо, отвечать на них, он на втором часу начал нервничать.
Ему это трудно было «всё» понять. Самое главное, он не понимал: «Почему всё так сложно»? Он говорил: «Ну я же написал свой адрес, телефон. Пусть или вышлют или позвонят.»
Я объяснял, что скорее всего звонить не будут, а могут ответить коротким сообщением на электронную почту. Ему действительно коротко написали (на мой eMail): «нет в наличии», почтой пользоваться он не умел и всё ждал когда ему пришлют или позвонят.
Когда я ему показал как зайти на свою почту и прочитать (письмо из магазина я ему переслал на его eMail-Адрес), он сказал, что это какая-то ошибка. Не может «не быть в наличии, если на сайте товара написано, что он в наличии».
Он не понимал — почему ему из магазина тогда не звонят и не говорят и что ему теперь делать — ведь надо как-то отменять заказ, ведь он обнадёжил людей, что у них купит и если не купит, будет виноват. Просил меня им позвонить, говорил, что они наверное ждут.
Я, в свою очередь, убеждал, что никто его не ждёт и магазин сам отменил заказ и ничего делать не надо.
В общем он сказал, что всё «это» как-то не по-человечески и очень сложно и он просто пойдёт в магазин, выберет себе радио и купит.
Позже на моё предложение сделать себе онлайн-банкинг, чтобы не ходить в банк и не стоять в очередях для оплаты за квартиру и коммунальные услуги, он сказал: «Нет-нет-нет, я лучше схожу сам и отнесу квитанции. Это для меня будет проще и спокойнее».
Представляю, если бы я ему предложил реализовать «трансляцию аудиопотока с компьютера по WiFi в любое место квартиры». ;-)
Простите за небольшой оффтоп. За обзор — спасибо.
Можно сделать интренетрадиоприемник на основе тех скриптов, что в отчете есть. С тремя кнопками — нажимаешь на одну — играет одна станция, на другую другая, на третью — третья. Все просто и понятно. Попробуйте тоже самое на готовых решениях или через планшет на андроиде? В таких случаях спец.решения рулят. Сделал один раз и забыл, как внутри все работает.
Мой пост был ответом на сообщение посетителя Pash80, в котором он написал: «как сложно жить -то стало… теперь даже чтоб музыку послушать надо что-то мастерить и программировать…»
Вот и привёл по этому поводу пример из своей жизни.
Если же своим изложением вызвал у Вас раздражение, значит я высказался неумело, за что прошу прощения.
Сейчас столько интересного и доступного, просто глаза разбегаются, только фантазию не отключай.))
Надо не музыку сделать по квартире, хотя и это здорово, а что бы чайник на кухне включался дистанционно и как закипит, ответ присылал на комп.))) Прямо с компа включил, музыка проиграла, пошёл, налил. Это ж как удобно))))
«Лень — двигатель прогресса». :-)
бабы это неосознанно делают, у них кривая прошивка сидит и когда мужик подчиняется бабе, то у нее вырабатываются гормоны позитива
у меня мамаша так пыталась тоже, пока я не ознакомился с определенными знаниями и пресек это
даже распускание соплей не помогло, сейчас больше не тупит и все быстренько выучила, даром что в банке с 89 с компутерами работала
когда бабе надо — она коня на скаку остановит и голову ему свернет
а вот папаша так баборабом и остался, скоро она его доконает
я вообще удивлен, что он до сих пор живой
я с ним согласен, это называется рюзке бузиныс
у меня так мамаша носила в банк заполненные бланки переводов за квартиру, которые присылала ей контора
в одну ночь хачи раздолбали тот ящик, куда скидывались эти бланки, переписали новые бланки, только указали свой счет и банк перевел бабло на их счета
мамаша получаеш уведомление, что оплата не произведена, звонит в контору, потом в банк, а там ей говорят топать в полицию писать заяву
а ведь я ей говорил, чтобы переводила онлайн, а она тупая и ленивая + манипуляшки бабские включает
но вот ей дали пинка и с 2003 года она стала переводить онлайн и больше к компутеру не подходит
а папаша копается там, линупсы ставит, всякие форумы читает, а ему тоже где-то под 70
про длна ему сказал примерно, так сам прочитает
вчера был у них, отнес тв приставку на андроиде, показал как ставить приложения с компутера
как-то он был в каком-то отупении и где-то на сцайте зачем-то ввел свой адрес и подписался на газету
мне потом пришлось писать отказ
до сих пор не признается, что на него нашло
с этого тоже пожрал
моих придурков так же развели на пылесос кирби за 700 евров, типа если бы не купили, то были бы виноваты и было бы стыдно
ведь люди пришли и бесплатно почистили ковер
Или вы знаете что-то сравнимое за, скажем, 10$?
Флеш — 4 (8)
Разведен и выведен uart, и самое главное — enhernet с трансом, можно подключать в сетку и по воздуху, и по проводу.
Есть несколько разведенных gpio.
Антенна wifi — керамический чип, можно подключить внешнюю.
Опенврт ставится прекрасно.
Размер, да, немного поболее.
А есть где-нибудь прочитать / посмотреть что у него внутри?
Что я с этим китайцем буду делать, если мне нужно что-то кроме тупого роутера?
Да — gpio практически нету.
Меня всегда смущает шаг ножет на гребенке — 1.25mm вв домашних условиях — мало кто распаяет без должного опыта и оборудования.
В догонку — есть еще проект carambola вторая ревизия платы — собственно полный аналог.
Карамболу помню, да. Аналог. Только там же ситуация ещё хуже, чем с гребёнкой на 1.25. Полуотверстия и даже микроюсб не распаян. И ещё дороже, кстати.
Свифт кикстартеровский, кстати, в итоге разослали как раз с макеткой-переходником на 2.5.
А производство у нас как в жопу упало в 90х, так од сих пор еле-еле оттудава вылазиет, привык народ все с китая брать, но вроде бы положительные подвижки есть — поживем увидим
ЗЫ
Два моих обзора ты не читал видимо — mysku.club/blog/aliexpress/35101.html и mysku.club/blog/ebay/28737.html
Близость антенны к камню у меня лично вызывает некие сомнения в его безглючности под нагрузкой. И что-то мне подсказывает о неидеальности согласования антенны, что еще более добавляет сомнений…
В современном мире очень сложно, что-либо придумать, так как все возможные комбинации китайцы клипают просто по таблице фонарик + колонка и еще что-нибудь.
Я считаю, что разработка интересная, еще бы её продавали как Alex74 говорит.
https://aliexpress.com/item/item/Fashion-Mini-Portable-3G-4G-WiFi-Wlan-Hotspot-AP-Client-150Mbps-RJ45-USB-Wireless-Router/32458060820.html
Кстати, расскажите же, где именно он меньше?
А атерос, как и ралинк с 32 — 64 мб оперативы и 400 мгц — нечто среднее. Для каких задач этот девайс?
Имхо только для поиграться.
Про задачи — разрабатывался он именно как что-то среднее между удобной для разработки и поднятия того же веб-сервиса, но здоровенной и слишком мощной малиной и удобной для встраивания, но излишне простой ардуиной.
Для совсем простых случаев есть ESP8266, экономичнее на порядок и дешевле в 10 раз.
Единственный плюс сабжа — много gpio.
Но 20$ — перебор. 10 ему красная цена. Но я бы и за 10 не купил — я так и не придумал ему применение.
8266 — именно что для совсем простых случаев, где ардуины хватает.
Но я бы и за 10 не купил — вот с этого и надо было начинать.
Имею платы vocore — и carambola v2 — разница в производительности значительная
Ресурсы посредственные. Назвать openWRT полноценной системой — сложно.
Если кратко:
1). Реальные разработчики сейчас на www.unwireddevices.com/ru/. Если нужно обновление ПО, актуальная документация и поддержка — вам туда.
2). Российский бизнес такой российский. На www.black-swift.ru остались всякие коммерсанты и маркетологи, которые хотят состричь с вас бабло.
Там ничего особо нету, кроме новой сборки беты Openwrt. Для моих задач и так работает. Значит не трогать. Форум пустой. Видно, что пытаются рассылать по кикстартеру. Успехов им. Продавать будут платы при заказе не меньше 1000 штук. Вопрос с лицензированием не понятен — как в этом случае устройство свое на основе этого чипа делать и продавать?
Мне лично и почти всем, кто там заказывал, платку прислали www.black-swift.ru. Рассылку делали активисты в свободное время- спасибо им. Очень качественно сделали все. Так что коммерсантов не пишите. +форум где народ сидит.
Лично мне, как потребителю пофиг на дела разработчиков. Нужно заказать товар и получить его быстро. Если бы путем все пошло — то сейчас рассылали бы действитено всем желающим свою разработку. А так — пока они ругаются — китайцы и англичане (Малинка Зеро) нашлепают подобных плат и нафиг не нужны будут их разработки. какая разница в итоге — где разработчики, а где коммерсанты?
www.black-swift.ru/blog/21-nastoyashchee-proekta-black-swift
Atheros, Hynix, Macronix и прочих мелких блох на плате (среди комплектухи)
А так-же позиционников, маски, самого текстолита (из китая)
и даже софта, написанного пополам на английском
Где тут РАСЕЙСКИЙ КАМПУТИР ?!!!
Я конечно всё понимаю, и гдето наверное у кого-то гордость и тэдэ и тэпэ, но это можно паписать где-то внизу мелким шрифтом, а вот из заголовка лучше выпилить, смешно звучит.
И да, вижу, кто-то солидарен.
Считайте, что собрались чуваки и нарисовали годную платку по рефренс-дизайну + запинали китайцев на производство + собрали на довольно известной прошивке себе фирмварь.
Творите, что нет то?
И да — это российская разработка — ибо платка разработана чуваками из России. И это можно называть «российским компутером» — ибо, опять-же, команда разработчиков из России, а не потому что там все сделано в России. Так бывает — вон у нашего автопрома половина запчастей импортная, но мы же называем то чудо, которое из этого получается, «Российский Автомобиль» — и никого это не смущает.
Сам же я жду PI Zero, ибо там все стабильней и предсказуемей, а я это люблю :) Тут хз еще, чем срач кончится и будет ли следующая версия прошивки. И проблемы с покупкой прошивки, а с малинкой, имхо, такого не будет — коммьюнити побольше, да и народ после первых плат по-опытней.
Ну а автор — молодец. Он собрал на этом то, что ему надо было, не вдаваясь российское ли это, где там маркетологи, а где — электронщики и это правильно.
Спасибо за обзор!
Хотя они больше ширпотреб тырят, тут узкая ниша.
Причём общение на ты считалось нормой общения и ни в коей мере не предполагало фамильярности или панибратства — в эхе все считались равными вне зависимости от возраста и положения, а на Вы обращались во время боксирования по переписке. Эх…
Курьерская служба — это конечно удорожание, но «платиновой » она плату не сделает, даже если это будет DHL. ;)
Минусы, видимо, от отчаяшихся купить, перпробоваших все способы самовывоза из Москвы :)
Для вас возможно Москва не самое трудное место, особенно если вы там живете, но для остальных я думаю такая схема получения платы проблемная.
(кодек_битрейт_название станции)
MP3_128_TwilightRadio.m3u
AAC_48_RC_Melodic_Death_Metal.m3u (RC- Radio Caprice)
MP3_64_EchoMoscow.m3u
Так как станций, которые слушаю регулярно немного, норм получается.
Сделать нажимать на кнопочки проще всего. В моем обзоре на звуковуху mysku.club/blog/ebay/34007.html есть, как задействовать под линухом кнопки звуковухи (через демон triggerhappy). Можно купить USB клавиатуру типа такой https://aliexpress.com/item/item/New-1pc-mini-USB-Wired-Numeric-Keyboard-Keypad-Adapter-19-Keys-for-Laptop-PC-Black-hot/32457164931.html или USB звуковуху https://aliexpress.com/item/item/USB-to-3D-AUDIO-SOUND-CARD-ADAPTER-VIRTUAL-7-1-ch-for-PC-laptop-Notebook/1828698543.html только ради кнопок. Они подцепятся как Hid устройства, как в том обзоре. Потом навесить скрипты на нажатие или отпускания кнопок и рулить mpd через mpc.
Так-то на openwrt ставил shairport, проще гораздо и без глюков работало, на ведродевайсах airplay стримеры тоже неплохо работали, а главное проще dlna. Потом проблема решилась гораздо проще, покупкой airport express )
По универсальности применения такое решение на голову выше.
Правда у клиентов под андроид тоже свои странности.
Сама не очевидная — не запускают последнюю станцию при старте. Перебрали пять самых популярных и у всех такая ерунда. Может кто посоветует клиент с такой возможностью.
После пропадания канала как ни странно некоторые трансляцию возобновляли.
Нужно было объект озвучить. Хотелось дубового решения. По быстрому так и не вышло сделать.
Оффтоп: спалите умных передач, пожалуйста. Или радио, где идёт болтология. Работается мне под это хорошо. Про Эхо Москвы знаю.
ну а пока их в продаже нету можно обделыватся другими типа orange pi one+ wifi адаптер, да понимаю что дороже…
Хотя я после «анонса» этого обзора ждал законченного решения с веб-мордой как минимум. Типа такого, хотя-бы :)
Это вполне сопоставимо с USB-шной звуковухой.
А усилки центов по 50-60 3х ваттные.
Есть же icecast, который в состоянии обслуживать хоть тысячи клиентов при минимальных требованиях к памяти, который может брать звук хоть откуда и под который сторонних плагинов просто немерено, а воспроизводится все это счастье на любом плеере, который знает, что такое network streaming. К чему городить именно на mpd интернет-радио — непонятно, если при этом учесть назначение железки, все это больше напоминает кич, чем реально необходимое устройство.
А что мешает клиентам, которые слушают его по WiFi самим лезть в сеть и слушать какое угодно радио, а не то, которое настроено на этой коробке?
Обзор хороший, не понимаю возмущения и претензий общественности. Это же авторский обзор, как точка зрения на решение поставленной задачи. Думаю каждый сам для себя сделает выводы, применять в практике это решение или нет. По этому, давайте уважать чужой труд, если есть идея и другое решение — пишите на Mysku :)
Вам Alex_74, спасибо за обзор, идею и реализацию.
if [ "$TIME" = "$OLD_TIME" ]
Но ранее
If [ "$STATE" == «play» ]
Однако, man test говорит только о:
STRING1 = STRING2
the strings are equal
И заголовок файла об этом явно намекает:
#!/bin/sh -e
И «встроенного» test там по умолчанию опять же нет:
# which [
/usr/bin/[
Так что — учите матчасть. :)
P. S.: Я в среде Linux живу с 1994 года. И программирую, и прошивки модифицирую и пишу. Так что даже не начинайте…
/* test(1) accepts the following grammar:
binary-operator ::= "="|"=="|"!="|"-eq"|"-ne"|"-ge"|"-gt"|"-le"|"-lt"|
далее:
/* TODO: handle [[ expr ]] bashism bash-compatibly.
и т.п.
Так что забудьте о POSIX sh — BASH рулит.
Использование "==" для сравнения строк возможно (на данный момент), но не документировано в man (есть упоминание в info).
Рассчитывать на это нельзя, для переносимости следует придерживаться стандарта.
Bash рулит, но не в OpenWRT.
Если же пользоваться только средствами ash то писать нужно $(( var1 == var2 )) — т.е. тоже '=='
bash стандарт дефакто — о чем и был намек.
Короче хватит спорить о херне — в изначальном скрипте применение как = так и == не является ошибкой.
Дешевле 49,5$ что-то сейчас не вижу, надо ловить.
И понял что мне моего Spotify за глаза хватит.
П.С. извините за оффтоп.
в Вашем случае цитирую
VPN в помощь, (гораздо проще редактирования в консоли)
Функцию создания собственных плей листов никто не отменял
Единственный серйозний минус не 100% представлен желаемый контент.
Полностью солидарен (кроме
с компа)1. У меня на телефоне стоит программа с интернетрадио (Spotify, Google Music, yandex Music, ВК, Dezeer — подчеркнуть что нравиться) — зачем этот огород? Я через нее слушаю музыку. Ответ — у меня на телефоне стоит XiiaLive (Spotify, Google Music, yandex Music, ВК, Dezeer). Я тоже через нее слушаю музыку.
Скажите мне ещё, что чип Qualcomm Atheros AR9331 — истинно российского производства и разработки
Вспоминается сразу репортаж про российских ученных, которые изобрели квадрокоптеры, продающиеся на площадках типа Али
Да и выдающимся и особенным этот проект никто не называл, обычная разработка, неплохая, и да, российская.
ebay.com/itm/131705969623
название из кириллицы сложно было сочинить?
audio.rambler.ru/ — отсюда потоки можно выдрать
К сожалению из-за их распада (и грязных подробностей о нём с обеих сторон) пока чот не заказываю. Жду когда unwired devices продавать начнут.
www.seeedstudio.com/depot/LinkIt-Smart-7688-p-2573.html?cPath=122_142
ТТХ
Single input single output(1T1R) Wi-Fi 802.11 b/g/n.
Pin-out for GPIO, I2C, I2S, SPI, UART, PWM and Ethernet Port.
580 MHz MIPS CPU.
32MB flash and 128MB DDR2 RAM.
USB host.
Micro SD slot.
2. Если проблема в User-Agent — то надо ковырять mpd — прослушивание потоков. Или забить на такие радиостанции — других в инете полно:-)
2. www.linux.org.ru/forum/general/5617220 — вот тут народ решает проблему как раз применительно к 101.ru
ну и hint — все компоненты лучше брать на 4pda.ru а не в маркете.
2. Нет Wi-fi на борту. C wi-fi цена сопоставима будет
3. raspberry zero фиг купишь 5$. Вообще фиг где купишь его.
Если на www.black-swift.ru — то зарегистрируйтесь на форуме и в соотв. ветке форума спросите. Без регистрации эта ветка не видна.
Очень интересно!
Надеюсь разобраться.
И в голове начинает крутиться один единственный вопрос: зачем?
хочу родственникам дать возможность слушать интересную радио точку, есть варианты по товарам?
у меня один: взять компьютер Raspberry Pi или более дешевый китайский аналог и с юсб 3г модемом реализовать радиоточку, но, это будет радио для одной станции, как-то не очень оно.
Клавиатуру USB типа такой https://aliexpress.com/item/item/Free-Shipping-USB-19-Keys-Keypad-Numeric-Keyboard-Multifunction-Wired-Number-Calculator-For-Laptop-Easy-To/1956246365.html или кнопками на звуковушке типа mysku.club/blog/ebay/34007.html станции переключайте и все ок. Можно кнопки на GPIO навесить. Но тут сложнее.
Главное чтобы 3г норм работал.
это помимо всего перечисленного ещё и динамик, а лучше маленькую колонку цеплять…
думаешь так, может в китае есть какое эл.-интернет радио с поддержкой симкарт или хоть вафли
: Р
Планшет… На экране 6-8 прямоугольников с названиями
любимых программ. Для старенькой бабушки- самое то!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.