# 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.

Last modified: Sun Sep 5 14:30:12 CEST 1999