Aby ruter też mógł przemówić...
Ostatnia zmiana: 2013-11-26 22:06
Skoro niektóre rutery mają port USB, to dlaczego nie miały by robić za odtwarzacz mp3? Kupujemy najtańszą kartę dźwiękową USB (3D sound - cena na allegro jakieś 6 zł na koniec 2009r). 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
powinny pojawić się odpowiednie urządzenia w
/dev/snd podsystemu audio
# ls /dev/snd/*
/dev/snd/controlC0 /dev/snd/pcmC0D0c /dev/snd/pcmC0D0p /dev/snd/timer
Demon MPD
# opkg install mpd-full mpc
mpc jest przydatny do sterowania samym programem mpd, więc go też należy doinstalować. Wraz mpd zostanie zainstalowana cała masa zależności (libintl, libflac, libiconv, libcurl, libmad, glib2, libmms, libopenssl, libid3tag, zlib, libvorbisidec, libpthread), może się nie zmieścić w ruterach z małą ilością wolnej pamięci flash.
Konfiguracja demona jest w pliku /etc/mpd.conf, wystarczy tylko taka zawartość:
music_directory "/mnt/sda1/music"
playlist_directory "/mnt/sda1/playlists"
db_file "/mnt/sda1/database"
pid_file "/mnt/sda1/pid"
state_file "/mnt/sda1/state"
input {
plugin "curl"
}
mixer_type "software"
Gdzie
/mnt/sda1 to katalog gdzie jest przechowywana muzyka i playlisty dla mpd. Do ustawienia oczywiście we własnym zakresie.
Niekiedy będzie potrzeba dodania grupy użytkowników o nazwie
audio:
# echo "audio:x:1000:" >> /etc/group
Zostaje jeszcze tylko jego uruchomienie
Aby uruchomić mpd po starcie systemu należy jeszcze wykonać
Odtwarzanie pliku
Plik musi być umieszczony w katalogu
/mnt/sda1/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
Podany adres to w przykładzie RMF FM Smooth Jazz z Miasta Muzyki.
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'
Oczywiście nie wyczerpuje to możliwości konfiguracyjnych pluginu i LCD4Linux, polecam zapoznać się ze stroną projektu.
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
Należy znaleźć adres telefonu przy pomocy polecenia
W tym przypadku rezultat wyglądał następująco:
Scanning ...
00:1C:26:xx:xx:xx laptop
00:1D:6E:xx:xx:xx E51
Interesująca linia to oczywiście ta ostania. Następnie należy skonfigurować
rfcomm w pliku
/etc/bluetooth/rfcomm.conf, który powinien wyglądać następująco:
rfcomm0 {
bind yes;
device 00:1D:6E:xx:xx:xx;
channel 3;
}
gdzie adres to oczywiście dane uzyskane w poprzednim poleceniu. Zostaje już tylko włączenie
rfcomm:
# 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
Jeżeli wszystko jest poprawnie to w logu (
logread) powinna znajdować się informacja podobna do tej:
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
Konfiguracja umieszczona jest w pliku
/etc/bemused.conf i powinna wyglądać następująco:
mpddir=/usr/bin/mpd
channel=3
mp3dir=/mnt/sda1/music
bookmarkfile=/etc/bemused-bookmarks
#fastforbackspeed=10000
#tcp=1
#tcpport=7654
# /etc/init.d/bemused start
Uruchamiamy teraz program w komórce, wyszukujemy urządzenie bluetooth (o nazwie OpenWrt domyślnie) i już można sterować MPD - stop, start, volume, playlisty itd.
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
a następnie umieścić w tym pliku (
/etc/hotplug.d/button/00-mpd) następującą zawartość
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
i odszukać usługę
Serial Port lub
RFCOMM. Adres mac to oczywiście adres telefonu uzyskany przez
hcitool scan.
Przykładowe zastosowanie mpd jako budzika:
http://openrouter.info/forum/viewtopic.php?f=22&t=414