Shoutcasting FM Cards in Linux
Shoutcasting FM Cards in Linux
in Debian Linux
Σκοπός οδηγού
Live αναμετάδοση σταθμών FM με χρήση fm radio tuner cards.
Απαιτούμενο Hardware
1. fm radio card (pci/isa) – tv tuner card supporting fm radio
2. soundcard
3. stereo jack cable 1/8-1/8
4. κεραία για την λήψη του σταθμού
Περιεχόμενα
1.1 Εγκατάσταση Hardware (Σελ. 2)
1.2 Αναγνώριση συσκευών από Linux & φόρτωμα των κατάλληλων modules (Σελ. 2)
1.3 Περιγραφή software που θα χρησιμοποιήσουμε (Σελ. 5)
1.4 fmtools (Σελ. 6)
2.1 lame mp3 encoder (Σελ. 6)
2.2 liveice (Σελ. 8)
2.3 shoutcast server (Σελ. 8)
2.4 alsa-utils(Σελ. 9)
2.5 screen (Σελ. 10)
3.1 Εκκίνηση shoutcast server & δοκιμές (Σελ. 10)
3.2 Ρύθμιση για εκίνηση κατά το boot (Σελ. 12)
Σελ.1
1.1. Εγκατάσταση Hardware
Τοποθετούμε τις κάρτες μας (radio tuner & soundcard) μέσα στα pci/isa slots του υπολογιστή μας.
Υποθέτουμε ότι η κάρτα ήχου σας έχει εγκατασταθεί σωστά μιας και ήδη χρησιμοποιείτε κάποια
κάρτα ήχου.
Επικεντρώνουμε το ενδιαφερον μας στην εγκατάσταση της radio κάρτας που θα χρησιμοποιήσετε.
Ελέγχουμε γραμμή-γραμμή με το dmesg αν αναγνωρίστηκε η κάρτα κατά το boot του υπολογιστή.
:/# dmesg|more
Αφού δούμε ότι το σύστημα αναγνώρισε την κάρτα μας, τότε τρέχουμε
:/# lspci -v
για να δούμε αν η κάρτα έχει εγκατασταθεί. (εδώ φαίνονται μόνο οι περιπτώσεις pci καρτών)
Σελ.2
Καταρχήν εντωπίζουμε ποια κάρτα έχουμε (κατασκευαστής-μάρκα) και προσπαθούμε κάνοντας
ένα google search να βρούμε τι υποστήριξη έχει η κάρτα αυτή από linux drivers.
Συνήθως αυτό το κάνουμε πρίν αγοράσουμε την κάρτα μας!
Κοιτάζουμε το βασικό chip της κάρτας και εντωπίζουμε τον κωδικό του (chipset).
Θα παραθέσω 2 παραδείγματα, ένα για μια απλή isa fmcard που χρησιμοποιώ προσωπικά και για
ένα tv tuner της Hauppauge που υποστηρίζει fm tuner
Παράδειγμα 1
Χρησιμοποιώ μια ISA fm tuner card η οποία είναι της Philips.
Ψάχνοντας στο google ανακαλύπτω ότι υπάρχει κατάλληλο module για την κάρτα Radio TrackII
με την ονομασία radio-rtrack2
Ψάχνω να βρώ το module
Bλέπω ότι υπάρχουν 2 επιλογές για το io (I/O) της κάρτας 0x20c και 0x30c
Οπότε δοκιμάζω να φορτώσω τον οδηγό με την πρώτη επιλογή και αν δεν δουλέψει του δίνω την
άλλη.
:/# modprobe radio-rtrack io=0x20c
Σελ.3
Ελέγχω αν το σύστημα πρόσθεσε και το αντίστοιχο device node στο /dev
:/# ls /dev
Όλα οκ. Έχει προσθεσεί το dev/radio0 που αντιστοιχεί στην πρώτη radio κάρτα μου.
Παράδειγμα 2
Χρησιμοποιώ ένα PCI tv tuner της Hauppauge που υποστηρίζει fm radio tuner.
:/# lspci -v
Επειδή η κάρτα είναι TV tuner κατά κύριο λόγο πρέπει να δώ στα devices μου ποιες συσκευές έχει
φτιάξει.
Σελ.4
:/# ls /dev
/dev/video0
/dev/video24
/dev/video32
Για να δω ποιο αντιστοιχεί στο radio-device του Tv tuner μου, καταρχήν κοιτάω στο dmesg
και βλέπω ότι το /dev/video24 πιθανώς αναφέρεται στο audio-radio-device του Tv Tuner μου!
Θα χρησιμοποιήσουμε έναν broadcaster δηλαδή το πρόγραμμα που θα παίζει τον ήχο (στην ουσία
θα το τραβάει από το line-in της κάρτας ήχου) το οποίο είναι το liveice.
O broadcaster θα στέλνει την πληροφορία στον shoutacast server (dnas) ο οποίος θα συνδέει
τους πελάτες πάνω του για να ακούσουν.
O lame mp3 encoder θα αναλαμβάνει να κωδικοποιεί το σήμα που έρχεται από το line-in
της κάρτας σε mp3 μορφή.
To πακέτο fmtools περιέχει προγραμματάκι το οποίο μας βοηθάει να κάνουμε tune την κάρτα μας
στο συγκεκριμένο σταθμό. Στην ουσία ρυθμίζει την συχνότητα και την ένταση ήχου στην έξοδο
της κάρτας fm.
Τα alsa-utils περιέχουν ένα πολύ χρήσιμο εργαλείο, το μίκτη (alsamixer). Έτσι μπορώ να δώσω
ένταση στο line-in της κάρτας μου. (από εκεί είπαμε στριμάρουμε).
Το screen είναι ένα terminal emulator το οποίο μου επιτρέπει να τρέχω σωστά εφαρμογές στο
background ανοίγοντας virtual terminal screens.
Σελ.5
2.2. fmtools
πχ.
Θα συντονίσει το radio-tuner που αντιστοιχεί στο /dev/radio0 στη συχνότητα 92.00 Μhz με
ένταση ήχου 50000 -->76%
Για να το τεστάρετε, βάλτε στην έξοδο του tuner σας ένα ζευγάρι ακουστικά και ακούστε τι παίζει
το tuner σας.
Κατεβάζουμε την τελευταία version του lame mp3 encoder σε source μορφή από το
http://internap.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz
:/# cd /tmp
:/temp# wget http://internap.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz
Το αποσυμπιέζουμε
:/temp# cd lame/lame-3.97.tar.gz
:temp/lame-0.39.tar.gz# ./configure
.
.
.
:temp/lame-0.39.tar.gz# make install
Στην περίπτωση που αντιμετωπίσουμε πρόβλημα στο compiling ή μας λείπουν βιβλιοθήκες για να προχωρήσει
η διαδικάσια, εγκαθιστούμε το εξής πακέτο: build-essential
Σελ.6
2.4. liveice
Το liveice είναι ο broadcaster μας o οποίος θα πάρει σήμα από το line-in της κάρτας ήχου.
# basic options
SERVER 127.0.0.1
PORT 8001
PASSWORD ****
προσοχή στο port. Βαλτε κάτι διαφορετικό από 8000. Δεν είναι το port που συνδέονται οι
πελάτες(αυτο θα ρυθμιστεί αργότερα στο shoutcast.conf) αλλά το port που επικοινωνεί το liveice με
τον shoutcast server. Επίσης βάλτε ένα password. Tο ίδιο θα βάλετε και στο shoutcast server.
# If you're having problems - specify the full path to the encoder
USE_LAME3 /usr/local/bin/lame
ENCODER_ARGS -f
Εδώ μπορείτε να αλλάξετε την ποιότητα του ήχου που θα παράγει ο lame encoder.
Μπορείτε να δείτε τα διάφορα arguments κάνοντας
:/# man lame
To -f αντιστοιχεί στο πιο απλό encoding για να μην καταναλώνει πολύ cpu, κάνοντας βέβαια
συμβιβασμό με την ποιότητα ήχου που παίρνουμε.
SOUNDCARD
απλά επιλέγει την κάρτα ήχου σαν κύριο player
ENCODING_QUALITY 30
SAMPLE_RATE 44100
BITRATE 160000
STEREO
Σελ.7
# Stream metadata
#
# name# name -n
NAME :::..Galaxy 92.00 fm..:::
# genre -g
GENRE Greek
# public flag -x
PUBLIC 0
# URL -u
URL http://galaxy.zabounis.awmn:8000
#password -P
PASSWORD *****
Για να το έχουμε πιο οργανωμένο, φτιάχνουμε ένα directory στο /etc και αποσυμπιέζουμε το αρχείο
μας εκεί.
:/# cd /etc
:/etc# mkdir shoutcast
:/etc# cd shoutcast
:/etc/shoutcast# wget http://www.shoutcast.com/downloads/sc1-9-8/sc_serv_1.9.8_Linux.tar.gz
:/etc/shoutcast# tar xfvz sc_serv_1.9.8_Linux.tar.gz
MaxUser=16
Password=*****
Σελ.8
PortBase=8000
LogFile=/var/log/sc_serv.log
SrcIP=ANY
DestIP=10.49.225.3
αυτή είναι η διευθυνση του server σας. Σ' αυτήν θα συνδέονται οι clients για να ακούνε.
2.6.Alsa-utils
:/# alsamixer
Σελ.9
Κάνουμε unmute το Line και ρυθμίζουμε την έντασή του.
Πατάμε esc για να βγούμε κονσόλα.
Αν έχουμε βάλει το stereo jack 1/8-1/8 καλωδιο σε άλλη είσοδο (πχ mic) τότε ανοίγουμε το
κατάλληλο κανάλι στο μίκτη.
2.7. Screen
:/# screen
πατάμε <spacebar> και έχουμε ένα virtual terminal
:/# who
Για να κάνετε detach το virtual terminal πατείστε CTRL-D
:/# screen
<spacebar>
:/# cd /etc/shoutcast
:etc/shoutcast# ./sc_serv sc_serv.conf
Σελ.10
Ξεκινάμε καινούριο terminal window
:/# screen
<spacebar>
Τρέχουμε το liveice
:/# liveice
http://10.x.x.x:8000
Σελ.11
3.2. Ρύθμιση για εκίνηση κατά το boot
Θα φτιάξουμε ένα μικρό script για να εκκινεί ο shoutcast server κατά το boot για να μην καθόμαστε
να κάνουμε manually ολη αυτή τη διαδικασία.
:/# cd /etc/init.d
Φτιαξτε ένα text αρχείο (π.χ) με όνομα fm και γράψτε μέσα το εξής.
#! /bin/sh
# /etc/init.d/fm
#
cd /usr/bin/
fm -d /dev/radio0 92.00 50000
cd /etc/shoutcast/
screen -d -m ./sc_serv sc_serv.conf
screen -d -m liveice
/etc/init.d# chmod +x fm
/etc/init.d# update-rc.d fm
Σελ.12