Giantdisc - Musik fernsteuern über ein WLAN mit einem Palm
Erstmal die Voraussetzungen für mein Vorhaben:
1. WLAN Router
2. WLAN-fähiger Palm (z.B. einen TX)
3. Eine Soundkarte und Boxen am Server
4. Genug Speicherplatz für Musik auf dem Server
5. Sämtliche Musikdateien sollten 100% richtig getaggt sein
6. Die Files müssen in MP3, OGG und/oder FLAC vorhanden sein
(GD funktioniert auch über rs232, bluetooth, gsm,
aber ich werde nur die WLAN Variante beschreiben!)
Was uns genau erwartet? Hier eine Vorschau der Palm Software!
http://www.dachboden-wg.de/ftp/pics/fish/gd/gd1.gif
Folgendes Konzept steckt dahinter:
http://www.dachboden-wg.de/ftp/pics/...ma-concept.gif
Auf dem Server wird ein Set von Skripten laufen, um MP3/OGG/FLAC abzuspielen, vom Palm aus wird das ganze bedient. Ein PC zur Steuerung ist nicht mehr nötig, die Musik lässt sich bequem über das Palm Interface abspielen.
Giantdisc wurde von Rolf Brugger von der Uni Fribourg entwickelt - Qualitätsware aus der Schweiz also!
Die offizielle Homepage mit Forum findet sich hier: http://www.giantdisc.org/
Also, los gehts!
Wir öffnen die /etc/apt/sources.list mit Nano und ändern folgende Zeile ab:
Code:
deb http://ch.archive.ubuntu.com/ubuntu/ dapper universe
deb-src http://ch.archive.ubuntu.com/ubuntu/ dapper universe
Daraus wird neu:
Code:
deb http://ch.archive.ubuntu.com/ubuntu/ dapper universe multiverse
deb-src http://ch.archive.ubuntu.com/ubuntu/ dapper universe multiverse
Speichern, dann ein sudo apt-get update um die Softwarequellen zu aktualisieren!
Nun installieren wir die noch fehlenden Pakete für GD:
Code:
sudo apt-get update
Code:
sudo apt-get install perl mysql-client mysql-server libcddb-get-perl cdtool netpbm mp3info madplay libid3-3.8.3-dev libid3tag0-dev lame
Code:
sudo apt-get install mp3info aumix id3 libdbd-mysql-perl mpg321 make cdparanoia pilot-link flac libtag1c2a libtag1-dev mplayer-nogui mpg123
(eventuelle Abhängigkeitsprüfungen bejahen!)
Ein paar der obigen DEBs sind allerdings optional, mehr dazu hier:
http://giantdisc.org/man/man.php#Req..._Prerequisites
Entscheidet selbst, was ihr davon nutzen wollt und was nicht!
Nun gebären wir einen neuen Benutzer namens "music" mit entsprechendem Home-Verzeichnis:
Code:
fish@fishbox:~$ sudo adduser music
Adding user `music'...
Adding new group `music' (1001).
Adding new user `music' (1001) with group `music'.
The home directory `/home/music' already exists. Not copying from `/etc/skel'
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for music
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [y/N] y
(Passwort nach Wahl, bei den Abfragen einfach ENTER drücken!)
Code:
fish@fishbox:/home$ cd /home/; ls
fish music
Der neue Benutzer "music" wurde also korrekt erstellt, sehr schön.
Jetzt ändern wir die Rechte für einige "devices" und machen sie so world-readable:
Code:
fish@fishbox:/$ sudo chmod 777 /dev/dsp
fish@fishbox:/$ sudo chmod 777 /dev/ttyS*
fish@fishbox:/$ sudo chmod 777 /dev/rtc
fish@fishbox:/$ sudo chmod 777 /dev/mixer
fish@fishbox:/$ sudo chmod 777 /dev/null
fish@fishbox:/$ sudo chmod 777 /dev/hdc
Der letzte Wert ist unser CD-ROM - es könnte bei euch woanders gemountet sein.
Nachprüfen könnt ihr das, indem ihr die fstab ausliest:
Code:
fish@fishbox:/$ cat /etc/fstab | grep cdrom
/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0
Jetzt öffnen wir die /etc/environment...
Code:
fish@fishbox:~$ sudo nano /etc/environment
...und ändern folgende Zeile:
Code:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games"
Sie soll neu wie folgt aussehen:
Code:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games:/home/music/bin"
Mehr zur bash und ihren Konfigurationsdateien gibts hier:
http://www.bin-bash.de/
https://wiki.ubuntu.com/environment_variables
http://debiananwenderhandbuch.de/bashfunktionen.html
Wir loggen uns mit "su music" als Benutzer "music" ein und holen uns die aktuelle GD:
Code:
music@fishbox:~$ wget http://www.giantdisc.org/download/basicpkg/beta/GiantDisc_1.41-5.tar.gz
--12:09:18-- http://www.giantdisc.org/download/basicpkg/beta/GiantDisc_1.41-5.tar.gz
=> `GiantDisc_1.41-5.tar.gz'
Resolving www.giantdisc.org... 217.26.52.30
Connecting to www.giantdisc.org|217.26.52.30|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 405,159 (396K) [application/x-tar]
100%[=====================================================================>] 405,159 582.55K/s
12:09:19 (580.69 KB/s) - `GiantDisc_1.41-5.tar.gz' saved [405159/405159]
(momentan ist das die 1.41-5 - prüft auf giantdisc.org, ob es eventuell eine neuere Version gibt!)
Wir entpacken das ganze und wechseln ins neu erstellte Verzeichnis:
Code:
music@fishbox:~$ tar zxvf GiantDisc_1.41-5.tar.gz
GiantDisc_1.41-5/
GiantDisc_1.41-5/bin/
GiantDisc_1.41-5/bin/gddb.pm
GiantDisc_1.41-5/bin/gdgentools.pm
GiantDisc_1.41-5/bin/gdio.pm
GiantDisc_1.41-5/bin/gdparams.pm
GiantDisc_1.41-5/bin/gdserv.pm
GiantDisc_1.41-5/bin/gdsoundcard.pm
GiantDisc_1.41-5/bin/gdupdate.pm
GiantDisc_1.41-5/bin/rememberprompt.pm
GiantDisc_1.41-5/bin/gdbooklet.pl
GiantDisc_1.41-5/bin/gdcompr.pl
GiantDisc_1.41-5/bin/gdd-listener.pl
GiantDisc_1.41-5/bin/gdd.pl
GiantDisc_1.41-5/bin/gdexportdb.pl
GiantDisc_1.41-5/bin/gdgetmdir.pl
GiantDisc_1.41-5/bin/gdimportcdi.pl
GiantDisc_1.41-5/bin/gdimportlyr.pl
GiantDisc_1.41-5/bin/gdimport.pl
GiantDisc_1.41-5/bin/gdimporttri.pl
GiantDisc_1.41-5/bin/gdinfo.pl
GiantDisc_1.41-5/bin/gd-maintenance.pl
GiantDisc_1.41-5/bin/gdmakelinks.pl
GiantDisc_1.41-5/bin/gdplaycd.pl
GiantDisc_1.41-5/bin/gdplayd2.pl
GiantDisc_1.41-5/bin/gdplayd.pl
GiantDisc_1.41-5/bin/gdplaytimefilter.pl
GiantDisc_1.41-5/bin/gdplaytmsim.pl
GiantDisc_1.41-5/bin/gdrefresh.pl
GiantDisc_1.41-5/bin/gdripcd.pl
GiantDisc_1.41-5/bin/gdsleep.pl
GiantDisc_1.41-5/bin/gdstream.pl
GiantDisc_1.41-5/bin/gdsync.pl
GiantDisc_1.41-5/bin/gdtranscode.pl
GiantDisc_1.41-5/bin/gdupdatedb.pl
GiantDisc_1.41-5/bin/gdupload2player.pl
GiantDisc_1.41-5/bin/jpgvsplit.pl
GiantDisc_1.41-5/bin/protodoc.pl
GiantDisc_1.41-5/bin/gdarchive.sh
GiantDisc_1.41-5/bin/gdburn.sh
GiantDisc_1.41-5/bin/gddstart.sh
GiantDisc_1.41-5/bin/gdd-wrapper.sh
GiantDisc_1.41-5/bin/gif2jpg.sh
GiantDisc_1.41-5/bin/gdplaytimefilter
GiantDisc_1.41-5/bin/gdmp3cutter
GiantDisc_1.41-5/bin/cronfile-1per-d
GiantDisc_1.41-5/bin/cronfile-1per-h
GiantDisc_1.41-5/bin/cronfile-1per-m
GiantDisc_1.41-5/bin/playtimefilter/
GiantDisc_1.41-5/bin/playtimefilter/tmp.txt
GiantDisc_1.41-5/bin/playtimefilter/gdplaytimefilter.c
GiantDisc_1.41-5/bin/playtimefilter/gdplaytimefilter.c.bak
GiantDisc_1.41-5/bin/playtimefilter/gdplaytimefilter
GiantDisc_1.41-5/bin/playtimefilter/gdplaytimefilter.o
GiantDisc_1.41-5/bin/playtimefilter/Makefile
GiantDisc_1.41-5/bin/mp3cutter/
GiantDisc_1.41-5/bin/mp3cutter/gdmp3cutter
GiantDisc_1.41-5/bin/mp3cutter/Makefile
GiantDisc_1.41-5/bin/mp3cutter/gdmp3cutter.c
GiantDisc_1.41-5/database/
GiantDisc_1.41-5/database/createdb.mysql
GiantDisc_1.41-5/database/createtables.mysql
GiantDisc_1.41-5/database/createtables-old.mysql
GiantDisc_1.41-5/database/readalbums.mysql
GiantDisc_1.41-5/database/readgenres.mysql
GiantDisc_1.41-5/database/readlanguages.mysql
GiantDisc_1.41-5/database/readmusictypes.mysql
GiantDisc_1.41-5/database/readsources.mysql
GiantDisc_1.41-5/database/readtracks.mysql
GiantDisc_1.41-5/database/make-db.sh
GiantDisc_1.41-5/database/make-tables-oldmysql.sh
GiantDisc_1.41-5/database/make-tables.sh
GiantDisc_1.41-5/PalmClient/
GiantDisc_1.41-5/PalmClient/gd-palmos3.prc
GiantDisc_1.41-5/PalmClient/gd.prc
GiantDisc_1.41-5/PalmClient/JpegLib.prc
GiantDisc_1.41-5/PalmClient/pnoJpegLib.prc
GiantDisc_1.41-5/public_html/
GiantDisc_1.41-5/public_html/webint/
GiantDisc_1.41-5/public_html/webint/img/
GiantDisc_1.41-5/README
GiantDisc_1.41-5/Install.sh
GiantDisc_1.41-5/.gdconfig
Das Installationsskript wird ausgeführt:
Code:
music@fishbox:~/GiantDisc_1.41-5$ ./Install.sh
GiantDisc installation/update script
user 'music' exists. OK
create directory /home/music/00
create directory /home/music/01
create directory /home/music/02
create directory /home/music/tmp
create directory /home/music/inbox
create directory /home/music/inbox/albums
create directory /home/music/outbox
create directory /home/music/browse
create directory /home/music/bin
copy its content ...
create directory /home/music/PalmClient
copy its content ...
create directory /home/music/database
copy its content ...
cp: cannot stat `database/genres.txt': No such file or directory
cp: cannot stat `database/languages.txt': No such file or directory
cp: cannot stat `database/musictypes.txt': No such file or directory
cp: cannot stat `database/sources.txt': No such file or directory
cp: omitting directory `bin'
cp: omitting directory `public_html'
Installation complete, all files are copied
Leider scheint die aktuellste GD einen kleinen Bug zu haben, wir holen uns also die Vorgängerversion:
Code:
music@fishbox:~$ wget wget http://www.giantdisc.org/download/basicpkg/beta/GiantDisc_1.41-4.tar.gz
Auch diese wird entpackt:
Code:
music@fishbox:~$ tar xvzf GiantDisc_1.41-4.tar.gz
Jetzt öffnen wir MC (Midnight Commander) und kopieren die Dateien genres.txt, languages.txt, musictypes.txt und sources.txt aus dem Verzeichnis /home/music/GiantDisc_1.41-4/database mit F5 nach /home/music/database!
Bevor wir unsere Musik einlesen, müssen wir mit den Skripts make-db und make-tables eine Datenbank erstellen.
Wir wechseln zurück zum User fish mit "su fish" und führen folgendes aus:
Code:
fish@fishbox:/home/music/database$ sudo sh make-db.sh
creating db
fish@fishbox:/home/music/database$ sudo sh make-tables.sh
creating tables
reading genres
reading languages
reading musictypes
reading sources
Jetzt ein "su music" und dann starten wir den GiantDisc Server:
Code:
music@fishbox:~/bin$ perl gdd.pl --commode2
GiantDisc Server version 1.41-5
Unknown option: commode2
### Init serial port /dev/ttyS1 at 19200 bps
Open database connection
DBI connect('GiantDisc:fishbox','music',...) failed: Can't connect to MySQL server on 'fishbox' (111) at /home/music/bin/gdserv.pm line 91
unable to connect to GiantDisc db at /home/music/bin/gdserv.pm line 91.
### close database connection
io modul finished
Obige Fehlermeldung wird wie folgt umgangen:
Code:
nano /home/music/.gdconfig
Dort kommentieren wir die Zeile "dbhost = localhost" aus.
Bei der Gelegenheit setzen wir den Wert "commmode" auch gleich noch auf 2!
Wir versuchen es nochmals:
Code:
music@fishbox:~/bin$ perl gdd.pl
GiantDisc Server version 1.41-5
Open socket on localhost at port 26468 as server (mode 2 - generic)
Open database connection
Update to database structure version 1.41 required
please run command 'gdupdatedb.pl'
### close database connection
io modul finished
Offensichtlich ist ein Update nötig:
Code:
music@fishbox:~/bin$ perl gdupdatedb.pl -h localhost
### open database connection to
Check update to version 1.11
Check update to version 1.12
Check update to version 1.14
Check update to version 1.31
Set table 'playerstate' to type HEAP
Check update to version 1.32
Check update to version 1.33
Check update to version 1.34
Check update to version 1.41
Update table playlist to version 1.41
add column modified
add column length
Change type of album.modified from DATE to DATETIME
Change type of tracks.modified from DATE to DATETIME
### close database connection
Nun gehen wir in die /home/music/.gdconfig und prüfen, ob folgende Werte richtig gesetzt sind:
Code:
dbhost = localhost
tcpiphost = 192.168.0.175
tcpipport = 26468
Jetzt wird der GD-Server nochmals gestartet:
Code:
music@fishbox:~/bin$ perl gdd.pl
GiantDisc Server version 1.41-5
Open socket on localhost at port 26468 as server (mode 2 - generic)
Open database connection
ID of this instance of gdd (playerid): 0
sh: gdrefresh.pl: command not found
Giant Disc Server started
connection open? ... no
Server accepting socket ...
Bingo!
So weit, so gut - natürlich muss aber noch der Palm Client installiert werden, er findet sich hier:
Code:
fish@fishbox:/home/music$ cd PalmClient/
fish@fishbox:/home/music/PalmClient$ ls
gd-palmos3.prc gd.prc JpegLib.prc pnoJpegLib.prc
Ich habe diese Dateien in den eingerichteten NFS-Share verfrachtet (siehe Kapitel 5) und dann mit Kubuntu Feisty auf meinen Palm installiert. Natürlich könnt ihr das auch auf Windows per Hotsync oder auf der Kommandozeile erledigen.
Das Palm Programm wird geöffnet, die Verbindung mit einem Klick auf "New" konfiguriert:
Name: fishbox (oder was anderes, egal)
ID: 0
Communication Mode: TCP/IP generic
Host: 192.168.0.175
Port: 26468
(gegebenfalls den Port in der Firewall für den Palm öffnen)
Bei "default connection" ein Häkchen setzen, dann ein Klick auf Save!
Wie wählen nun die Verbindung aus und versuchen uns mit "connect" einzuloggen.
Falls dies geklappt hat, sieht man auf der Konsole eine Bestätigung.
Jetzt haben wir es fast geschafft, aber unsere Files müssen noch importiert werden!
Das Palm Programm und der Server Prozess wird nochmals beendet.
In dem Verzeichnis mit unserer Musik führen wir nun folgenden Befehl aus:
Code:
music@fishbox:/media/stoked/Possessedby/Audio$ find . -type d -print -exec /home/music/bin/gdimport.pl -l {} \;
Dabei verwenden wir die Option -l, damit die Dateien in /home/music nur gelinkt, nicht aber dort hin kopiert werden.
Jetzt ist es vollbracht - wir starten den Server erneut, öffnen GD auf dem Palm und spielen den ersten Track ab!
Nun sollte man eigentlich alle eingelesenen Files direkt über den Palm abspielen können. Da GiantDisc noch viele weitere Features mit sich bringt (Last.fm, CDs rippen, Server runterfahren, Replaygain, etc.) lohnt sich auf jeden Fall auch ein Blick in die Dokumentation und auf giantdisc.org. Eventuell werde ich später noch auf einige dieser Möglichkeiten eingehen.
Zum Schluss möchte ich mich noch besonders bei Rolf, Teardrainer und Nonos bedanken für die super Hilfe im GiantDisc Forum - Jungs, ohne euch wäre dieses HOW-TO nie zu Stande gekommen!
Originaldokument: *click*
(von mir geschrieben)
Très cordialement,
fish
Lesezeichen