Камрады, огромное спасибо всем, кто писал инструкции. Смог запилить себе радио на железке Viewcon VE533. Сабж имеет 4 кнопки, но события отлавливаются только с 3-х. Вот конфиг mpd:
Код:
port "6600"
music_directory "/opt/.mpd/music"
playlist_directory "/opt/.mpd/playlists"
db_file "/tmp/mpd.db"
log_file "/tmp/mpd.log"
error_file "/tmp/mpd.error"
zeroconf_enabled "no"
state_file "/opt/.mpd/state"
id3v1_encoding "UTF-8"
filesystem_charset "UTF-8"
audio_buffer_size "4096"
buffer_before_play "50%"
# OSS Mixer
mixer_type "oss"
# AUDIO OUTPUT
audio_output {
type "oss"
name "my OSS sound card"
device "/dev/sound/dsp"
mixer_device "/dev/sound/mixer"
mixer_control "PHONEOUT"
format "44100:16:2"
}
Долго не мог победить регулировку громкости. Если ставил mixer_type в "software", то работало, но с задержкой. А найти нужное значение для аппаратного миксера не мог, с стандартным mixer_control="pcm" громкость не регулировалась. Потом попался дельный совет на сайте Томато. Привожу в переводе для тех, кто бьётся с громкостью:
Чтобы посмотреть имена миксеров, сделайте “cat /proc/asound/card0/oss_mixer”. Увидите что-то типа
Код:
SYNTH "" 0
PCM "" 0
SPEAKER "" 0
LINE "" 0
MIC "Mic" 0
PHONEIN "" 0
PHONEOUT "Speaker" 0
VIDEO "" 0
RADIO "" 0
MONITOR "" 0
Перебирайте значения из первого столбца, пока не найдётся нужное.
Ещё оказался неприятно удивлён тем, что MPD не умеет сохранять в state уровень громкости. Пришлось чуть допилить скрипт запуска, чтобы решить эту проблему:
Код:
#!/bin/sh
prefix="/opt"
PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin
case "$1" in
start)
echo "Starting Music Player Daemon"
mpd --create-db /opt/etc/mpd.conf
#грузим плейлист "по умолчанию", если плейлист mpd пустой
if [ -z "$(mpc playlist)" ]
then
mpc load radio
fi
#читаем и устанавливаем уровень громкости
if [ -e "/opt/.mpd/volume" ]
then
mpc volume "$(cat /opt/.mpd/volume)"
fi
;;
stop)
echo "Stopping Music Player Daemon"
#тормозим MPD, чтобы роутер не начинал сам играть после перезагрузки
mpc stop
#сохраняем уровень громкости
mpc volume|awk '{print $2}'|cut -d% -f1 > /opt/.mpd/volume
killall mpd &>/dev/null
;;
restart|force-reload)
"$0" stop
sleep 1
"$0" start
;;
*)
echo "Usage: $0 {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
Возможно получить уровень громкости из вывода mpc можно как-то проще. Я от линукса человек далёкий, сделал как смог. Если кто-то из гуру подскажет, буду благодарен.