Internetstreaming ab Linux Kernel Version 2.6.37

Ab der Linux Kernel Version 2.6.37 kann auf eine 2. Soundkarte verzichtet werden,
da ab dieser Kernel-Version das Modul „snd-aloop“ was ein loopback-Device erzeugt bereits mitgeliefert wird.

Die folgende Beschreibung bezieht sich auf OpenSuSE12.1 sie sollte aber auch leicht auf andere Distributionen übertragbar sein.

Voraussetzungen:
* einen Streaming-Server (Icecast2 oder Shoutcast)
* einen Streaming-Client (Ices2 oder SC_Trans)
* Linux Kernel ab Version 2.6.37 auf dem SvxLink-PC (z.B. OpenSuSE 12.1)

Zunächst müssen Icecast2 und Ices2 oder bei Verwendung von Shoutcast der Shoutcast-Server und SC_Trans  installiert und nach Wunsch konfiguriert werden, im Internet gibt es hierfür mehr als genügend Installations- und Konfigurationsanleitungen.

Der Streaming-Server muss nicht zwingend auf dem selben PC installiert werden auf dem auch SvxLink läuft, hier bietet sich schon allein wegen der besseren Netzwerkanbindung ans Internet ein root-Server an, soweit dieser zur Verfügung steht.

Ices2 oder auch SC_Trans werden entweder auf dem PC auf dem SvxLink läuft oder wie bei mir, auf dem PC auf dem remotetrx läuft (um den SvxLink-PC von der CPU-Last zu befreien) installiert.

Dann müssen wir sicherstellen das die Module „snd-aloop“ und „snd-pcm-oss“, dieses wird für die Verbindung zum Streaming-Client benötigt, beim starten des Systems auch geladen werden.

[/etc/sysconfig/kernel]:
MODULES_LOADED_ON_BOOT="snd-aloop snd-pcm-oss"

Nach dem Neustart des Systems kann nun mit dem Befehl „aplay -l“ überprüft werden ob das Modul „snd-aloop“ auch geladen wurde.

remote-trx1:~ # aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: rev40 [VIA 82C686A/B rev40], device 0: VIA 82C686A/B rev40 [VIA 82C686A/B rev40]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7

Wenn soweit alles funktioniert und auch das Modul „snd-pcm-oss“ ordnungsgemäß geladen wurde dann kann nun „/dev/dsp1“ als Capturedevice für den Streaming-Client verwendet werden.

[sc_trans.conf]:
...
capture=1
capturedevice=/dev/dsp1
captureinput=Capture
capturesamplerate=16000
capturechannels=1
...

[ices2.xml]:
...
< stream >
< metadata >
< name >DB0DIN< /name>
< genre >Hamradio Network< /genre >
< description >DB0DIN Livestream< /description >
< url >http://db0din.de< /url >
< /metadata >
< input >
< module >oss< /module >
< param name="rate">16000< /param>
< param name="channels">1< /param>
< param name="device">/dev/dsp1< /param>
< param name="buffer-time">500< /param>
< param name="metadata">1< /param>
< param name="metadatafilename">/tmp/info.txt< /param>
< /input>
...

SvxLink oder der remotetrx wird noch als Multi-Tx konfiguriert
[/etc/svxlink/svxlink.conf oder /etc/svxlink/remotetrx.conf]:

[RepeaterLogic]
TYPE=Repeater
RX=QuantarRx
TX=MultiTx
MODULES=ModuleEchoLink,ModuleMetarInfo,ModulePropagationMonitor,ModuleSelCallEnc,ModuleTrafficInfo
....

[MultiTx]
TYPE=Multi
TRANSMITTERS=RepeaterTx,StreamingTx

[RepeaterTx]
TYPE=Local
AUDIO_DEV=alsa:plughw:0
AUDIO_CHANNEL=0
PTT_PORT=/dev/ttyS0
PTT_PIN=DTRRTS
TX_DELAY=0
PREEMPHASIS=0
DTMF_TONE_LENGTH=100
DTMF_TONE_SPACING=50
DTMF_TONE_AMP=-18

[StreamingTx]
TYPE=Local
AUDIO_DEV=alsa:plughw:1,1 #hier wird nun das 1. capture-device des snd-aloop ausgewählt
AUDIO_CHANNEL=0
PTT_PORT=NONE
PTT_PIN=DTRRTS
TX_DELAY=0
PREEMPHASIS=0

Jetzt alle Applikationen starten und die Funktion prüfen.
Viel Erfolg wünscht do6ep, Mathias