fm-funknetz:technik:dr1x-cm108

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.

Umbau einer CM108 für den Einsatz am DR1X

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:

  • 1x 4,7k
  • 1x BAT43
  • 1x BC547
  • 1x SUB-D Stecker 15pol. 3-reihig + Steckergehäuse
  • abgeschirmtes Anschlußkabel 5pol.

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:

Grundeinstellungen des DR1X am Touchdisplay

Folgende Einstellungen sollten für FM-Betrieb gemacht werden, wenn wir den DR1X mit der CM108 verwenden:

  • AUDIO-Mode sollte für 9k6-Packetspeed bei FM-Betrieb gewählt werden, also Diskriminator-Audio: auf SETUP tippen, dann F tippen und solange auf die oben angezeigte Frequenz tippen, bis im Display Packetspeed 9600bps angezeigt wird
  • DEVIATION sollte auf WIDE stehen
  • bei MODE/REMOTE muss REMOTE auf ON stehen, die beiden anderen Optionen auf OFF
  • bei ID/SET muss das Repeatercall eingetragen werden, das ist zwar eigentlich nur bei C4FM/digital erforderlich, ABER der DR1X arbeitet sonst auch in FM nicht richtig !
  • bei TIMER die Option TOT auf OFF setzen, Sendezeitbegrenzung erledigen wir später direkt im SVXLINK. SQL TAIL LENGTH bitte auf 0 setzen, sonst ziehen wir eine Rauschschleppe mit, wenn die SQL oder das CTCSS schließt
  • bei ID/ANNOUNCE stellen wir INTERVAL auf OFF, denn die Relaiskennung erledigt ebenfalls das SVXLINK für uns

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+

1. HDMI-Audio und on-board Sound des Pi deaktivieren

/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
2. CM108-Soundkarte als ALSA-Device 0 setzen

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.

4. Anpassen der svxlink.conf für den Betrieb der CM108

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
5. Audio-Pegel einstellen

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):

achtung_symbol.jpgBitte 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

  • /etc/svxlink/svxlink.d/ModuleParrot.conf
  • /etc/svxlink/svxlink.d/ModuleHelp.conf

die Option MUTE_LOGIC_LINKING=1, um ungewollte Übertragungen zum SVXReflektor zu verhindern.

73 Heiko, DL1BZ
Sysop DB0SPB / DB0OLL
Co-Sysop DB0GRZ / DB0BIW

zurück zur Startseite

  • fm-funknetz/technik/dr1x-cm108.txt
  • Zuletzt geändert: 09.02.2023 19:05
  • von 87.182.50.26