OpenWrt - Audio
Aby ruter też mógł przemówić...Ostatnia zmiana: 2011-03-10 19:16
1. USB
1.1. Instalacja modułów
2. Demon MPD
2.1. Odtwarzanie pliku
2.2. Odtwarzanie strumienia radiowego
3. LCD
4. Sterowanie telefonem
4.1. OpenWrt
5. Sterowanie przyciskami
6. Zakończenie
Skoro niektóre rutery mają port USB, to dlaczego nie miały by robić za player mp3? Kupujemy najtańszą kartę dźwiękową USB (3D sound - cena na allegro jakieś 6 zł na koniec roku 2009). W sumie potrzebna jest tylko karta dźwiękowa oraz ruter z USB. Ten poradnik opisuje:
- instalację karty dźwiękowej na USB
- instalację i konfigurację MPD (demona do odtwarzania muzyki)
- odtwarzanie plików mp3 przez MPD
- odtwarzanie radia internetowego
- wyświetlanie informacji o odtwarzanej muzyce na LCD
- sterowanie całością przez telefon z bluetoothem
USB
# opkg install kmod-usb-core kmod-usb2
Instalacja modułów
Należy zainstalować moduły, podłączyć kartę dźwiękową i zrestartować ruter
# opkg install kmod-sound-core kmod-usb-audio
# ls /dev/snd/*
/dev/snd/controlC0 /dev/snd/pcmC0D0c /dev/snd/pcmC0D0p /dev/snd/timer
Demon MPD
# opkg install mpd mpc
Konfiguracja demona jest w pliku /etc/mpd.conf, wystarczy tylko taka zawartość:
music_directory "/hdd/mpd/music"
playlist_directory "/hdd/mpd/playlists"
db_file "/hdd/mpd/database"
pid_file "/hdd/mpd/pid"
state_file "/hdd/mpd/state"
input {
plugin "curl"
}
mixer_type "software"
Niekiedy będzie potrzeba dodania grupy użytkowników o nazwie audio:
# echo "audio:x:1000:" >> /etc/group
# /etc/init.d/mpd start
Odtwarzanie pliku
Plik musi być umieszczony w katalogu /hdd/mpd/music. Dodajemy go do bieżącej playlisty i odtwarzamy
# mpc clear
# mpc add plik.mp3
# mpc play
Odtwarzanie strumienia radiowego
# mpc clear
# mpc add http://217.74.72.29:8000/rmf_smooth_jazz
# mpc play
LCD
Oczywiście MPD potrafi współpracować także z projektem LCD4Linux, co pozwala wyświetlać informacje na temat odtwarzanego utworu, czasu, stanu odtwarzacza i wielu innych parametrów. Sama instalacja nie powinna sprawić problemu, opisana jest w dokumencie LCD dla OpenWrt, zmienia się jednakże plik konfiguracyjny. Opcje konfiguracyjne opisane są na wiki projektu LCD4Linux, natomiast przykładowy plik konfiguracyjny może wyglądać tak: (pierwsza linia - artysta i tytuł, następna stan playera, kolejna - poziom głośności)
Plugin MPD {
enabled 1
server 'localhost'
port 6600
minUpdateTime 500
}
Display st2205u {
Driver 'st2205'
Port '/dev/sda'
Font '6x8'
Foreground 'ffffff'
Background '000000'
Basecolor '000000'
}
Widget mpd-combo {
class 'Text'
expression mpd::artist() . '/' . mpd::title()
width 20
align 'A'
speed scroller
update tack
}
Widget mpd-vol {
class 'Text'
expression 'VOL:'.mpd::getVolume()
width 7
align 'R'
update tack
}
Widget mpd-playerstatus {
class 'Text'
expression (mpd::getStateInt() == 1 ? 'PLAYING' : '').(mpd::getStateInt() == 2 ? 'PAUSED ' : '').(mpd::getStateInt() == 3 ? 'STOPPED' : '').(mpd::getStateInt() == 0 ? 'UNKNOWN' : '')
width 7
align 'L'
update tack
}
Variables {
tack 500
scroller 300
}
Layout mylayout {
Row01.Col01 'mpd-combo'
Row03.Col01 'mpd-playerstatus'
Row05.Col01 'mpd-vol'
}
Display 'st2205u'
Layout 'mylayout'
Sterowanie telefonem
Można sterować MPD przy pomocy np. telefonu z bluetooth. W tym przypadku była to Nokia E51 (Symbian S60 3rd). Aplikacja do sterowania nazywa się bemused i dostępna jest m.in. http://my-symbian.com/s60v3/software/applications.php?fldAuto=46&faq=14 (należy pamiętać o przestawieniu daty na 2006, inaczej nie zainstaluje się z powodu wygaśnięcia certyfikatu).Dostępne jest także odpowiednie oprogramowanie pod androida: http://mpd.wikia.com/wiki/Clients , dzięki czemu możliwe jest sterowanie mpd nowszymi urządzeniami.
OpenWrt
Opis instalacji znajduje się w dokumencie OpenWrt - bluetooth. Następnie należy dostosować konfigurację bluez:- powiązać OpenWrt z telefonem
# hcitool scan
Scanning ...
00:1C:26:xx:xx:xx laptop
00:1D:6E:xx:xx:xx E51
rfcomm0 {
bind yes;
device 00:1D:6E:xx:xx:xx;
channel 3;
}
# uci set bluetooth.@rfcomm[0]=rfcomm
# uci set bluetooth.@rfcomm[0].config=/etc/bluetooth/rfcomm.conf
# uci set bluetooth.@rfcomm[0].enabled=1
# uci commit bluetooth
# /etc/init.d/bluez-utils stop
# /etc/init.d/bluez-utils start
Nov 7 07:54:04 OpenWrt daemon.info hcid[1456]: Bluetooth HCI daemon
Nov 7 07:54:04 OpenWrt daemon.info hcid[1456]: Starting SDP server
Nov 7 07:54:04 OpenWrt daemon.info hcid[1456]: HCI dev 0 registered
Nov 7 07:54:04 OpenWrt daemon.info hcid[1456]: HCI dev 0 already up
Nov 7 07:54:04 OpenWrt daemon.info hcid[1456]: Device hci0 has been added
Nov 7 07:54:04 OpenWrt daemon.info hcid[1456]: Starting security manager 0
Nov 7 07:54:04 OpenWrt daemon.info hcid[1456]: Device hci0 has been activated
- zainstalować bemusedlinuxserver
# opkg install bemusedlinuxserver
- skonfigurować go
mpddir=/usr/bin/mpd
channel=3
mp3dir=/hdd/mpd/music
bookmarkfile=/etc/bemused-bookmarks
#fastforbackspeed=10000
#tcp=1
#tcpport=7654
- wystartować demona
# /etc/init.d/bemused start
Sterowanie przyciskami
Niektóre rutery mają sprzętowe przyciski które można wykorzystać do sterowania MPD. W przypadku np. Linksysa WRT160NL można wykorzystać przycisk WPS na wierzchu obudowy (przez system rozpoznawany jako BTN_1). Najprostszy skrypt włączający/wyłączający odtwarzanie po naciśnięciu przycisku można utworzyć wydając poniższe polecenia:
# mkdir -p /etc/hotplug.d/button
# cd /etc/hotplug.d/button
# touch 00-mpd
# chmod 755 00-mpd
if [ "$ACTION" = "pressed" ]; then
if [ "$BUTTON" = "BTN_1" ]; then
mpc toggle
fi
fi
Zakończenie
Niektóre telefony mogą obsługiwać inny kanał komunikacyjny niż 3. Aby uzyskać informację o kanale należy wykonać polecenie
# sdptool browse 00:1D:6E:xx:xx:xx
Przykładowe zastosowanie mpd jako budzika: http://openrouter.info/forum/viewtopic.php?f=22&t=414