взято отсюда:
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://hermitage.hostingradio.ru/hermitage128.mp3Штуку с колонками положил на холодильник, там у меня и розетка удобная, и не мешает никому, и до кнопок дотянуться удобно. Вот теперь можно чистить грибы!