In Anlehnung an meinen eher allgemein gehaltenen Wiki-Beitrag zum YAESU DR1XE hier nochmals etwas Spezielleres oder auch eine Art „best practise“, was den DR1XE und SVXLINK betrifft. Damit habe ich letztlich die besten Ergebnisse in Sachen SVXLINK, FM-Betrieb DR1X und dessen Audioqualität bei FM erzielen können. Grade bei einer öffentlich betriebenen Relaisfunkstelle halte das für eine der wichtigsten Rahmenbedingung, damit die User auch das Relais gerne nutzen wollen. Auch im Verbund ist natürlich die Übertragungsqualität von Audio-Signalen ebenfalls von entscheidender Bedeutung - und die beginnt nun mal unweigerlich am RX und TX eines Relais bzw. dessen Signalverarbeitung.
Das Thema DR1X und das Finden einer geeigneten Soundkarte bei Einsatz als FM-Repeater mit SVXLINK ist etwas schwieriger als man vielleicht denkt. Eine der Besonderheiten des DR1X sind dessen Audio-Pegel am Remote-Port, die so gar nicht „Standard“-Pegeln eines Line-IN oder Line-OUT normaler Soundkarten entsprechen.
Auf der Suche nach geeigneten Soundkarten für den DR1X bin ich letztlich bei USB-Soundkarten, die mit einem CM108/CM108B bestückt sind, fündig geworden. Daher spreche ich auch die klare Empfehlung aus, diese Soundkarten für den DR1X zu verwenden, denn damit habe ich die besten Ergebnisse an diesem YAESU-Repeater erzielen können. Diese CM108 sind meist in USB-Headsets zu finden.
Neben den „normalen“ Soundfunktionen verfügen diese CM108 als Besonderheit zusätzlich über eigene GPIO-Anschlüsse, die wir uns für die Ansteuerung der PTT bzw. der SQL- und/oder CTCSS-Auswertung zu Nutze machen können.
Ich habe inzwischen über 10 solcher im Folgenden beschriebenen, umgebauten USB-Soundkarten im aktiven Einsatz an FM-Relaisfunkstellen, sie haben sich im Dauerbetrieb bewährt. DTMF-Detection via SVXLINK ist zuverlässig und stabil. Sie kommen meist an den hier genannten DR1X zum Einsatz, aber auch an Geräten wie dem FTM100, FTM300, FTM400 und anderen Geräten wie der MOTOROLA GM3x0-Serie. Soweit es möglich war, sind alle RX und TX im 9k6-Audio-Betrieb eingestellt, um eine möglichst lineare Audiosignal-Verarbeitung sicherzustellen. Besonders bei DTMF-Erkennung oder ähnlichen Funktionen kann das erforderlich sein.
Erhältlich sind diese Soundkarten u.a. bei AMAZON und kosten ca. 7-14€ je nach Anbieter. Diese offene Bauweise eignet sich sehr gut zum Umbau/Modifikation für unseren Zweck.
Hier die Original-Ausführung, wie man sie geliefert bekommt:
Diese werden wir nun ein wenig für unseren Zweck modifizieren. Zuerst entfernen wir die Klinkenbuchsen.
Dann benötigen wir ein paar Bauteile:
Wir folgen am besten der hier beschreibenen Umbauanleitung. Das Potentiometer habe ich weggelassen - da der DR1X volle Audio-Pegel benötigt, ist es überflüssig und wird nicht gebraucht.
Hier der komplette Umbau und der Anschluß an einen DR1X. Ein wenig Geschick und etwas Löterfahrung im Umgang mit SMD sollte allerdings vorhanden sein:
Hier das fertig umgebaute Interface, anschlußfertig für den DR1X:
Folgende Einstellungen sollten für FM-Betrieb gemacht werden, wenn wir den DR1X mit der CM108 verwenden:
Die Sendeleistung des DR1X NIEMALS höher als 20W (also MID) wählen, auch wenn der DR1X 50W kann, überlebt das die Endstufe nicht lange. Grund ist die unzureichende Kühlung des DR1X, die YAESU wirklich schlecht umgesetzt hat. Auch nicht „zum mal ausprobieren“ !!!
getestetes Linux-OS: Raspian/Debian11 (Bullseye) auf Raspberry Pi 2B, 3B, 3B+
/boot/config.txt anpassen:
# HDMI Audio deaktivieren dtoverlay=vc4-kms-v3d,audio=off # Enable on-board audio (loads snd_bcm2835) # brauchen wir nicht deswegen auskommentieren entspricht OFF # dtparam=audio=on
In aktuellen Raspian/Debian-Versionen wird die USB-Soundkarte meistens nicht als Device 0 (default) gelistet, sondern als Device 1.
Wir wollen sie aber als Device 0, also als Default-Device haben. Dafür ist die /lib/modprobe.d/aliases.conf anzupassen:
... # wenn als ALSA Device 0 zu setzen nachfolgende Zeile auskommentieren - das deaktiviert den Eintrag # options snd-usb-audio index=-2 ...
Jetzt machen wir mal einen Neustart, vorher löschen wir aber noch die Datei /var/lib/alsa/asound.state
$ sudo rm /var/lib/alsa/asound.state $ sudo reboot
Nach dem Neustart prüfen wir folgendes:
$ sudo cat /proc/asound/modules 0 snd_usb_audio
Jetzt ist die USB-Soundkarte als Device 0 und damit als Default-Device geladen. Das on-board Sounddevice wird nicht angezeigt, denn wir haben es ja deaktiviert, gleiches gilt für das HDMI-Audio. Dann aktualisieren wir gleich mal den ALSA-Status:
$ sudo alsactl store
Damit wird die /var/lib/alsa/asound.state neu angelegt und enthält nur die Informationen zu der CM108, was ggf. Fehler verhindert beim späteren Verwenden des ALSAMIXERs.
Für die Steuerung der PTT und der SQL-Signalleitung mithilfe der GPIO-Möglichkeiten des CM108 werden sog. HID_RAW_DEVICEs verwendet. Damit es eine eindeutige, klare Zuordnung für SVXLINK gibt, setzen wir sog. symbolic links von /dev/hidrawX (X steht für die Nummerierung der Devices, z.B. /dev/hidraw0) auf /dev/cm108gpio .
Damit das funktioniert, legen wir unter /etc/udev/rules.d eine neue Datei 90-cm108.rules mit folgendem Inhalt an:
# block pulseaudio using the USB soundcard based CM108 for SVXLINK ATTRS{idVendor}=="0d8c", ENV{PULSE_IGNORE}="1" # create symlink /dev/hidrawX to /dev/cm108gpio SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0d8c", SYMLINK+="cm108gpio", MODE="0666"
Jetzt ziehen wir die CM108 mal vom USB ab und stecken sie anschließend wieder an.
Nun prüfen wir, ob die Zuweisung erfolgreich war:
$ sudo ls -l /dev/cm108* lrwxrwxrwx 1 root root 7 10. Jan 18:33 /dev/cm108gpio -> hidraw0
Das hat also geklappt, wir haben jetzt einen Link von /dev/hidraw0 auf /dev/cm108gpio, letzteren verwenden wir dann in der svxlink.conf.
Nun müssen wir noch dem SVXLINK beibringen, das wir die CM108 als Audiodevice und PTT-/SQL-Steuerung verwenden möchten.
Dazu in der /etc/svxlink/svxlink.conf folgende Einträge setzen bzw. anpassen (nur die relevanten Einträge):
[GLOBAL] CARD_SAMPLE_RATE=48000 CARD_CHANNELS=1 [RepeaterLogic] RX=Rx1 TX=Tx1 OPEN_ON_SQL=500 OPEN_SQL_FLANK=OPEN [Rx1] AUDIO_DEV=alsa:plughw:0 AUDIO_CHANNEL=0 SQL_DET=HIDRAW SQL_START_DELAY=0 # stoppt unkontrolliertes kurzes Auftasten des Senders bei normaler SQL ist aber bei CTCSS nicht notwendig SQL_DELAY=200 SQL_HANGTIME=0 # HID_DEVICE=/dev/hidraw0 HID_DEVICE=/dev/cm108gpio HID_SQL_PIN=VOL_DN # wenn Audio aus PIN9 REMOTE Buchse immer 0 setzen DE-EMPHASE macht schon der DR1X im RX selbst DEEMPHASIS=0 SQL_TAIL_ELIM=100 PREAMP=0 PEAK_METER=1 # SIGLEV_DET=NOISE SIGLEV_SLOPE=1 SIGLEV_OFFSET=0 DTMF_MUTING=1 1750_MUTING=1 [Tx1] AUDIO_DEV=alsa:plughw:0 AUDIO_CHANNEL=0 PTT_TYPE=Hidraw # HID_DEVICE=/dev/hidraw0 HID_DEVICE=/dev/cm108gpio HID_PTT_PIN=GPIO3 TX_DELAY=500 # nur bei 9k6 Audio auf 1 setzen sonst 0 PREEMPHASIS=1 MASTER_GAIN=0
Wenn der DR1X auf „packet speed 9600bps“ gestellt ist, also 9k6-Audio macht, sollte der ALSAMIXER in etwa so eingestellt werden (kann aber sein, man muss ggf. noch etwas korrigieren):
Bitte einmal F5 drücken und mit den Cursortasten auf Auto Gain Control gehen und die Taste m für Mute drücken, dort muss dann MM angezeigt werden. Das „Muten“ (= Stummschalten bzw. Deaktivieren) der Auto Gain Control gilt generell für diesen Soundchip CM108 im Zusammenspiel mit SVXLINK. Anderenfalls führt das sonst zu nicht kontrollierbaren Effekten beim Verarbeiten der Audiopegel des RX wie Verzerrungen oder Übersteuerungen.
Um den Input-Pegel nochmals nachzuprüfen, bitte mal folgendes ausführen:
$ sudo systemctl stop svxlink $ sudo arecord -D hw:0 -V mono -f S16_LE -c1 -r48000 /dev/null
Die Ausgabe sollte etwa so aussehen:
Aufnahme: WAVE '/dev/null' : Signed 16 bit Little Endian, Rate: 48000 Hz, mono ########################################+ | 79%
Das misst den NF-Input-Pegel der Soundkarte, wenn vom DR1X-RX Rauschen kommt. Rauschen hat immer alle Frequenzanteile und das höchste Level und ist damit unsere Kontrollmessung. Der Mixer sollte so eingestellt werden, das das Audiopegel nicht ständig über max. 90% aussteuert. Diese „Nachprüfung“ empfehle ich unbedingt zu machen. Anschließend kann SVXLINK wieder gestartet werden:
$ sudo systemctl start svxlink
Damit wären wir durch und der DR1X ist einsatzbereit.
Bitte setzt unbedingt noch in der
die Option MUTE_LOGIC_LINKING=1, um ungewollte Übertragungen zum SVXReflektor zu verhindern.
73 Heiko, DL1BZ
Sysop DB0SPB / DB0OLL
Co-Sysop DB0GRZ / DB0BIW