Soundkarte
Folgende Optionen bei der Kernel-Compilierung sind wichtig:
Code maturity level options
[*] Prompt for development and/or incomplete code/drivers
General Setup
[*] Networking support
Network Device Support
[*] Radio network interfaces
...
[*] Soundcard modem driver for AX.25
[?] Soundmodem support for Soundblaster and compatible cards
[?] Soundmodem support for WSS and Crystal cards
[?] Soundmodem support for 1200 baud AFSK modulation
[?] Soundmodem support for 2400 baud AFSK modulation (7.3728 MHz crystal)
[?] Soundmodem support for 2400 baud AFSK modulation (8 MHz crystal)
[?] Soundmodem support for 2666 baud AFSK modulation
[?] Soundmodem support for 4800 baud HAPN-1 modulation
[?] Soundmodem support for 4800 baud PSK modulation
[?] Soundmodem support for 9600 baud FSK G3RUH modulation
Thomas Sailer (sailer@ife.ee.ethz.ch)
entwickelte einen neuen Treiber für den Kernel, mit dem man die
Soundkarte als Modem nutzen kann. Schließt das Funkgerät an die
Soundkarte an, um damit Packet zu spielen! Thomas empfiehlt
mindestens einen 486DX2/66, wenn man diese Software verwenden
will, da die gesamte digitale Signalverarbeitung von der CPU
übernommen wird. Der Treiber kann im Moment 1200 bps AFSK, 2400
bps AFSK, 4800 bps HAPN, 4800 bps PSK und 9600bps FSK
(G3RUH-kompatibel) emulieren. Zur Zeit werden nur SoundBlaster-
und Windows Sound System-kompatible Karten unterstützt. Da die
Soundblaster-Emulation inzwischen selbst bei Billig-Karten recht
gut geworden ist, lohnt sich ein Test in jedem Fall. Soundkarten,
die vom Linux- Sound-Treiber nicht unterstützt werden, sollten
unter DOS initialisiert werden. Dazu startet man ein Minimal-DOS,
in dessen Konfigurationsdateien lediglich die Soundkartentreiber
aufgerufen werden, und lädt anschließend Linux via LOADLIN.
PCI-Soundkarten (z.B. SoundBlaster PCI64) werden derzeit noch NICHT unterstützt!
Die Soundkarten benötigen eine kleine Zusatzschaltung zur
Ansteuerung der PTT, Informationen dazu findet man auf Thomas'
Soundmodem-PTT-Seite http://www.ife.ee.ethz.ch/~sailer/pcf/ptt_circ/ptt.html.
Es gibt einige Möglichkeiten für die PTT-Schaltung: die
Soundausgabe von der Karte auswerten oder die Ausgabe von der
seriellen, parallelen oder MIDI- Schnittstelle zu nutzen. Die
Webseite bietet für jede Option Beispielschaltungen.
Wer die "2400 baud" Betriebsarten nutzen will, beachte eine
kleine Besonderheit: Ursprünglich kam man auf 2400 baud, indem
man den herkömmlichen 1200 baud-Modems auf der Basis des TCM3105
(siehe dazu auch http://www.ardos.de/gerd/tcm3105.html)
einen Quarz mit höherer Frequenz verpaßte. Zwei Quarzfrequenzen
sind üblich: 7.3728 und 8.0 MHz. Bevor man sich für eine davon
entscheidet, sollte man in Erfahrung bringen, womit die
Gegenstationen arbeiten, da die Wahl der falschen Frequenz die
Verbindung stark beeinträchtigen bzw. unmöglich machen kann.
Der SoundModem-Treiber erzeugt Netzwerk-Devices mit Namen sm0,
sm1, sm2 usw., wenn er eingerichtet wurde.
Beachte: Der SoundModem-Treiber beansprucht die gleichen Ressourcen wie
Linux-Sound- und Parallelport-Treiber. Wenn man also den
SoundModem-Treiber verwenden möchte, dürfen sowohl der
Linux-Sound-Treiber als auch der Treiber für die parallele
Schnittstelle nicht geladen sein. Natürlich lassen sich all
diese als Module compilieren, so daß sie mit insmod und rmmod
nach Belieben geladen und entfernt werden können.
Einige OMs laden zuerst den Linux-Sound-Treiber, um die Soundkarte zu
initialisieren, enfernen diesen dann wieder und laden dann den
SoundModem- Treiber:
(rmmod lp)
insmod sound (evtl. Optionen)
rmmod sound
insmod hdlcdrv
insmod soundmodem (evtl. Optionen, dazu später)
Zurück zum Seitenanfang
6.1.3.1. Die Soundkarte einrichten
Der SoundModem-Treiber initialisiert die Soundkarte nicht. In den
AX.25-Utilities ist zu diesem Zweck das Programm setcrystal
enthalten, welches für Soundkarten mit dem Crystal-Chipset
verwendet werden kann. Wer eine andere Karte hat, muß andere
Software zum Initialisieren verwenden.
Die Syntax von Setcrystal:
setcrystal [-w wssio] [-s sbio] [-f synthio] [-i irq] [-d dma] [-c dma2]
Will man eine SoundBlaster auf I/O-Adresse 0x388, IRQ
10 und DMA 1 einrichten, so verwendet man:
setcrystal -s 0x388 -i 10 -d 1
Ein Windows-Sound System konfiguriert man so auf
IO-Adresse 0x534, IRQ 5, DMA 3:
setcrystal -w 0x534 -i 5 -d 3
Mit [-f synthio] kann man die Adresse des Synthesizers einstellen,
mit [-c dma2] richtet man den zweiten DMA-Kanal für
Vollduplexbetrieb ein.
Zurück zum Seitenanfang
6.1.3.2. Den SoundModem-Treiber konfigurieren
Nachdem die Soundkarte eingerichtet ist, muß
man dem SoundModem-Treiber mitteilen, wo sich die Soundkarte
befindet und welche Art von Modem emuliert werden soll. Diese
Einstellungen können mit Sethdlc vorgenommen werden, ebenso
können die erforderlichen Parameter dem SoundModem-Modul auf der
insmod- Kommandozeile mitgegeben werden.
Als Beispiel eine einfache Konfiguration für eine SoundBlaster, die ein
1200bps-Modem emuliert:
insmod hdlcdrv
insmod soundmodem mode="sbc:afsk1200" iobase=0x220 irq=5 dma=1
Aber es geht auch genau so gut mit sethdlc, das sowohl mit einer Karte
als auch mit mehreren funktioniert:
Zunächst muß auch hier das Modul geladen
insmod hdlcdrv
insmod soundmodem
oder die SoundModem-Unterstützung in den Kernel eincompiliert sein.
Wir richten damit beispielsweise das schon oben konfigurierte Windows
Sound System ein, daß es ein 9600-bps-FSK-Modem nach G3RUH als
Device sm0 emuliert und einen Parallelport an 0x378 zur
Ansteuerung der PTT nutzt:
sethdlc -p -i sm0 mode wss:fsk9600 io 0x534 irq 5 dma 3 pario 0x378
Die in Punkt 6.1.3.1. erwähnte SoundBlaster einrichten, daß sie als Device sm1 ein 4800
bps-HAPN-Modem emuliert und eine serielle Schnittstelle an 0x2f8
zur PTT-Ansteuerung nutzt:
sethdlc -p -i sm1 mode sbc:hapn4800 io 0x388 irq 10 dma 1 serio 0x2f8
...als 1200-bps-AFSK-Modem mit PTT über serielle Schnittstelle an 0x2f8:
sethdlc -p -i sm1 mode sbc:afsk1200 io 0x388 irq 10 dma 1 serio 0x2f8
Die Konfiguration der Kanalzugriffsparameter erfolgt analog dem bei BayCom
Gesagten.
Beispiel: Das Device sm0 soll ein TXDelay von 100ms, eine Slottime von 50ms, eine Ppersist (Persistence) von 128 und
full-Duplex-Betrieb fahren:
sethdlc -i sm0 -a txd 100 slot 50 ppersist 120 full
Alle Werte sind auch hier in Millisekunden anzugeben.
Zurück zum Seitenanfang
6.1.3.3. Die Audiopegel einstellen und den Treiber feinabstimmen
Es ist für die Funktion jedes Funkmodems sehr
wichtig, daß die Audiopegel korrekt eingestellt sind. Dies gilt
ebenso für das SoundModem. Thomas Sailer hat einige Utilities
entwickelt, die diese Aufgabe erleichtern. Es sind die Programme
smdiag und smmixer. Smdiag bietet zwei Anzeigearten, einmal als
Oszilloskop, zum zweiten als Augenmuster an. Mit Smmixer kann man
die Sende-und Empfangspegel abgleichen.
Um smdiag im "Augen-Modus" für das SoundModem-Device sm0 zu
starten:
smdiag -i sm0 -e
Smmixer wird für sm0 so gestartet:
smmixer -i sm0
Beide Programme zeigen die aktuellen Einstellungen
für die Pegel an den Aus- und Eingängen der Karte an.
Um diese zu verändern, gibt es zwei Wege:
1. (bei von Linux unterstützten Karten): Man besorge sich ein Mixerprogramm (es
finden sich einige auf ftp://sunsite.unc.edu/pub/Linux/apps/sound/mixers)
und stelle damit die Werte ein. Günstig sind kommandozeilenorientierte Programme wie cmix ( ftp://sunsite.unc.edu/pub/Linux/apps/sound/mixers/cmix-0.9.2.tgz
), da sie in das Startskript eingebunden werden können und so
immer die gleichen Einstellungen gegeben sind.
2. bei nicht von
Linux unterstützten Soundkarten, die über DOS-Treiber
initialisiert werden müssen, sollte man das der Karte meist
beiliegende Mixer-Utility für DOS nutzen. Dies trifft auf einen
Großteil der Onboard-Soundkarten zu. Siehe dazu auch das
Sound-HOWTO (http://metalab.unc.edu/LDP/HOWTO/Sound-HOWTO.html).
Zurück zum Seitenanfang
6.1.3.4. Die AX.25-Unterstützung des Kernels
für die Nutzung des SoundModem-Device einrichten
Der SoundModem-Treiber erzeugt Standard-Netzwerk-Devices, die der
Kernel-AX.25-Code nutzen kann. Damit ist die Konfiguration mit
der eines BayCom-Modems, einer PI- oder PacketTwin-Karte vergleichbar.
Zunächst gibt man dem SoundModem-Device ein
Rufzeichen:
/sbin/ifconfig sm0 hw ax25 VK2KTJ up
oder (einige Versionen von ifconfig unterstützen den eben angegebenen Weg nicht):
/sbin/ifconfig sm0 up
axparms -setcall sm0 VK2KTJ up
Als nächstes wird in der Datei /etc/ax25/axports ein Eintrag für
SoundModem hinzugefügt. Die Verbindung des Eintrags zum
entsprechenden Netzwerk-Device geschieht über das eingestellte
Rufzeichen. Verwendet ein Programm den Eintrag mit dem für
SoundModem vergebenen Rufzeichen, so wird das SoundModem-Device
angesprochen.
Das neue AX.25-Device kann nun ganz normal
verwendet werden, es läßt sich für TCP/IP einrichten,
man kann es dem ax25d hinzufügen und NetROM oder ROSE darüber
laufen lassen.
Erscheinen Fehlermeldungen beim Aufruf von
ifconfig wie
"no such device"
oder
"permission denied",
sollte man die Konfigurationsoptionen (I/O-Adresse, IRQ, DMA) nochmals überprüfen.
Wegweiser
Überprüfen sie nun ihre Konfiguration.
Hans-Peter Zorn