Простейший Чипльдуктор

Простейший Чипльдуктор

Леонид Каганов
взято отсюда: https://lleo.me/dnevnik/2023/09/23

Почти сутки не мог взять себя в руки и приступить к чистке ведер грибов, что принес из леса. А всё потому, что у меня не было спокойного радио. Пришлось сперва его снова настроить. Снова — потому что чипльдуктор у меня был, но убилась флешка. Вы спросите: чего я не делал бэкап? Отвечу: она и убилась, когда я ее вынул и пытался сделать бэкап — не все кардридеры одинаково полезны.

Как сделать простейший Чипльдуктор?

Чипльдуктором называется простой онлайн-радиоприемник, который торчит в розетке и позволяет включать-выключать радио Чипльдук или любую другую онлайн-радиостанцию, а также регулировать громкость. В качестве управления мы будем использовать кнопки на звуковой карте. Вам понадобится:

1. Дешевый одноплатный чип с Линуксом — Raspberry PI, Orange, Banana или что-то похожее.
2. Звуковая карта USB c кнопками.
3. USB-колонки.

Звуковая карта с кнопками на Aliexpress стоит 70 руб. Колонки я уже несколько лет всем настоятельно советую ОКЛИК OK-330. За просто смешные 300 руб в любом Ашане или компьютерном ларьке вы получаете охрененного качества и громкости звук — но только при условии хорошего источника питания. Впрочем Raspberry PI дает вполне хорошее питание в своем USB-разъеме.

Итак, краткая инструкция (для себя писал), что делать с Raspberry.

Установка системы Raspberry Pi OS

Этот процесс достаточно описан на raspberrypi.com - ставим Raspberry Pi OS (то, что раньше называлось Raspbian). Есть какие-то официальные инсталляторы на флешкарту, но я всегда делал через dd. Не знаю, как сейчас, еще полгода назад была пара граблей, связанных с доступом ssh, дефолтным паролем и выключенным изначально диапазоном высокоскоростного вайфая Wifi5.

[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]

Обживаем систему

Итак, система настроена. Поставить полезные и любимые утилитки:

sudo apt install mc catdoc docx2txt enca figlet sshfs mp3info make gcc curl whois libjpeg-progs davfs2

Поставить PHP (он нам пригодится для key.php):

sudo apt install php

Себе я ставлю заодно сервер и свой движок — nginx, mysql, memcache, но...

[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]

Не забываем установить локаль ru_RU.UTF-8, задолбало:

sudo dpkg-reconfigure locales


ОБЖИВАЕМ ЗВУКОВУЮ КАРТУ

Звуковая карта USB обычно видится сразу и драйверов не требует - если конечно вы не пытаетесь это делать на своем старом роутере с USB-разъемом, там звуковая карта силно удивляет систему и обычно нужны драйвера, но их тоже можно найти. Первым делом лучше всего дать права пользователю, пригодится:

usermod -aG audio lleo

Далее нам нужно узнать про нашу звуковую карту ровно три вещи. Ее код на USB-шине, ее номер в системе и ее имя устройства громкости. Начинаем с кода, смотрим, какие USB-девайсы у нас вообще есть в USB:

lsusb

Raspberry покажет что-то типа такого:

[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]

Собственно 8086:0808 - это и есть номер нашей USB-звуковушки с кнопками. Это то, как карту видит USB. Запомнили его. Теперь смотрим, какие видит аудиоустройства система:

sudo aplay -l

Выдает кучу мусора (еще есть вывод звука в HDMI, например), но я вижу свою USB-Sound как устройство номер 3, запомним этот номер 3:

[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]

Наконец, смотрим, что в карте номер 3 видет микшер:

amixer -c 3

[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]

Из чего заключаю, что устройство регулировки громкости сегодня называется 'Speaker'. Сука, при прошлой инсталляции системы ты у меня называлось 'PCM', а еще раньше 'Headphone'! Итак, запомнили: номер USB 8086:0808, карта номер 3, устройство громкости Speaker.

Осталось лишь поставить самую простую и легкую утилитку для воспроизведения mp3:

sudo apt install mpg123

Итак, звуковая система настроена.

УПРАВЛЕНИЕ ПРОЦЕССАМИ ОТ КНОПОК

Как сделать управление от кнопок звуковой карты? Я использую две софтинки. Демон keyboardoid, который я написал на C, при нажатии кнопок он вызовет key.php, который уже разбирается, что именно было нажато и какие действия выполнить. Итак, набираем gcc keyboardoid.c и получившийся a.out переименовываем в keyboardoid для ясности. Демон готов:

[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]

Демон отлавливает кнопки от любой клавиатуры - звуковая карта тоже создает устройство «клавиатура». Он крохотный, написан один раз навсегда и просто висит в памяти, занимая там самый мизер, какой вообще может занимать софт на Линуксе (я его для совсем бедных памятью линуксов изначально делал), а уж при нажатии кнопки вызывает уже специальный скрипт для разбора, чего с этой кнопкой делать. При запуске ему нужно указать номер USB-устройства - упаси вас боже перехватить управление своей собственной клавиатуры, как у меня однажды было при настройке, пришлось заходить по ssh и вырубать демона. Вторым аргументом демону передаем в кавычках строку произвольную запуска любой процедуры, где вместо %c демон передаст полученный код или последовательность. У меня запускается демон так: keyboardoid 8086:0808 "/usr/bin/nohup /home/work/audio/key.php \"%c\" А передает скан код в key.php, который будет запускать радио и регулировать громкость, я его набросал таким (впишите в первых строках свои настройки аудиокарты):

[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]

Осталось проверить пути файлов и вписать демона в старт системы. Я не стал париться, а просто вписал в sudo crontab -e две строки при старте - включение диапазона WiFi5 и запуск моего файлика /home/work/onstart.sh:

@reboot iw reg set US
@reboot /home/work/onstart.sh

Там я при старте системы негромко (40%) проигрываю сэмпл - полезно знать, что система готова или в квартире был сбой энергии все устройства перегрузились. И запускаю демона:

#!/bin/sh

echo "Restart: "`date` >> /home/work/onstart.log

/usr/bin/amixer -c 3 sset Speaker 40%
/usr/bin/mpg123 -a hw:3 "/home/work/audio/sample/eto_ja.mp3" 2>&1 >/dev/null

/home/work/audio/keyboardoid 8086:0808 "/usr/bin/nohup /home/work/audio/key.php \"%c\""

Вот и всё. Как видно в скрипте, на верхнюю кнопку я прописал свое любимое радио Чипльдук http://radio.4duk.ru/4duk128.mp3

Слушать: http://radio.4duk.ru/4duk128.mp3

На нижнюю - спокойное питерское радио Эрмитаж http://hermitage.hostingradio.ru/hermitage128.mp3

Слушать: http://hermitage.hostingradio.ru/hermitage128.mp3

Штуку с колонками положил на холодильник, там у меня и розетка удобная, и не мешает никому, и до кнопок дотянуться удобно. Вот теперь можно чистить грибы!
взято отсюда: https://lleo.me/dnevnik/2023/09/23

Report Page