<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.drc.bz/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=IN3FQQ</id>
	<title>DRC Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.drc.bz/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=IN3FQQ"/>
	<link rel="alternate" type="text/html" href="https://wiki.drc.bz/wiki/Spezial:Beitr%C3%A4ge/IN3FQQ"/>
	<updated>2026-05-14T02:45:58Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=HAMVOIP&amp;diff=123</id>
		<title>HAMVOIP</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=HAMVOIP&amp;diff=123"/>
		<updated>2025-12-29T15:22:12Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: Implementierung vom &amp;quot;Caller ID Name&amp;quot; dokumentiert und Updates beim Dialplan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Allgemeine Infos ==&lt;br /&gt;
Im HAMNET existiert ein VOIP-Verbund auf Basis von Asterisk-Servern (teils &amp;quot;bare-bone&amp;quot; Asterisk, teils FreePBX), welche über DUNDi miteinander im Verbund stehen. Somit ist es möglich, Rufnummern auf anderen Servern zu finden und anzuwählen.&lt;br /&gt;
&lt;br /&gt;
Diese VOIP-Server lassen sich anhand der HAMNETDB finden: sie heißen meist &#039;&#039;sip.standort&#039;&#039; und haben meist die Beschreibung &#039;&#039;asterisk_dundi&#039;&#039; im Kommentarfeld.&lt;br /&gt;
&lt;br /&gt;
=== Rufnummern ===&lt;br /&gt;
Damit für das Funktionieren des Systems keine zentrale &amp;quot;Nummernvergabestelle&amp;quot; notwendig ist, macht man sich die Tatsache zu nutze, dass jeder Funkamateur ein eindeutiges Rufzeichen besitzt. Die VOIP-Rufnummer leitet sich nun durch &amp;quot;Buchstabenwahl&amp;quot; direkt vom Rufzeichen ab:&lt;br /&gt;
&lt;br /&gt;
* Erste Zahl: &#039;&#039;auf welcher Taste befindet sich der Buchstabe?&#039;&#039;&lt;br /&gt;
* zweite Zahl: &#039;&#039;der wievielte Buchstabe auf der Taste?&#039;&#039;&lt;br /&gt;
** für die Ziffer selbst ist die zweite Zahl die 0&lt;br /&gt;
&lt;br /&gt;
Beispiel: IN3FQQ wird zu:&lt;br /&gt;
&lt;br /&gt;
* I =&amp;gt; &#039;&#039;&#039;4 3&#039;&#039;&#039; (dritter Buchstabe auf der Taste 4)&lt;br /&gt;
* N =&amp;gt; &#039;&#039;&#039;6 2&#039;&#039;&#039;&lt;br /&gt;
* 3 =&amp;gt; &#039;&#039;&#039;3 0&#039;&#039;&#039; (die Ziffer selbst auf der Taste 3)&lt;br /&gt;
* F =&amp;gt; &#039;&#039;&#039;3 3&#039;&#039;&#039;&lt;br /&gt;
* Q =&amp;gt; &#039;&#039;&#039;7 2&#039;&#039;&#039;&lt;br /&gt;
* Q =&amp;gt; &#039;&#039;&#039;7 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Nummer für IN3FQQ lautet also: &#039;&#039;&#039;&#039;&#039;43 62 30 33 72 72&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sofern das verwendete Telefon eine Tastatur mit Buchstaben hat, ist die &amp;quot;Übersetzung&amp;quot; des Rufzeichens recht intuitiv.&lt;br /&gt;
&lt;br /&gt;
=== DUNDi Network Map Projekt ===&lt;br /&gt;
Es gibt ein Projekt, welches versucht, den DUNDi-Verbund im HAMNET mit seinen Peerings auf einer Karte darzustellen.&lt;br /&gt;
&lt;br /&gt;
Hier findet sich die Übersichtsseite (nur im HAMNET erreichbar):&lt;br /&gt;
&lt;br /&gt;
http://db0bt.hamnet.radio:85/&lt;br /&gt;
&lt;br /&gt;
Um mit einem eigenen Asterisk-Server am &#039;&#039;DUNDi Network Map&#039;&#039; Projekt teilzunehmen, muss:&lt;br /&gt;
&lt;br /&gt;
* In der HamnetDB im Kommentar des SIP-Servers &#039;&#039;&#039;asterisk_dundi&#039;&#039;&#039; stehen&lt;br /&gt;
* Auf dem SIP-Server ein Webserver laufen, der die beiden Files &#039;&#039;/dundi.info&#039;&#039; und &#039;&#039;/dundi_show_peers.info&#039;&#039; bereitstellt. Das erste File ist statisch, letzteres wird durch einen Cronjob stündlich aktualisiert:&lt;br /&gt;
&lt;br /&gt;
 ~# cat /var/www/html/dundi.info &lt;br /&gt;
 #Rufzeichen;IP des Asterisk-Servers;MAC des Asterisk-Servers;Names des Betreibers;Rufzeichen des Betreibers;Email des Betreibers&lt;br /&gt;
 IR3UHF;44.169.1.29;ee:19:2c:04:d9:fe;Simon;IN3FQQ;tech@drc.bz&lt;br /&gt;
 &lt;br /&gt;
 ~# cat /etc/cron.hourly/dundistatus&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 asterisk -r -x &#039;dundi show peers&#039; &amp;gt; /var/www/html/dundi_show_peers.info&lt;br /&gt;
&lt;br /&gt;
== Technische Hintergründe ==&lt;br /&gt;
&lt;br /&gt;
=== Funktionsweise ===&lt;br /&gt;
Als Basis verwenden die Server jeweils die Software &#039;&#039;asterisk&#039;&#039;. Manche verwenden die Distribution FreePBX, welche mit einer Weboberfläche und einer ganzen Reihe an Erweiterungen kommt.&lt;br /&gt;
&lt;br /&gt;
Auch das &amp;quot;HamServerPI&amp;quot;-Image, das in DL recht verbreitet ist, hat unter anderem Asterisk mit eingebaut. Auch dieses verwendet FreePBX, welcher standardmäßig auf Port 81 mit einer Weboberfläche antwortet.&lt;br /&gt;
&lt;br /&gt;
Unser Server &#039;&#039;&#039;sip.ir3uhf&#039;&#039;&#039; auf dem Rittnerhorn hingegen ist eher &#039;&#039;minimalistisch&#039;&#039; aufgebaut: es läuft ein asterisk &amp;quot;standalone&amp;quot; auf einem Debian LXC Container.&lt;br /&gt;
&lt;br /&gt;
=== Verteiltes Telefonverzeichnis ===&lt;br /&gt;
Für die internationale Vernetzung via HAMNET wird das Modul &amp;quot;DUNDi&amp;quot; eingesetzt. DUNDi steht für &#039;&#039;Distributed Universal Number Discovery&#039;&#039; und ist vereinfacht gesagt eine Implementierung eines verteilten/Peer-to-Peer basierten Telefonbuchs.&lt;br /&gt;
&lt;br /&gt;
Der Ablauf eines Verbindungsaufbaus läuft vereinfacht dargestellt folgendermaßen ab:&lt;br /&gt;
&lt;br /&gt;
# Ist die Telefonnummer am lokalen Server registriert, dann kann diese natürlich direkt erreicht werden.&lt;br /&gt;
# Falls nicht, werden die DUNDi-Peers befragt, ob irgendjemand diese Nummer kennt.&lt;br /&gt;
# Falls ein Server die Nummer kennt, wird mitgeschickt, wie man diesen Server erreichen kann.&lt;br /&gt;
# Der eigene Server baut eine Verbindung zum Zielserver auf&lt;br /&gt;
# Das Telefon des gewählten Verbindungspartners klingelt.&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal das einfachere Negativbeispiel anhand einer fiktiven Nummer &#039;&#039;12345&#039;&#039; welche &#039;&#039;nicht&#039;&#039; existiert:&lt;br /&gt;
&lt;br /&gt;
In diesem Fall sieht die Antwort folgendermaßen aus:&lt;br /&gt;
 vdrcsip01*CLI&amp;gt; dundi lookup 12345@priv&lt;br /&gt;
 DUNDi lookup returned no results.&lt;br /&gt;
 DUNDi lookup completed in 532 ms&lt;br /&gt;
Sollte diese Nummer also auch auf dem lokalen Server nicht bekannt sein, ist in diesem Fall nichts mehr zu machen. Die Verbindung kann nicht aufgebaut werden und das Telefon signalisiert dies dem Benutzer.&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird nun nach der Nummer des DL-Rundspruchs &#039;&#039;3122007431213153&#039;&#039; gesucht.&lt;br /&gt;
&lt;br /&gt;
Diese ist existent und es sollte folglich ein Server im Verbund gefunden werden, der diese Nummer kennt:&lt;br /&gt;
 vdrcsip01*CLI&amp;gt; dundi lookup 3122007431213153@priv&lt;br /&gt;
   1.     0 IAX2/iaxuser:##secret##@44.149.166.36/3122007431213153 (EXISTS)&lt;br /&gt;
      from 62:ec:e3:5a:57:7f, expires in 50 s&lt;br /&gt;
 DUNDi lookup completed in 1668 ms&lt;br /&gt;
In diesem Fall konnte der Server ermittelt werden, welcher diese Nummer aktuell aufliegen hat. Konkret handelt es sich im Beispiel um den Server 44.149.166.36 (sip.db0sda) bei &#039;&#039;&#039;DB0SDA in Aachen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dabei ist hervorzuheben, dass es nicht zwingend notwendig ist, zu diesem Server ein direktes DUNDi-Peering zu haben.&lt;br /&gt;
&lt;br /&gt;
Jeder Peer kann nämlich von sich aus bei einem seiner eigenen Peers weiterfragen, falls er die Information nicht selbst kennt.&lt;br /&gt;
&lt;br /&gt;
Das DUNDi-Netzwerk muss somit also nicht zwingend ein Full-Mesh sein. Es reicht &#039;&#039;jemanden zu kennen, der einen kennt, der die Nummer aufliegen hat.&#039;&#039; Die Rekursionstiefe kann dabei in der Konfigurationsdatei angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Außerdem müssen keine IAX-Trunks oder ähnliches statisch konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie man aus der Antwort des DUNDi-Lookups erkennen kann, wird beim Auffinden einer Telefonnummer die Information mitgeliefert, wie man diese Nummer erreichen kann. Diese besteht aus den folgenden Teilen:&lt;br /&gt;
&lt;br /&gt;
* Technologie/Protokoll, in diesem fall &#039;&#039;&#039;IAX2&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Benutzername&#039;&#039;&#039; und &#039;&#039;&#039;temporäres Passwort&#039;&#039;&#039; für die Verbindung&lt;br /&gt;
* &#039;&#039;&#039;IP Adresse&#039;&#039;&#039; des Zielservers&lt;br /&gt;
* die &#039;&#039;&#039;Anschlussnummer&#039;&#039;&#039;&lt;br /&gt;
* die &#039;&#039;&#039;ID&#039;&#039;&#039; des DUNDi-Peers, von dem die Information empfangen wurde&lt;br /&gt;
&lt;br /&gt;
Im HAMNET VOIP Verbund wird die Verbindung zum Zielserver in den meisten Fällen über das IAX2-Protokoll realisiert.&lt;br /&gt;
&lt;br /&gt;
Die entsprechenden Zugangsdaten für die Verbindung werden in der DUNDi-Antwort mitgeliefert, wobei das Passwort mehrmals täglich rotiert.&lt;br /&gt;
&lt;br /&gt;
 In vielen HAMNET VOIP Beispielen wird in der dundi.conf ein &#039;&#039;secret&#039;&#039; angegeben. Dieses ist vermutlich ein Relikt aus vergangenen Zeiten.&lt;br /&gt;
 &lt;br /&gt;
 In der DUNDi-Dokumentation ist diese Konfigurationsvariable nicht mehr dokumentiert und effektiv funktionieren die Peerings im HAMNET auch ohne ein Secret anzugeben&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Im Folgenden wird eine funktionierende Basiskonfiguration geschildert, so wie sie auch bei &#039;&#039;sip.ir3uhf&#039;&#039; verwendet wird.&lt;br /&gt;
&lt;br /&gt;
=== sip.conf / pjsip.conf ===&lt;br /&gt;
 [global]&lt;br /&gt;
 regcontext=dundiextens&lt;br /&gt;
 &lt;br /&gt;
 [transport-udp]&lt;br /&gt;
 type=transport&lt;br /&gt;
 protocol=udp    ;udp,tcp,tls,ws,wss&lt;br /&gt;
 bind=0.0.0.0&lt;br /&gt;
Die &#039;&#039;regcontext&#039;&#039; Option legt fuer jeden angemeldeten Benutzer dynamisch einen Eintrag im angegebenen Dialplan-Kontext &#039;&#039;dundiextens&#039;&#039; an und entfernt ihn wieder, sobald sich ein Benutzer/Telefon abmeldet.&lt;br /&gt;
&lt;br /&gt;
Die hier eingetragenen Nummern sind jene, die spaeter von DUNDi announced werden.&lt;br /&gt;
&lt;br /&gt;
Die Benutzeraccounts selbst werden in unserem Fall über die Konfigurationsdatei pjsip_wizard.conf anhand der Wizard-Funktion von PJSIP angelegt.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das auch anhand einer Datenbank gemacht werden, welche man dann ggf. auch auf weitere Standorte replizieren kann, um den Benutzern auf weiteren Servern in der Region einen Login mit denselben Zugangsdaten zu erlauben.&lt;br /&gt;
&lt;br /&gt;
=== dundi.conf ===&lt;br /&gt;
 ;&lt;br /&gt;
 ; DUNDi configuration file&lt;br /&gt;
 ;&lt;br /&gt;
 ; For more information about DUNDi, see &amp;lt;nowiki&amp;gt;http://www.dundi.com&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ;&lt;br /&gt;
 ;&lt;br /&gt;
 [general]&lt;br /&gt;
 department=DRC&lt;br /&gt;
 organization=Dolomites Radio Club&lt;br /&gt;
 locality=Bozen&lt;br /&gt;
 country=IT&lt;br /&gt;
 email=drc@drc.bz&lt;br /&gt;
 ttl=2&lt;br /&gt;
 cachetime=50&lt;br /&gt;
 autokill=yes&lt;br /&gt;
 ; eigene ID, normalerweise die eigene MAC Adresse.&lt;br /&gt;
 ; diese geben wir explizit an, damit nach etwaigem Serverumzug die ID gleichbleibt&lt;br /&gt;
 entityid=ab:cd:ef:ab:cd:ef  &lt;br /&gt;
 &lt;br /&gt;
 [mappings]&lt;br /&gt;
 &lt;br /&gt;
 priv =&amp;gt; dundiextens,0,IAX2,iaxuser:${SECRET}@44.169.1.29/${NUMBER},nopartial&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ;; konfiguration eines DUNDi-Peers&lt;br /&gt;
 [aa:bb:cc:dd:ee:ff]&lt;br /&gt;
 ; ip adresse oder hostname des Peers&lt;br /&gt;
 host=sip.standort.hamnet.radio&lt;br /&gt;
 include=priv&lt;br /&gt;
 model=symmetric&lt;br /&gt;
 order=primary&lt;br /&gt;
 permit=priv&lt;br /&gt;
 qualify=yes&lt;br /&gt;
In der dundi.conf werden nun die eigenen Details (department, organization etc. sind im Grunde nicht notwendig) konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind die Optionen &#039;&#039;ttl&#039;&#039;, &#039;&#039;cachetime&#039;&#039; sowie &#039;&#039;autokill&#039;&#039; und &#039;&#039;entityid&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;entityid&#039;&#039; wird - sofern nicht explizit angegeben - von der eigenen MAC-Adresse abgeleitet. Da diese aber bei allen Peers angegeben werden muss, empfiehlt es sich die ID explizit in der Konfigurationsdatei anzugeben, damit diese im Falle eines Server-Umzugs beibehalten werden kann.&lt;br /&gt;
&lt;br /&gt;
Die option &#039;&#039;ttl&#039;&#039; beschreibt, wieviele Hops der DUNDi-Lookup &amp;quot;weitergereicht&amp;quot; werden darf. Der wert 2 bedeutet also, dass alle angeschlossenen DUNDi-Peers auch noch ihre eigenen Peers befragen dürfen. Danach wird nicht mehr weitergefragt.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;cachetime&#039;&#039; gibt an, für wieviele Sekunden eine empfangene Antwort zwischengespeichert werden soll. Sofern nicht angegeben ist der Standardwert 3600 Sekunden (1 Stunde), was für den Einsatzzweck im HAMNET natürlich nicht sinnvoll wäre.&lt;br /&gt;
&lt;br /&gt;
In unserem Fall setzen wir die cachetime auf einen wesentlich kürzeren Wert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;autokill&#039;&#039; definiert, dass Anfragen an nicht antwortende Peers nach standardmäßig 2sec abgebrochen und der Peer als offline markiert wird.&lt;br /&gt;
&lt;br /&gt;
Der wichtigste Teil der Konfiguration befindet sich jedoch im Bereich &#039;&#039;[mappings].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird definiert, welche Nummern vom eigenen Server in den DUNDi-Verbund announced werden.&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationszeile ordnet dem DUNDi-Kontext &#039;&#039;priv&#039;&#039; den internen Kontext &#039;&#039;dundiextens&#039;&#039; zu. Dieser enthält (siehe vorhergehende &#039;&#039;pjsip.conf&#039;&#039; Konfiguration) die Telefonnummern aller aktuell am eigenen Server angemeldeten Benutzer/Telefone.&lt;br /&gt;
&lt;br /&gt;
Die darauffolgende Zahl &#039;&#039;0&#039;&#039; gibt an, dass die Nummern direkt an diesem Server aufliegen.&lt;br /&gt;
&lt;br /&gt;
Abschließend wird der Verbindungsstring angegeben, welcher den anfragenden DUNDi-Peers in der Antwort zurückgeschickt wird.&lt;br /&gt;
&lt;br /&gt;
Die Option &#039;&#039;nopartial&#039;&#039; beschreibt, dass der Server nur für exakt übereinstimmende Nummern und nicht für partielle übereinstimmungen antworten soll.&lt;br /&gt;
&lt;br /&gt;
=== iax.conf ===&lt;br /&gt;
Nach dem Auffinden des Zielservers über ein DUNDi-Lookup kann eine Verbindung zu diesem hergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Dafür wird das IAX2-Protokoll verwendet.&lt;br /&gt;
&lt;br /&gt;
Die Datei &#039;&#039;iax.conf&#039;&#039; definiert die Einzelheiten des Protokolls. Besonders wichtig dabei ist das Anlegen des Benutzers &#039;&#039;iaxuser&#039;&#039; für die einkommenden Verbindungen aus dem Verbund.&lt;br /&gt;
&lt;br /&gt;
Für die Wahl des Passwortes wird &#039;&#039;dbsecret=dundi/secret&#039;&#039; angegeben. Damit wird ein temporäres Passwort referenziert, welches von DUNDi automatisch generiert und mehrfach täglich rotiert wird.&lt;br /&gt;
&lt;br /&gt;
Die eingehenden Verbindungen werden in den Dialplan-Kontext &#039;&#039;incomingdundi&#039;&#039; geleitet.&lt;br /&gt;
&lt;br /&gt;
Im Abschnitt &#039;&#039;[general]&#039;&#039; sind die erlaubten Codecs definiert, welche für eingehende und ausgehende Verbindungen von/in den Verbund verwendet werden dürfen.&lt;br /&gt;
 [general]&lt;br /&gt;
 nochecksums=no&lt;br /&gt;
 bandwidth=low&lt;br /&gt;
 disallow=all&lt;br /&gt;
 allow=g722&lt;br /&gt;
 ;allow=ulaw&lt;br /&gt;
 allow=alaw&lt;br /&gt;
 allow=gsm                      &lt;br /&gt;
 ;jitterbuffer=no&lt;br /&gt;
 jitterbuffer=yes&lt;br /&gt;
 &lt;br /&gt;
 [iaxuser]&lt;br /&gt;
 type=friend&lt;br /&gt;
 dbsecret=dundi/secret&lt;br /&gt;
 context=incomingdundi &lt;br /&gt;
&lt;br /&gt;
=== extensions.conf ===&lt;br /&gt;
 [lookupdundi]&lt;br /&gt;
 switch =&amp;gt; DUNDi/priv&lt;br /&gt;
 &lt;br /&gt;
 [internal]&lt;br /&gt;
 include =&amp;gt; dundiextens&lt;br /&gt;
 &lt;br /&gt;
 exten =&amp;gt; _Z.,1,Dial(PJSIP/${EXTEN})&lt;br /&gt;
 same =&amp;gt; n,Goto(lookupdundi,${EXTEN},1)&lt;br /&gt;
 same =&amp;gt; n,Hangup()&lt;br /&gt;
 &lt;br /&gt;
 [incomingdundi]&lt;br /&gt;
 exten =&amp;gt; _Z.,1,Goto(internal,${EXTEN},1)&lt;br /&gt;
&lt;br /&gt;
==== Update ====&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Mit neueren Asterisk-Versionen fehlt beim Verwenden dieser Konfiguration das Klingelzeichen, wenn man eine Nummer außerhalb des eigenen Servers wählt. Mit der folgenden Änderung im Kontext [internal] funktioniert es korrekt:&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
 [internal]&lt;br /&gt;
 include =&amp;gt; dundiextens&lt;br /&gt;
 &lt;br /&gt;
 exten =&amp;gt; _Z.,1,Dial(PJSIP/${EXTEN})&lt;br /&gt;
 same =&amp;gt; n,Goto(lookupdundi,${EXTEN},1)&lt;br /&gt;
 same =&amp;gt; n,Set(DEST=${DUNDILOOKUP(${EXTEN},priv)})&lt;br /&gt;
 same =&amp;gt; n,GotoIf($[&amp;quot;${DEST}&amp;quot;=&amp;quot;&amp;quot;]?noresult)&lt;br /&gt;
 same =&amp;gt; n,Dial(${DEST},30,r)&lt;br /&gt;
 same =&amp;gt; n(noresult),NoOp(No DUNDI result found)&lt;br /&gt;
 same =&amp;gt; n,Hangup()&lt;br /&gt;
&lt;br /&gt;
=== Rufzeichenanzeige ohne zentrales Telefonbuch ===&lt;br /&gt;
Relativ schnell kam die Idee auf, dass es angenehm wäre, die Rufzeichen seiner Verbindungspartner auf dem Display angezeigt zu bekommen.&lt;br /&gt;
&lt;br /&gt;
Diese Funktionalität ist vom Prinzip her nichts neues und wurde auch bereits im HAMNET implementiert - jedoch größtenteils durch LDAP oder andere zentralisierte Verzeichnissysteme.&lt;br /&gt;
&lt;br /&gt;
Diese haben jedoch einige Nachteile:&lt;br /&gt;
&lt;br /&gt;
* Viele verschiedene Standards (LDAP, XML-Basierte, etc.), teils Herstellerspezifisch&lt;br /&gt;
* Konfigurationsaufwand auf Benutzerseite&lt;br /&gt;
* Nicht zwingend von allen Endgeräten unterstützt&lt;br /&gt;
* Hängen meistens von einem zentralen Server ab, welcher das Verzeichnis bereitstellt&lt;br /&gt;
&lt;br /&gt;
Bei unserem Server IR3UHF am Rittnerhorn wurde hingegen ein etwas anderer Ansatz implementiert, welcher dem &#039;&#039;Talker Alias&#039;&#039; in DMR-Netzen ähnelt:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;In-Band&amp;quot; Rufzeichenübertragung direkt als &amp;quot;&#039;&#039;Caller ID Name&amp;quot;&#039;&#039; im SIP Protokoll&lt;br /&gt;
* Keine Konfiguration beim Benutzer notwendig&lt;br /&gt;
* Benutzer kann den eigenen Anzeigenamen auf Wunsch verändern&lt;br /&gt;
* Wenn der Benutzer nichts angibt (z.B. wenn das Endgerät/Softphone dies nicht unterstützt) setzt der Server das Rufzeichen als Anzeigename. Dieses lässt sich direkt von der Rufnummer &amp;quot;Rückwärts-Auflösen&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kurz gesagt erlaubt diese Konfiguration also, dass ohne weiteres Zutun des Benutzers das Rufzeichen des Anrufers auf dem Telefon erscheint - ohne dass dafür ein zentraler Server notwendig ist.&lt;br /&gt;
&lt;br /&gt;
Technisch realisiert ist diese Funktionalität über ein Python-Skript, welches über AGI (Asterisk Gateway Interface) eingebunden wird. Der Aufruf erfolgt direkt über den Dialplan (&#039;&#039;/etc/asterisk/extensions.conf&#039;&#039;) im Abschnitt [internal].&lt;br /&gt;
&lt;br /&gt;
Zum Testen wurde außerdem die (nur lokal erreichbare) Nummer &#039;&#039;&#039;&#039;&#039;4331&#039;&#039;&#039; (ID)&#039;&#039; konfiguriert, welche dem Benutzer seinen aktuellen Anzeigenamen buchstabiert.&lt;br /&gt;
&lt;br /&gt;
Bei IR3UHF sieht der [internal]-Kontext nun folgendermaßen aus:&lt;br /&gt;
 [internal]&lt;br /&gt;
 include =&amp;gt; dundiextens&lt;br /&gt;
 &lt;br /&gt;
 ; 4331 (ID): Anzeigename buchstabieren&lt;br /&gt;
 exten =&amp;gt; 4331,1,NoOp(Buchstabiere CallerID Name)&lt;br /&gt;
 same =&amp;gt; n,AGI(name.py)&lt;br /&gt;
 same =&amp;gt; n,Answer()&lt;br /&gt;
 same =&amp;gt; n,wait(1)&lt;br /&gt;
 same =&amp;gt; n,GotoIf($[&amp;quot;${CALLERID(name)}&amp;quot; = &amp;quot;&amp;quot;]?noname)&lt;br /&gt;
 same =&amp;gt; n,Playback(vm-from)&lt;br /&gt;
 same =&amp;gt; n,SayPhonetic(${CALLERID(name)})&lt;br /&gt;
 same =&amp;gt; n,wait(1)&lt;br /&gt;
 same =&amp;gt; n,Hangup()&lt;br /&gt;
 ; Wenn kein CallerID Name vorhanden&lt;br /&gt;
 exten =&amp;gt; 4331,n(noname),Playback(from-unknown-caller)&lt;br /&gt;
 same =&amp;gt; n,Hangup()&lt;br /&gt;
 &lt;br /&gt;
 exten =&amp;gt; _Z.,1,NoOp(Call from ${CALLERID(num)} to ${EXTEN})&lt;br /&gt;
 same =&amp;gt; n,AGI(name.py)&lt;br /&gt;
 same =&amp;gt; n,Dial(PJSIP/${EXTEN})&lt;br /&gt;
 ;same =&amp;gt; n,Goto(lookupdundi,${EXTEN},1)&lt;br /&gt;
 same =&amp;gt; n,Set(DEST=${DUNDILOOKUP(${EXTEN},priv)})&lt;br /&gt;
 same =&amp;gt; n,GotoIf($[&amp;quot;${DEST}&amp;quot;=&amp;quot;&amp;quot;]?noresult)&lt;br /&gt;
 same =&amp;gt; n,Dial(${DEST},30,r)&lt;br /&gt;
 same =&amp;gt; n(noresult),NoOp(No DUNDI result found)&lt;br /&gt;
 same =&amp;gt; n,Hangup()&lt;br /&gt;
Das Skript &#039;&#039;name.py&#039;&#039; selbst liegt in &#039;&#039;/usr/share/asterisk/agi-bin/&#039;&#039; und sieht folgendermaßen aus:&lt;br /&gt;
 #!/usr/bin/env python3&lt;br /&gt;
 &lt;br /&gt;
 ##&lt;br /&gt;
 #&lt;br /&gt;
 # Dieses Skript wird aus der extensions.conf aufgerufen und&lt;br /&gt;
 # setzt die CallerID des Anrufers auf das Rufzeichen,&lt;br /&gt;
 # sofern vom Benutzer keine CallerID gesendet wird.&lt;br /&gt;
 #&lt;br /&gt;
 # Zur Kontrolle werden Statusmeldungen in stdout ausgegeben&lt;br /&gt;
 # Diese sieht man im systemd journal&lt;br /&gt;
 # Alternativ kann zum debuggen in der Asterisk CLI&lt;br /&gt;
 # &#039;agi set debug on&#039; aktiviert werden&lt;br /&gt;
 #&lt;br /&gt;
 ##&lt;br /&gt;
 &lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 lookup = {&lt;br /&gt;
     &amp;quot;21&amp;quot; : &#039;A&#039;,&lt;br /&gt;
     &amp;quot;22&amp;quot;: &#039;B&#039;,&lt;br /&gt;
     &amp;quot;23&amp;quot;: &#039;C&#039;,&lt;br /&gt;
     &amp;quot;31&amp;quot; : &#039;D&#039;,&lt;br /&gt;
     &amp;quot;32&amp;quot; : &#039;E&#039;,&lt;br /&gt;
     &amp;quot;33&amp;quot; : &#039;F&#039;,&lt;br /&gt;
     &amp;quot;41&amp;quot; : &#039;G&#039;,&lt;br /&gt;
     &amp;quot;42&amp;quot; : &#039;H&#039;,&lt;br /&gt;
     &amp;quot;43&amp;quot; : &#039;I&#039;,&lt;br /&gt;
     &amp;quot;51&amp;quot; : &#039;J&#039;,&lt;br /&gt;
     &amp;quot;52&amp;quot; : &#039;K&#039;,&lt;br /&gt;
     &amp;quot;53&amp;quot; : &#039;L&#039;,&lt;br /&gt;
     &amp;quot;61&amp;quot; : &#039;M&#039;,&lt;br /&gt;
     &amp;quot;62&amp;quot; : &#039;N&#039;,&lt;br /&gt;
     &amp;quot;63&amp;quot; : &#039;O&#039;,&lt;br /&gt;
     &amp;quot;71&amp;quot; : &#039;P&#039;,&lt;br /&gt;
     &amp;quot;72&amp;quot; : &#039;Q&#039;,&lt;br /&gt;
     &amp;quot;73&amp;quot; : &#039;R&#039;,&lt;br /&gt;
     &amp;quot;74&amp;quot; : &#039;S&#039;,&lt;br /&gt;
     &amp;quot;81&amp;quot; : &#039;T&#039;,&lt;br /&gt;
     &amp;quot;82&amp;quot; : &#039;U&#039;,&lt;br /&gt;
     &amp;quot;83&amp;quot; : &#039;V&#039;,&lt;br /&gt;
     &amp;quot;91&amp;quot; : &#039;W&#039;,&lt;br /&gt;
     &amp;quot;92&amp;quot; : &#039;X&#039;,&lt;br /&gt;
     &amp;quot;93&amp;quot; : &#039;Y&#039;,&lt;br /&gt;
     &amp;quot;94&amp;quot; : &#039;Z&#039;,&lt;br /&gt;
     &amp;quot;10&amp;quot; : &#039;1&#039;,&lt;br /&gt;
     &amp;quot;20&amp;quot; : &#039;2&#039;,&lt;br /&gt;
     &amp;quot;30&amp;quot; : &#039;3&#039;,&lt;br /&gt;
     &amp;quot;40&amp;quot; : &#039;4&#039;,&lt;br /&gt;
     &amp;quot;50&amp;quot; : &#039;5&#039;,&lt;br /&gt;
     &amp;quot;60&amp;quot; : &#039;6&#039;,&lt;br /&gt;
     &amp;quot;70&amp;quot; : &#039;7&#039;,&lt;br /&gt;
     &amp;quot;80&amp;quot; : &#039;8&#039;,&lt;br /&gt;
     &amp;quot;90&amp;quot; : &#039;9&#039;,&lt;br /&gt;
     &amp;quot;00&amp;quot; : &#039;0&#039; &lt;br /&gt;
 }&lt;br /&gt;
 def getCallsign(number: str) -&amp;gt; str:&lt;br /&gt;
     # split number in chunks of two digits&lt;br /&gt;
     letters = [number[i:i+2] for i in range(0, len(number), 2)]&lt;br /&gt;
     callsign = &amp;quot;&amp;quot;&lt;br /&gt;
     for l in letters:&lt;br /&gt;
         callsign += lookup.get(l,&amp;quot;&amp;quot;)&lt;br /&gt;
     return callsign&lt;br /&gt;
 &lt;br /&gt;
 def send_agi_command(cmd):&lt;br /&gt;
     sys.stdout.write(f&amp;quot;{cmd}\n&amp;quot;)&lt;br /&gt;
     sys.stdout.flush()&lt;br /&gt;
     # lese die &amp;quot;200&amp;quot; response&lt;br /&gt;
     return sys.stdin.readline()&lt;br /&gt;
 &lt;br /&gt;
 # AGI header einlesen&lt;br /&gt;
 agi_env = {}&lt;br /&gt;
 while True:&lt;br /&gt;
     line = sys.stdin.readline().strip()&lt;br /&gt;
     if line == &amp;quot;&amp;quot;:&lt;br /&gt;
         break&lt;br /&gt;
     key, value = line.split(&amp;quot;:&amp;quot;, 1)&lt;br /&gt;
     agi_env[key.strip()] = value.strip()&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # Rufnummer des Anrufers&lt;br /&gt;
 number = agi_env.get(&amp;quot;agi_callerid&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
 # Caller ID Name ds Anrufers&lt;br /&gt;
 callername = agi_env.get(&amp;quot;agi_calleridname&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
 # Rufnummer des Angerufenen&lt;br /&gt;
 called = agi_env.get(&amp;quot;agi_dnid&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
 # Rufzeichen des Angerufenen&lt;br /&gt;
 calledname = getCallsign(called)&lt;br /&gt;
 &lt;br /&gt;
 sys.stderr.write(f&amp;quot;Anruf von {number}, eingehende Callerid {callername}\n&amp;quot;)&lt;br /&gt;
 sys.stderr.write(f&amp;quot;Anruf an {called}, Kontakt {calledname}\n&amp;quot;)&lt;br /&gt;
 sys.stderr.flush()&lt;br /&gt;
 &lt;br /&gt;
 # Setze das Rufzeichen der gewaehlten Nummer, damit dieses auf dem Telefon&lt;br /&gt;
 # des Anrufers angezeigt wird&lt;br /&gt;
 send_agi_command(f&#039;SET VARIABLE CONNECTEDLINE(name,i) &amp;quot;{calledname}&amp;quot;&#039;)&lt;br /&gt;
 &lt;br /&gt;
 if callername in [&amp;quot;&amp;quot;,&amp;quot;unknown&amp;quot;]:&lt;br /&gt;
     # keine Caller ID, setze Rufzeichen &lt;br /&gt;
     callername = getCallsign(number)&lt;br /&gt;
     sys.stderr.write(f&amp;quot;Setze CallerID {callername}\n&amp;quot;);&lt;br /&gt;
     sys.stderr.flush()&lt;br /&gt;
     # Asterisk-Variable setzen&lt;br /&gt;
     send_agi_command(f&#039;SET VARIABLE CALLERID(name) &amp;quot;{callername}&amp;quot;&#039;)&lt;br /&gt;
Wie man sieht, wird nicht nur der Name des Anrufers vom Server gesetzt, sondern auch der Name des Angerufenen. Dies hat bei einigen VOIP-Telefonen - z.B. einem Snom D715 - den Effekt, dass bei ausgehenden Anrufen das Rufzeichen im Display angezeigt wird, sobald das Klingelzeichen empfangen wird. &lt;br /&gt;
&lt;br /&gt;
== Anbindung von SVXLINK ==&lt;br /&gt;
Svxlink kann durch die Erweiterung &#039;&#039;SipLogic&#039;&#039; an einen VOIP-Server angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Dazu braucht es:&lt;br /&gt;
&lt;br /&gt;
* PJPROJECT&lt;br /&gt;
* Svxlink von Source kompiliert, mit der Option &amp;lt;code&amp;gt;-DWITH_CONTRIB_SIP_LOGIC=ON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PJPROJECT und Svxlink Kompilieren ===&lt;br /&gt;
Damit PJPROJECT kompiliert, muss der Configure-Befehl lt. Doku mit der Option &amp;lt;code&amp;gt;-fPIC&amp;lt;/code&amp;gt; ausgeführt werden. Auf unseren Relais habe ich mit dem folgenden Configure-Befehl erfolgreich kompiliert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./configure --disable-libwebrtc --disable-video CPPFLAGS=-fPIC CXXFLAGS=-fPIC CFLAGS=-fPIC&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach&lt;br /&gt;
 make dep&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
Danach kann SVXLINK vorbereitet werden. Am besten mit den selben cmake Flags wie immer, aber zusätzlich mit &amp;lt;code&amp;gt;-DWITH_CONTRIB_SIP_LOGIC=ON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SVXLINK Konfiguration ===&lt;br /&gt;
Sämtliche Konfigurationen der SIP-Logic befinden sich in /etc/svxlink/svxlink.d/SipLogic.conf.&lt;br /&gt;
&lt;br /&gt;
Die SipLogic hat auch eine eigene TCL-Logik, und zwar /usr/share/svxlink/events.d/SipLogic.tcl&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HAMNET]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Yaesu_DR-1X&amp;diff=105</id>
		<title>Yaesu DR-1X</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Yaesu_DR-1X&amp;diff=105"/>
		<updated>2025-10-28T18:59:12Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== RSSI ===&lt;br /&gt;
Für den Umbau des Yaesu DR-1X Repeaters mit einer MMDVM-Platine wurde vom RX das RSSI-Signal herausgeführt.&lt;br /&gt;
&lt;br /&gt;
Den oberen Deckel des RX (links vom TX) öffnen (4 Schrauben), eine Abmontage des ganzen Gerätes ist nicht nötig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Yaesu_DR-1X_mmdvm_RSSI.png|rahmenlos]]&lt;br /&gt;
&lt;br /&gt;
Bei &#039;&#039;TP5001&#039;&#039; liegt das RSSI für UHF an, bei &#039;&#039;TP5002&#039;&#039; das RSSI für VHF. Da die maximale Spannung bei &#039;&#039;&#039;-63 dbm&#039;&#039;&#039; Signalstärke bei &#039;&#039;&#039;2,6 V&#039;&#039;&#039; liegt, kann auf einen Spannungsteiler verzichtet werden. &lt;br /&gt;
&lt;br /&gt;
Die Spannung kann direkt an das RSSI Pin des MMDVM (beim MMDVM_POG Pin 8) angelegt werden. Wer möchte, kann in Reihe einen Widerstand zu 1 kohm löten, um den Ausgang des RX-Ic nicht zu sehr zu belasten.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos siehe Bilder :-)&lt;br /&gt;
&lt;br /&gt;
[[Datei:20251027_112428.jpg|rahmenlos]]  [[Datei:20251027_112157.jpg|rahmenlos]]&lt;br /&gt;
[[Datei:Yaesu-dr-1x-Platine 2 3.jpg|rahmenlos]] [[Datei:20251027_112327.jpg|rahmenlos]]&lt;br /&gt;
[[Datei:20251027_115331.jpg|rahmenlos]]&lt;br /&gt;
[[Kategorie:Digitaltechnik]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Yaesu_DR-1X&amp;diff=102</id>
		<title>Yaesu DR-1X</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Yaesu_DR-1X&amp;diff=102"/>
		<updated>2025-10-28T18:36:36Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== RSSI ===&lt;br /&gt;
Für den Umbau des Yaesu DR-1X Repeaters mit einer MMDVM-Platine wurde vom RX das RSSI-Signal herausgeführt.&lt;br /&gt;
&lt;br /&gt;
Den oberen Deckel des RX (links vom TX) öffnen (4 Schrauben), eine Abmontage des ganzen Gerätes ist nicht nötig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Yaesu_DR-1X_mmdvm_RSSI.png|rahmenlos]]&lt;br /&gt;
&lt;br /&gt;
Bei &#039;&#039;TP5001&#039;&#039; liegt das RSSI für UHF an, bei &#039;&#039;TP5002&#039;&#039; das RSSI für VHF. Da die maximale Spannung bei &#039;&#039;&#039;-63 dbm&#039;&#039;&#039; Signalstärke bei &#039;&#039;&#039;2,6 V&#039;&#039;&#039; liegt, kann auf einen Spannungsteiler verzichtet werden. &lt;br /&gt;
&lt;br /&gt;
Die Spannung kann direkt an das RSSI Pin des MMDVM (beim MMDVM_POG Pin 8) angelegt werden. Wer möchte, kann in Reihe einen Widerstand zu 1 kohm löten, um den Ausgang des RX-Ic nicht zu sehr zu belasten.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos siehe Bilder :-)&lt;br /&gt;
&lt;br /&gt;
[[Datei:20251027_112428.jpg|rahmenlos]] [[Datei:20251027_112206.jpg|rahmenlos]] [[Datei:20251027_112157.jpg|rahmenlos]] [[Datei:20251027_112327.jpg|rahmenlos]] [[Datei:20251027_115331.jpg|rahmenlos]]&lt;br /&gt;
[[Kategorie:Digitaltechnik]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Yaesu_DR-1X&amp;diff=101</id>
		<title>Yaesu DR-1X</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Yaesu_DR-1X&amp;diff=101"/>
		<updated>2025-10-28T18:33:39Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== RSSI ===&lt;br /&gt;
Für den Umbau des Yaesu DR-1X Repeaters mit einer MMDVM-Platine (POG) wurde vom RX das RSSI-Signal herausgeführt. Den oberen Deckel des RX (links vom TX) öffnen (4 Schrauben), eine Abmontage des ganzen Gerätes ist nicht nötig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Yaesu_DR-1X_mmdvm_RSSI.png|rahmenlos]]&lt;br /&gt;
&lt;br /&gt;
Bei TP5001 liegt das RSSI für UHF an, bei TP5002 das RSSI für VHF. Da die maximale Spannung bei -63 dbm Signalstärke bei 2,6 V liegt, kann auf einen Spannungsteiler verzichtet werden. Die Spannung kann direkt an das RSSI Pin des MMDVM (beim POG Pin 8) angelegt werden. Wer möchte, kann in Reihe einen Widerstand zu 1 kohm löten, um den Ausgang des RX-Ic nicht zu sehr zu belasten.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos siehe Bilder :-)&lt;br /&gt;
&lt;br /&gt;
[[Datei:20251027_112428.jpg|rahmenlos]] [[Datei:20251027_112206.jpg|rahmenlos]] [[Datei:20251027_112157.jpg|rahmenlos]] [[Datei:20251027_112327.jpg|rahmenlos]] [[Datei:20251027_115331.jpg|rahmenlos]]&lt;br /&gt;
[[Kategorie:Digitaltechnik]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Yaesu_DR-1X&amp;diff=100</id>
		<title>Yaesu DR-1X</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Yaesu_DR-1X&amp;diff=100"/>
		<updated>2025-10-28T18:31:06Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Für den Umbau des Yaesu DR-1X Repeaters mit einer MMDVM-Platine (POG) wurde vom RX das RSSI-Signal herausgeführt. Den oberen Deckel des RX (links vom TX) öffnen (4 Schrauben), eine Abmontage des ganzen Gerätes ist nicht nötig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Yaesu_DR-1X_mmdvm_RSSI.png|rahmenlos]]&lt;br /&gt;
&lt;br /&gt;
Bei TP5001 liegt das RSSI für UHF an, bei TP5002 das RSSI für VHF. Da die maximale Spannung bei -63 dbm Signalstärke bei 2,6 V liegt, kann auf einen Spannungsteiler verzichtet werden. Die Spannung kann direkt an das RSSI Pin des MMDVM (beim POG Pin 8) angelegt werden. Wer möchte, kann in Reihe einen Widerstand zu 1 kohm löten, um den Ausgang des RX-Ic nicht zu sehr zu belasten.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos siehe Bilder :-)&lt;br /&gt;
&lt;br /&gt;
[[Datei:20251027_112428.jpg|rahmenlos]] [[Datei:20251027_112206.jpg|rahmenlos]] [[Datei:20251027_112157.jpg|rahmenlos]] [[Datei:20251027_112327.jpg|rahmenlos]] [[Datei:20251027_115331.jpg|rahmenlos]]&lt;br /&gt;
[[Kategorie:Digitaltechnik]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Yaesu_DR-1X&amp;diff=99</id>
		<title>Yaesu DR-1X</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Yaesu_DR-1X&amp;diff=99"/>
		<updated>2025-10-28T18:30:45Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: Die Seite wurde neu angelegt: „Für den Umbau des Yaesu DR-1X Repeaters mit einer MMDVM-Platine (POG) wurde vom RX das RSSI-Signal herausgeführt. Den oberen Deckel des RX (links vom TX) öffnen (4 Schrauben), eine Abmontage des ganzen Gerätes ist nicht nötig.  rahmenlos  Bei TP5001 liegt das RSSI für UHF an, bei TP5002 das RSSI für VHF. Da die maximale Spannung bei -63 dbm Signalstärke bei 2,6 V liegt, kann auf einen Spannungsteiler verzichtet…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Für den Umbau des Yaesu DR-1X Repeaters mit einer MMDVM-Platine (POG) wurde vom RX das RSSI-Signal herausgeführt. Den oberen Deckel des RX (links vom TX) öffnen (4 Schrauben), eine Abmontage des ganzen Gerätes ist nicht nötig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Yaesu_DR-1X_mmdvm_RSSI.png|rahmenlos]]&lt;br /&gt;
&lt;br /&gt;
Bei TP5001 liegt das RSSI für UHF an, bei TP5002 das RSSI für VHF. Da die maximale Spannung bei -63 dbm Signalstärke bei 2,6 V liegt, kann auf einen Spannungsteiler verzichtet werden. Die Spannung kann direkt an das RSSI Pin des MMDVM (beim POG Pin 8) angelegt werden. Wer möchte, kann in Reihe einen Widerstand zu 1 kohm löten, um den Ausgang des RX-Ic nicht zu sehr zu belasten.&lt;br /&gt;
&lt;br /&gt;
Mehr Infos siehe Bilder :-)&lt;br /&gt;
&lt;br /&gt;
[[Datei:20251027_112428.jpg|rahmenlos]] [[Datei:20251027_112206.jpg|rahmenlos]] [[Datei:20251027_112157.jpg|rahmenlos]] [[Datei:20251027_112327.jpg|rahmenlos]] [[Datei:20251027_115331.jpg|rahmenlos]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Kategorie:Digitaltechnik&amp;diff=98</id>
		<title>Kategorie:Digitaltechnik</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Kategorie:Digitaltechnik&amp;diff=98"/>
		<updated>2025-10-28T18:29:39Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: inhalt gehört nicht in die kategoriebeschreibung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=HAMNET-Geschichte&amp;diff=76</id>
		<title>HAMNET-Geschichte</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=HAMNET-Geschichte&amp;diff=76"/>
		<updated>2025-10-27T08:30:03Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die digitale Vernetzung von automatisch arbeitenden Amateurfunkstellen auf Basis des TCP/IP-Protokolls hat eine lange Geschichte.&lt;br /&gt;
&lt;br /&gt;
Bereits im Jahre 1970 hat Hank Magnuski den Klasse A Adressblock 44.0.0.0/8 (&amp;lt;nowiki&amp;gt;http://www.ampr.org&amp;lt;/nowiki&amp;gt;) zugewiesen bekommen. Bei der IANA (Internet Assigned Numbers Authority, &amp;lt;nowiki&amp;gt;http://www.iana.org&amp;lt;/nowiki&amp;gt;) wird dieser Adressblock als „Amateur Radio Digital Communications“ aufgeführt (&amp;lt;nowiki&amp;gt;http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xml&amp;lt;/nowiki&amp;gt;). Seit einer langen Zeit verwaltet Brian Kantor, WB6CYT, das Netz.&lt;br /&gt;
&lt;br /&gt;
Das „Network 44“ wird auch als „AMPRNet“ bezeichnet. Diese Abkürzung steht für „AMateur Packet Radio Network“ und ist von der Terminologie her an die Betriebsart Packet Radio gebunden. Mittlerweile geht die Nutzung des „Network 44“ aber weit über die Betriebsart Packet Radio hinaus. Daher kann auch das HAMNET ein Teil des AMPRNet sein.&lt;br /&gt;
&lt;br /&gt;
Bei dem Aufbau des Packet Radio Netzes in Deutschland wurde von Anfang an mit der Übertragung von TCP/IP-Paketen über AX.25 experimentiert. Der geschätzte Höhepunkt der Aktivität war Mitte der 90er Jahre und brachte zuletzt das sogenannte „HamWeb“ hervor. Viele Betreiber von Packet Radio Knoten hatten sich entschlossen, auch TCP/IP-Dienste wie HTTP anzubieten. Die Nutzer konnten so im „HamWeb“ surfen.&lt;br /&gt;
&lt;br /&gt;
Im Laufe der Jahre haben die Anzahl der Medien und die verfügbaren Informationskanäle stark zugenommen. Die Attraktivität mit langsamen TCP/IP-über-AX.25-Verbindungen Informationen auszutauschen ging nach und nach verloren. Heute ist es zu einer der vielen Nischen im Amateurfunk geworden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden nun eine Übersicht der Anfänge des HAMNET-Projekts in Südtirol bis heute (wird laufend aktualisiert)&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2008 ==&lt;br /&gt;
Unzählige Stunden an Vorbereitungen und Testläufe in &#039;&#039;&#039;Meran (Mut), Völlan, Bozen (Gantkofel), Auer&#039;&#039;&#039; mit verschiedenstem WiFi-Equipement und in kleinstem Kreise: &#039;&#039;&#039;IW3BRC, IW3AMQ, IW3BWH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2009 ==&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
2009-07-18: Marco IW2OHX, der nazionale IP-Koordinator, erteilt dem Hamnet-Projekt in der italienischen Provinz Bozen/Trient die nötige Zuweisung von 3 öffentlichen Subnetzen aus dem AMPR-Netz (44.134.0.0/16 ↔ ampr.org).&lt;br /&gt;
&lt;br /&gt;
=== Ende 2009 ===&lt;br /&gt;
Inbetriebnahme des ersten Interlink IR3UGM&amp;lt;&amp;gt;OE7XGR sowie der Hamnet-Strecke Gantkofel-Marling.&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2010 ==&lt;br /&gt;
&lt;br /&gt;
=== Februar ===&lt;br /&gt;
2010-02-16: Erste brauchbare AXIP-Verbindung via Hamnet zwischen &#039;&#039;&#039;IW3BRC in Meran&#039;&#039;&#039; (Italien) und der PR-Mailbox von &#039;&#039;&#039;OE2XZR in Salzburg&#039;&#039;&#039; (Österreich).&lt;br /&gt;
&lt;br /&gt;
=== März ===&lt;br /&gt;
2010-03-28: Erste erfolgreiche Mumble-Session (VoIP) via Hamnet zwischen IW3BRC (Tobias) in Meran und OE7FMI (Markus) in Mayrhofen im Zillertal. Die VoIP-Konversation wurde dabei von einem Mumble-Server in Oberösterreich vermittelt.&lt;br /&gt;
&lt;br /&gt;
=== April ===&lt;br /&gt;
2010-04-10: Erster Test einer 5GHz-Useranbindung im Raum Meran war erfolgreich. &lt;br /&gt;
&lt;br /&gt;
Nun können im Raum Meran/Burggrafenamt weitere Anbindungen erfolgen.&lt;br /&gt;
&lt;br /&gt;
=== Juni ===&lt;br /&gt;
2010-06-12: Weitere 5GHz-Useranbindung im Raum Bozen erfolgreich getestet. &lt;br /&gt;
&lt;br /&gt;
Nun können auch dort registrierte User an HAMNET teilnehmen.&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
2010-07-03: Hamnet wurde am &#039;&#039;&#039;Rittner Horn&#039;&#039;&#039; montiert und die Verbindung zum Gantkofel hergestellt. &lt;br /&gt;
&lt;br /&gt;
Dieser Standort wird künftig ein weiterer lokaler Grossverteiler von Hamnet für den Südtiroler Raum darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2010-07-31: Ein erster konkreter Dienst (sog. Service) nimmt über Hamnet testweise seinen Dienst auf. &lt;br /&gt;
&lt;br /&gt;
Es handelt sich dabei um einen &#039;&#039;&#039;Packet Radio Digipeater&#039;&#039;&#039; der „neuen“ Generation, der einerseits noch einen klassischen 1k2 PR-Einstieg auf 144.925 MHz bietet und andererseits bereits das Hamnet als High-Speed-Interlink zwischen Bozen (IR3UGM - Gantkofel) und Zillertal (OE7XGR - Gefrorene Wand) verwendet, um darüber im „Huckepack“-Verfahren AX25-Pakete zu transportieren. &lt;br /&gt;
&lt;br /&gt;
Darüber hinaus kann auch über Hamnet selbst dieser Einstiegsknoten in voller Wifi-Geschwindigkeit genutzt werden.&lt;br /&gt;
&lt;br /&gt;
=== August ===&lt;br /&gt;
2010-08-10: Ein weiterer Meilenstein im Hamnet-Projekt wurde am Rittner Horn gelegt: Die &#039;&#039;&#039;Verbindung zur Marmolada&#039;&#039;&#039; konnte erfolgreich hergestellt werden mit -70db. &lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2011 ==&lt;br /&gt;
Generalüberholung und Vorbereitung von IR3EB „Piz Chavalatsch“ fürs HAMNET.&lt;br /&gt;
&lt;br /&gt;
Gleiches für die neuen Hamnet-Standorte „Seceda Nord“ und „Gitschberg“. Auch hier musste erst das Equipement organisiert und vor Ort gebracht werden. Am Ende der Saison konnte &#039;&#039;&#039;IR3EB erfolgreich ans Hamnet angebunden&#039;&#039;&#039; werden.&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2012 ==&lt;br /&gt;
&lt;br /&gt;
=== März ===&lt;br /&gt;
2012-03-31: Hamnet-Einsatz Marmolada, um einen weiteren Interlink &#039;&#039;&#039;IR3AO&amp;lt;&amp;gt;OE8XDR&#039;&#039;&#039; (Dobratsch) zu aktivieren.&lt;br /&gt;
&lt;br /&gt;
=== April ===&lt;br /&gt;
2012-04-11: Kontaktaufnahme mit den Hamnet-Kollegen in HB9 - momentan leider (noch) keine Anbindungsmöglichkeiten vorhanden.&lt;br /&gt;
&lt;br /&gt;
2012-04-14: Integration der neuen Linkstrecken ins Hamnet, soweit möglich - bei der neuen Linkstrecke IR3AO&amp;lt;&amp;gt;IR3UHF scheint ein HW-Schaden offensichtlich.&lt;br /&gt;
&lt;br /&gt;
2012-04-26: Erörterung/Planung der weiteren Bedarfslisten und Einsätze für die Hamnet-Saison 2012.&lt;br /&gt;
&lt;br /&gt;
=== Mai ===&lt;br /&gt;
2012-05-09:  Dokumentationsplattform ins Leben gerufen - &amp;lt;nowiki&amp;gt;http://hamnet.cisarbz.org&amp;lt;/nowiki&amp;gt; oder &amp;lt;nowiki&amp;gt;http://hamnet.drc.bz&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2012-05-18: Echtzeit-Monitoring aktiviert - &amp;lt;nowiki&amp;gt;http://hammon.iw3brc.net&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
2012-07-07: Erneuter Einsatz Marmolada, um defekte Hamnet-Antenne samt Board zu wechseln und die Linkstrecke Kronplatz (IR3DV) vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
2012-07-08: Hamnet-Einsatz Gitschberg (IR3UHI), wobei auch dort eine defekte Hamnet-Antenne Richtung Kronplatz (IR3DV) ersetzt werden musste.&lt;br /&gt;
&lt;br /&gt;
=== September ===&lt;br /&gt;
2012-09-08: Dritter Hamnet-Einsatz Marmolada, um Blitzschaden am gesamten Umsetzerstandort zu beheben.&lt;br /&gt;
&lt;br /&gt;
Folgende Linkstrecken konnten dabei reaktiviert bzw. neu aktiviert werden:&lt;br /&gt;
&lt;br /&gt;
IR3AO &amp;lt;&amp;gt; IR3UHF läuft nun wieder wie gehabt -75 dBi&lt;br /&gt;
&lt;br /&gt;
IR3AO &amp;lt;&amp;gt; IR3DV konnte zusätzlich aktiviert werden -73 dBi&lt;br /&gt;
&lt;br /&gt;
IR3AO &amp;lt;&amp;gt; OE8XDR-2 wartet auf die Gegenseite&lt;br /&gt;
&lt;br /&gt;
IR3AO &amp;lt;&amp;gt; IR3UDZ schwächelt noch ein wenig, Gegenseite muss kontrolliert werden&lt;br /&gt;
&lt;br /&gt;
=== Oktober ===&lt;br /&gt;
2012-10-13: Flori (DL8MBT) bastelt eine Software zur Verwaltung von Standorten und IP-Adressen, u.a. findet sich darin auch das AS64600 wieder.&lt;br /&gt;
&lt;br /&gt;
Hamnet IP Database: &amp;lt;nowiki&amp;gt;http://hamnetdb.net&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mirror South Tyrol: &amp;lt;nowiki&amp;gt;http://hamnetdb.iw3brc.net&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== November ===&lt;br /&gt;
2012-11-30: HAMMON &amp;lt;nowiki&amp;gt;http://hammon.iw3brc.net&amp;lt;/nowiki&amp;gt; wird geupdatet und mit Verknüpfungen zur neuen IP-Dokumentation und zu weiteren Realtimedaten erweitert.&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2013 ==&lt;br /&gt;
&lt;br /&gt;
=== erstes Halbjahr 2013 ===&lt;br /&gt;
Softwareseitige Optimierungen an den bestehenden Strukturen IR3UHE, IR3UGM, IR3UHF, IR3EB, IR3AO, IR3DV, IR3UHI&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
2013-07-12: Vorbereitung eines weiteren Hamnetknotens am &#039;&#039;&#039;Schludernser Berg IR3UBE&#039;&#039;&#039; für die Verbindung zu IR3EB.&lt;br /&gt;
&lt;br /&gt;
2013-07-14: Erste Aktivierung von AllstarLink auf den Knoten IR3UGM Gantkofel und IR3DV Kronplatz. Weitere Infos unter [Http://drc.bz/wordpress/link-sudtirol-gantkofel-und-kronplatz-in-betrieb/ http://drc.bz/wordpress/link-sudtirol-gantkofel-und-kronplatz-in-betrieb/]&lt;br /&gt;
&lt;br /&gt;
=== August ===&lt;br /&gt;
2013-08-10: Aktivierung des Hamnet-Knotens &#039;&#039;&#039;IR3UGB&#039;&#039;&#039; auf der &#039;&#039;&#039;Seceda&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
2013-08-16: Aktivierung der &#039;&#039;&#039;Linkstrecke Piz Chavalatsch (IR3EB) ↔ Schludernser Berg (IR3UBE)&#039;&#039;&#039; und weiter bis zu IN3XOZ in Mals.&lt;br /&gt;
&lt;br /&gt;
2013-08-17: Start der 2-Tages-Grossaktion am Piz Chavalatsch mit Hubschraubereinsatz. Verschiedenste Umbau- und Reparaturarbeiten konnten beendet werden.&lt;br /&gt;
&lt;br /&gt;
2013-08-18: Erfolgreiche Reparatur des R6 Vinschgau und Inbetriebnahme des „Südtirol Link“ auf 70cm, der den Piz Chavalatsch mit Gantkofel und Kronplatz via Hamnet und quer durch Südtirol permanent verbindet.&lt;br /&gt;
&lt;br /&gt;
Krönung war dann noch die erfolgreiche Aktivierung einer Foto-Webcam von Flori (DL8MBT) Richtung Ortlermassiv: https://www.foto-webcam.eu/webcam/chavalatsch/&lt;br /&gt;
&lt;br /&gt;
=== September ===&lt;br /&gt;
2013-09-28: Aktivierung des Hamnet-Knotens &#039;&#039;&#039;IR3UGD&#039;&#039;&#039; am &#039;&#039;&#039;Jaufenpass&#039;&#039;&#039; und gleichzeitige Installation des Link Südtirol an diesem Standort.&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2014 ==&lt;br /&gt;
&lt;br /&gt;
=== April ===&lt;br /&gt;
2014-04-24: Die ehemalige Gewerbeoberschule (GOB) und jetzige Technologische Fachoberschule (TFO) “Max Valier” in Bozen konnte erfolgreich ans HAMNET angebunden werden.&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
2014-07-11: Am Hamnet-Standort Seceda wird nun erstmals das Signal der &#039;&#039;&#039;Zugspitze DB0ZU/70&#039;&#039;&#039; empfangen, um es dann an bestimmte Knoten zu nutzen (Gantkofel, Chavalatsch, Kronplatz). &lt;br /&gt;
&lt;br /&gt;
Über den 70cm-Einstieg Gantkofel kann das deutsche Relais bereits erfolgreich gearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== August ===&lt;br /&gt;
2014-08-03: Der (Hamnet)Standort Rittnerhorn konnte erfolgreich auf den neuen Funkmast des Zivilschutzes migriert werden.&lt;br /&gt;
&lt;br /&gt;
2014-08-23: Am Standort Chavalatsch wurde neben zahlreichen Wartungsarbeiten nun auch der „Link Zugspitze“ aktiviert.&lt;br /&gt;
&lt;br /&gt;
2014-08-30: Der Standort Plose wurde hamnet-technisch erschlossen und mit einem weiteren Einstieg zum „Link Südtirol“ versorgt.&lt;br /&gt;
&lt;br /&gt;
2014-09-30: Am Standort Rittnerhorn IR3UHF wurden die letzten Arbeiten nach dem Umzug auf den neuen Masten erledigt, die bis dato noch offen geblieben waren.&lt;br /&gt;
&lt;br /&gt;
2014-10-04: Der Standort auf der Seceda wird generalüberholt, d.h. die leidigen Linkstrecken wurden nun durch kompakte QRT5 ersetzt, um damit endlich die gewünschte Linkstabilität zu erreichen, nachdem der Standort Marmolada durch erneuten Blitzschaden ausgefallen ist.&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2015 ==&lt;br /&gt;
&lt;br /&gt;
=== April ===&lt;br /&gt;
2015-04-06: Die Zugspitzanbindung im Pustertal wird vom Kronplatz IR3DV auf den Gitschberg IR3UHI verlegt.&lt;br /&gt;
&lt;br /&gt;
2015-04-28: Der Standort am Schludernser Berg erhält eine neue Linkantenne zu IR3EB und wird ab nun mit zusätzlichem Strom aus Windkraft unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Mai ===&lt;br /&gt;
2015-05-01: Der Standort am Gantkofel IR3UGM erhält ein neues DStar-Interface (UP4DAR).&lt;br /&gt;
&lt;br /&gt;
=== Juni ===&lt;br /&gt;
2015-06-14: Inspektions- und Reparatureinsatz am Standort Chavalatsch IR3EB.&lt;br /&gt;
&lt;br /&gt;
== 2017 ==&lt;br /&gt;
&lt;br /&gt;
=== September/Oktober: ===&lt;br /&gt;
Nach einem Standortumzug auf der Plose besteht nun Sicht zu &#039;&#039;&#039;OE7XGR Gefrorene Wand&#039;&#039;&#039;. Damit konnte die Linkstrecke Gantkofel-Gefrorene Wand auf die Plose umgezogen werden.  Die Strecke nach OE7 funktioniert nun aufgrund der wesentlich kürzeren Strecke erheblich stabiler.&lt;br /&gt;
&lt;br /&gt;
Außerdem besteht vom neuen Standort Plose auch Sicht zum &#039;&#039;&#039;Kronplatz&#039;&#039;&#039; und zum &#039;&#039;&#039;Gitschberg&#039;&#039;&#039;. Somit wurden auch die Standorte Gitschberg und Kronplatz direkt über die Plose angebunden, was insgesamt zu kürzeren Strecken, weniger Hops und somit weniger Ausfallrisiko führt.&lt;br /&gt;
&lt;br /&gt;
== 2018 ==&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
Aktivierung der Verbindung vom Kronplatz zu &#039;&#039;&#039;OE7XJH Hollbruck&#039;&#039;&#039; in Osttirol&lt;br /&gt;
&lt;br /&gt;
=== Gesamtes Jahr ===&lt;br /&gt;
Erneuerung/Einrichtung Userzugänge mit 120° Sektorantennen im 2,3GHz Band auf den Standorten Gantkofel (für den Raum Etschtal/Bozen), Marlinger Berg (Raum Meran), Rittnerhorn (Raum Überetsch/Unterland), Gitschberg (Raum Brixen) und Kronplatz (Raum Bruneck)&lt;br /&gt;
&lt;br /&gt;
=== Dezember ===&lt;br /&gt;
Aktivierung Standort &#039;&#039;&#039;IR3UFM Schöneben&#039;&#039;&#039; im oberen Vinschgau, vorerst noch ohne HAMNET-Anbindung&lt;br /&gt;
&lt;br /&gt;
== 2019 ==&lt;br /&gt;
&lt;br /&gt;
=== September ===&lt;br /&gt;
Aktivierung Standort &#039;&#039;&#039;IR3UFM Helm&#039;&#039;&#039; und Anbindung an &#039;&#039;&#039;IR3DV Kronplatz&#039;&#039;&#039; (PtMP mit der Antenne richtung Hollbruck)&lt;br /&gt;
&lt;br /&gt;
Später dann wurde auf PTP mit einer eigenen Antenne umgebaut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch Aktivierung der Zwischenstation am &#039;&#039;&#039;IR3UFL Grauner Berg&#039;&#039;&#039; konnte nun auch &#039;&#039;&#039;IR3UFM Schöneben&#039;&#039;&#039; via Richtfunk ans HAMNET angebunden werden.&lt;br /&gt;
&lt;br /&gt;
== 2021 ==&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
Aktivierung des Standortes &#039;&#039;&#039;IR3BC Vigiljoch.&#039;&#039;&#039; Von hier aus können nun &#039;&#039;&#039;IR3EB Chavalatsch&#039;&#039;&#039; und &#039;&#039;&#039;IR3UGD Jaufen&#039;&#039;&#039; direkt erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Somit ergeben sich auch hier eine Verkürzung der Strecke (Chavalatsch) und insgesamt kürzere netzwerktechnische Wege.&lt;br /&gt;
&lt;br /&gt;
=== Dezember ===&lt;br /&gt;
Das gesamte HAMNET in Südtirol wird auf 32-Bit-AS-Nummern umgestellt.&lt;br /&gt;
&lt;br /&gt;
Damit agiert nun jeder Standort routingtechnisch komplett eigenständig und es ist möglich, bei einem Ausfall eines zentralen Knotens in Südtirol - z.B. Rittnerhorn - die HAMNET-Kommunikation zwischen unseren Standorten automatisch über andere Regionen, beispielsweise über OE7 - umzuleiten.&lt;br /&gt;
&lt;br /&gt;
== 2022 ==&lt;br /&gt;
&lt;br /&gt;
=== April ===&lt;br /&gt;
Unsere Kollegen in Tirol aktivieren &#039;&#039;&#039;OE7XNP Gueser Kopf&#039;&#039;&#039; bei Nauders, von wo aus Sicht zu IR3UFM Schöneben besteht.&lt;br /&gt;
&lt;br /&gt;
Mit der Aktivierung dieses Links besteht nun ein HAMNET-Kreis zwischen Südtirol und OE7. Zusammen mit den 32-bit-AS-Nummern kann dies auch tatsächlich genutzt werden, falls innerhalb Südtirols wichtige Knoten ausfallen würden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HAMNET]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=HAMNET-Geschichte&amp;diff=75</id>
		<title>HAMNET-Geschichte</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=HAMNET-Geschichte&amp;diff=75"/>
		<updated>2025-10-27T08:06:41Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: HAMNET-Ausbau von 2015 bis 2022&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die digitale Vernetzung von automatisch arbeitenden Amateurfunkstellen auf Basis des TCP/IP-Protokolls hat eine lange Geschichte.&lt;br /&gt;
&lt;br /&gt;
Bereits im Jahre 1970 hat Hank Magnuski den Klasse A Adressblock 44.0.0.0/8 (&amp;lt;nowiki&amp;gt;http://www.ampr.org&amp;lt;/nowiki&amp;gt;) zugewiesen bekommen. Bei der IANA (Internet Assigned Numbers Authority, &amp;lt;nowiki&amp;gt;http://www.iana.org&amp;lt;/nowiki&amp;gt;) wird dieser Adressblock als „Amateur Radio Digital Communications“ aufgeführt (&amp;lt;nowiki&amp;gt;http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xml&amp;lt;/nowiki&amp;gt;). Seit einer langen Zeit verwaltet Brian Kantor, WB6CYT, das Netz.&lt;br /&gt;
&lt;br /&gt;
Das „Network 44“ wird auch als „AMPRNet“ bezeichnet. Diese Abkürzung steht für „AMateur Packet Radio Network“ und ist von der Terminologie her an die Betriebsart Packet Radio gebunden. Mittlerweile geht die Nutzung des „Network 44“ aber weit über die Betriebsart Packet Radio hinaus. Daher kann auch das HAMNET ein Teil des AMPRNet sein.&lt;br /&gt;
&lt;br /&gt;
Bei dem Aufbau des Packet Radio Netzes in Deutschland wurde von Anfang an mit der Übertragung von TCP/IP-Paketen über AX.25 experimentiert. Der geschätzte Höhepunkt der Aktivität war Mitte der 90er Jahre und brachte zuletzt das sogenannte „HamWeb“ hervor. Viele Betreiber von Packet Radio Knoten hatten sich entschlossen, auch TCP/IP-Dienste wie HTTP anzubieten. Die Nutzer konnten so im „HamWeb“ surfen.&lt;br /&gt;
&lt;br /&gt;
Im Laufe der Jahre haben die Anzahl der Medien und die verfügbaren Informationskanäle stark zugenommen. Die Attraktivität mit langsamen TCP/IP-über-AX.25-Verbindungen Informationen auszutauschen ging nach und nach verloren. Heute ist es zu einer der vielen Nischen im Amateurfunk geworden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden nun eine Übersicht der Anfänge des HAMNET-Projekts in Südtirol bis heute (wird laufend aktualisiert)&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2008 ==&lt;br /&gt;
Unzählige Stunden an Vorbereitungen und Testläufe in &#039;&#039;&#039;Meran (Mut), Völlan, Bozen (Gantkofel), Auer&#039;&#039;&#039; mit verschiedenstem WiFi-Equipement und in kleinstem Kreise: &#039;&#039;&#039;IW3BRC, IW3AMQ, IW3BWH&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2009 ==&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
2009-07-18: Marco IW2OHX, der nazionale IP-Koordinator, erteilt dem Hamnet-Projekt in der italienischen Provinz Bozen/Trient die nötige Zuweisung von 3 öffentlichen Subnetzen aus dem AMPR-Netz (44.134.0.0/16 ↔ ampr.org).&lt;br /&gt;
&lt;br /&gt;
=== Ende 2009 ===&lt;br /&gt;
Inbetriebnahme des ersten Interlink IR3UGM&amp;lt;&amp;gt;OE7XGR sowie der Hamnet-Strecke Gantkofel-Marling.&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2010 ==&lt;br /&gt;
&lt;br /&gt;
=== Februar ===&lt;br /&gt;
2010-02-16: Erste brauchbare AXIP-Verbindung via Hamnet zwischen &#039;&#039;&#039;IW3BRC in Meran&#039;&#039;&#039; (Italien) und der PR-Mailbox von &#039;&#039;&#039;OE2XZR in Salzburg&#039;&#039;&#039; (Österreich).&lt;br /&gt;
&lt;br /&gt;
=== März ===&lt;br /&gt;
2010-03-28: Erste erfolgreiche Mumble-Session (VoIP) via Hamnet zwischen IW3BRC (Tobias) in Meran und OE7FMI (Markus) in Mayrhofen im Zillertal. Die VoIP-Konversation wurde dabei von einem Mumble-Server in Oberösterreich vermittelt.&lt;br /&gt;
&lt;br /&gt;
=== April ===&lt;br /&gt;
2010-04-10: Erster Test einer 5GHz-Useranbindung im Raum Meran war erfolgreich. &lt;br /&gt;
&lt;br /&gt;
Nun können im Raum Meran/Burggrafenamt weitere Anbindungen erfolgen.&lt;br /&gt;
&lt;br /&gt;
=== Juni ===&lt;br /&gt;
2010-06-12: Weitere 5GHz-Useranbindung im Raum Bozen erfolgreich getestet. &lt;br /&gt;
&lt;br /&gt;
Nun können auch dort registrierte User an HAMNET teilnehmen.&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
2010-07-03: Hamnet wurde am &#039;&#039;&#039;Rittner Horn&#039;&#039;&#039; montiert und die Verbindung zum Gantkofel hergestellt. &lt;br /&gt;
&lt;br /&gt;
Dieser Standort wird künftig ein weiterer lokaler Grossverteiler von Hamnet für den Südtiroler Raum darstellen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2010-07-31: Ein erster konkreter Dienst (sog. Service) nimmt über Hamnet testweise seinen Dienst auf. &lt;br /&gt;
&lt;br /&gt;
Es handelt sich dabei um einen &#039;&#039;&#039;Packet Radio Digipeater&#039;&#039;&#039; der „neuen“ Generation, der einerseits noch einen klassischen 1k2 PR-Einstieg auf 144.925 MHz bietet und andererseits bereits das Hamnet als High-Speed-Interlink zwischen Bozen (IR3UGM - Gantkofel) und Zillertal (OE7XGR - Gefrorene Wand) verwendet, um darüber im „Huckepack“-Verfahren AX25-Pakete zu transportieren. &lt;br /&gt;
&lt;br /&gt;
Darüber hinaus kann auch über Hamnet selbst dieser Einstiegsknoten in voller Wifi-Geschwindigkeit genutzt werden.&lt;br /&gt;
&lt;br /&gt;
=== August ===&lt;br /&gt;
2010-08-10: Ein weiterer Meilenstein im Hamnet-Projekt wurde am Rittner Horn gelegt: Die &#039;&#039;&#039;Verbindung zur Marmolada&#039;&#039;&#039; konnte erfolgreich hergestellt werden mit -70db. &lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2011 ==&lt;br /&gt;
Generalüberholung und Vorbereitung von IR3EB „Piz Chavalatsch“ fürs HAMNET.&lt;br /&gt;
&lt;br /&gt;
Gleiches für die neuen Hamnet-Standorte „Seceda Nord“ und „Gitschberg“. Auch hier musste erst das Equipement organisiert und vor Ort gebracht werden. Am Ende der Saison konnte &#039;&#039;&#039;IR3EB erfolgreich ans Hamnet angebunden&#039;&#039;&#039; werden.&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2012 ==&lt;br /&gt;
&lt;br /&gt;
=== März ===&lt;br /&gt;
2012-03-31: Hamnet-Einsatz Marmolada, um einen weiteren Interlink &#039;&#039;&#039;IR3AO&amp;lt;&amp;gt;OE8XDR&#039;&#039;&#039; (Dobratsch) zu aktivieren.&lt;br /&gt;
&lt;br /&gt;
=== April ===&lt;br /&gt;
2012-04-11: Kontaktaufnahme mit den Hamnet-Kollegen in HB9 - momentan leider (noch) keine Anbindungsmöglichkeiten vorhanden.&lt;br /&gt;
&lt;br /&gt;
2012-04-14: Integration der neuen Linkstrecken ins Hamnet, soweit möglich - bei der neuen Linkstrecke IR3AO&amp;lt;&amp;gt;IR3UHF scheint ein HW-Schaden offensichtlich.&lt;br /&gt;
&lt;br /&gt;
2012-04-26: Erörterung/Planung der weiteren Bedarfslisten und Einsätze für die Hamnet-Saison 2012.&lt;br /&gt;
&lt;br /&gt;
=== Mai ===&lt;br /&gt;
2012-05-09:  Dokumentationsplattform ins Leben gerufen - &amp;lt;nowiki&amp;gt;http://hamnet.cisarbz.org&amp;lt;/nowiki&amp;gt; oder &amp;lt;nowiki&amp;gt;http://hamnet.drc.bz&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2012-05-18: Echtzeit-Monitoring aktiviert - &amp;lt;nowiki&amp;gt;http://hammon.iw3brc.net&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
2012-07-07: Erneuter Einsatz Marmolada, um defekte Hamnet-Antenne samt Board zu wechseln und die Linkstrecke Kronplatz (IR3DV) vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
2012-07-08: Hamnet-Einsatz Gitschberg (IR3UHI), wobei auch dort eine defekte Hamnet-Antenne Richtung Kronplatz (IR3DV) ersetzt werden musste.&lt;br /&gt;
&lt;br /&gt;
=== September ===&lt;br /&gt;
2012-09-08: Dritter Hamnet-Einsatz Marmolada, um Blitzschaden am gesamten Umsetzerstandort zu beheben.&lt;br /&gt;
&lt;br /&gt;
Folgende Linkstrecken konnten dabei reaktiviert bzw. neu aktiviert werden:&lt;br /&gt;
&lt;br /&gt;
IR3AO &amp;lt;&amp;gt; IR3UHF läuft nun wieder wie gehabt -75 dBi&lt;br /&gt;
&lt;br /&gt;
IR3AO &amp;lt;&amp;gt; IR3DV konnte zusätzlich aktiviert werden -73 dBi&lt;br /&gt;
&lt;br /&gt;
IR3AO &amp;lt;&amp;gt; OE8XDR-2 wartet auf die Gegenseite&lt;br /&gt;
&lt;br /&gt;
IR3AO &amp;lt;&amp;gt; IR3UDZ schwächelt noch ein wenig, Gegenseite muss kontrolliert werden&lt;br /&gt;
&lt;br /&gt;
=== Oktober ===&lt;br /&gt;
2012-10-13: Flori (DL8MBT) bastelt eine Software zur Verwaltung von Standorten und IP-Adressen, u.a. findet sich darin auch das AS64600 wieder.&lt;br /&gt;
&lt;br /&gt;
Hamnet IP Database: &amp;lt;nowiki&amp;gt;http://hamnetdb.net&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mirror South Tyrol: &amp;lt;nowiki&amp;gt;http://hamnetdb.iw3brc.net&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== November ===&lt;br /&gt;
2012-11-30: HAMMON &amp;lt;nowiki&amp;gt;http://hammon.iw3brc.net&amp;lt;/nowiki&amp;gt; wird geupdatet und mit Verknüpfungen zur neuen IP-Dokumentation und zu weiteren Realtimedaten erweitert.&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2013 ==&lt;br /&gt;
&lt;br /&gt;
=== erstes Halbjahr 2013 ===&lt;br /&gt;
Softwareseitige Optimierungen an den bestehenden Strukturen IR3UHE, IR3UGM, IR3UHF, IR3EB, IR3AO, IR3DV, IR3UHI&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
2013-07-12: Vorbereitung eines weiteren Hamnetknotens am &#039;&#039;&#039;Schludernser Berg IR3UBE&#039;&#039;&#039; für die Verbindung zu IR3EB.&lt;br /&gt;
&lt;br /&gt;
2013-07-14: Erste Aktivierung von AllstarLink auf den Knoten IR3UGM Gantkofel und IR3DV Kronplatz. Weitere Infos unter [Http://drc.bz/wordpress/link-sudtirol-gantkofel-und-kronplatz-in-betrieb/ http://drc.bz/wordpress/link-sudtirol-gantkofel-und-kronplatz-in-betrieb/]&lt;br /&gt;
&lt;br /&gt;
=== August ===&lt;br /&gt;
2013-08-10: Aktivierung des Hamnet-Knotens &#039;&#039;&#039;IR3UGB&#039;&#039;&#039; auf der &#039;&#039;&#039;Seceda&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
2013-08-16: Aktivierung der &#039;&#039;&#039;Linkstrecke Piz Chavalatsch (IR3EB) ↔ Schludernser Berg (IR3UBE)&#039;&#039;&#039; und weiter bis zu IN3XOZ in Mals.&lt;br /&gt;
&lt;br /&gt;
2013-08-17: Start der 2-Tages-Grossaktion am Piz Chavalatsch mit Hubschraubereinsatz. Verschiedenste Umbau- und Reparaturarbeiten konnten beendet werden.&lt;br /&gt;
&lt;br /&gt;
2013-08-18: Erfolgreiche Reparatur des R6 Vinschgau und Inbetriebnahme des „Südtirol Link“ auf 70cm, der den Piz Chavalatsch mit Gantkofel und Kronplatz via Hamnet und quer durch Südtirol permanent verbindet.&lt;br /&gt;
&lt;br /&gt;
Krönung war dann noch die erfolgreiche Aktivierung einer Foto-Webcam von Flori (DL8MBT) Richtung Ortlermassiv: https://www.foto-webcam.eu/webcam/chavalatsch/&lt;br /&gt;
&lt;br /&gt;
=== September ===&lt;br /&gt;
2013-09-28: Aktivierung des Hamnet-Knotens &#039;&#039;&#039;IR3UGD&#039;&#039;&#039; am &#039;&#039;&#039;Jaufenpass&#039;&#039;&#039; und gleichzeitige Installation des Link Südtirol an diesem Standort.&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2014 ==&lt;br /&gt;
&lt;br /&gt;
=== April ===&lt;br /&gt;
2014-04-24: Die ehemalige Gewerbeoberschule (GOB) und jetzige Technologische Fachoberschule (TFO) “Max Valier” in Bozen konnte erfolgreich ans HAMNET angebunden werden.&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
2014-07-11: Am Hamnet-Standort Seceda wird nun erstmals das Signal der &#039;&#039;&#039;Zugspitze DB0ZU/70&#039;&#039;&#039; empfangen, um es dann an bestimmte Knoten zu nutzen (Gantkofel, Chavalatsch, Kronplatz). &lt;br /&gt;
&lt;br /&gt;
Über den 70cm-Einstieg Gantkofel kann das deutsche Relais bereits erfolgreich gearbeitet werden. &lt;br /&gt;
&lt;br /&gt;
=== August ===&lt;br /&gt;
2014-08-03: Der (Hamnet)Standort Rittnerhorn konnte erfolgreich auf den neuen Funkmast des Zivilschutzes migriert werden.&lt;br /&gt;
&lt;br /&gt;
2014-08-23: Am Standort Chavalatsch wurde neben zahlreichen Wartungsarbeiten nun auch der „Link Zugspitze“ aktiviert.&lt;br /&gt;
&lt;br /&gt;
2014-08-30: Der Standort Plose wurde hamnet-technisch erschlossen und mit einem weiteren Einstieg zum „Link Südtirol“ versorgt.&lt;br /&gt;
&lt;br /&gt;
2014-09-30: Am Standort Rittnerhorn IR3UHF wurden die letzten Arbeiten nach dem Umzug auf den neuen Masten erledigt, die bis dato noch offen geblieben waren.&lt;br /&gt;
&lt;br /&gt;
2014-10-04: Der Standort auf der Seceda wird generalüberholt, d.h. die leidigen Linkstrecken wurden nun durch kompakte QRT5 ersetzt, um damit endlich die gewünschte Linkstabilität zu erreichen, nachdem der Standort Marmolada durch erneuten Blitzschaden ausgefallen ist.&lt;br /&gt;
&lt;br /&gt;
== Projektverlauf 2015 ==&lt;br /&gt;
&lt;br /&gt;
=== April ===&lt;br /&gt;
2015-04-06: Die Zugspitzanbindung im Pustertal wird vom Kronplatz IR3DV auf den Gitschberg IR3UHI verlegt.&lt;br /&gt;
&lt;br /&gt;
2015-04-28: Der Standort am Schludernser Berg erhält eine neue Linkantenne zu IR3EB und wird ab nun mit zusätzlichem Strom aus Windkraft unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Mai ===&lt;br /&gt;
2015-05-01: Der Standort am Gantkofel IR3UGM erhält ein neues DStar-Interface (UP4DAR).&lt;br /&gt;
&lt;br /&gt;
=== Juni ===&lt;br /&gt;
2015-06-14: Inspektions- und Reparatureinsatz am Standort Chavalatsch IR3EB.&lt;br /&gt;
&lt;br /&gt;
== 2017 ==&lt;br /&gt;
&lt;br /&gt;
=== September/Oktober: ===&lt;br /&gt;
Nach einem Standortumzug auf der Plose besteht nun Sicht zu &#039;&#039;&#039;OE7XGR Gefrorene Wand&#039;&#039;&#039;. Damit konnte die Linkstrecke Gantkofel-Gefrorene Wand auf die Plose umgezogen werden.  Die Strecke nach OE7 funktioniert nun aufgrund der wesentlich kürzeren Strecke erheblich stabiler.&lt;br /&gt;
&lt;br /&gt;
Außerdem besteht vom neuen Standort Plose auch Sicht zum &#039;&#039;&#039;Kronplatz&#039;&#039;&#039; und zum &#039;&#039;&#039;Gitschberg&#039;&#039;&#039;. Somit wurden auch die Standorte Gitschberg und Kronplatz direkt über die Plose angebunden, was insgesamt zu kürzeren Strecken, weniger Hops und somit weniger Ausfallrisiko führt.&lt;br /&gt;
&lt;br /&gt;
== 2018 ==&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
Aktivierung der Verbindung vom Kronplatz zu &#039;&#039;&#039;OE7XJH Hollbruck&#039;&#039;&#039; in Osttirol&lt;br /&gt;
&lt;br /&gt;
=== Gesamtes Jahr ===&lt;br /&gt;
Erneuerung/Einrichtung Userzugänge mit 120° Sektorantennen im 2,3GHz Band auf den Standorten Gantkofel (für den Raum Etschtal/Bozen), Marlinger Berg (Raum Meran), Rittnerhorn (Raum Überetsch/Unterland), Gitschberg (Raum Brixen) und Kronplatz (Raum Bruneck)&lt;br /&gt;
&lt;br /&gt;
=== Dezember ===&lt;br /&gt;
Aktivierung Standort &#039;&#039;&#039;IR3UFM Schöneben&#039;&#039;&#039; im oberen Vinschgau, vorerst noch ohne HAMNET-Anbindung&lt;br /&gt;
&lt;br /&gt;
== 2019 ==&lt;br /&gt;
&lt;br /&gt;
=== September ===&lt;br /&gt;
Aktivierung Standort &#039;&#039;&#039;IR3UFM Helm&#039;&#039;&#039; und Anbindung an &#039;&#039;&#039;IR3DV Kronplatz&#039;&#039;&#039; (PtMP mit der Antenne richtung Hollbruck)&lt;br /&gt;
&lt;br /&gt;
Später dann wurde auf PTP mit einer eigenen Antenne umgebaut.&lt;br /&gt;
&lt;br /&gt;
== 2020 ==&lt;br /&gt;
Durch Aktivierung der Zwischenstation am &#039;&#039;&#039;IR3UFL Grauner Berg&#039;&#039;&#039; konnte nun auch &#039;&#039;&#039;IR3UFM Schöneben&#039;&#039;&#039; via Richtfunk ans HAMNET angebunden werden.&lt;br /&gt;
&lt;br /&gt;
== 2021 ==&lt;br /&gt;
&lt;br /&gt;
=== Juli ===&lt;br /&gt;
Aktivierung des Standortes &#039;&#039;&#039;IR3BC Vigiljoch.&#039;&#039;&#039; Von hier aus können nun &#039;&#039;&#039;IR3EB Chavalatsch&#039;&#039;&#039; und &#039;&#039;&#039;IR3UGD Jaufen&#039;&#039;&#039; direkt erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Somit ergeben sich auch hier eine Verkürzung der Strecke (Chavalatsch) und insgesamt kürzere netzwerktechnische Wege.&lt;br /&gt;
&lt;br /&gt;
=== Dezember ===&lt;br /&gt;
Das gesamte HAMNET in Südtirol wird auf 32-Bit-AS-Nummern umgestellt.&lt;br /&gt;
&lt;br /&gt;
Damit agiert nun jeder Standort routingtechnisch komplett eigenständig und es ist möglich, bei einem Ausfall eines zentralen Knotens in Südtirol - z.B. Rittnerhorn - die HAMNET-Kommunikation zwischen unseren Standorten automatisch über andere Regionen, beispielsweise über OE7 - umzuleiten.&lt;br /&gt;
&lt;br /&gt;
== 2022 ==&lt;br /&gt;
&lt;br /&gt;
=== April ===&lt;br /&gt;
Unsere Kollegen in Tirol aktivieren &#039;&#039;&#039;OE7XNP Gueser Kopf&#039;&#039;&#039; bei Nauders, von wo aus Sicht zu IR3UFM Schöneben besteht.&lt;br /&gt;
&lt;br /&gt;
Mit der aktivierung dieses Links besteht nun ein HAMNET-Kreis zwischen Südtirol und OE7. Zusammen mit den 32-bit-AS-Nummern kann dies auch tatsächlich genutzt werden, falls innerhalb Südtirols wichtige Knoten ausfallen würden.&lt;br /&gt;
[[Kategorie:HAMNET]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=PR-Digi_mit_Direwolf&amp;diff=74</id>
		<title>PR-Digi mit Direwolf</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=PR-Digi_mit_Direwolf&amp;diff=74"/>
		<updated>2025-10-25T07:10:52Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: AXUDP Troubleshooting mit Wireshark&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit recht einfachen Software-Mitteln ist es möglich, eine &#039;Moderne&#039; Variante eines Packet Radio Digipeaters zu betreiben, welche (abgesehen vom AF-Interface zum Funkgerät) ganz ohne Spezialhardware auskommt.&lt;br /&gt;
&lt;br /&gt;
Im folgenden wird ein Aufbau beschrieben, welcher sowohl einen Multibaud RF-Zugang, als auch einen HAMNET-Zugang über das AXUDP-Protokoll bereitstellen kann.&lt;br /&gt;
&lt;br /&gt;
=== Plattform ===&lt;br /&gt;
Als systemtechnische Plattform eignet sich im Grunde ein Mikro-PC ähnlich Raspberry PI, auf welchem ein Linux-Betriebssystem lauffähig ist. &lt;br /&gt;
&lt;br /&gt;
Auf unserem Standort [[Gantkofel IR3UGM]] läuft das in diesem Artikel beschriebene Setup beispielsweise mit einem OrangePi Zero (ARM Cortex A7 CPU mit 512MB RAM), aber es sind natürlich auch andere ARM- oder x86-Basierte Systeme möglich.&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist jedoch, dass - vor allem beim Betrieb von MultiBaud oder generell bei mehreren parallelen Zugängen - die verschiedenen Direwolf-Modems zeitgleich laufen und somit CPU-Last erzeugen.&lt;br /&gt;
&lt;br /&gt;
Etwas schnellere CPUs sind daher vorteilhaft.&lt;br /&gt;
&lt;br /&gt;
=== (Soft)Modem ===&lt;br /&gt;
Wo früher Hardware-TNCs ihre Arbeit verrichtet haben, kommen bei moderneren Setups vermehrt Software-Implementierungen zum Einsatz, die sich mittlerweile durchaus mit ihren Hardware-Pendants messen können.&lt;br /&gt;
&lt;br /&gt;
In unserem Setup wird als Software-Modem [https://github.com/wb2osz/direwolf Direwolf] verwendet, mit welchem das Basisband-Signal erzeugt bzw. decodiert werden kann.&lt;br /&gt;
&lt;br /&gt;
Dabei werden mehrere verschiedene Modulationsverfahren/Baudraten unterstützt, unter Anderem:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1200baud AFSK&#039;&#039;&#039; (der Klassiker)&lt;br /&gt;
* &#039;&#039;&#039;2400bps&#039;&#039;&#039; nach &#039;&#039;&#039;ITU-T V.26b&#039;&#039;&#039;&lt;br /&gt;
** Sollte mit &amp;quot;klassischen&amp;quot; 1k2 fähigen Funkgeräten (also nur über Lautsprecher/Mikrofon Anschlüsse, ohne Zugang auf den FM-Diskriminator/Modulator) noch machbar sein&lt;br /&gt;
** hier wird ebenfalls eine Symbolrate von &#039;&#039;&#039;1200 Symbolen/Sekunde&#039;&#039;&#039; verwendet, jedoch mit &#039;&#039;&#039;4 möglichen Zuständen&#039;&#039;&#039;&lt;br /&gt;
** Somit können &#039;&#039;log2(4) = &#039;&#039;&#039;2&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;bit pro Symbol&#039;&#039;&#039; übertragen werden&lt;br /&gt;
** 1200 Symbole/Sekunde * 2bit/Symbol = &#039;&#039;&#039;2400 bit/Sekunde&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;4800bps&#039;&#039;&#039; nach &#039;&#039;&#039;ITU-T V.27&#039;&#039;&#039;&lt;br /&gt;
** die Symbolrate beträgt hier &#039;&#039;&#039;1600 Symbole/Sekunde&#039;&#039;&#039;&lt;br /&gt;
** Das Modulationsschema benutzt &#039;&#039;&#039;8 mögliche Zustände&#039;&#039;&#039;&lt;br /&gt;
** Somit &#039;&#039;log2(8) = 3&#039;&#039; bit pro Symbol&lt;br /&gt;
** bei 1600Symbolen/Sekunde  ergibt das &#039;&#039;&#039;4800 bit/Sekunde&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für den Multibaud-Betrieb ist eine weitere Eigenheit zu beachten: Direwolf kann jeweils nur ein Modem pro Sound-Interface verwenden. &lt;br /&gt;
&lt;br /&gt;
Man kann sich jedoch eines Tricks des Linux-Audio-Subsystems ALSA bedienen: ALSA unterstützt nämlich &#039;&#039;&#039;virtuelle Sound-Interfaces&#039;&#039;&#039;, welche schlussendlich &amp;quot;gemixt&amp;quot; und auf das gleiche physische Audiogerät ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Somit ist es möglich, in der Direwolf-Konfiguration beispielsweise die Modems für 1k2, 2k4 und 4k8 gleichzeitig auf dem gleichen Audio-Interface und somit schlussendlich auf der gleichen QRG zu verwenden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für die Anbindung an die PR-Node-Software gilt zu beachten, dass Direwolf nur ein einziges Pseudo-TTY-Gerät anlegen kann. In unserem Fall bräuchten wir nun aber für 3 Modems folglich 3 Stück.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch hier bedienen wir uns eines kleinen Tricks, um die vorher definierten Direwolf-Modems anzubinden:&lt;br /&gt;
&lt;br /&gt;
Direwolf unterstützt zwar nur ein einziges Pseudo-TTY-Gerät, wohl aber mehrere TCP-KISS Verbindungen. Mit diesen kann aber unsere PR-Node-Software (X)Net nichts anfangen.&lt;br /&gt;
&lt;br /&gt;
Als Bindeglied dient deshalb das Tool &#039;&#039;udpflex&#039;&#039; aus der dxlAPRS Toolchain, welches sich als &#039;&#039;&#039;Bridge&#039;&#039;&#039; dazwischenschalten lässt und von &#039;&#039;&#039;TCP-KISS&#039;&#039;&#039; ins &#039;&#039;&#039;AXUDP&#039;&#039;&#039;-Protokoll konvertiert, welches in (X)Net problemlos angesprochen werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Port-Konfiguration in unserer Direwolf.conf sieht nun folgendermaßen aus:&lt;br /&gt;
 KISSPORT 8000 0&lt;br /&gt;
 KISSPORT 8001 2&lt;br /&gt;
 KISSPORT 8002 4&lt;br /&gt;
.. wobei der erste Wert den zu bindenden TCP-Port definiert, der Zweite steht für den CHANNEL (also das Modem).&lt;br /&gt;
&lt;br /&gt;
Zu beachten: die Channels in Direwolf sind immer STEREO (also immer Paarweise) zu verstehen; somit muss das zweite Modem &#039;&#039;CHANNEL 2&#039;&#039; (das dritte &#039;&#039;CHANNEL 4&#039;&#039; usw.) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun starten wir unsere udpflex-Instanzen, welche sich (option &amp;lt;code&amp;gt;-T host:port&amp;lt;/code&amp;gt;) mit den verschiedenen TCP-KISS Ports am lokalen Host verbinden und ihrerseits UDP-Ports (option &amp;lt;code&amp;gt;-U host:tx-port:rx-port&amp;lt;/code&amp;gt;) am lokalen Host öffnen, wo dann über AXUDP die AX.25 Pakete empfangen/gesendet werden:&lt;br /&gt;
 # udpflex als TCP-KISS &amp;lt;&amp;gt; AXUDP Bridge fuers Anbinden der drei Direwolf-Modems an XNET&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8000 -U 127.0.0.1:10001:10002 &amp;amp;&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8001 -U 127.0.0.1:10003:10004 &amp;amp;&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8002 -U 127.0.0.1:10005:10006 &amp;amp;&lt;br /&gt;
Eine sehr hilfreiche Dokumentation von &#039;&#039;udpflex&#039;&#039; und den anderen Hilfsmitteln aus der dxlAPRS-Toolchain findet sich bei [https://dxlwiki.dl1nux.de/index.php?title=Udpflex dxlwiki.dl1nux.de]&lt;br /&gt;
&lt;br /&gt;
=== Packet-Router (X)Net ===&lt;br /&gt;
Als Packet Node Software bzw. Router ist (X)Net im Einsatz. Dieses ist auch auf neueren Plattformen noch Lauffähig.&lt;br /&gt;
&lt;br /&gt;
Die Anbindung zwischen Direwolf und (X)NET erfolgt wie vorher beschrieben über &#039;&#039;&#039;AXUDP&#039;&#039;&#039;, wobei pro Modem (=Baudrate) ein Port konfiguriert wid. &lt;br /&gt;
&lt;br /&gt;
Somit kann von (X)NET aus durch Auswahl des Ports gewählt werden, in welcher Baudrate eine Station via RF kontaktiert werden soll. Auch &#039;&#039;MHeard&#039;&#039; usw. wird dann entsprechend pro Port/Baudrate angezeigt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Attach-Befehle sehen in unserem Fall beispielsweise folgendermaßen aus:&lt;br /&gt;
 att ip0 axudp 1 1 l10001 d10002 127.0.0.1&lt;br /&gt;
 att ip1 axudp 2 1 l10003 d10004 127.0.0.1&lt;br /&gt;
 att ip2 axudp 3 1 l10005 d10006 127.0.0.1&lt;br /&gt;
Die TX- und RX-Ports müssen hier natürlich genau invertiert zur &#039;&#039;udpflex&#039;&#039;-Konfiguration angegeben werden&lt;br /&gt;
&lt;br /&gt;
=== AXUDP für Userzugang ===&lt;br /&gt;
Wenn neben dem Zugang via RF auch ein AXUDP-Zugang angeboten werden soll, braucht es dazu noch einmal einen kleinen Trick:&lt;br /&gt;
&lt;br /&gt;
(X)Net hat einen AXIP/AXUDP Treiber integriert, mit welchem AXUDP Verbindungen zu anderen Nodes gemacht werden können.&lt;br /&gt;
&lt;br /&gt;
Dabei nimmt (X)Net laut Doku aber aus Sicherheitsgründen nur AXUDP Frames an, die &#039;&#039;&#039;explizit vom konfigurierten Linkpartner kommen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wildcards o.Ä. können keine angegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als Workaround ist nach österreichischem Vorbild &#039;&#039;udphub&#039;&#039; aus der dxlAPRS Toolchain vorgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Konfigurationstechnisch stellt (X)Net eine &#039;&#039;&#039;AXUDP-Verbindung mit 127.0.0.1 her&#039;&#039;&#039; (bei uns beispielsweise über die Ports &#039;&#039;&#039;9007&#039;&#039;&#039; und &#039;&#039;&#039;9008&#039;&#039;&#039;), dort lauscht &#039;&#039;udphub&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Da für (X)Net nun alle Verbindungen &amp;quot;&#039;&#039;vom konfigurierten AXUDP-Partner 127.0.0.1 kommen&#039;&#039;&amp;quot;, ist (X)Net zufrieden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Diese Lösung hat außerdem noch einen weiteren Vorteil: &#039;&#039;udphub&#039;&#039; merkt sich die IP-Adressen der anrufenden Stationen für eine via Konfigurationsparameter definierbare Zeit und kann somit auch ausgehende Connects machen.&lt;br /&gt;
&lt;br /&gt;
Die Verwendung ist also gleich, wie bei Usern die via RF ankommen würden.&lt;br /&gt;
&lt;br /&gt;
Für Troubleshooting-Zwecke kann &#039;&#039;udphub&#039;&#039; mit der option &amp;lt;code&amp;gt;-w&amp;lt;/code&amp;gt; angewiesen werden, einen Log der letzten bekannten AXUDP-Verbindungen (sozusagen den &amp;quot;Switching-Table&amp;quot;) in eine Datei (z.B. &amp;lt;code&amp;gt;/tmp/udphub.log&amp;lt;/code&amp;gt;) zu schreiben.&lt;br /&gt;
&lt;br /&gt;
 # Port fuer AXUDP User-Zugang &lt;br /&gt;
 USERPORT=10093 &lt;br /&gt;
 # udphub als AXUDP-Switch - Workaround damit XNET AXUDP Calls von Usern entgegennimmt &lt;br /&gt;
 # udphub merkt sich intern fuer die angegebene Zeitdauer (option -l in Sekunden) &lt;br /&gt;
 # die IP-Adressen/Ports der AXUDP-User. &lt;br /&gt;
 # Somit koennen ueber diesen Port auch Stationen connected werden&lt;br /&gt;
 ./udphub -u 127.0.0.1:9007:9008 -l 1440 -p $USERPORT -w /tmp/udphub.log &amp;amp; &lt;br /&gt;
&lt;br /&gt;
Bei einem ausgehenden Connect ist natürlich zu beachten, dass es durchaus passieren könnte, dass der remote Node nach einiger Zeit auf demselben Port &#039;&#039;&#039;nicht mehr antwortet&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das passiert beispielsweise, wenn zwischen dem PR-Node und dem zu verbindenden User ein &#039;&#039;&#039;NAT dazwischen ist&#039;&#039;&#039; - beispielsweise weil das Packet-Gerät im LAN des OMs läuft und bei der Verbindung ins HAMNET mit der 44er IP der HAMNET-Antenne &#039;&#039;geNATted&#039;&#039; wird. In diesem Fall wird die &#039;&#039;&#039;NAT-Session&#039;&#039;&#039; irgendwann in &#039;&#039;&#039;Timeout&#039;&#039;&#039; gehen und folglich ein &#039;&#039;&#039;Connect von außen nicht mehr funktionieren.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In solchen Fällen gilt also: Soll der eigene PR-Node im QTH auch von außen via AXUDP verbindbar sein, dann ist darauf zu achten, dass dieser im idealfall selbst eine 44er IP aus dem HAMNET zugewiesen bekommt.&lt;br /&gt;
&lt;br /&gt;
In diesen Fällen ist es am besten, sich mit einem HAMNET-Sysop zu besprechen.&lt;br /&gt;
&lt;br /&gt;
=== AXUDP Troubleshooting mit Wireshark ===&lt;br /&gt;
Um AXUDP-Traffic zu analysieren, eignet sich das bewährte Netzwerkanalysetool Wireshark bestens.&lt;br /&gt;
&lt;br /&gt;
Damit Wireshark die in UDP &amp;quot;Eingekapselten&amp;quot; AX.25 Frames auch als solche decodiert, ist folgende Konfiguration erforderlich (eventuell weitere verwendete Ports sind entsprechend hinzuzufügen):&lt;br /&gt;
&lt;br /&gt;
 -- ax25-udp.lua&lt;br /&gt;
 &lt;br /&gt;
 -- load the udp.port table&lt;br /&gt;
 udp_table = DissectorTable.get( &amp;quot;udp.port&amp;quot; )&lt;br /&gt;
 &lt;br /&gt;
 -- get a handle to the AX.25 dissector&lt;br /&gt;
 proto_ax25 = Dissector.get( &amp;quot;ax25&amp;quot; )&lt;br /&gt;
 &lt;br /&gt;
 -- register AX.25 to handle udp port&lt;br /&gt;
 udp_table:add( 10093, proto_ax25 )&lt;br /&gt;
 udp_table:add( 93, proto_ax25 )&lt;br /&gt;
Weitere Dokumentation findet sich in der Wireshark-Dokumentation https://wiki.wireshark.org/AmateurRadioProtocolFamily&lt;br /&gt;
[[Kategorie:HAMNET]]&lt;br /&gt;
[[Kategorie:Digitaltechnik]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=MMDVM-Relais&amp;diff=73</id>
		<title>MMDVM-Relais</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=MMDVM-Relais&amp;diff=73"/>
		<updated>2025-09-24T12:59:56Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: RSSI Anzeige&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auf allen MMDVM-Relais des DRC ist aktuell (stand September 2025) das folgende MMDVM Modem Board verbaut:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MMDVM_POG&#039;&#039;&#039; Board, nach dem Design von SQ6POG&lt;br /&gt;
** &#039;&#039;&#039;STM32F105RBT&#039;&#039;&#039; MCU (ARM Cortex M3, 72MHz Clock, 128kB Flash)&lt;br /&gt;
** &#039;&#039;&#039;19.2 MHz&#039;&#039;&#039; TCXO&lt;br /&gt;
** Sallen-Key Butterworth-Tiefpassfilter für RX und TX&lt;br /&gt;
** Open-Source Hardware Design&lt;br /&gt;
** Hardware-Design: https://github.com/wojciechk8/MMDVM_pog/&lt;br /&gt;
&lt;br /&gt;
Wenn man den verbauten 19,2MHz TCXO durch ein 12MHz-Äquivalent austauscht, ist diversen Berichten zufolge die Firmware der &#039;&#039;Repeater Builder STM32-DVM V2&#039;&#039; Boards (Stand 2025 auch nicht mehr offiziell unterstützt) auf diesen Platinen lauffähig.&lt;br /&gt;
&lt;br /&gt;
=== In-System Flashing Mod ===&lt;br /&gt;
Damit die Firmware per remote geflasht werden kann, müssen zwei Verbindungen gelötet werden:&lt;br /&gt;
[[Datei:Mmdvm-flashing-mod.png|alternativtext=MMDVM In-System-Flashing-Mod|mini|MMDVM In-System-Flashing-Mod]]&lt;br /&gt;
&lt;br /&gt;
* Raspberry PI &#039;&#039;&#039;GPIO 21&#039;&#039;&#039; (HW Pin 40, im Bild das Erste oben links) -&amp;gt; &#039;&#039;&#039;NRST&#039;&#039;&#039; (auf ST-LINK Pin Header, das Pin neben dem Kondensator)&lt;br /&gt;
* Raspberry PI &#039;&#039;&#039;GPIO 20&#039;&#039;&#039; (HW Pin 38, im Bild das Zweite von oben links) -&amp;gt; &#039;&#039;&#039;BOOT0&#039;&#039;&#039; (JP1 Pin 2), über einen 10kOhm Widerstand&lt;br /&gt;
&lt;br /&gt;
Zum Flashen muss zuerst MMDVMHost gestoppt werden:&lt;br /&gt;
 systemctl stop mmdvmhost.timer&lt;br /&gt;
 systemctl stop mmdvmhost&lt;br /&gt;
Dann kann mit &#039;&#039;stm32flash&#039;&#039; mit angabe der Pin-Folge (option &amp;lt;code&amp;gt;-i&amp;lt;/code&amp;gt;) geflasht werden:&lt;br /&gt;
 # MMDVM Modem in Flash-Modus bringen (BOOT0 high, NRST low-&amp;gt;high)&lt;br /&gt;
 stm32flash -i 20,-21,21 /dev/ttyAMA0&lt;br /&gt;
 # Firmware flashen&lt;br /&gt;
 stm32flash -w mmdvm_pog-fw.hex -g 0x0 -R /dev/ttyAMA0&lt;br /&gt;
 # MMDVM nochmal via NRST (low-&amp;gt;high) resetten&lt;br /&gt;
 stm32flash -i -21,21 /dev/ttyAMA0&lt;br /&gt;
&lt;br /&gt;
 # nun kann MMDVMHost wieder gestartet werden&lt;br /&gt;
 systemctl start mmdvmhost.timer&lt;br /&gt;
 systemctl start mmdvmhost&lt;br /&gt;
&lt;br /&gt;
=== MMDVMHost Einstellungen ===&lt;br /&gt;
Der Modem-Type ist auf &#039;&#039;&#039;STM32-DVM / MMDVM_HS - Raspberry Pi Hat (GPIO)&#039;&#039;&#039; zu stellen.&lt;br /&gt;
&lt;br /&gt;
Baudrate ist &#039;&#039;&#039;115200&#039;&#039;&#039;. Schnellere Baudraten, wie sie beispielsweise für FM oder andere Betriebsarten notwendig sind, schafft der &#039;&#039;STM32F105&#039;&#039; nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Kalibrierung ===&lt;br /&gt;
Die Kalibrierung der RX und TX-Pegel vom MMDVM passiert in unserem Fall über die einstellung zweier Trimmerpotentiometer, sowie über die digitale Gain-Einstellung.&lt;br /&gt;
&lt;br /&gt;
Zum Kalibrieren wird das Programm MMDVMCal (in PiStar direkt mit pistar-mmdvmcal aufrufbar) verwendet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Achtung:&amp;lt;/u&amp;gt; MMDVMCal startet immer mit den Default-Einstellungen (alle Gain-Level auf 50%, kein TXInvert und kein RXInvert). Außerdem werden die eingestellten Werte &#039;&#039;&#039;&amp;lt;u&amp;gt;nicht&amp;lt;/u&amp;gt;&#039;&#039;&#039; automatisch in die Konfigurationsdatei übernommen! Das muss manuell erledigt werden.&lt;br /&gt;
&lt;br /&gt;
==== TX Kalibrierung ====&lt;br /&gt;
Die Pegel für den Sender können durch Auswahl der Funktion &amp;lt;code&amp;gt;D Set DMR Deviation Mode. Generates a 1.2Khz Sinewave. Set radio for 2.75 Khz Deviation&amp;lt;/code&amp;gt; eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Besonders bei DMR ist die Hub-Einstellung kritisch.&lt;br /&gt;
&lt;br /&gt;
Die Einstellung erfolgt mit hilfe eines Spektrum-Analyzers, wobei sich auch ein TinySA oder ein RTL-SDR eignen.&lt;br /&gt;
&lt;br /&gt;
Die Anzeige wird auf die Sendefrequenz zentriert, der angezeigte Bandausschnitt sollte ca 15-20kHz betragen.&lt;br /&gt;
&lt;br /&gt;
Nun wird der Trimmer solange bewegt, bis der Träger (so gut wie möglich) verschwunden ist:&lt;br /&gt;
[[Datei:Mmdvm-tx-calibration.png|alternativtext=MMDVM TX-Kalibrierung mit der Bessel-Null-Methode|zentriert|mini|502x502px|MMDVM TX-Kalibrierung mit der Bessel-Null-Methode]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für die Feineinstellung kann in MMDVMCal durch die Tasten &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; der TX-Pegel digital in halben Prozentschritten erhöht (&#039;&#039;T&#039;&#039;) oder verringert (&#039;&#039;t&#039;&#039;) werden.&lt;br /&gt;
&lt;br /&gt;
Nun hat man ca. einen Hub von 2,88kHz eingestellt. Um zum gewünschten Hub von 2,75kHz zu gelangen, muss der Ermittelte &#039;&#039;TXLevel&#039;&#039; Wert noch mit 95% multipliziert und anschließend in der mmdvmhost-Konfigurationsdatei als &#039;&#039;TXLevel&#039;&#039; abgespeichert werden.&lt;br /&gt;
&lt;br /&gt;
==== RX Kalibrierung ====&lt;br /&gt;
Für die Kalibrierung der RX-Pegel gibt es zwei Varianten: die genauere, Messtechnische Variante mit einem Oszilloskop, und alternativ die &amp;quot;Trial and Error&amp;quot;-Methode.&lt;br /&gt;
&lt;br /&gt;
===== &amp;quot;Trial and Error&amp;quot;-Methode =====&lt;br /&gt;
MMDVMCal bietet mehrere BER-Testing-Modes, welche entsprechend ein DSTAR/DMR/C4FM Signal erwarten und für jeden empfangenen Datenframe die BER anzeigen.&lt;br /&gt;
 K/k	BER Test Mode (FEC) for D-Star&lt;br /&gt;
 b	BER Test Mode (FEC) for DMR Simplex (CC1)&lt;br /&gt;
 J	BER Test Mode (FEC) for YSF&lt;br /&gt;
Nun wird mit einem entsprechenden Digitalfunkgerät ein Signal auf das Relais gegeben und der RX-Trimmer (und somit der NF-Pegel des Empfangssignals) durch &#039;&#039;&amp;quot;testen&amp;quot;&#039;&#039; solange variiert, bis etwas decodiert wird.&lt;br /&gt;
&lt;br /&gt;
Danach wird durch die tasten &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; der RXLevel (also der Gain auf der digitalen Seite) angepasst, bis die angezeigten BER-Werte minimal sind.&lt;br /&gt;
&lt;br /&gt;
Am Ende wird der ermittelte Wert unverändert in der MMDVMHost-Konfigurationsdatei als &#039;&#039;RXLevel&#039;&#039; abgespeichert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Achtung:&amp;lt;/u&amp;gt; Die Einstellung des Trimmers ist der kritische Teil! Wenn das analog anliegende Signal &#039;&#039;&#039;über VCC (=3.3V)&#039;&#039;&#039; geht und der ADC somit ins &#039;&#039;&#039;Clipping&#039;&#039;&#039; kommt, hilft jede darauffolgende digitale Gain-Einstellung auch nichts mehr!&lt;br /&gt;
&lt;br /&gt;
===== Messtechnische Methode =====&lt;br /&gt;
Mit einem Oszilloskop wird das RX-Signal von einem Testpunkt auf der Platine abgegriffen.&lt;br /&gt;
&lt;br /&gt;
Bei unserem MMDVM-POG Board gibt es dafür den Testpunkt &#039;&#039;TP32&#039;&#039;, der sich schaltungstechnisch direkt hinter dem Butterworth-Filter der RX-Eingabe befindet.&lt;br /&gt;
&lt;br /&gt;
Physisch befindet sich der Testpoint &#039;&#039;TP32&#039;&#039; unterhalb der ST-LINK Pins, welche links vom STM32-Prozessor liegen.&lt;br /&gt;
&lt;br /&gt;
Nun wird mit einem RF-Generator bzw. mit einem Funkgerät ein Testsignal auf den Empfänger gegeben und das am Testpunkt &#039;&#039;TP32&#039;&#039; anliegende Signal gemessen. &lt;br /&gt;
&lt;br /&gt;
Ziel ist es, das Signal so einzustellen, dass der ADC nicht übersteuert wird. Das Signal soll also &#039;&#039;&#039;nie unter 0V und über 3.3V gehen&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Der DC-Offset des Signals sollte genau die Hälfte von VCC, also &#039;&#039;&#039;1,65V&#039;&#039;&#039; betragen.&lt;br /&gt;
&lt;br /&gt;
Die Amplitude des Signals sollte &#039;&#039;&#039;ca. 0,4V bis 0,5V Abstand&#039;&#039;&#039; von den beiden Grenzwerten (0V und 3,3V) haben. Das ergibt somit &#039;&#039;&#039;ca. 2,3Vpp.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auch wenn nur Rauschen am Empfänger anliegt, sollten die 3,3Vpp nicht überschritten werden.&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte Tests ===&lt;br /&gt;
Als nächstes setzt man nun in der MMDVMHost-Konfigurationsdatei in der &amp;lt;code&amp;gt;[Modem]&amp;lt;/code&amp;gt; Stanza den Wert &amp;lt;code&amp;gt;Debug=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sobald man nach der Änderung den MMDVMHost neu startet, schreibt dieser nützliche Infos ins Logfile, die zur Bestimmung der RX-Frequenzabweichung und für die Beurteilung des Timing-Drifts und der RX-Pegel nützlich sind.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel einer solchen Logzeile:&lt;br /&gt;
 M: 2025-09-11 08:08:58.636 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 452 679 631&lt;br /&gt;
 M: 2025-09-11 08:08:58.696 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 452 646 632&lt;br /&gt;
 M: 2025-09-11 08:08:58.756 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 452 590 636&lt;br /&gt;
 M: 2025-09-11 08:08:59.116 Debug: DMRSlotRX: voice terminator found slot/pos/centre/threshold 2 452 425&lt;br /&gt;
&lt;br /&gt;
==== RX Frequenzabweichung ====&lt;br /&gt;
Anhand des Wertes &#039;&#039;centre&#039;&#039; kann man feststellen, ob es einen Frequenzversatz beim Empfänger gibt.&lt;br /&gt;
&lt;br /&gt;
Der Wert sollte sich im Idealfall um 0 herum bewegen (Empfänger ist genau auf der Frequenz).&lt;br /&gt;
&lt;br /&gt;
Sollte der Wert größer als 100 sein, muss der RX nachjustiert werden.&lt;br /&gt;
&lt;br /&gt;
Bei der Bewertung dieser Werte ist darauf zu achten, dass das eingegebene Testsignal selbst keinen Frequenzversatz (oder zumindest einen bekannten) hat. Vor allem bei preisgünstigen DMR-Funkgeräten ist durchaus öfters ein Frequenzversatz zu beobachten.&lt;br /&gt;
&lt;br /&gt;
Die besten Ergebnisse würde natürlich ein kalibriertes DMR Test Set liefern, was jedoch bei den wenigsten im Shack stehen wird.&lt;br /&gt;
&lt;br /&gt;
Am besten man testet also einfach mit mehreren Funkgeräten, nach Möglichkeit mit verschiedenen Modellen von verschiedenen Herstellern.&lt;br /&gt;
&lt;br /&gt;
Wenn das Relais bereits eine Weile im Einsatz war, ist auch eine Langzeit-Auswertung über die Logfiles möglich. Dazu einfach den folgenden Befehl verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;grep -i dmrslot /var/log/pistar/MMDVM*.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Timing-Drift ====&lt;br /&gt;
Bei längeren DMR-Durchgängen (&amp;gt;180s) kann es vorkommen, dass man eine Veränderung des &#039;&#039;pos&#039;&#039;-Werts beobachten kann.&lt;br /&gt;
&lt;br /&gt;
Dies deutet auf einen Timing-Drift hin, der meistens vom TCXO auf der MMDVM-Platine verursacht wird, wenn dieser eine schlechte Frequenzstabilität aufweist.&lt;br /&gt;
&lt;br /&gt;
Hier ein entsprechendes Beispiel (Log-Auszug aus https://github.com/juribeparada/MMDVM_HS/issues/109), bei welchem dieses Problem auftritt:&lt;br /&gt;
 M: 2019-11-06 16:28:10.529 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 447 26 337&lt;br /&gt;
 M: 2019-11-06 16:28:10.589 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 447 13 338&lt;br /&gt;
 M: 2019-11-06 16:28:10.649 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 447 7 341&lt;br /&gt;
 .......&lt;br /&gt;
 M: 2019-11-06 16:31:04.891 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 16 345&lt;br /&gt;
 M: 2019-11-06 16:31:05.251 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 11 344&lt;br /&gt;
 M: 2019-11-06 16:31:05.611 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 9 348&lt;br /&gt;
 M: 2019-11-06 16:31:05.971 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 20 370&lt;br /&gt;
 E: 2019-11-06 16:31:08.326 No reply from the modem for some time, resetting it&lt;br /&gt;
 M: 2019-11-06 16:31:08.326 Closing the MMDVM&lt;br /&gt;
 M: 2019-11-06 16:31:10.352 Opening the MMDVM&lt;br /&gt;
 E: 2019-11-06 16:31:23.169 Unable to read the firmware version after six attempts&lt;br /&gt;
Zu beobachten ist, dass der erste Wert (&#039;&#039;pos&#039;&#039;) mit länger werdendem Durchgang immer weiter sinkt, bis schlussendlich das Modem neu startet.&lt;br /&gt;
&lt;br /&gt;
Wenn das bei mehreren verschiedenen Usern/Geräten auffällt (auch hier gilt: es kann auch am Endgerät des Benutzers liegen!), liegt es vermutlich am TCXO auf dem MMDVM Board.&lt;br /&gt;
&lt;br /&gt;
Ggf. sollte dieser durch ein besseres Äquivalent ausgetauscht werden, z.B. ein 12MHz TCXO von namhaften Herstellern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Achtung:&amp;lt;/u&amp;gt; Wenn der Wert von den originalen 19.2MHz auf 12MHz abgeändert wird, &#039;&#039;&#039;muss die Firmware neu compiliert werden!&#039;&#039;&#039; In der &#039;&#039;Config.h&#039;&#039; muss entsprechend die Zeile für den 19.2MHz TCXO auskommentiert und dafür das Kommentarzeichen beim 12MHz TCXO entfernt werden.&lt;br /&gt;
&lt;br /&gt;
=== RSSI-Anzeige ===&lt;br /&gt;
Damit für empfangene Signale die Signalstärke (&#039;&#039;RSSI&#039;&#039;, Received Signal Strength Indicator) angezeigt werden kann, muss der verwendete Empfänger über ein RSSI-Pin verfügen, auf welchem je nach Empfangspegel eine Spannung ausgegeben wird.&lt;br /&gt;
&lt;br /&gt;
Als erstes muss ermittelt werden, wie hoch die maximal ausgegebene Spannung am RSSI-Pin des empfängers ist. Das kann entweder aus dem Handbuch des Empfängers ermittelt oder messtechnisch  durch anlegen eines starken Pegels, z.B. S9+40 und messen der Spannung am RSSI-Pin geprüft werden.&lt;br /&gt;
&lt;br /&gt;
Danach sollte über einen Spannungsteiler die Spannung so reduziert werden, dass am RSSI-Pin des MMDVM-Boards &#039;&#039;&#039;maximal 3,3V&#039;&#039;&#039; ankommen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach wird &#039;&#039;MMDVMCal&#039;&#039; gestartet und der &#039;&#039;RSSI Mode&#039;&#039; gewählt.&lt;br /&gt;
&lt;br /&gt;
Nun müssen nacheinander definierte RF-Pegel - beispielsweise von S9+40 bis S1 - angelegt und der auf dem Bildschirm ausgegebene Wert (jeweils &#039;&#039;average&#039;&#039; verwenden) aufgeschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Diese werden anschließend in folgender Form die Datei &#039;&#039;/usr/local/etc/RSSI.dat&#039;&#039; gespeichert:&lt;br /&gt;
 # WERT SIGNALPEGEL&lt;br /&gt;
 4094 -73&lt;br /&gt;
 3912 -83&lt;br /&gt;
 3364 -93&lt;br /&gt;
 3159 -99&lt;br /&gt;
 2900 -105&lt;br /&gt;
 2670 -111&lt;br /&gt;
 2388 -117&lt;br /&gt;
 2131 -123&lt;br /&gt;
 1943 -129&lt;br /&gt;
 1851 -135&lt;br /&gt;
 1820 -141&lt;br /&gt;
[[Kategorie:Digitaltechnik]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=MMDVM-Relais&amp;diff=72</id>
		<title>MMDVM-Relais</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=MMDVM-Relais&amp;diff=72"/>
		<updated>2025-09-22T19:04:17Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auf allen MMDVM-Relais des DRC ist aktuell (stand September 2025) das folgende MMDVM Modem Board verbaut:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MMDVM_POG&#039;&#039;&#039; Board, nach dem Design von SQ6POG&lt;br /&gt;
** &#039;&#039;&#039;STM32F105RBT&#039;&#039;&#039; MCU (ARM Cortex M3, 72MHz Clock, 128kB Flash)&lt;br /&gt;
** &#039;&#039;&#039;19.2 MHz&#039;&#039;&#039; TCXO&lt;br /&gt;
** Sallen-Key Butterworth-Tiefpassfilter für RX und TX&lt;br /&gt;
** Open-Source Hardware Design&lt;br /&gt;
** Hardware-Design: https://github.com/wojciechk8/MMDVM_pog/&lt;br /&gt;
&lt;br /&gt;
Wenn man den verbauten 19,2MHz TCXO durch ein 12MHz-Äquivalent austauscht, ist diversen Berichten zufolge die Firmware der &#039;&#039;Repeater Builder STM32-DVM V2&#039;&#039; Boards (Stand 2025 auch nicht mehr offiziell unterstützt) auf diesen Platinen lauffähig.&lt;br /&gt;
&lt;br /&gt;
=== In-System Flashing Mod ===&lt;br /&gt;
Damit die Firmware per remote geflasht werden kann, müssen zwei Verbindungen gelötet werden:&lt;br /&gt;
[[Datei:Mmdvm-flashing-mod.png|alternativtext=MMDVM In-System-Flashing-Mod|mini|MMDVM In-System-Flashing-Mod]]&lt;br /&gt;
&lt;br /&gt;
* Raspberry PI &#039;&#039;&#039;GPIO 21&#039;&#039;&#039; (HW Pin 40, im Bild das Erste oben links) -&amp;gt; &#039;&#039;&#039;NRST&#039;&#039;&#039; (auf ST-LINK Pin Header, das Pin neben dem Kondensator)&lt;br /&gt;
* Raspberry PI &#039;&#039;&#039;GPIO 20&#039;&#039;&#039; (HW Pin 38, im Bild das Zweite von oben links) -&amp;gt; &#039;&#039;&#039;BOOT0&#039;&#039;&#039; (JP1 Pin 2), über einen 10kOhm Widerstand&lt;br /&gt;
&lt;br /&gt;
Zum Flashen muss zuerst MMDVMHost gestoppt werden:&lt;br /&gt;
 systemctl stop mmdvmhost.timer&lt;br /&gt;
 systemctl stop mmdvmhost&lt;br /&gt;
Dann kann mit &#039;&#039;stm32flash&#039;&#039; mit angabe der Pin-Folge (option &amp;lt;code&amp;gt;-i&amp;lt;/code&amp;gt;) geflasht werden:&lt;br /&gt;
 # MMDVM Modem in Flash-Modus bringen (BOOT0 high, NRST low-&amp;gt;high)&lt;br /&gt;
 stm32flash -i 20,-21,21 /dev/ttyAMA0&lt;br /&gt;
 # Firmware flashen&lt;br /&gt;
 stm32flash -w mmdvm_pog-fw.hex -g 0x0 -R /dev/ttyAMA0&lt;br /&gt;
 # MMDVM nochmal via NRST (low-&amp;gt;high) resetten&lt;br /&gt;
 stm32flash -i -21,21 /dev/ttyAMA0&lt;br /&gt;
&lt;br /&gt;
 # nun kann MMDVMHost wieder gestartet werden&lt;br /&gt;
 systemctl start mmdvmhost.timer&lt;br /&gt;
 systemctl start mmdvmhost&lt;br /&gt;
&lt;br /&gt;
=== MMDVMHost Einstellungen ===&lt;br /&gt;
Der Modem-Type ist auf &#039;&#039;&#039;STM32-DVM / MMDVM_HS - Raspberry Pi Hat (GPIO)&#039;&#039;&#039; zu stellen.&lt;br /&gt;
&lt;br /&gt;
Baudrate ist &#039;&#039;&#039;115200&#039;&#039;&#039;. Schnellere Baudraten, wie sie beispielsweise für FM oder andere Betriebsarten notwendig sind, schafft der &#039;&#039;STM32F105&#039;&#039; nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Kalibrierung ===&lt;br /&gt;
Die Kalibrierung der RX und TX-Pegel vom MMDVM passiert in unserem Fall über die einstellung zweier Trimmerpotentiometer, sowie über die digitale Gain-Einstellung.&lt;br /&gt;
&lt;br /&gt;
Zum Kalibrieren wird das Programm MMDVMCal (in PiStar direkt mit pistar-mmdvmcal aufrufbar) verwendet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Achtung:&amp;lt;/u&amp;gt; MMDVMCal startet immer mit den Default-Einstellungen (alle Gain-Level auf 50%, kein TXInvert und kein RXInvert). Außerdem werden die eingestellten Werte &#039;&#039;&#039;&amp;lt;u&amp;gt;nicht&amp;lt;/u&amp;gt;&#039;&#039;&#039; automatisch in die Konfigurationsdatei übernommen! Das muss manuell erledigt werden.&lt;br /&gt;
&lt;br /&gt;
==== TX Kalibrierung ====&lt;br /&gt;
Die Pegel für den Sender können durch Auswahl der Funktion &amp;lt;code&amp;gt;D Set DMR Deviation Mode. Generates a 1.2Khz Sinewave. Set radio for 2.75 Khz Deviation&amp;lt;/code&amp;gt; eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Besonders bei DMR ist die Hub-Einstellung kritisch.&lt;br /&gt;
&lt;br /&gt;
Die Einstellung erfolgt mit hilfe eines Spektrum-Analyzers, wobei sich auch ein TinySA oder ein RTL-SDR eignen.&lt;br /&gt;
&lt;br /&gt;
Die Anzeige wird auf die Sendefrequenz zentriert, der angezeigte Bandausschnitt sollte ca 15-20kHz betragen.&lt;br /&gt;
&lt;br /&gt;
Nun wird der Trimmer solange bewegt, bis der Träger (so gut wie möglich) verschwunden ist:&lt;br /&gt;
[[Datei:Mmdvm-tx-calibration.png|alternativtext=MMDVM TX-Kalibrierung mit der Bessel-Null-Methode|zentriert|mini|502x502px|MMDVM TX-Kalibrierung mit der Bessel-Null-Methode]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für die Feineinstellung kann in MMDVMCal durch die Tasten &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; der TX-Pegel digital in halben Prozentschritten erhöht (&#039;&#039;T&#039;&#039;) oder verringert (&#039;&#039;t&#039;&#039;) werden.&lt;br /&gt;
&lt;br /&gt;
Nun hat man ca. einen Hub von 2,88kHz eingestellt. Um zum gewünschten Hub von 2,75kHz zu gelangen, muss der Ermittelte &#039;&#039;TXLevel&#039;&#039; Wert noch mit 95% multipliziert und anschließend in der mmdvmhost-Konfigurationsdatei als &#039;&#039;TXLevel&#039;&#039; abgespeichert werden.&lt;br /&gt;
&lt;br /&gt;
==== RX Kalibrierung ====&lt;br /&gt;
Für die Kalibrierung der RX-Pegel gibt es zwei Varianten: die genauere, Messtechnische Variante mit einem Oszilloskop, und alternativ die &amp;quot;Trial and Error&amp;quot;-Methode.&lt;br /&gt;
&lt;br /&gt;
===== &amp;quot;Trial and Error&amp;quot;-Methode =====&lt;br /&gt;
MMDVMCal bietet mehrere BER-Testing-Modes, welche entsprechend ein DSTAR/DMR/C4FM Signal erwarten und für jeden empfangenen Datenframe die BER anzeigen.&lt;br /&gt;
 K/k	BER Test Mode (FEC) for D-Star&lt;br /&gt;
 b	BER Test Mode (FEC) for DMR Simplex (CC1)&lt;br /&gt;
 J	BER Test Mode (FEC) for YSF&lt;br /&gt;
Nun wird mit einem entsprechenden Digitalfunkgerät ein Signal auf das Relais gegeben und der RX-Trimmer (und somit der NF-Pegel des Empfangssignals) durch &#039;&#039;&amp;quot;testen&amp;quot;&#039;&#039; solange variiert, bis etwas decodiert wird.&lt;br /&gt;
&lt;br /&gt;
Danach wird durch die tasten &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; der RXLevel (also der Gain auf der digitalen Seite) angepasst, bis die angezeigten BER-Werte minimal sind.&lt;br /&gt;
&lt;br /&gt;
Am Ende wird der ermittelte Wert unverändert in der MMDVMHost-Konfigurationsdatei als &#039;&#039;RXLevel&#039;&#039; abgespeichert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Achtung:&amp;lt;/u&amp;gt; Die Einstellung des Trimmers ist der kritische Teil! Wenn das analog anliegende Signal &#039;&#039;&#039;über VCC (=3.3V)&#039;&#039;&#039; geht und der ADC somit ins &#039;&#039;&#039;Clipping&#039;&#039;&#039; kommt, hilft jede darauffolgende digitale Gain-Einstellung auch nichts mehr!&lt;br /&gt;
&lt;br /&gt;
===== Messtechnische Methode =====&lt;br /&gt;
Mit einem Oszilloskop wird das RX-Signal von einem Testpunkt auf der Platine abgegriffen.&lt;br /&gt;
&lt;br /&gt;
Bei unserem MMDVM-POG Board gibt es dafür den Testpunkt &#039;&#039;TP32&#039;&#039;, der sich schaltungstechnisch direkt hinter dem Butterworth-Filter der RX-Eingabe befindet.&lt;br /&gt;
&lt;br /&gt;
Physisch befindet sich der Testpoint &#039;&#039;TP32&#039;&#039; unterhalb der ST-LINK Pins, welche links vom STM32-Prozessor liegen.&lt;br /&gt;
&lt;br /&gt;
Nun wird mit einem RF-Generator bzw. mit einem Funkgerät ein Testsignal auf den Empfänger gegeben und das am Testpunkt &#039;&#039;TP32&#039;&#039; anliegende Signal gemessen. &lt;br /&gt;
&lt;br /&gt;
Ziel ist es, das Signal so einzustellen, dass der ADC nicht übersteuert wird. Das Signal soll also &#039;&#039;&#039;nie unter 0V und über 3.3V gehen&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Der DC-Offset des Signals sollte genau die Hälfte von VCC, also &#039;&#039;&#039;1,65V&#039;&#039;&#039; betragen.&lt;br /&gt;
&lt;br /&gt;
Die Amplitude des Signals sollte &#039;&#039;&#039;ca. 0,4V bis 0,5V Abstand&#039;&#039;&#039; von den beiden Grenzwerten (0V und 3,3V) haben. Das ergibt somit &#039;&#039;&#039;ca. 2,3Vpp.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auch wenn nur Rauschen am Empfänger anliegt, sollten die 3,3Vpp nicht überschritten werden.&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte Tests ===&lt;br /&gt;
Als nächstes setzt man nun in der MMDVMHost-Konfigurationsdatei in der &amp;lt;code&amp;gt;[Modem]&amp;lt;/code&amp;gt; Stanza den Wert &amp;lt;code&amp;gt;Debug=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sobald man nach der Änderung den MMDVMHost neu startet, schreibt dieser nützliche Infos ins Logfile, die zur Bestimmung der RX-Frequenzabweichung und für die Beurteilung des Timing-Drifts und der RX-Pegel nützlich sind.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel einer solchen Logzeile:&lt;br /&gt;
 M: 2025-09-11 08:08:58.636 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 452 679 631&lt;br /&gt;
 M: 2025-09-11 08:08:58.696 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 452 646 632&lt;br /&gt;
 M: 2025-09-11 08:08:58.756 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 452 590 636&lt;br /&gt;
 M: 2025-09-11 08:08:59.116 Debug: DMRSlotRX: voice terminator found slot/pos/centre/threshold 2 452 425&lt;br /&gt;
&lt;br /&gt;
==== RX Frequenzabweichung ====&lt;br /&gt;
Anhand des Wertes &#039;&#039;centre&#039;&#039; kann man feststellen, ob es einen Frequenzversatz beim Empfänger gibt.&lt;br /&gt;
&lt;br /&gt;
Der Wert sollte sich im Idealfall um 0 herum bewegen (Empfänger ist genau auf der Frequenz).&lt;br /&gt;
&lt;br /&gt;
Sollte der Wert größer als 100 sein, muss der RX nachjustiert werden.&lt;br /&gt;
&lt;br /&gt;
Bei der Bewertung dieser Werte ist darauf zu achten, dass das eingegebene Testsignal selbst keinen Frequenzversatz (oder zumindest einen bekannten) hat. Vor allem bei preisgünstigen DMR-Funkgeräten ist durchaus öfters ein Frequenzversatz zu beobachten.&lt;br /&gt;
&lt;br /&gt;
Die besten Ergebnisse würde natürlich ein kalibriertes DMR Test Set liefern, was jedoch bei den wenigsten im Shack stehen wird.&lt;br /&gt;
&lt;br /&gt;
Am besten man testet also einfach mit mehreren Funkgeräten, nach Möglichkeit mit verschiedenen Modellen von verschiedenen Herstellern.&lt;br /&gt;
&lt;br /&gt;
Wenn das Relais bereits eine Weile im Einsatz war, ist auch eine Langzeit-Auswertung über die Logfiles möglich. Dazu einfach den folgenden Befehl verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;grep -i dmrslot /var/log/pistar/MMDVM*.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Timing-Drift ====&lt;br /&gt;
Bei längeren DMR-Durchgängen (&amp;gt;180s) kann es vorkommen, dass man eine Veränderung des &#039;&#039;pos&#039;&#039;-Werts beobachten kann.&lt;br /&gt;
&lt;br /&gt;
Dies deutet auf einen Timing-Drift hin, der meistens vom TCXO auf der MMDVM-Platine verursacht wird, wenn dieser eine schlechte Frequenzstabilität aufweist.&lt;br /&gt;
&lt;br /&gt;
Hier ein entsprechendes Beispiel (Log-Auszug aus https://github.com/juribeparada/MMDVM_HS/issues/109), bei welchem dieses Problem auftritt:&lt;br /&gt;
 M: 2019-11-06 16:28:10.529 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 447 26 337&lt;br /&gt;
 M: 2019-11-06 16:28:10.589 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 447 13 338&lt;br /&gt;
 M: 2019-11-06 16:28:10.649 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 447 7 341&lt;br /&gt;
 .......&lt;br /&gt;
 M: 2019-11-06 16:31:04.891 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 16 345&lt;br /&gt;
 M: 2019-11-06 16:31:05.251 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 11 344&lt;br /&gt;
 M: 2019-11-06 16:31:05.611 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 9 348&lt;br /&gt;
 M: 2019-11-06 16:31:05.971 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 20 370&lt;br /&gt;
 E: 2019-11-06 16:31:08.326 No reply from the modem for some time, resetting it&lt;br /&gt;
 M: 2019-11-06 16:31:08.326 Closing the MMDVM&lt;br /&gt;
 M: 2019-11-06 16:31:10.352 Opening the MMDVM&lt;br /&gt;
 E: 2019-11-06 16:31:23.169 Unable to read the firmware version after six attempts&lt;br /&gt;
Zu beobachten ist, dass der erste Wert (&#039;&#039;pos&#039;&#039;) mit länger werdendem Durchgang immer weiter sinkt, bis schlussendlich das Modem neu startet.&lt;br /&gt;
&lt;br /&gt;
Wenn das bei mehreren verschiedenen Usern/Geräten auffällt (auch hier gilt: es kann auch am Endgerät des Benutzers liegen!), liegt es vermutlich am TCXO auf dem MMDVM Board.&lt;br /&gt;
&lt;br /&gt;
Ggf. sollte dieser durch ein besseres Äquivalent ausgetauscht werden, z.B. ein 12MHz TCXO von namhaften Herstellern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Achtung:&amp;lt;/u&amp;gt; Wenn der Wert von den originalen 19.2MHz auf 12MHz abgeändert wird, &#039;&#039;&#039;muss die Firmware neu compiliert werden!&#039;&#039;&#039; In der &#039;&#039;Config.h&#039;&#039; muss entsprechend die Zeile für den 19.2MHz TCXO auskommentiert und dafür das Kommentarzeichen beim 12MHz TCXO entfernt werden.&lt;br /&gt;
[[Kategorie:Digitaltechnik]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=MMDVM-Relais&amp;diff=71</id>
		<title>MMDVM-Relais</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=MMDVM-Relais&amp;diff=71"/>
		<updated>2025-09-22T18:05:39Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: /* Kalibrierung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auf allen MMDVM-Relais des DRC ist aktuell (stand September 2025) das folgende MMDVM Modem Board verbaut:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MMDVM_POG&#039;&#039;&#039; Board, nach dem Design von SQ6POG&lt;br /&gt;
** &#039;&#039;&#039;STM32F105RBT&#039;&#039;&#039; MCU (ARM Cortex M3, 72MHz Clock, 128kB Flash)&lt;br /&gt;
** &#039;&#039;&#039;19.2 MHz&#039;&#039;&#039; TCXO&lt;br /&gt;
** Sallen-Key Butterworth-Tiefpassfilter für RX und TX&lt;br /&gt;
** Open-Source Hardware Design&lt;br /&gt;
** Hardware-Design: https://github.com/wojciechk8/MMDVM_pog/&lt;br /&gt;
&lt;br /&gt;
Wenn man den verbauten 19,2MHz TCXO durch ein 12MHz-Äquivalent austauscht, ist diversen Berichten zufolge die Firmware der &#039;&#039;Repeater Builder STM32-DVM V2&#039;&#039; Boards (Stand 2025 auch nicht mehr offiziell unterstützt) auf diesen Platinen lauffähig.&lt;br /&gt;
&lt;br /&gt;
=== In-System Flashing Mod ===&lt;br /&gt;
Damit die Firmware per remote geflasht werden kann, müssen zwei Verbindungen gelötet werden:&lt;br /&gt;
[[Datei:Mmdvm-flashing-mod.png|alternativtext=MMDVM In-System-Flashing-Mod|mini|MMDVM In-System-Flashing-Mod]]&lt;br /&gt;
&lt;br /&gt;
* Raspberry PI &#039;&#039;&#039;GPIO 21&#039;&#039;&#039; (HW Pin 40, im Bild das Erste oben links) -&amp;gt; &#039;&#039;&#039;NRST&#039;&#039;&#039; (auf ST-LINK Pin Header, das Pin neben dem Kondensator)&lt;br /&gt;
* Raspberry PI &#039;&#039;&#039;GPIO 20&#039;&#039;&#039; (HW Pin 38, im Bild das Zweite von oben links) -&amp;gt; &#039;&#039;&#039;BOOT0&#039;&#039;&#039; (JP1 Pin 2), über einen 10kOhm Widerstand&lt;br /&gt;
&lt;br /&gt;
Zum Flashen muss zuerst MMDVMHost gestoppt werden:&lt;br /&gt;
 systemctl stop mmdvmhost.timer&lt;br /&gt;
 systemctl stop mmdvmhost&lt;br /&gt;
Dann kann mit &#039;&#039;stm32flash&#039;&#039; mit angabe der Pin-Folge (option &amp;lt;code&amp;gt;-i&amp;lt;/code&amp;gt;) geflasht werden:&lt;br /&gt;
 # MMDVM Modem in Flash-Modus bringen (BOOT0 high, NRST low-&amp;gt;high)&lt;br /&gt;
 stm32flash -i 20,-21,21 /dev/ttyAMA0&lt;br /&gt;
 # Firmware flashen&lt;br /&gt;
 stm32flash -w mmdvm_pog-fw.hex -g 0x0 -R /dev/ttyAMA0&lt;br /&gt;
 # MMDVM nochmal via NRST (low-&amp;gt;high) resetten&lt;br /&gt;
 stm32flash -i -21,21 /dev/ttyAMA0&lt;br /&gt;
&lt;br /&gt;
 # nun kann MMDVMHost wieder gestartet werden&lt;br /&gt;
 systemctl start mmdvmhost.timer&lt;br /&gt;
 systemctl start mmdvmhost&lt;br /&gt;
&lt;br /&gt;
=== MMDVMHost Einstellungen ===&lt;br /&gt;
Der Modem-Type ist auf &#039;&#039;&#039;STM32-DVM / MMDVM_HS - Raspberry Pi Hat (GPIO)&#039;&#039;&#039; zu stellen.&lt;br /&gt;
&lt;br /&gt;
Baudrate ist &#039;&#039;&#039;115200&#039;&#039;&#039;. Schnellere Baudraten, wie sie beispielsweise für FM oder andere Betriebsarten notwendig sind, schafft der &#039;&#039;STM32F105&#039;&#039; nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Kalibrierung ===&lt;br /&gt;
Die Kalibrierung der RX und TX-Pegel vom MMDVM passiert in unserem Fall über die einstellung zweier Trimmerpotentiometer, sowie über die digitale Gain-Einstellung.&lt;br /&gt;
&lt;br /&gt;
Zum Kalibrieren wird das Programm MMDVMCal (in PiStar direkt mit pistar-mmdvmcal aufrufbar) verwendet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Achtung:&amp;lt;/u&amp;gt; MMDVMCal startet immer mit den Default-Einstellungen (alle Gain-Level auf 50%, kein TXInvert und kein RXInvert). Außerdem werden die eingestellten Werte &#039;&#039;&#039;&amp;lt;u&amp;gt;nicht&amp;lt;/u&amp;gt;&#039;&#039;&#039; automatisch in die Konfigurationsdatei übernommen! Das muss manuell erledigt werden.&lt;br /&gt;
&lt;br /&gt;
==== TX Kalibrierung ====&lt;br /&gt;
Die Pegel für den Sender können durch Auswahl der Funktion &amp;lt;code&amp;gt;D Set DMR Deviation Mode. Generates a 1.2Khz Sinewave. Set radio for 2.75 Khz Deviation&amp;lt;/code&amp;gt; eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Besonders bei DMR ist die Hub-Einstellung kritisch.&lt;br /&gt;
&lt;br /&gt;
Die Einstellung erfolgt mit hilfe eines Spektrum-Analyzers, wobei sich auch ein TinySA oder ein RTL-SDR eignen.&lt;br /&gt;
&lt;br /&gt;
Die Anzeige wird auf die Sendefrequenz zentriert, der angezeigte Bandausschnitt sollte ca 15-20kHz betragen.&lt;br /&gt;
&lt;br /&gt;
Nun wird der Trimmer solange bewegt, bis der Träger (so gut wie möglich) verschwunden ist:&lt;br /&gt;
[[Datei:Mmdvm-tx-calibration.png|alternativtext=MMDVM TX-Kalibrierung mit der Bessel-Null-Methode|zentriert|mini|502x502px|MMDVM TX-Kalibrierung mit der Bessel-Null-Methode]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für die Feineinstellung kann in MMDVMCal durch die Tasten &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; der TX-Pegel digital in halben Prozentschritten erhöht (&#039;&#039;T&#039;&#039;) oder verringert (&#039;&#039;t&#039;&#039;) werden.&lt;br /&gt;
&lt;br /&gt;
Nun hat man ca. einen Hub von 2,88kHz eingestellt. Um zum gewünschten Hub von 2,75kHz zu gelangen, muss der Ermittelte &#039;&#039;TXLevel&#039;&#039; Wert noch mit 95% multipliziert und anschließend in der mmdvmhost-Konfigurationsdatei als &#039;&#039;TXLevel&#039;&#039; abgespeichert werden.&lt;br /&gt;
&lt;br /&gt;
==== RX Kalibrierung ====&lt;br /&gt;
Für die Kalibrierung der RX-Pegel gibt es zwei Varianten: die genauere, Messtechnische Variante mit einem Oszilloskop, und alternativ die &amp;quot;Trial and Error&amp;quot;-Methode.&lt;br /&gt;
&lt;br /&gt;
===== &amp;quot;Trial and Error&amp;quot;-Methode =====&lt;br /&gt;
MMDVMCal bietet mehrere BER-Testing-Modes, welche entsprechend ein DSTAR/DMR/C4FM Signal erwarten und für jeden empfangenen Datenframe die BER anzeigen.&lt;br /&gt;
 K/k	BER Test Mode (FEC) for D-Star&lt;br /&gt;
 b	BER Test Mode (FEC) for DMR Simplex (CC1)&lt;br /&gt;
 J	BER Test Mode (FEC) for YSF&lt;br /&gt;
Nun wird mit einem entsprechenden Digitalfunkgerät ein Signal auf das Relais gegeben und der RX-Trimmer (und somit der NF-Pegel des Empfangssignals) durch &#039;&#039;&amp;quot;testen&amp;quot;&#039;&#039; solange variiert, bis etwas decodiert wird.&lt;br /&gt;
&lt;br /&gt;
Danach wird durch die tasten &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; der RXLevel (also der Gain auf der digitalen Seite) angepasst, bis die angezeigten BER-Werte minimal sind.&lt;br /&gt;
&lt;br /&gt;
Am Ende wird der ermittelte Wert unverändert in der MMDVMHost-Konfigurationsdatei als &#039;&#039;RXLevel&#039;&#039; abgespeichert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Achtung:&amp;lt;/u&amp;gt; Die Einstellung des Trimmers ist der kritische Teil! Wenn das analog anliegende Signal &#039;&#039;&#039;über VCC (=3.3V)&#039;&#039;&#039; geht und der ADC somit ins &#039;&#039;&#039;Clipping&#039;&#039;&#039; kommt, hilft jede darauffolgende digitale Gain-Einstellung auch nichts mehr!&lt;br /&gt;
&lt;br /&gt;
===== Messtechnische Methode =====&lt;br /&gt;
Mit einem Oszilloskop wird das RX-Signal von einem Testpunkt auf der Platine abgegriffen.&lt;br /&gt;
&lt;br /&gt;
Bei unserem MMDVM-POG Board gibt es dafür den Testpunkt &#039;&#039;TP32&#039;&#039;, der sich schaltungstechnisch direkt hinter dem Butterworth-Filter der RX-Eingabe befindet.&lt;br /&gt;
&lt;br /&gt;
Physisch befindet sich der Testpoint &#039;&#039;TP32&#039;&#039; unterhalb der ST-LINK Pins, welche links vom STM32-Prozessor liegen.&lt;br /&gt;
&lt;br /&gt;
Nun wird mit einem RF-Generator bzw. mit einem Funkgerät ein Testsignal auf den Empfänger gegeben und das am Testpunkt &#039;&#039;TP32&#039;&#039; anliegende Signal gemessen. &lt;br /&gt;
&lt;br /&gt;
Ziel ist es, das Signal so einzustellen, dass der ADC nicht übersteuert wird. Das Signal soll also &#039;&#039;&#039;nie unter 0V und über 3.3V gehen&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Der DC-Offset des Signals sollte genau die Hälfte von VCC, also &#039;&#039;&#039;1,65V&#039;&#039;&#039; betragen.&lt;br /&gt;
&lt;br /&gt;
Die Amplitude des Signals sollte &#039;&#039;&#039;ca. 0,4V bis 0,5V Abstand&#039;&#039;&#039; von den beiden Grenzwerten (0V und 3,3V) haben. Das ergibt somit &#039;&#039;&#039;ca. 2,3Vpp.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auch wenn nur Rauschen am Empfänger anliegt, sollten die 3,3Vpp nicht überschritten werden.&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte Tests ===&lt;br /&gt;
Als nächstes setzt man nun in der MMDVMHost-Konfigurationsdatei in der &amp;lt;code&amp;gt;[Modem]&amp;lt;/code&amp;gt; Stanza den Wert &amp;lt;code&amp;gt;Debug=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sobald man nach der Änderung den MMDVMHost neu startet, schreibt dieser nützliche Infos ins Logfile, die zur Bestimmung der RX-Frequenzabweichung und für die Beurteilung des Timing-Drifts und der RX-Pegel nützlich sind.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel einer solchen Logzeile:&lt;br /&gt;
 M: 2025-09-11 08:08:58.636 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 452 679 631&lt;br /&gt;
 M: 2025-09-11 08:08:58.696 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 452 646 632&lt;br /&gt;
 M: 2025-09-11 08:08:58.756 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 452 590 636&lt;br /&gt;
 M: 2025-09-11 08:08:59.116 Debug: DMRSlotRX: voice terminator found slot/pos/centre/threshold 2 452 425&lt;br /&gt;
&lt;br /&gt;
==== RX Frequenzabweichung ====&lt;br /&gt;
Anhand des Wertes &#039;&#039;centre&#039;&#039; kann man feststellen, ob es einen Frequenzversatz beim Empfänger gibt.&lt;br /&gt;
&lt;br /&gt;
Der Wert sollte sich im Idealfall um 0 herum bewegen (Empfänger ist genau auf der Frequenz).&lt;br /&gt;
&lt;br /&gt;
Sollte der Wert größer als 100 sein, muss der RX nachjustiert werden.&lt;br /&gt;
&lt;br /&gt;
Bei der Bewertung dieser Werte ist darauf zu achten, dass das eingegebene Testsignal selbst keinen Frequenzversatz (oder zumindest einen bekannten) hat. Vor allem bei preisgünstigen DMR-Funkgeräten ist durchaus öfters ein Frequenzversatz zu beobachten.&lt;br /&gt;
&lt;br /&gt;
Die besten Ergebnisse würde natürlich ein kalibriertes DMR Test Set liefern, was jedoch bei den wenigsten im Shack stehen wird.&lt;br /&gt;
&lt;br /&gt;
Am besten man testet also einfach mit mehreren Funkgeräten, nach Möglichkeit mit verschiedenen Modellen von verschiedenen Herstellern.&lt;br /&gt;
&lt;br /&gt;
Wenn das Relais bereits eine Weile im Einsatz war, ist auch eine Langzeit-Auswertung über die Logfiles möglich. Dazu einfach den folgenden Befehl verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;grep -i dmrslot /var/log/pistar/MMDVM*.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timing-Drift ===&lt;br /&gt;
Bei längeren DMR-Durchgängen (&amp;gt;180s) kann es vorkommen, dass man eine Veränderung des &#039;&#039;pos&#039;&#039;-Werts beobachten kann.&lt;br /&gt;
&lt;br /&gt;
Dies deutet auf einen Timing-Drift hin, der meistens vom TCXO auf der MMDVM-Platine verursacht wird, wenn dieser eine schlechte Frequenzstabilität aufweist.&lt;br /&gt;
&lt;br /&gt;
Hier ein entsprechendes Beispiel (Log-Auszug aus https://github.com/juribeparada/MMDVM_HS/issues/109), bei welchem dieses Problem auftritt:&lt;br /&gt;
 M: 2019-11-06 16:28:10.529 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 447 26 337&lt;br /&gt;
 M: 2019-11-06 16:28:10.589 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 447 13 338&lt;br /&gt;
 M: 2019-11-06 16:28:10.649 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 447 7 341&lt;br /&gt;
 .......&lt;br /&gt;
 M: 2019-11-06 16:31:04.891 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 16 345&lt;br /&gt;
 M: 2019-11-06 16:31:05.251 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 11 344&lt;br /&gt;
 M: 2019-11-06 16:31:05.611 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 9 348&lt;br /&gt;
 M: 2019-11-06 16:31:05.971 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 20 370&lt;br /&gt;
 E: 2019-11-06 16:31:08.326 No reply from the modem for some time, resetting it&lt;br /&gt;
 M: 2019-11-06 16:31:08.326 Closing the MMDVM&lt;br /&gt;
 M: 2019-11-06 16:31:10.352 Opening the MMDVM&lt;br /&gt;
 E: 2019-11-06 16:31:23.169 Unable to read the firmware version after six attempts&lt;br /&gt;
Zu beobachten ist, dass der erste Wert (&#039;&#039;pos&#039;&#039;) mit länger werdendem Durchgang immer weiter sinkt, bis schlussendlich das Modem neu startet.&lt;br /&gt;
&lt;br /&gt;
Wenn das bei mehreren verschiedenen Usern/Geräten auffällt (auch hier gilt: es kann auch am Endgerät des Benutzers liegen!), liegt es vermutlich am TCXO auf dem MMDVM Board.&lt;br /&gt;
&lt;br /&gt;
Ggf. sollte dieser durch ein besseres Äquivalent ausgetauscht werden, z.B. ein 12MHz TCXO von namhaften Herstellern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Achtung:&amp;lt;/u&amp;gt; Wenn der Wert von den originalen 19.2MHz auf 12MHz abgeändert wird, &#039;&#039;&#039;muss die Firmware neu compiliert werden!&#039;&#039;&#039; In der &#039;&#039;Config.h&#039;&#039; muss entsprechend die Zeile für den 19.2MHz TCXO auskommentiert und dafür das Kommentarzeichen beim 12MHz TCXO entfernt werden.&lt;br /&gt;
[[Kategorie:Digitaltechnik]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=MMDVM-Relais&amp;diff=70</id>
		<title>MMDVM-Relais</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=MMDVM-Relais&amp;diff=70"/>
		<updated>2025-09-22T18:02:00Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: /* In-System Flashing Mod */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auf allen MMDVM-Relais des DRC ist aktuell (stand September 2025) das folgende MMDVM Modem Board verbaut:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MMDVM_POG&#039;&#039;&#039; Board, nach dem Design von SQ6POG&lt;br /&gt;
** &#039;&#039;&#039;STM32F105RBT&#039;&#039;&#039; MCU (ARM Cortex M3, 72MHz Clock, 128kB Flash)&lt;br /&gt;
** &#039;&#039;&#039;19.2 MHz&#039;&#039;&#039; TCXO&lt;br /&gt;
** Sallen-Key Butterworth-Tiefpassfilter für RX und TX&lt;br /&gt;
** Open-Source Hardware Design&lt;br /&gt;
** Hardware-Design: https://github.com/wojciechk8/MMDVM_pog/&lt;br /&gt;
&lt;br /&gt;
Wenn man den verbauten 19,2MHz TCXO durch ein 12MHz-Äquivalent austauscht, ist diversen Berichten zufolge die Firmware der &#039;&#039;Repeater Builder STM32-DVM V2&#039;&#039; Boards (Stand 2025 auch nicht mehr offiziell unterstützt) auf diesen Platinen lauffähig.&lt;br /&gt;
&lt;br /&gt;
=== In-System Flashing Mod ===&lt;br /&gt;
Damit die Firmware per remote geflasht werden kann, müssen zwei Verbindungen gelötet werden:&lt;br /&gt;
[[Datei:Mmdvm-flashing-mod.png|alternativtext=MMDVM In-System-Flashing-Mod|mini|MMDVM In-System-Flashing-Mod]]&lt;br /&gt;
&lt;br /&gt;
* Raspberry PI &#039;&#039;&#039;GPIO 21&#039;&#039;&#039; (HW Pin 40, im Bild das Erste oben links) -&amp;gt; &#039;&#039;&#039;NRST&#039;&#039;&#039; (auf ST-LINK Pin Header, das Pin neben dem Kondensator)&lt;br /&gt;
* Raspberry PI &#039;&#039;&#039;GPIO 20&#039;&#039;&#039; (HW Pin 38, im Bild das Zweite von oben links) -&amp;gt; &#039;&#039;&#039;BOOT0&#039;&#039;&#039; (JP1 Pin 2), über einen 10kOhm Widerstand&lt;br /&gt;
&lt;br /&gt;
Zum Flashen muss zuerst MMDVMHost gestoppt werden:&lt;br /&gt;
 systemctl stop mmdvmhost.timer&lt;br /&gt;
 systemctl stop mmdvmhost&lt;br /&gt;
Dann kann mit &#039;&#039;stm32flash&#039;&#039; mit angabe der Pin-Folge (option &amp;lt;code&amp;gt;-i&amp;lt;/code&amp;gt;) geflasht werden:&lt;br /&gt;
 # MMDVM Modem in Flash-Modus bringen (BOOT0 high, NRST low-&amp;gt;high)&lt;br /&gt;
 stm32flash -i 20,-21,21 /dev/ttyAMA0&lt;br /&gt;
 # Firmware flashen&lt;br /&gt;
 stm32flash -w mmdvm_pog-fw.hex -g 0x0 -R /dev/ttyAMA0&lt;br /&gt;
 # MMDVM nochmal via NRST (low-&amp;gt;high) resetten&lt;br /&gt;
 stm32flash -i -21,21 /dev/ttyAMA0&lt;br /&gt;
&lt;br /&gt;
 # nun kann MMDVMHost wieder gestartet werden&lt;br /&gt;
 systemctl start mmdvmhost.timer&lt;br /&gt;
 systemctl start mmdvmhost&lt;br /&gt;
&lt;br /&gt;
=== MMDVMHost Einstellungen ===&lt;br /&gt;
Der Modem-Type ist auf &#039;&#039;&#039;STM32-DVM / MMDVM_HS - Raspberry Pi Hat (GPIO)&#039;&#039;&#039; zu stellen.&lt;br /&gt;
&lt;br /&gt;
Baudrate ist &#039;&#039;&#039;115200&#039;&#039;&#039;. Schnellere Baudraten, wie sie beispielsweise für FM oder andere Betriebsarten notwendig sind, schafft der &#039;&#039;STM32F105&#039;&#039; nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Kalibrierung ===&lt;br /&gt;
Die Kalibrierung der RX und TX-Pegel vom MMDVM passiert in unserem Fall über die einstellung zweier Trimmerpotentiometer, sowie über die digitale Gain-Einstellung.&lt;br /&gt;
&lt;br /&gt;
Zum Kalibrieren wird das Programm MMDVMCal (in PiStar direkt mit pistar-mmdvmcal aufrufbar) verwendet.&lt;br /&gt;
&lt;br /&gt;
==== TX Kalibrierung ====&lt;br /&gt;
Die Pegel für den Sender können durch Auswahl der Funktion &amp;lt;code&amp;gt;D Set DMR Deviation Mode. Generates a 1.2Khz Sinewave. Set radio for 2.75 Khz Deviation&amp;lt;/code&amp;gt; eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Besonders bei DMR ist die Hub-Einstellung kritisch.&lt;br /&gt;
&lt;br /&gt;
Die Einstellung erfolgt mit hilfe eines Spektrum-Analyzers, wobei sich auch ein TinySA oder ein RTL-SDR eignen.&lt;br /&gt;
&lt;br /&gt;
Die Anzeige wird auf die Sendefrequenz zentriert, der angezeigte Bandausschnitt sollte ca 15-20kHz betragen.&lt;br /&gt;
&lt;br /&gt;
Nun wird der Trimmer solange bewegt, bis der Träger (so gut wie möglich) verschwunden ist:&lt;br /&gt;
[[Datei:Mmdvm-tx-calibration.png|alternativtext=MMDVM TX-Kalibrierung mit der Bessel-Null-Methode|zentriert|mini|502x502px|MMDVM TX-Kalibrierung mit der Bessel-Null-Methode]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für die Feineinstellung kann in MMDVMCal durch die Tasten &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; der TX-Pegel digital in halben Prozentschritten erhöht (&#039;&#039;T&#039;&#039;) oder verringert (&#039;&#039;t&#039;&#039;) werden.&lt;br /&gt;
&lt;br /&gt;
Nun hat man ca. einen Hub von 2,88kHz eingestellt. Um zum gewünschten Hub von 2,75kHz zu gelangen, muss der Ermittelte &#039;&#039;TXLevel&#039;&#039; Wert noch mit 95% multipliziert und anschließend in der mmdvmhost-Konfigurationsdatei als &#039;&#039;TXLevel&#039;&#039; abgespeichert werden.&lt;br /&gt;
&lt;br /&gt;
==== RX Kalibrierung ====&lt;br /&gt;
Für die Kalibrierung der RX-Pegel gibt es zwei Varianten: die genauere, Messtechnische Variante mit einem Oszilloskop, und alternativ die &amp;quot;Trial and Error&amp;quot;-Methode.&lt;br /&gt;
&lt;br /&gt;
===== &amp;quot;Trial and Error&amp;quot;-Methode =====&lt;br /&gt;
MMDVMCal bietet mehrere BER-Testing-Modes, welche entsprechend ein DSTAR/DMR/C4FM Signal erwarten und für jeden empfangenen Datenframe die BER anzeigen.&lt;br /&gt;
 K/k	BER Test Mode (FEC) for D-Star&lt;br /&gt;
 b	BER Test Mode (FEC) for DMR Simplex (CC1)&lt;br /&gt;
 J	BER Test Mode (FEC) for YSF&lt;br /&gt;
Nun wird mit einem entsprechenden Digitalfunkgerät ein Signal auf das Relais gegeben und der RX-Trimmer (und somit der NF-Pegel des Empfangssignals) durch &#039;&#039;&amp;quot;testen&amp;quot;&#039;&#039; solange variiert, bis etwas decodiert wird.&lt;br /&gt;
&lt;br /&gt;
Danach wird durch die tasten &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; der RXLevel (also der Gain auf der digitalen Seite) angepasst, bis die angezeigten BER-Werte minimal sind.&lt;br /&gt;
&lt;br /&gt;
Am Ende wird der ermittelte Wert unverändert in der MMDVMHost-Konfigurationsdatei als &#039;&#039;RXLevel&#039;&#039; abgespeichert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Achtung:&amp;lt;/u&amp;gt; Die Einstellung des Trimmers ist der kritische Teil! Wenn das analog anliegende Signal &#039;&#039;&#039;über VCC (=3.3V)&#039;&#039;&#039; geht und der ADC somit ins &#039;&#039;&#039;Clipping&#039;&#039;&#039; kommt, hilft jede darauffolgende digitale Gain-Einstellung auch nichts mehr!&lt;br /&gt;
&lt;br /&gt;
===== Messtechnische Methode =====&lt;br /&gt;
Mit einem Oszilloskop wird das RX-Signal von einem Testpunkt auf der Platine abgegriffen.&lt;br /&gt;
&lt;br /&gt;
Bei unserem MMDVM-POG Board gibt es dafür den Testpunkt &#039;&#039;TP32&#039;&#039;, der sich schaltungstechnisch direkt hinter dem Butterworth-Filter der RX-Eingabe befindet.&lt;br /&gt;
&lt;br /&gt;
Physisch befindet sich der Testpoint &#039;&#039;TP32&#039;&#039; unterhalb der ST-LINK Pins, welche links vom STM32-Prozessor liegen.&lt;br /&gt;
&lt;br /&gt;
Nun wird mit einem RF-Generator bzw. mit einem Funkgerät ein Testsignal auf den Empfänger gegeben und das am Testpunkt &#039;&#039;TP32&#039;&#039; anliegende Signal gemessen. &lt;br /&gt;
&lt;br /&gt;
Ziel ist es, das Signal so einzustellen, dass der ADC nicht übersteuert wird. Das Signal soll also &#039;&#039;&#039;nie unter 0V und über 3.3V gehen&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Der DC-Offset des Signals sollte genau die Hälfte von VCC, also &#039;&#039;&#039;1,65V&#039;&#039;&#039; betragen.&lt;br /&gt;
&lt;br /&gt;
Die Amplitude des Signals sollte &#039;&#039;&#039;ca. 0,4V bis 0,5V Abstand&#039;&#039;&#039; von den beiden Grenzwerten (0V und 3,3V) haben. Das ergibt somit &#039;&#039;&#039;ca. 2,3Vpp.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auch wenn nur Rauschen am Empfänger anliegt, sollten die 3,3Vpp nicht überschritten werden.&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte Tests ===&lt;br /&gt;
Als nächstes setzt man nun in der MMDVMHost-Konfigurationsdatei in der &amp;lt;code&amp;gt;[Modem]&amp;lt;/code&amp;gt; Stanza den Wert &amp;lt;code&amp;gt;Debug=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sobald man nach der Änderung den MMDVMHost neu startet, schreibt dieser nützliche Infos ins Logfile, die zur Bestimmung der RX-Frequenzabweichung und für die Beurteilung des Timing-Drifts und der RX-Pegel nützlich sind.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel einer solchen Logzeile:&lt;br /&gt;
 M: 2025-09-11 08:08:58.636 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 452 679 631&lt;br /&gt;
 M: 2025-09-11 08:08:58.696 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 452 646 632&lt;br /&gt;
 M: 2025-09-11 08:08:58.756 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 452 590 636&lt;br /&gt;
 M: 2025-09-11 08:08:59.116 Debug: DMRSlotRX: voice terminator found slot/pos/centre/threshold 2 452 425&lt;br /&gt;
&lt;br /&gt;
==== RX Frequenzabweichung ====&lt;br /&gt;
Anhand des Wertes &#039;&#039;centre&#039;&#039; kann man feststellen, ob es einen Frequenzversatz beim Empfänger gibt.&lt;br /&gt;
&lt;br /&gt;
Der Wert sollte sich im Idealfall um 0 herum bewegen (Empfänger ist genau auf der Frequenz).&lt;br /&gt;
&lt;br /&gt;
Sollte der Wert größer als 100 sein, muss der RX nachjustiert werden.&lt;br /&gt;
&lt;br /&gt;
Bei der Bewertung dieser Werte ist darauf zu achten, dass das eingegebene Testsignal selbst keinen Frequenzversatz (oder zumindest einen bekannten) hat. Vor allem bei preisgünstigen DMR-Funkgeräten ist durchaus öfters ein Frequenzversatz zu beobachten.&lt;br /&gt;
&lt;br /&gt;
Die besten Ergebnisse würde natürlich ein kalibriertes DMR Test Set liefern, was jedoch bei den wenigsten im Shack stehen wird.&lt;br /&gt;
&lt;br /&gt;
Am besten man testet also einfach mit mehreren Funkgeräten, nach Möglichkeit mit verschiedenen Modellen von verschiedenen Herstellern.&lt;br /&gt;
&lt;br /&gt;
Wenn das Relais bereits eine Weile im Einsatz war, ist auch eine Langzeit-Auswertung über die Logfiles möglich. Dazu einfach den folgenden Befehl verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;grep -i dmrslot /var/log/pistar/MMDVM*.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timing-Drift ===&lt;br /&gt;
Bei längeren DMR-Durchgängen (&amp;gt;180s) kann es vorkommen, dass man eine Veränderung des &#039;&#039;pos&#039;&#039;-Werts beobachten kann.&lt;br /&gt;
&lt;br /&gt;
Dies deutet auf einen Timing-Drift hin, der meistens vom TCXO auf der MMDVM-Platine verursacht wird, wenn dieser eine schlechte Frequenzstabilität aufweist.&lt;br /&gt;
&lt;br /&gt;
Hier ein entsprechendes Beispiel (Log-Auszug aus https://github.com/juribeparada/MMDVM_HS/issues/109), bei welchem dieses Problem auftritt:&lt;br /&gt;
 M: 2019-11-06 16:28:10.529 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 447 26 337&lt;br /&gt;
 M: 2019-11-06 16:28:10.589 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 447 13 338&lt;br /&gt;
 M: 2019-11-06 16:28:10.649 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 447 7 341&lt;br /&gt;
 .......&lt;br /&gt;
 M: 2019-11-06 16:31:04.891 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 16 345&lt;br /&gt;
 M: 2019-11-06 16:31:05.251 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 11 344&lt;br /&gt;
 M: 2019-11-06 16:31:05.611 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 9 348&lt;br /&gt;
 M: 2019-11-06 16:31:05.971 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 20 370&lt;br /&gt;
 E: 2019-11-06 16:31:08.326 No reply from the modem for some time, resetting it&lt;br /&gt;
 M: 2019-11-06 16:31:08.326 Closing the MMDVM&lt;br /&gt;
 M: 2019-11-06 16:31:10.352 Opening the MMDVM&lt;br /&gt;
 E: 2019-11-06 16:31:23.169 Unable to read the firmware version after six attempts&lt;br /&gt;
Zu beobachten ist, dass der erste Wert (&#039;&#039;pos&#039;&#039;) mit länger werdendem Durchgang immer weiter sinkt, bis schlussendlich das Modem neu startet.&lt;br /&gt;
&lt;br /&gt;
Wenn das bei mehreren verschiedenen Usern/Geräten auffällt (auch hier gilt: es kann auch am Endgerät des Benutzers liegen!), liegt es vermutlich am TCXO auf dem MMDVM Board.&lt;br /&gt;
&lt;br /&gt;
Ggf. sollte dieser durch ein besseres Äquivalent ausgetauscht werden, z.B. ein 12MHz TCXO von namhaften Herstellern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Achtung:&amp;lt;/u&amp;gt; Wenn der Wert von den originalen 19.2MHz auf 12MHz abgeändert wird, &#039;&#039;&#039;muss die Firmware neu compiliert werden!&#039;&#039;&#039; In der &#039;&#039;Config.h&#039;&#039; muss entsprechend die Zeile für den 19.2MHz TCXO auskommentiert und dafür das Kommentarzeichen beim 12MHz TCXO entfernt werden.&lt;br /&gt;
[[Kategorie:Digitaltechnik]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=MMDVM-Relais&amp;diff=69</id>
		<title>MMDVM-Relais</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=MMDVM-Relais&amp;diff=69"/>
		<updated>2025-09-22T17:53:32Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: kleinere korrekturen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auf allen MMDVM-Relais des DRC ist aktuell (stand September 2025) das folgende MMDVM Modem Board verbaut:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;MMDVM_POG&#039;&#039;&#039; Board, nach dem Design von SQ6POG&lt;br /&gt;
** &#039;&#039;&#039;STM32F105RBT&#039;&#039;&#039; MCU (ARM Cortex M3, 72MHz Clock, 128kB Flash)&lt;br /&gt;
** &#039;&#039;&#039;19.2 MHz&#039;&#039;&#039; TCXO&lt;br /&gt;
** Sallen-Key Butterworth-Tiefpassfilter für RX und TX&lt;br /&gt;
** Open-Source Hardware Design&lt;br /&gt;
** Hardware-Design: https://github.com/wojciechk8/MMDVM_pog/&lt;br /&gt;
&lt;br /&gt;
Wenn man den verbauten 19,2MHz TCXO durch ein 12MHz-Äquivalent austauscht, ist diversen Berichten zufolge die Firmware der &#039;&#039;Repeater Builder STM32-DVM V2&#039;&#039; Boards (Stand 2025 auch nicht mehr offiziell unterstützt) auf diesen Platinen lauffähig.&lt;br /&gt;
&lt;br /&gt;
=== In-System Flashing Mod ===&lt;br /&gt;
Damit die Firmware per remote geflasht werden kann, müssen zwei Verbindungen gelötet werden:&lt;br /&gt;
[[Datei:Mmdvm-flashing-mod.png|alternativtext=MMDVM In-System-Flashing-Mod|mini|MMDVM In-System-Flashing-Mod]]&lt;br /&gt;
&lt;br /&gt;
* Raspberry PI &#039;&#039;&#039;GPIO 21&#039;&#039;&#039; (HW Pin 40) -&amp;gt; &#039;&#039;&#039;NRST&#039;&#039;&#039; (auf ST-LINK Pin Header, das Pin neben dem Kondensator)&lt;br /&gt;
* Raspberry PI &#039;&#039;&#039;GPIO 20&#039;&#039;&#039; (HW Pin 38) -&amp;gt; &#039;&#039;&#039;BOOT0&#039;&#039;&#039; (JP1 Pin 2), über einen 10kOhm Widerstand&lt;br /&gt;
&lt;br /&gt;
Zum Flashen muss zuerst MMDVMHost gestoppt werden:&lt;br /&gt;
 systemctl stop mmdvmhost.timer&lt;br /&gt;
 systemctl stop mmdvmhost&lt;br /&gt;
Dann kann mit &#039;&#039;stm32flash&#039;&#039; mit angabe der Pin-Folge (option &amp;lt;code&amp;gt;-i&amp;lt;/code&amp;gt;) geflasht werden:&lt;br /&gt;
 # MMDVM Modem in Flash-Modus bringen (BOOT0 high, NRST low-&amp;gt;high)&lt;br /&gt;
 stm32flash -i 20,-21,21 /dev/ttyAMA0&lt;br /&gt;
 # Firmware flashen&lt;br /&gt;
 stm32flash -w mmdvm_pog-fw.hex -g 0x0 -R /dev/ttyAMA0&lt;br /&gt;
 # MMDVM nochmal via NRST (low-&amp;gt;high) resetten&lt;br /&gt;
 stm32flash -i -21,21 /dev/ttyAMA0&lt;br /&gt;
&lt;br /&gt;
 # nun kann MMDVMHost wieder gestartet werden&lt;br /&gt;
 systemctl start mmdvmhost.timer&lt;br /&gt;
 systemctl start mmdvmhost&lt;br /&gt;
&lt;br /&gt;
=== MMDVMHost Einstellungen ===&lt;br /&gt;
Der Modem-Type ist auf &#039;&#039;&#039;STM32-DVM / MMDVM_HS - Raspberry Pi Hat (GPIO)&#039;&#039;&#039; zu stellen.&lt;br /&gt;
&lt;br /&gt;
Baudrate ist &#039;&#039;&#039;115200&#039;&#039;&#039;. Schnellere Baudraten, wie sie beispielsweise für FM oder andere Betriebsarten notwendig sind, schafft der &#039;&#039;STM32F105&#039;&#039; nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Kalibrierung ===&lt;br /&gt;
Die Kalibrierung der RX und TX-Pegel vom MMDVM passiert in unserem Fall über die einstellung zweier Trimmerpotentiometer, sowie über die digitale Gain-Einstellung.&lt;br /&gt;
&lt;br /&gt;
Zum Kalibrieren wird das Programm MMDVMCal (in PiStar direkt mit pistar-mmdvmcal aufrufbar) verwendet.&lt;br /&gt;
&lt;br /&gt;
==== TX Kalibrierung ====&lt;br /&gt;
Die Pegel für den Sender können durch Auswahl der Funktion &amp;lt;code&amp;gt;D Set DMR Deviation Mode. Generates a 1.2Khz Sinewave. Set radio for 2.75 Khz Deviation&amp;lt;/code&amp;gt; eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Besonders bei DMR ist die Hub-Einstellung kritisch.&lt;br /&gt;
&lt;br /&gt;
Die Einstellung erfolgt mit hilfe eines Spektrum-Analyzers, wobei sich auch ein TinySA oder ein RTL-SDR eignen.&lt;br /&gt;
&lt;br /&gt;
Die Anzeige wird auf die Sendefrequenz zentriert, der angezeigte Bandausschnitt sollte ca 15-20kHz betragen.&lt;br /&gt;
&lt;br /&gt;
Nun wird der Trimmer solange bewegt, bis der Träger (so gut wie möglich) verschwunden ist:&lt;br /&gt;
[[Datei:Mmdvm-tx-calibration.png|alternativtext=MMDVM TX-Kalibrierung mit der Bessel-Null-Methode|zentriert|mini|502x502px|MMDVM TX-Kalibrierung mit der Bessel-Null-Methode]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für die Feineinstellung kann in MMDVMCal durch die Tasten &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt; der TX-Pegel digital in halben Prozentschritten erhöht (&#039;&#039;T&#039;&#039;) oder verringert (&#039;&#039;t&#039;&#039;) werden.&lt;br /&gt;
&lt;br /&gt;
Nun hat man ca. einen Hub von 2,88kHz eingestellt. Um zum gewünschten Hub von 2,75kHz zu gelangen, muss der Ermittelte &#039;&#039;TXLevel&#039;&#039; Wert noch mit 95% multipliziert und anschließend in der mmdvmhost-Konfigurationsdatei als &#039;&#039;TXLevel&#039;&#039; abgespeichert werden.&lt;br /&gt;
&lt;br /&gt;
==== RX Kalibrierung ====&lt;br /&gt;
Für die Kalibrierung der RX-Pegel gibt es zwei Varianten: die genauere, Messtechnische Variante mit einem Oszilloskop, und alternativ die &amp;quot;Trial and Error&amp;quot;-Methode.&lt;br /&gt;
&lt;br /&gt;
===== &amp;quot;Trial and Error&amp;quot;-Methode =====&lt;br /&gt;
MMDVMCal bietet mehrere BER-Testing-Modes, welche entsprechend ein DSTAR/DMR/C4FM Signal erwarten und für jeden empfangenen Datenframe die BER anzeigen.&lt;br /&gt;
 K/k	BER Test Mode (FEC) for D-Star&lt;br /&gt;
 b	BER Test Mode (FEC) for DMR Simplex (CC1)&lt;br /&gt;
 J	BER Test Mode (FEC) for YSF&lt;br /&gt;
Nun wird mit einem entsprechenden Digitalfunkgerät ein Signal auf das Relais gegeben und der RX-Trimmer (und somit der NF-Pegel des Empfangssignals) durch &#039;&#039;&amp;quot;testen&amp;quot;&#039;&#039; solange variiert, bis etwas decodiert wird.&lt;br /&gt;
&lt;br /&gt;
Danach wird durch die tasten &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; der RXLevel (also der Gain auf der digitalen Seite) angepasst, bis die angezeigten BER-Werte minimal sind.&lt;br /&gt;
&lt;br /&gt;
Am Ende wird der ermittelte Wert unverändert in der MMDVMHost-Konfigurationsdatei als &#039;&#039;RXLevel&#039;&#039; abgespeichert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Achtung:&amp;lt;/u&amp;gt; Die Einstellung des Trimmers ist der kritische Teil! Wenn das analog anliegende Signal &#039;&#039;&#039;über VCC (=3.3V)&#039;&#039;&#039; geht und der ADC somit ins &#039;&#039;&#039;Clipping&#039;&#039;&#039; kommt, hilft jede darauffolgende digitale Gain-Einstellung auch nichts mehr!&lt;br /&gt;
&lt;br /&gt;
===== Messtechnische Methode =====&lt;br /&gt;
Mit einem Oszilloskop wird das RX-Signal von einem Testpunkt auf der Platine abgegriffen.&lt;br /&gt;
&lt;br /&gt;
Bei unserem MMDVM-POG Board gibt es dafür den Testpunkt &#039;&#039;TP32&#039;&#039;, der sich schaltungstechnisch direkt hinter dem Butterworth-Filter der RX-Eingabe befindet.&lt;br /&gt;
&lt;br /&gt;
Physisch befindet sich der Testpoint &#039;&#039;TP32&#039;&#039; unterhalb der ST-LINK Pins, welche links vom STM32-Prozessor liegen.&lt;br /&gt;
&lt;br /&gt;
Nun wird mit einem RF-Generator bzw. mit einem Funkgerät ein Testsignal auf den Empfänger gegeben und das am Testpunkt &#039;&#039;TP32&#039;&#039; anliegende Signal gemessen. &lt;br /&gt;
&lt;br /&gt;
Ziel ist es, das Signal so einzustellen, dass der ADC nicht übersteuert wird. Das Signal soll also &#039;&#039;&#039;nie unter 0V und über 3.3V gehen&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Der DC-Offset des Signals sollte genau die Hälfte von VCC, also &#039;&#039;&#039;1,65V&#039;&#039;&#039; betragen.&lt;br /&gt;
&lt;br /&gt;
Die Amplitude des Signals sollte &#039;&#039;&#039;ca. 0,4V bis 0,5V Abstand&#039;&#039;&#039; von den beiden Grenzwerten (0V und 3,3V) haben. Das ergibt somit &#039;&#039;&#039;ca. 2,3Vpp.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auch wenn nur Rauschen am Empfänger anliegt, sollten die 3,3Vpp nicht überschritten werden.&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte Tests ===&lt;br /&gt;
Als nächstes setzt man nun in der MMDVMHost-Konfigurationsdatei in der &amp;lt;code&amp;gt;[Modem]&amp;lt;/code&amp;gt; Stanza den Wert &amp;lt;code&amp;gt;Debug=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sobald man nach der Änderung den MMDVMHost neu startet, schreibt dieser nützliche Infos ins Logfile, die zur Bestimmung der RX-Frequenzabweichung und für die Beurteilung des Timing-Drifts und der RX-Pegel nützlich sind.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel einer solchen Logzeile:&lt;br /&gt;
 M: 2025-09-11 08:08:58.636 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 452 679 631&lt;br /&gt;
 M: 2025-09-11 08:08:58.696 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 452 646 632&lt;br /&gt;
 M: 2025-09-11 08:08:58.756 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 452 590 636&lt;br /&gt;
 M: 2025-09-11 08:08:59.116 Debug: DMRSlotRX: voice terminator found slot/pos/centre/threshold 2 452 425&lt;br /&gt;
&lt;br /&gt;
==== RX Frequenzabweichung ====&lt;br /&gt;
Anhand des Wertes &#039;&#039;centre&#039;&#039; kann man feststellen, ob es einen Frequenzversatz beim Empfänger gibt.&lt;br /&gt;
&lt;br /&gt;
Der Wert sollte sich im Idealfall um 0 herum bewegen (Empfänger ist genau auf der Frequenz).&lt;br /&gt;
&lt;br /&gt;
Sollte der Wert größer als 100 sein, muss der RX nachjustiert werden.&lt;br /&gt;
&lt;br /&gt;
Bei der Bewertung dieser Werte ist darauf zu achten, dass das eingegebene Testsignal selbst keinen Frequenzversatz (oder zumindest einen bekannten) hat. Vor allem bei preisgünstigen DMR-Funkgeräten ist durchaus öfters ein Frequenzversatz zu beobachten.&lt;br /&gt;
&lt;br /&gt;
Die besten Ergebnisse würde natürlich ein kalibriertes DMR Test Set liefern, was jedoch bei den wenigsten im Shack stehen wird.&lt;br /&gt;
&lt;br /&gt;
Am besten man testet also einfach mit mehreren Funkgeräten, nach Möglichkeit mit verschiedenen Modellen von verschiedenen Herstellern.&lt;br /&gt;
&lt;br /&gt;
Wenn das Relais bereits eine Weile im Einsatz war, ist auch eine Langzeit-Auswertung über die Logfiles möglich. Dazu einfach den folgenden Befehl verwenden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;grep -i dmrslot /var/log/pistar/MMDVM*.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timing-Drift ===&lt;br /&gt;
Bei längeren DMR-Durchgängen (&amp;gt;180s) kann es vorkommen, dass man eine Veränderung des &#039;&#039;pos&#039;&#039;-Werts beobachten kann.&lt;br /&gt;
&lt;br /&gt;
Dies deutet auf einen Timing-Drift hin, der meistens vom TCXO auf der MMDVM-Platine verursacht wird, wenn dieser eine schlechte Frequenzstabilität aufweist.&lt;br /&gt;
&lt;br /&gt;
Hier ein entsprechendes Beispiel (Log-Auszug aus https://github.com/juribeparada/MMDVM_HS/issues/109), bei welchem dieses Problem auftritt:&lt;br /&gt;
 M: 2019-11-06 16:28:10.529 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 447 26 337&lt;br /&gt;
 M: 2019-11-06 16:28:10.589 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 447 13 338&lt;br /&gt;
 M: 2019-11-06 16:28:10.649 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 447 7 341&lt;br /&gt;
 .......&lt;br /&gt;
 M: 2019-11-06 16:31:04.891 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 16 345&lt;br /&gt;
 M: 2019-11-06 16:31:05.251 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 11 344&lt;br /&gt;
 M: 2019-11-06 16:31:05.611 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 9 348&lt;br /&gt;
 M: 2019-11-06 16:31:05.971 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 20 370&lt;br /&gt;
 E: 2019-11-06 16:31:08.326 No reply from the modem for some time, resetting it&lt;br /&gt;
 M: 2019-11-06 16:31:08.326 Closing the MMDVM&lt;br /&gt;
 M: 2019-11-06 16:31:10.352 Opening the MMDVM&lt;br /&gt;
 E: 2019-11-06 16:31:23.169 Unable to read the firmware version after six attempts&lt;br /&gt;
Zu beobachten ist, dass der erste Wert (&#039;&#039;pos&#039;&#039;) mit länger werdendem Durchgang immer weiter sinkt, bis schlussendlich das Modem neu startet.&lt;br /&gt;
&lt;br /&gt;
Wenn das bei mehreren verschiedenen Usern/Geräten auffällt (auch hier gilt: es kann auch am Endgerät des Benutzers liegen!), liegt es vermutlich am TCXO auf dem MMDVM Board.&lt;br /&gt;
&lt;br /&gt;
Ggf. sollte dieser durch ein besseres Äquivalent ausgetauscht werden, z.B. ein 12MHz TCXO von namhaften Herstellern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Achtung:&amp;lt;/u&amp;gt; Wenn der Wert von den originalen 19.2MHz auf 12MHz abgeändert wird, &#039;&#039;&#039;muss die Firmware neu compiliert werden!&#039;&#039;&#039; In der &#039;&#039;Config.h&#039;&#039; muss entsprechend die Zeile für den 19.2MHz TCXO auskommentiert und dafür das Kommentarzeichen beim 12MHz TCXO entfernt werden.&lt;br /&gt;
[[Kategorie:Digitaltechnik]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=MMDVM-Relais&amp;diff=68</id>
		<title>MMDVM-Relais</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=MMDVM-Relais&amp;diff=68"/>
		<updated>2025-09-22T14:27:53Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: MMDVM-POG Dokumentation angelegt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Auf allen MMDVMs des DRC ist aktuell (stand September 2025) das folgende MMDVM Modem Board verbaut:&lt;br /&gt;
&lt;br /&gt;
* MMDVM_HS_HAT &amp;quot;POG&amp;quot; Board, nach dem Design von SQ6POG&lt;br /&gt;
** &#039;&#039;&#039;STM32F105RBT&#039;&#039;&#039; MCU (70MHz)&lt;br /&gt;
** &#039;&#039;&#039;19.2 MHz&#039;&#039;&#039; TCXO&lt;br /&gt;
** Open-Source Hardware Design&lt;br /&gt;
** Aktive Butterworth-Tiefpassfilter zweiter Ordnung (Sallen-Key)&lt;br /&gt;
** Hardware-Design: https://github.com/wojciechk8/MMDVM_pog/&lt;br /&gt;
&lt;br /&gt;
Das Board kann anscheinend Firmwarekompatibel zu den Repeater Builder STM32-DVM v2 (mittlerweile auch nicht mehr unterstützt) gemacht Wenn man den verbauten 19,2MHz TCXO durch einen 12MHz austauscht, ist diversen Berichten zufolge die Firmware der R&#039;&#039;epeater Builder STM32-DVM V2&#039;&#039; (Stand 2025 auch nicht mehr offiziell unterstützt) auf diesen Platinen lauffähig.&lt;br /&gt;
&lt;br /&gt;
=== In-System Flashing Mod ===&lt;br /&gt;
Damit die Firmware per remote geflasht werden kann, müssen zwei Verbindungen gelötet werden:&lt;br /&gt;
[[Datei:Mmdvm-flashing-mod.png|alternativtext=MMDVM In-System-Flashing-Mod|mini|MMDVM In-System-Flashing-Mod]]&lt;br /&gt;
&lt;br /&gt;
* Raspberry PI &#039;&#039;&#039;GPIO 21&#039;&#039;&#039; (HW Pin 40) -&amp;gt; &#039;&#039;&#039;NRST&#039;&#039;&#039; (auf ST-LINK Pin Header, das Pin neben dem Kondensator)&lt;br /&gt;
* Raspberry PI &#039;&#039;&#039;GPIO 20&#039;&#039;&#039; (HW Pin 38) -&amp;gt; &#039;&#039;&#039;BOOT0&#039;&#039;&#039; (JP1 Pin 2), über einen 10kOhm Widerstand&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Flashen muss zuerst MMDVMHost gestoppt werden:&lt;br /&gt;
 systemctl stop mmdvmhost.timer&lt;br /&gt;
 systemctl stop mmdvmhost&lt;br /&gt;
Dann kann mit stm32flash mit angabe der Pin-Folge (option -i) geflasht werden:&lt;br /&gt;
 # MMDVM Modem in Flash-Modus bringen (BOOT0 high, NRST low-&amp;gt;high)&lt;br /&gt;
 stm32flash -i 20,-21,21 /dev/ttyAMA0&lt;br /&gt;
 # Firmware flashen&lt;br /&gt;
 stm32flash -w mmdvm_pog-fw.hex -g 0x0 -R /dev/ttyAMA0&lt;br /&gt;
 # MMDVM nochmal via NRST (low-&amp;gt;high) resetten&lt;br /&gt;
 stm32flash -i -21,21 /dev/ttyAMA0&lt;br /&gt;
&lt;br /&gt;
 # nun kann MMDVMHost wieder gestartet werden&lt;br /&gt;
 systemctl start mmdvmhost.timer&lt;br /&gt;
 systemctl start mmdvmhost&lt;br /&gt;
&lt;br /&gt;
=== MMDVMHost Einstellungen ===&lt;br /&gt;
Der Modem-Type ist auf &#039;&#039;&#039;STM32-DVM / MMDVM_HS - Raspberry Pi Hat (GPIO)&#039;&#039;&#039; zu stellen.&lt;br /&gt;
&lt;br /&gt;
Baudrate ist &#039;&#039;&#039;115200&#039;&#039;&#039;. Schnellere Baudraten, wie sie beispielsweise für FM oder andere Betriebsarten notwendig sind, schafft der &#039;&#039;STM32F105&#039;&#039; nicht mehr.&lt;br /&gt;
&lt;br /&gt;
=== Kalibrierung ===&lt;br /&gt;
Die Kalibrierung der RX und TX-Pegel vom MMDVM passiert in unserem Fall über die einstellung zweier Trimmerpotentiometer, sowie über die digitale Gain-Einstellung.&lt;br /&gt;
&lt;br /&gt;
Zum Kalibrieren wird das Programm MMDVMCal (in PiStar direkt mit pistar-mmdvmcal aufrufbar) verwendet.&lt;br /&gt;
&lt;br /&gt;
==== TX Kalibrierung ====&lt;br /&gt;
Die Pegel für den Sender können durch Auswahl der Funktion &amp;lt;code&amp;gt;D Set DMR Deviation Mode. Generates a 1.2Khz Sinewave. Set radio for 2.75 Khz Deviation&amp;lt;/code&amp;gt; eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Besonders bei DMR ist die Hub-Einstellung kritisch.&lt;br /&gt;
&lt;br /&gt;
Die Einstellung erfolgt mit hilfe eines Spektrum-Analyzers, wobei sich auch ein TinySA oder ein RTL-SDR eignen.&lt;br /&gt;
&lt;br /&gt;
Die Anzeige wird auf die Sendefrequenz zentriert, der angezeigte Bandausschnitt sollte ca 15-20kHz betragen.&lt;br /&gt;
&lt;br /&gt;
Nun wird der Trimmer solange bewegt, bis der Träger (so gut wie möglich) verschwunden ist:&lt;br /&gt;
[[Datei:Mmdvm-tx-calibration.png|alternativtext=MMDVM TX-Kalibrierung mit der Bessel-Null-Methode|zentriert|mini|502x502px|MMDVM TX-Kalibrierung mit der Bessel-Null-Methode]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für die Feineinstellung kann in MMDVMCal durch die Tasten &#039;&#039;T&#039;&#039; und &#039;&#039;t&#039;&#039; der TX-Pegel digital in halben Prozentschritten erhöht (&#039;&#039;i&#039;&#039;) oder verringert (&#039;&#039;t&#039;&#039;) werden.&lt;br /&gt;
&lt;br /&gt;
Nun hat man ca. einen Hub von 2,88kHz eingestellt. Um zum gewünschten Hub von 2,75kHz zu gelange, muss der Ermittelte &#039;&#039;TXLevel&#039;&#039; Wert noch mit 95% multipliziert und in der mmdvmhost-Konfigurationsdatei als &#039;&#039;TXLevel&#039;&#039; abgespeichert werden.&lt;br /&gt;
&lt;br /&gt;
==== RX Kalibrierung ====&lt;br /&gt;
Für die Kalibrierung der RX-Pegel gibt es zwei Varianten: die genauere, Messtechnische Variante mit einem Oszilloskop, und alternativ die &amp;quot;Trial and Error&amp;quot;-Methode.&lt;br /&gt;
&lt;br /&gt;
===== &amp;quot;Trial and Error&amp;quot;-Methode =====&lt;br /&gt;
MMDVMCal bietet mehrere BER-Testing-Modes, welche entsprechend ein DSTAR/DMR/C4FM Signal erwarten und für jeden empfangenen Datenframe die BER anzeigen.&lt;br /&gt;
 K/k	BER Test Mode (FEC) for D-Star&lt;br /&gt;
 b	BER Test Mode (FEC) for DMR Simplex (CC1)&lt;br /&gt;
 J	BER Test Mode (FEC) for YSF&lt;br /&gt;
Nun wird mit einem entsprechenden Digitalfunkgerät ein Signal auf das Relais gegeben und der RX-Trimmer (und somit der NF-Pegel des Empfangssignals) durch &amp;quot;testen&amp;quot; solange variiert, bis etwas decodiert wird.&lt;br /&gt;
&lt;br /&gt;
Danach wird durch die tasten R und r der RXLevel (also der Gain auf der digitalen Seite) angepasst, bis die angezeigten BER-Werte minimal sind.&lt;br /&gt;
&lt;br /&gt;
Am Ende wird der ermittelte Wert unverändert in der MMDVMHost-Konfigurationsdatei als &#039;&#039;RXLevel&#039;&#039; abgespeichert.&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Die Einstellung des Trimmers ist der kritische Teil! Wenn das analog anliegende Signal über VCC (=3.3V) geht und der ADC somit ins Clipping kommt, hilft jede darauffolgende digitale Gain-Einstellung auch nichts mehr!&lt;br /&gt;
&lt;br /&gt;
===== Messtechnische Methode =====&lt;br /&gt;
Mit einem Oszilloskop wird das RX-Signal von einem Testpunkt auf der Platine abgegriffen.&lt;br /&gt;
&lt;br /&gt;
Bei unserem MMDVM-POG Board gibt es dafür den Testpunkt &#039;&#039;TP32&#039;&#039;, der sich schaltungstechnisch direkt hinter dem Butterworth-Filter der RX-Eingabe befindet.&lt;br /&gt;
&lt;br /&gt;
Physisch befindet sich der Testpoint &#039;&#039;TP32&#039;&#039; unterhalb der ST-LINK Pins, welche links vom STM32-Prozessor liegen.&lt;br /&gt;
&lt;br /&gt;
Ziel ist es, das Signal so einzustellen, dass der ADC nicht übersteuert wird. Das Signal soll bei einer &#039;&#039;&#039;VCC&#039;&#039;&#039; von &#039;&#039;&#039;3.3V&#039;&#039;&#039; also &#039;&#039;&#039;nie unter 0V und über 3.3V gehen&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Der DC-Offset des Sinussignals sollte genau die Hälfte von VCC, also &#039;&#039;&#039;1,65V&#039;&#039;&#039; betragen.&lt;br /&gt;
&lt;br /&gt;
Um sicherzustellen, dass es zu keinen ADC-Overloads kommt, sollte die Amplitude des Signals &#039;&#039;&#039;ca. 0,4V bis 0,5V Abstand&#039;&#039;&#039; von den beiden Grenzwerten (0V und 3,3V) haben. Das ergibt somit eine &#039;&#039;&#039;Nutzsignal-Amplitude von ca. 2,3Vpp am Testpunkt &#039;&#039;TP32&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auch wenn nur Rauschen am Empfänger anliegt, sollten die 3,3Vpp nicht überschritten werden.&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte Tests ===&lt;br /&gt;
Als nächstes setzt man nun in der MMDVMHost-Konfigurationsdatei in der &amp;lt;code&amp;gt;[Modem]&amp;lt;/code&amp;gt; Stanza den Wert &amp;lt;code&amp;gt;Debug=1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sobald man nach der Änderung den MMDVMHost neu startet, schreibt dieser nützliche Infos ins Logfile, die zur Bestimmung der RX-Frequenzabweichung und für die Beurteilung des Timing-Drifts und der RX-Pegel nützlich sind.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel einer solchen Logzeile:&lt;br /&gt;
 M: 2025-09-11 08:08:58.636 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 452 679 631&lt;br /&gt;
 M: 2025-09-11 08:08:58.696 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 452 646 632&lt;br /&gt;
 M: 2025-09-11 08:08:58.756 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 452 590 636&lt;br /&gt;
 M: 2025-09-11 08:08:59.116 Debug: DMRSlotRX: voice terminator found slot/pos/centre/threshold 2 452 425&lt;br /&gt;
&lt;br /&gt;
==== RX Frequenzabweichung ====&lt;br /&gt;
Anhand des Wertes &#039;&#039;centre&#039;&#039; kann man feststellen, ob es einen Frequenzversatz beim Empfänger gibt.&lt;br /&gt;
&lt;br /&gt;
Der Wert sollte sich im Idealfall um 0 herum bewegen (Empfänger ist genau auf der Frequenz).&lt;br /&gt;
&lt;br /&gt;
Sollte der Wert größer als 100 sein, muss der RX nachgestellt werden.&lt;br /&gt;
&lt;br /&gt;
Bei der Bewertung dieser Werte ist darauf zu achten, dass das eingegebene Testsignal selbst keinen Frequenzversatz (oder zumindest einen bekannten) hat. Vor allem bei preisgünstigen DMR-Funkgeräten ist durchaus öfters ein Frequenzversatz zu beobachten.&lt;br /&gt;
&lt;br /&gt;
Die besten Ergebnisse würde natürlich ein kalibriertes DMR Test Set liefern, was jedoch bei den wenigsten im Shack stehen wird.&lt;br /&gt;
&lt;br /&gt;
Am besten man testet also einfach mit mehreren Funkgeräten, nach Möglichkeit mit verschiedenen Modellen von verschiedenen Herstellern.&lt;br /&gt;
&lt;br /&gt;
Wenn das Relais bereits eine Weile im Einsatz war, ist auch eine Langzeit-Auswertung über die Logfiles möglich. Dazu einfach:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;grep -i dmrslot /var/log/pistar/MMDVM*.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timing-Drift ===&lt;br /&gt;
Bei längeren DMR-Durchgängen (man liest von &amp;gt;175s) kann es vorkommen, dass man eine Veränderung des &#039;&#039;pos&#039;&#039;-Werts beobachten kann.&lt;br /&gt;
&lt;br /&gt;
Dies deutet auf einen Timing-Drift hin, der meistens vom TCXO auf der MMDVM-Platine verursacht wird, wenn dieser eine schlechte Frequenzstabilität aufweist.&lt;br /&gt;
&lt;br /&gt;
Hier ein entsprechendes Beispiel (Log-Auszug aus https://github.com/juribeparada/MMDVM_HS/issues/109), bei welchem dieses Problem auftritt:&lt;br /&gt;
 M: 2019-11-06 16:28:10.529 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 447 26 337&lt;br /&gt;
 M: 2019-11-06 16:28:10.589 Debug: DMRSlotRX: voice header found slot/pos/centre/threshold 2 447 13 338&lt;br /&gt;
 M: 2019-11-06 16:28:10.649 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 447 7 341&lt;br /&gt;
 .......&lt;br /&gt;
 M: 2019-11-06 16:31:04.891 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 16 345&lt;br /&gt;
 M: 2019-11-06 16:31:05.251 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 11 344&lt;br /&gt;
 M: 2019-11-06 16:31:05.611 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 9 348&lt;br /&gt;
 M: 2019-11-06 16:31:05.971 Debug: DMRSlotRX: voice sync found slot/pos/centre/threshold 2 385 20 370&lt;br /&gt;
 E: 2019-11-06 16:31:08.326 No reply from the modem for some time, resetting it&lt;br /&gt;
 M: 2019-11-06 16:31:08.326 Closing the MMDVM&lt;br /&gt;
 M: 2019-11-06 16:31:10.352 Opening the MMDVM&lt;br /&gt;
 E: 2019-11-06 16:31:23.169 Unable to read the firmware version after six attempts&lt;br /&gt;
Zu beobachten ist, dass der erste Wert (&#039;&#039;pos&#039;&#039;) mit länger werdendem Durchgang immer weiter sinkt, bis schlussendlich das Modem neu startet.&lt;br /&gt;
&lt;br /&gt;
Wenn das bei mehreren verschiedenen Usern/Geräten auffällt (auch hier gilt: es kann auch am Endgerät des Benutzers liegen!), liegt es vermutlich am TCXO auf dem MMDVM Board.&lt;br /&gt;
&lt;br /&gt;
Ggf. sollte dieser durch ein besseres Äquivalent ausgetauscht werden, z.B. ein 12MHz TCXO von namhaften Herstellern.&lt;br /&gt;
&lt;br /&gt;
Achtung: Wenn der Wert von den originalen 19.2MHz auf 12MHz abgeändert wird, &#039;&#039;&#039;muss die Firmware neu compiliert werden!&#039;&#039;&#039; In der &#039;&#039;Config.h&#039;&#039; muss entsprechend die Zeile für den 19.2MHz TCXO auskommentiert und dafür das Kommentarzeichen beim 12MHz TCXO entfernt werden.&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Datei:Mmdvm-tx-calibration.png&amp;diff=67</id>
		<title>Datei:Mmdvm-tx-calibration.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Datei:Mmdvm-tx-calibration.png&amp;diff=67"/>
		<updated>2025-09-22T14:15:21Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mmdvm-tx-calibration bessel-null&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Datei:Mmdvm-flashing-mod.png&amp;diff=66</id>
		<title>Datei:Mmdvm-flashing-mod.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Datei:Mmdvm-flashing-mod.png&amp;diff=66"/>
		<updated>2025-09-22T14:10:49Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mmdvm-flashing-mod&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=PR-Digi_mit_Direwolf&amp;diff=65</id>
		<title>PR-Digi mit Direwolf</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=PR-Digi_mit_Direwolf&amp;diff=65"/>
		<updated>2025-08-26T13:13:59Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: /* Packet-Router (X)Net */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit recht einfachen Software-Mitteln ist es möglich, eine &#039;Moderne&#039; Variante eines Packet Radio Digipeaters zu betreiben, welche (abgesehen vom AF-Interface zum Funkgerät) ganz ohne Spezialhardware auskommt.&lt;br /&gt;
&lt;br /&gt;
Im folgenden wird ein Aufbau beschrieben, welcher sowohl einen Multibaud RF-Zugang, als auch einen HAMNET-Zugang über das AXUDP-Protokoll bereitstellen kann.&lt;br /&gt;
&lt;br /&gt;
=== Plattform ===&lt;br /&gt;
Als systemtechnische Plattform eignet sich im Grunde ein Mikro-PC ähnlich Raspberry PI, auf welchem ein Linux-Betriebssystem lauffähig ist. &lt;br /&gt;
&lt;br /&gt;
Auf unserem Standort [[Gantkofel IR3UGM]] läuft das in diesem Artikel beschriebene Setup beispielsweise mit einem OrangePi Zero (ARM Cortex A7 CPU mit 512MB RAM), aber es sind natürlich auch andere ARM- oder x86-Basierte Systeme möglich.&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist jedoch, dass - vor allem beim Betrieb von MultiBaud oder generell bei mehreren parallelen Zugängen - die verschiedenen Direwolf-Modems zeitgleich laufen und somit CPU-Last erzeugen.&lt;br /&gt;
&lt;br /&gt;
Etwas schnellere CPUs sind daher vorteilhaft.&lt;br /&gt;
&lt;br /&gt;
=== (Soft)Modem ===&lt;br /&gt;
Wo früher Hardware-TNCs ihre Arbeit verrichtet haben, kommen bei moderneren Setups vermehrt Software-Implementierungen zum Einsatz, die sich mittlerweile durchaus mit ihren Hardware-Pendants messen können.&lt;br /&gt;
&lt;br /&gt;
In unserem Setup wird als Software-Modem [https://github.com/wb2osz/direwolf Direwolf] verwendet, mit welchem das Basisband-Signal erzeugt bzw. decodiert werden kann.&lt;br /&gt;
&lt;br /&gt;
Dabei werden mehrere verschiedene Modulationsverfahren/Baudraten unterstützt, unter Anderem:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1200baud AFSK&#039;&#039;&#039; (der Klassiker)&lt;br /&gt;
* &#039;&#039;&#039;2400bps&#039;&#039;&#039; nach &#039;&#039;&#039;ITU-T V.26b&#039;&#039;&#039;&lt;br /&gt;
** Sollte mit &amp;quot;klassischen&amp;quot; 1k2 fähigen Funkgeräten (also nur über Lautsprecher/Mikrofon Anschlüsse, ohne Zugang auf den FM-Diskriminator/Modulator) noch machbar sein&lt;br /&gt;
** hier wird ebenfalls eine Symbolrate von &#039;&#039;&#039;1200 Symbolen/Sekunde&#039;&#039;&#039; verwendet, jedoch mit &#039;&#039;&#039;4 möglichen Zuständen&#039;&#039;&#039;&lt;br /&gt;
** Somit können &#039;&#039;log2(4) = &#039;&#039;&#039;2&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;bit pro Symbol&#039;&#039;&#039; übertragen werden&lt;br /&gt;
** 1200 Symbole/Sekunde * 2bit/Symbol = &#039;&#039;&#039;2400 bit/Sekunde&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;4800bps&#039;&#039;&#039; nach &#039;&#039;&#039;ITU-T V.27&#039;&#039;&#039;&lt;br /&gt;
** die Symbolrate beträgt hier &#039;&#039;&#039;1600 Symbole/Sekunde&#039;&#039;&#039;&lt;br /&gt;
** Das Modulationsschema benutzt &#039;&#039;&#039;8 mögliche Zustände&#039;&#039;&#039;&lt;br /&gt;
** Somit &#039;&#039;log2(8) = 3&#039;&#039; bit pro Symbol&lt;br /&gt;
** bei 1600Symbolen/Sekunde  ergibt das &#039;&#039;&#039;4800 bit/Sekunde&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für den Multibaud-Betrieb ist eine weitere Eigenheit zu beachten: Direwolf kann jeweils nur ein Modem pro Sound-Interface verwenden. &lt;br /&gt;
&lt;br /&gt;
Man kann sich jedoch eines Tricks des Linux-Audio-Subsystems ALSA bedienen: ALSA unterstützt nämlich &#039;&#039;&#039;virtuelle Sound-Interfaces&#039;&#039;&#039;, welche schlussendlich &amp;quot;gemixt&amp;quot; und auf das gleiche physische Audiogerät ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Somit ist es möglich, in der Direwolf-Konfiguration beispielsweise die Modems für 1k2, 2k4 und 4k8 gleichzeitig auf dem gleichen Audio-Interface und somit schlussendlich auf der gleichen QRG zu verwenden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für die Anbindung an die PR-Node-Software gilt zu beachten, dass Direwolf nur ein einziges Pseudo-TTY-Gerät anlegen kann. In unserem Fall bräuchten wir nun aber für 3 Modems folglich 3 Stück.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch hier bedienen wir uns eines kleinen Tricks, um die vorher definierten Direwolf-Modems anzubinden:&lt;br /&gt;
&lt;br /&gt;
Direwolf unterstützt zwar nur ein einziges Pseudo-TTY-Gerät, wohl aber mehrere TCP-KISS Verbindungen. Mit diesen kann aber unsere PR-Node-Software (X)Net nichts anfangen.&lt;br /&gt;
&lt;br /&gt;
Als Bindeglied dient deshalb das Tool &#039;&#039;udpflex&#039;&#039; aus der dxlAPRS Toolchain, welches sich als &#039;&#039;&#039;Bridge&#039;&#039;&#039; dazwischenschalten lässt und von &#039;&#039;&#039;TCP-KISS&#039;&#039;&#039; ins &#039;&#039;&#039;AXUDP&#039;&#039;&#039;-Protokoll konvertiert, welches in (X)Net problemlos angesprochen werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Port-Konfiguration in unserer Direwolf.conf sieht nun folgendermaßen aus:&lt;br /&gt;
 KISSPORT 8000 0&lt;br /&gt;
 KISSPORT 8001 2&lt;br /&gt;
 KISSPORT 8002 4&lt;br /&gt;
.. wobei der erste Wert den zu bindenden TCP-Port definiert, der Zweite steht für den CHANNEL (also das Modem).&lt;br /&gt;
&lt;br /&gt;
Zu beachten: die Channels in Direwolf sind immer STEREO (also immer Paarweise) zu verstehen; somit muss das zweite Modem &#039;&#039;CHANNEL 2&#039;&#039; (das dritte &#039;&#039;CHANNEL 4&#039;&#039; usw.) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun starten wir unsere udpflex-Instanzen, welche sich (option &amp;lt;code&amp;gt;-T host:port&amp;lt;/code&amp;gt;) mit den verschiedenen TCP-KISS Ports am lokalen Host verbinden und ihrerseits UDP-Ports (option &amp;lt;code&amp;gt;-U host:tx-port:rx-port&amp;lt;/code&amp;gt;) am lokalen Host öffnen, wo dann über AXUDP die AX.25 Pakete empfangen/gesendet werden:&lt;br /&gt;
 # udpflex als TCP-KISS &amp;lt;&amp;gt; AXUDP Bridge fuers Anbinden der drei Direwolf-Modems an XNET&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8000 -U 127.0.0.1:10001:10002 &amp;amp;&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8001 -U 127.0.0.1:10003:10004 &amp;amp;&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8002 -U 127.0.0.1:10005:10006 &amp;amp;&lt;br /&gt;
Eine sehr hilfreiche Dokumentation von &#039;&#039;udpflex&#039;&#039; und den anderen Hilfsmitteln aus der dxlAPRS-Toolchain findet sich bei [https://dxlwiki.dl1nux.de/index.php?title=Udpflex dxlwiki.dl1nux.de]&lt;br /&gt;
&lt;br /&gt;
=== Packet-Router (X)Net ===&lt;br /&gt;
Als Packet Node Software bzw. Router ist (X)Net im Einsatz. Dieses ist auch auf neueren Plattformen noch Lauffähig.&lt;br /&gt;
&lt;br /&gt;
Die Anbindung zwischen Direwolf und (X)NET erfolgt wie vorher beschrieben über &#039;&#039;&#039;AXUDP&#039;&#039;&#039;, wobei pro Modem (=Baudrate) ein Port konfiguriert wid. &lt;br /&gt;
&lt;br /&gt;
Somit kann von (X)NET aus durch Auswahl des Ports gewählt werden, in welcher Baudrate eine Station via RF kontaktiert werden soll. Auch &#039;&#039;MHeard&#039;&#039; usw. wird dann entsprechend pro Port/Baudrate angezeigt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Attach-Befehle sehen in unserem Fall beispielsweise folgendermaßen aus:&lt;br /&gt;
 att ip0 axudp 1 1 l10001 d10002 127.0.0.1&lt;br /&gt;
 att ip1 axudp 2 1 l10003 d10004 127.0.0.1&lt;br /&gt;
 att ip2 axudp 3 1 l10005 d10006 127.0.0.1&lt;br /&gt;
Die TX- und RX-Ports müssen hier natürlich genau invertiert zur &#039;&#039;udpflex&#039;&#039;-Konfiguration angegeben werden&lt;br /&gt;
&lt;br /&gt;
=== AXUDP für Userzugang ===&lt;br /&gt;
Wenn neben dem Zugang via RF auch ein AXUDP-Zugang angeboten werden soll, braucht es dazu noch einmal einen kleinen Trick:&lt;br /&gt;
&lt;br /&gt;
(X)Net hat einen AXIP/AXUDP Treiber integriert, mit welchem AXUDP Verbindungen zu anderen Nodes gemacht werden können.&lt;br /&gt;
&lt;br /&gt;
Dabei nimmt (X)Net laut Doku aber aus Sicherheitsgründen nur AXUDP Frames an, die &#039;&#039;&#039;explizit vom konfigurierten Linkpartner kommen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wildcards o.Ä. können keine angegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als Workaround ist nach österreichischem Vorbild &#039;&#039;udphub&#039;&#039; aus der dxlAPRS Toolchain vorgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Konfigurationstechnisch stellt (X)Net eine &#039;&#039;&#039;AXUDP-Verbindung mit 127.0.0.1 her&#039;&#039;&#039; (bei uns beispielsweise über die Ports &#039;&#039;&#039;9007&#039;&#039;&#039; und &#039;&#039;&#039;9008&#039;&#039;&#039;), dort lauscht &#039;&#039;udphub&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Da für (X)Net nun alle Verbindungen &amp;quot;&#039;&#039;vom konfigurierten AXUDP-Partner 127.0.0.1 kommen&#039;&#039;&amp;quot;, ist (X)Net zufrieden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Diese Lösung hat außerdem noch einen weiteren Vorteil: &#039;&#039;udphub&#039;&#039; merkt sich die IP-Adressen der anrufenden Stationen für eine via Konfigurationsparameter definierbare Zeit und kann somit auch ausgehende Connects machen.&lt;br /&gt;
&lt;br /&gt;
Die Verwendung ist also gleich, wie bei Usern die via RF ankommen würden.&lt;br /&gt;
&lt;br /&gt;
Für Troubleshooting-Zwecke kann &#039;&#039;udphub&#039;&#039; mit der option &amp;lt;code&amp;gt;-w&amp;lt;/code&amp;gt; angewiesen werden, einen Log der letzten bekannten AXUDP-Verbindungen (sozusagen den &amp;quot;Switching-Table&amp;quot;) in eine Datei (z.B. &amp;lt;code&amp;gt;/tmp/udphub.log&amp;lt;/code&amp;gt;) zu schreiben.&lt;br /&gt;
&lt;br /&gt;
 # Port fuer AXUDP User-Zugang &lt;br /&gt;
 USERPORT=10093 &lt;br /&gt;
 # udphub als AXUDP-Switch - Workaround damit XNET AXUDP Calls von Usern entgegennimmt &lt;br /&gt;
 # udphub merkt sich intern fuer die angegebene Zeitdauer (option -l in Sekunden) &lt;br /&gt;
 # die IP-Adressen/Ports der AXUDP-User. &lt;br /&gt;
 # Somit koennen ueber diesen Port auch Stationen connected werden&lt;br /&gt;
 ./udphub -u 127.0.0.1:9007:9008 -l 1440 -p $USERPORT -w /tmp/udphub.log &amp;amp; &lt;br /&gt;
&lt;br /&gt;
Bei einem ausgehenden Connect ist natürlich zu beachten, dass es durchaus passieren könnte, dass der remote Node nach einiger Zeit auf demselben Port &#039;&#039;&#039;nicht mehr antwortet&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das passiert beispielsweise, wenn zwischen dem PR-Node und dem zu verbindenden User ein &#039;&#039;&#039;NAT dazwischen ist&#039;&#039;&#039; - beispielsweise weil das Packet-Gerät im LAN des OMs läuft und bei der Verbindung ins HAMNET mit der 44er IP der HAMNET-Antenne &#039;&#039;geNATted&#039;&#039; wird. In diesem Fall wird die &#039;&#039;&#039;NAT-Session&#039;&#039;&#039; irgendwann in &#039;&#039;&#039;Timeout&#039;&#039;&#039; gehen und folglich ein &#039;&#039;&#039;Connect von außen nicht mehr funktionieren.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In solchen Fällen gilt also: Soll der eigene PR-Node im QTH auch von außen via AXUDP verbindbar sein, dann ist darauf zu achten, dass dieser im idealfall selbst eine 44er IP aus dem HAMNET zugewiesen bekommt.&lt;br /&gt;
&lt;br /&gt;
In diesen Fällen ist es am besten, sich mit einem HAMNET-Sysop zu besprechen.&lt;br /&gt;
[[Kategorie:HAMNET]]&lt;br /&gt;
[[Kategorie:Digitaltechnik]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=PR-Digi_mit_Direwolf&amp;diff=64</id>
		<title>PR-Digi mit Direwolf</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=PR-Digi_mit_Direwolf&amp;diff=64"/>
		<updated>2025-08-26T13:06:18Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit recht einfachen Software-Mitteln ist es möglich, eine &#039;Moderne&#039; Variante eines Packet Radio Digipeaters zu betreiben, welche (abgesehen vom AF-Interface zum Funkgerät) ganz ohne Spezialhardware auskommt.&lt;br /&gt;
&lt;br /&gt;
Im folgenden wird ein Aufbau beschrieben, welcher sowohl einen Multibaud RF-Zugang, als auch einen HAMNET-Zugang über das AXUDP-Protokoll bereitstellen kann.&lt;br /&gt;
&lt;br /&gt;
=== Plattform ===&lt;br /&gt;
Als systemtechnische Plattform eignet sich im Grunde ein Mikro-PC ähnlich Raspberry PI, auf welchem ein Linux-Betriebssystem lauffähig ist. &lt;br /&gt;
&lt;br /&gt;
Auf unserem Standort [[Gantkofel IR3UGM]] läuft das in diesem Artikel beschriebene Setup beispielsweise mit einem OrangePi Zero (ARM Cortex A7 CPU mit 512MB RAM), aber es sind natürlich auch andere ARM- oder x86-Basierte Systeme möglich.&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist jedoch, dass - vor allem beim Betrieb von MultiBaud oder generell bei mehreren parallelen Zugängen - die verschiedenen Direwolf-Modems zeitgleich laufen und somit CPU-Last erzeugen.&lt;br /&gt;
&lt;br /&gt;
Etwas schnellere CPUs sind daher vorteilhaft.&lt;br /&gt;
&lt;br /&gt;
=== (Soft)Modem ===&lt;br /&gt;
Wo früher Hardware-TNCs ihre Arbeit verrichtet haben, kommen bei moderneren Setups vermehrt Software-Implementierungen zum Einsatz, die sich mittlerweile durchaus mit ihren Hardware-Pendants messen können.&lt;br /&gt;
&lt;br /&gt;
In unserem Setup wird als Software-Modem [https://github.com/wb2osz/direwolf Direwolf] verwendet, mit welchem das Basisband-Signal erzeugt bzw. decodiert werden kann.&lt;br /&gt;
&lt;br /&gt;
Dabei werden mehrere verschiedene Modulationsverfahren/Baudraten unterstützt, unter Anderem:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1200baud AFSK&#039;&#039;&#039; (der Klassiker)&lt;br /&gt;
* &#039;&#039;&#039;2400bps&#039;&#039;&#039; nach &#039;&#039;&#039;ITU-T V.26b&#039;&#039;&#039;&lt;br /&gt;
** Sollte mit &amp;quot;klassischen&amp;quot; 1k2 fähigen Funkgeräten (also nur über Lautsprecher/Mikrofon Anschlüsse, ohne Zugang auf den FM-Diskriminator/Modulator) noch machbar sein&lt;br /&gt;
** hier wird ebenfalls eine Symbolrate von &#039;&#039;&#039;1200 Symbolen/Sekunde&#039;&#039;&#039; verwendet, jedoch mit &#039;&#039;&#039;4 möglichen Zuständen&#039;&#039;&#039;&lt;br /&gt;
** Somit können &#039;&#039;log2(4) = &#039;&#039;&#039;2&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;bit pro Symbol&#039;&#039;&#039; übertragen werden&lt;br /&gt;
** 1200 Symbole/Sekunde * 2bit/Symbol = &#039;&#039;&#039;2400 bit/Sekunde&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;4800bps&#039;&#039;&#039; nach &#039;&#039;&#039;ITU-T V.27&#039;&#039;&#039;&lt;br /&gt;
** die Symbolrate beträgt hier &#039;&#039;&#039;1600 Symbole/Sekunde&#039;&#039;&#039;&lt;br /&gt;
** Das Modulationsschema benutzt &#039;&#039;&#039;8 mögliche Zustände&#039;&#039;&#039;&lt;br /&gt;
** Somit &#039;&#039;log2(8) = 3&#039;&#039; bit pro Symbol&lt;br /&gt;
** bei 1600Symbolen/Sekunde  ergibt das &#039;&#039;&#039;4800 bit/Sekunde&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für den Multibaud-Betrieb ist eine weitere Eigenheit zu beachten: Direwolf kann jeweils nur ein Modem pro Sound-Interface verwenden. &lt;br /&gt;
&lt;br /&gt;
Man kann sich jedoch eines Tricks des Linux-Audio-Subsystems ALSA bedienen: ALSA unterstützt nämlich &#039;&#039;&#039;virtuelle Sound-Interfaces&#039;&#039;&#039;, welche schlussendlich &amp;quot;gemixt&amp;quot; und auf das gleiche physische Audiogerät ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Somit ist es möglich, in der Direwolf-Konfiguration beispielsweise die Modems für 1k2, 2k4 und 4k8 gleichzeitig auf dem gleichen Audio-Interface und somit schlussendlich auf der gleichen QRG zu verwenden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für die Anbindung an die PR-Node-Software gilt zu beachten, dass Direwolf nur ein einziges Pseudo-TTY-Gerät anlegen kann. In unserem Fall bräuchten wir nun aber für 3 Modems folglich 3 Stück.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch hier bedienen wir uns eines kleinen Tricks, um die vorher definierten Direwolf-Modems anzubinden:&lt;br /&gt;
&lt;br /&gt;
Direwolf unterstützt zwar nur ein einziges Pseudo-TTY-Gerät, wohl aber mehrere TCP-KISS Verbindungen. Mit diesen kann aber unsere PR-Node-Software (X)Net nichts anfangen.&lt;br /&gt;
&lt;br /&gt;
Als Bindeglied dient deshalb das Tool &#039;&#039;udpflex&#039;&#039; aus der dxlAPRS Toolchain, welches sich als &#039;&#039;&#039;Bridge&#039;&#039;&#039; dazwischenschalten lässt und von &#039;&#039;&#039;TCP-KISS&#039;&#039;&#039; ins &#039;&#039;&#039;AXUDP&#039;&#039;&#039;-Protokoll konvertiert, welches in (X)Net problemlos angesprochen werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Port-Konfiguration in unserer Direwolf.conf sieht nun folgendermaßen aus:&lt;br /&gt;
 KISSPORT 8000 0&lt;br /&gt;
 KISSPORT 8001 2&lt;br /&gt;
 KISSPORT 8002 4&lt;br /&gt;
.. wobei der erste Wert den zu bindenden TCP-Port definiert, der Zweite steht für den CHANNEL (also das Modem).&lt;br /&gt;
&lt;br /&gt;
Zu beachten: die Channels in Direwolf sind immer STEREO (also immer Paarweise) zu verstehen; somit muss das zweite Modem &#039;&#039;CHANNEL 2&#039;&#039; (das dritte &#039;&#039;CHANNEL 4&#039;&#039; usw.) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun starten wir unsere udpflex-Instanzen, welche sich (option &amp;lt;code&amp;gt;-T host:port&amp;lt;/code&amp;gt;) mit den verschiedenen TCP-KISS Ports am lokalen Host verbinden und ihrerseits UDP-Ports (option &amp;lt;code&amp;gt;-U host:tx-port:rx-port&amp;lt;/code&amp;gt;) am lokalen Host öffnen, wo dann über AXUDP die AX.25 Pakete empfangen/gesendet werden:&lt;br /&gt;
 # udpflex als TCP-KISS &amp;lt;&amp;gt; AXUDP Bridge fuers Anbinden der drei Direwolf-Modems an XNET&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8000 -U 127.0.0.1:10001:10002 &amp;amp;&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8001 -U 127.0.0.1:10003:10004 &amp;amp;&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8002 -U 127.0.0.1:10005:10006 &amp;amp;&lt;br /&gt;
Eine sehr hilfreiche Dokumentation von &#039;&#039;udpflex&#039;&#039; und den anderen Hilfsmitteln aus der dxlAPRS-Toolchain findet sich bei [https://dxlwiki.dl1nux.de/index.php?title=Udpflex dxlwiki.dl1nux.de]&lt;br /&gt;
&lt;br /&gt;
=== Packet-Router (X)Net ===&lt;br /&gt;
Als Packet Node Software bzw. Router ist (X)Net im Einsatz. Dieses ist auch auf neueren Plattformen noch Lauffähig.&lt;br /&gt;
&lt;br /&gt;
Die Anbindung zwischen afskmodem und (X)NET erfolgt wie vorher beschrieben über &#039;&#039;&#039;AXUDP&#039;&#039;&#039;, wobei pro Modem (=Baudrate) ein Port konfiguriert wid. &lt;br /&gt;
&lt;br /&gt;
Somit kann von (X)NET aus durch Auswahl des Ports gewählt werden, in welcher Baudrate eine Station via RF kontaktiert werden soll. Auch &#039;&#039;MHeard&#039;&#039; usw. wird dann entsprechend pro Port/Baudrate angezeigt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Attach-Befehle sehen in unserem Fall beispielsweise folgendermaßen aus:&lt;br /&gt;
 att ip0 axudp 1 1 l10001 d10002 127.0.0.1&lt;br /&gt;
 att ip1 axudp 2 1 l10003 d10004 127.0.0.1&lt;br /&gt;
 att ip2 axudp 3 1 l10005 d10006 127.0.0.1&lt;br /&gt;
Die TX- und RX-Ports müssen hier natürlich genau invertiert zur &#039;&#039;udpflex&#039;&#039;-Konfiguration angegeben werden&lt;br /&gt;
&lt;br /&gt;
=== AXUDP für Userzugang ===&lt;br /&gt;
Wenn neben dem Zugang via RF auch ein AXUDP-Zugang angeboten werden soll, braucht es dazu noch einmal einen kleinen Trick:&lt;br /&gt;
&lt;br /&gt;
(X)Net hat einen AXIP/AXUDP Treiber integriert, mit welchem AXUDP Verbindungen zu anderen Nodes gemacht werden können.&lt;br /&gt;
&lt;br /&gt;
Dabei nimmt (X)Net laut Doku aber aus Sicherheitsgründen nur AXUDP Frames an, die &#039;&#039;&#039;explizit vom konfigurierten Linkpartner kommen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wildcards o.Ä. können keine angegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als Workaround ist nach österreichischem Vorbild &#039;&#039;udphub&#039;&#039; aus der dxlAPRS Toolchain vorgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Konfigurationstechnisch stellt (X)Net eine &#039;&#039;&#039;AXUDP-Verbindung mit 127.0.0.1 her&#039;&#039;&#039; (bei uns beispielsweise über die Ports &#039;&#039;&#039;9007&#039;&#039;&#039; und &#039;&#039;&#039;9008&#039;&#039;&#039;), dort lauscht &#039;&#039;udphub&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Da für (X)Net nun alle Verbindungen &amp;quot;&#039;&#039;vom konfigurierten AXUDP-Partner 127.0.0.1 kommen&#039;&#039;&amp;quot;, ist (X)Net zufrieden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Diese Lösung hat außerdem noch einen weiteren Vorteil: &#039;&#039;udphub&#039;&#039; merkt sich die IP-Adressen der anrufenden Stationen für eine via Konfigurationsparameter definierbare Zeit und kann somit auch ausgehende Connects machen.&lt;br /&gt;
&lt;br /&gt;
Die Verwendung ist also gleich, wie bei Usern die via RF ankommen würden.&lt;br /&gt;
&lt;br /&gt;
Für Troubleshooting-Zwecke kann &#039;&#039;udphub&#039;&#039; mit der option &amp;lt;code&amp;gt;-w&amp;lt;/code&amp;gt; angewiesen werden, einen Log der letzten bekannten AXUDP-Verbindungen (sozusagen den &amp;quot;Switching-Table&amp;quot;) in eine Datei (z.B. &amp;lt;code&amp;gt;/tmp/udphub.log&amp;lt;/code&amp;gt;) zu schreiben.&lt;br /&gt;
&lt;br /&gt;
 # Port fuer AXUDP User-Zugang &lt;br /&gt;
 USERPORT=10093 &lt;br /&gt;
 # udphub als AXUDP-Switch - Workaround damit XNET AXUDP Calls von Usern entgegennimmt &lt;br /&gt;
 # udphub merkt sich intern fuer die angegebene Zeitdauer (option -l in Sekunden) &lt;br /&gt;
 # die IP-Adressen/Ports der AXUDP-User. &lt;br /&gt;
 # Somit koennen ueber diesen Port auch Stationen connected werden&lt;br /&gt;
 ./udphub -u 127.0.0.1:9007:9008 -l 1440 -p $USERPORT -w /tmp/udphub.log &amp;amp; &lt;br /&gt;
&lt;br /&gt;
Bei einem ausgehenden Connect ist natürlich zu beachten, dass es durchaus passieren könnte, dass der remote Node nach einiger Zeit auf demselben Port &#039;&#039;&#039;nicht mehr antwortet&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das passiert beispielsweise, wenn zwischen dem PR-Node und dem zu verbindenden User ein &#039;&#039;&#039;NAT dazwischen ist&#039;&#039;&#039; - beispielsweise weil das Packet-Gerät im LAN des OMs läuft und bei der Verbindung ins HAMNET mit der 44er IP der HAMNET-Antenne &#039;&#039;geNATted&#039;&#039; wird. In diesem Fall wird die &#039;&#039;&#039;NAT-Session&#039;&#039;&#039; irgendwann in &#039;&#039;&#039;Timeout&#039;&#039;&#039; gehen und folglich ein &#039;&#039;&#039;Connect von außen nicht mehr funktionieren.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In solchen Fällen gilt also: Soll der eigene PR-Node im QTH auch von außen via AXUDP verbindbar sein, dann ist darauf zu achten, dass dieser im idealfall selbst eine 44er IP aus dem HAMNET zugewiesen bekommt.&lt;br /&gt;
&lt;br /&gt;
In diesen Fällen ist es am besten, sich mit einem HAMNET-Sysop zu besprechen.&lt;br /&gt;
[[Kategorie:HAMNET]]&lt;br /&gt;
[[Kategorie:Digitaltechnik]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=PR-Digi_mit_Direwolf&amp;diff=63</id>
		<title>PR-Digi mit Direwolf</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=PR-Digi_mit_Direwolf&amp;diff=63"/>
		<updated>2025-08-26T13:03:23Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit recht einfachen Software-Mitteln ist es möglich, eine &#039;Moderne&#039; Variante eines Packet Radio Digipeaters zu betreiben, welche (abgesehen vom AF-Interface zum Funkgerät) ganz ohne Spezialhardware auskommt.&lt;br /&gt;
&lt;br /&gt;
Im folgenden wird ein Aufbau beschrieben, welcher sowohl einen Multibaud RF-Zugang, als auch einen HAMNET-Zugang über das AXUDP-Protokoll bereitstellen kann.&lt;br /&gt;
&lt;br /&gt;
=== Plattform ===&lt;br /&gt;
Als systemtechnische Plattform eignet sich im Grunde ein Mikro-PC ähnlich Raspberry PI, auf welchem ein Linux-Betriebssystem lauffähig ist. &lt;br /&gt;
&lt;br /&gt;
Auf unserem Standort [[Gantkofel IR3UGM]] läuft das in diesem Artikel beschriebene Setup beispielsweise mit einem OrangePi Zero (ARM Cortex A7 CPU mit 512MB RAM), aber es sind natürlich auch andere ARM- oder x86-Basierte Systeme möglich.&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist jedoch, dass - vor allem beim Betrieb von MultiBaud oder generell bei mehreren parallelen Zugängen - die verschiedenen Direwolf-Modems zeitgleich laufen und somit CPU-Last erzeugen.&lt;br /&gt;
&lt;br /&gt;
Etwas schnellere CPUs sind daher vorteilhaft.&lt;br /&gt;
&lt;br /&gt;
=== (Soft)Modem ===&lt;br /&gt;
Wo früher Hardware-TNCs ihre Arbeit verrichtet haben, kommen bei moderneren Setups vermehrt Software-Implementierungen zum Einsatz, die sich mittlerweile durchaus mit ihren Hardware-Pendants messen können.&lt;br /&gt;
&lt;br /&gt;
In unserem Setup wird als Software-Modem [https://github.com/wb2osz/direwolf Direwolf] verwendet, mit welchem das Basisband-Signal erzeugt bzw. decodiert werden kann.&lt;br /&gt;
&lt;br /&gt;
Dabei werden mehrere verschiedene Modulationsverfahren/Baudraten unterstützt, unter Anderem:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1200baud AFSK&#039;&#039;&#039; (der Klassiker)&lt;br /&gt;
* &#039;&#039;&#039;2400bps&#039;&#039;&#039; nach &#039;&#039;&#039;ITU-T V.26b&#039;&#039;&#039;&lt;br /&gt;
** Sollte mit &amp;quot;klassischen&amp;quot; 1k2 fähigen Funkgeräten (also nur über Lautsprecher/Mikrofon Anschlüsse, ohne Zugang auf den FM-Diskriminator/Modulator) noch machbar sein&lt;br /&gt;
** hier wird ebenfalls eine Symbolrate von &#039;&#039;&#039;1200 Symbolen/Sekunde&#039;&#039;&#039; verwendet, jedoch mit &#039;&#039;&#039;4 möglichen Zuständen&#039;&#039;&#039;&lt;br /&gt;
** Somit können &#039;&#039;log2(4) = &#039;&#039;&#039;2&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;bit pro Symbol&#039;&#039;&#039; übertragen werden&lt;br /&gt;
** 1200 Symbole/Sekunde * 2bit/Symbol = &#039;&#039;&#039;2400 bit/Sekunde&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;4800bps&#039;&#039;&#039; nach &#039;&#039;&#039;ITU-T V.27&#039;&#039;&#039;&lt;br /&gt;
** die Symbolrate beträgt hier &#039;&#039;&#039;1600 Symbole/Sekunde&#039;&#039;&#039;&lt;br /&gt;
** Das Modulationsschema benutzt &#039;&#039;&#039;8 mögliche Zustände&#039;&#039;&#039;&lt;br /&gt;
** Somit &#039;&#039;log2(8) = 3&#039;&#039; bit pro Symbol&lt;br /&gt;
** bei 1600Symbolen/Sekunde  ergibt das &#039;&#039;&#039;4800 bit/Sekunde&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für den Multibaud-Betrieb ist eine weitere Eigenheit zu beachten: Direwolf kann jeweils nur ein Modem pro Sound-Interface verwenden. &lt;br /&gt;
&lt;br /&gt;
Man kann sich jedoch eines Tricks des Linux-Audio-Subsystems ALSA bedienen: ALSA unterstützt nämlich &#039;&#039;&#039;virtuelle Sound-Interfaces&#039;&#039;&#039;, welche schlussendlich &amp;quot;gemixt&amp;quot; und auf das gleiche physische Audiogerät ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Somit ist es möglich, in der Direwolf-Konfiguration beispielsweise die Modems für 1k2, 2k4 und 4k8 gleichzeitig auf dem gleichen Audio-Interface und somit schlussendlich auf der gleichen QRG zu verwenden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für die Anbindung an die PR-Node-Software gilt zu beachten, dass Direwolf nur ein einziges Pseudo-TTY-Gerät anlegen kann. In unserem Fall bräuchten wir nun aber für 3 Modems folglich 3 Stück.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch hier bedienen wir uns eines kleinen Tricks, um die vorher definierten Direwolf-Modems anzubinden:&lt;br /&gt;
&lt;br /&gt;
Direwolf unterstützt zwar nur ein einziges Pseudo-TTY-Gerät, wohl aber mehrere TCP-KISS Verbindungen. Mit diesen kann aber unsere PR-Node-Software (X)Net nichts anfangen.&lt;br /&gt;
&lt;br /&gt;
Als Bindeglied dient deshalb das Tool &#039;&#039;udpflex&#039;&#039; aus der dxlAPRS Toolchain, welches sich als &#039;&#039;&#039;Bridge&#039;&#039;&#039; dazwischenschalten lässt und von &#039;&#039;&#039;TCP-KISS&#039;&#039;&#039; ins &#039;&#039;&#039;AXUDP&#039;&#039;&#039;-Protokoll konvertiert, welches in (X)Net problemlos angesprochen werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Port-Konfiguration in unserer Direwolf.conf sieht nun folgendermaßen aus:&lt;br /&gt;
 KISSPORT 8000 0&lt;br /&gt;
 KISSPORT 8001 2&lt;br /&gt;
 KISSPORT 8002 4&lt;br /&gt;
.. wobei der erste Wert den zu bindenden TCP-Port definiert, der Zweite steht für den CHANNEL (also das Modem).&lt;br /&gt;
&lt;br /&gt;
Zu beachten: die Channels in Direwolf sind immer STEREO (also immer Paarweise) zu verstehen; somit muss das zweite Modem &#039;&#039;CHANNEL 2&#039;&#039; (das dritte &#039;&#039;CHANNEL 4&#039;&#039; usw.) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun starten wir unsere udpflex-Instanzen, welche sich (option &amp;lt;code&amp;gt;-T host:port&amp;lt;/code&amp;gt;) mit den verschiedenen TCP-KISS Ports am lokalen Host verbinden und ihrerseits UDP-Ports (option &amp;lt;code&amp;gt;-U host:tx-port:rx-port&amp;lt;/code&amp;gt;) am lokalen Host öffnen, wo dann über AXUDP die AX.25 Pakete empfangen/gesendet werden:&lt;br /&gt;
 # udpflex als TCP-KISS &amp;lt;&amp;gt; AXUDP Bridge fuers Anbinden der drei Direwolf-Modems an XNET&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8000 -U 127.0.0.1:10001:10002 &amp;amp;&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8001 -U 127.0.0.1:10003:10004 &amp;amp;&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8002 -U 127.0.0.1:10005:10006 &amp;amp;&lt;br /&gt;
Eine sehr hilfreiche Dokumentation von &#039;&#039;udpflex&#039;&#039; und den anderen Hilfsmitteln aus der dxlAPRS-Toolchain findet sich bei [https://dxlwiki.dl1nux.de/index.php?title=Udpflex dxlwiki.dl1nux.de]&lt;br /&gt;
&lt;br /&gt;
=== Packet-Router (X)Net ===&lt;br /&gt;
Als Packet Node Software bzw. Router ist (X)Net im Einsatz. Dieses ist auch auf neueren Plattformen noch Lauffähig.&lt;br /&gt;
&lt;br /&gt;
Die Anbindung zwischen afskmodem und (X)NET erfolgt wie vorher beschrieben über &#039;&#039;&#039;AXUDP&#039;&#039;&#039;, wobei pro Modem (=Baudrate) ein Port konfiguriert wid. &lt;br /&gt;
&lt;br /&gt;
Somit kann von (X)NET aus durch Auswahl des Ports gewählt werden, in welcher Baudrate eine Station via RF kontaktiert werden soll. Auch &#039;&#039;MHeard&#039;&#039; usw. wird dann entsprechend pro Port/Baudrate angezeigt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Attach-Befehle sehen in unserem Fall beispielsweise folgendermaßen aus:&lt;br /&gt;
 att ip0 axudp 1 1 l10001 d10002 127.0.0.1&lt;br /&gt;
 att ip1 axudp 2 1 l10003 d10004 127.0.0.1&lt;br /&gt;
 att ip2 axudp 3 1 l10005 d10006 127.0.0.1&lt;br /&gt;
Die TX- und RX-Ports müssen hier natürlich genau invertiert zur &#039;&#039;udpflex&#039;&#039;-Konfiguration angegeben werden&lt;br /&gt;
&lt;br /&gt;
=== AXUDP für Userzugang ===&lt;br /&gt;
Wenn neben dem Zugang via RF auch ein AXUDP-Zugang angeboten werden soll, braucht es dazu noch einmal einen kleinen Trick:&lt;br /&gt;
&lt;br /&gt;
(X)Net hat einen AXIP/AXUDP Treiber integriert, mit welchem AXUDP Verbindungen zu anderen Nodes gemacht werden können.&lt;br /&gt;
&lt;br /&gt;
Dabei nimmt (X)Net laut Doku aber aus Sicherheitsgründen nur AXUDP Frames an, die &#039;&#039;&#039;explizit vom konfigurierten Linkpartner kommen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wildcards o.Ä. können keine angegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als Workaround ist nach österreichischem Vorbild &#039;&#039;udphub&#039;&#039; aus der dxlAPRS Toolchain vorgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Konfigurationstechnisch stellt (X)Net eine &#039;&#039;&#039;AXUDP-Verbindung mit 127.0.0.1 her&#039;&#039;&#039; (bei uns beispielsweise über die Ports &#039;&#039;&#039;9007&#039;&#039;&#039; und &#039;&#039;&#039;9008&#039;&#039;&#039;), dort lauscht &#039;&#039;udphub&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Da für (X)Net nun alle Verbindungen &amp;quot;&#039;&#039;vom konfigurierten AXUDP-Partner 127.0.0.1 kommen&#039;&#039;&amp;quot;, ist (X)Net zufrieden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Diese Lösung hat außerdem noch einen weiteren Vorteil: &#039;&#039;udphub&#039;&#039; merkt sich die IP-Adressen der anrufenden Stationen für eine via Konfigurationsparameter definierbare Zeit und kann somit auch ausgehende Connects machen.&lt;br /&gt;
&lt;br /&gt;
Die Verwendung ist also gleich, wie bei Usern die via RF ankommen würden.&lt;br /&gt;
&lt;br /&gt;
 # Port fuer AXUDP User-Zugang &lt;br /&gt;
 USERPORT=10093 &lt;br /&gt;
 # udphub als AXUDP-Switch - Workaround damit XNET AXUDP Calls von Usern entgegennimmt &lt;br /&gt;
 # udphub merkt sich intern fuer die angegebene Zeitdauer (option -l in Sekunden) &lt;br /&gt;
 # die IP-Adressen/Ports der AXUDP-User. &lt;br /&gt;
 # Somit koennen ueber diesen Port auch Stationen connected werden&lt;br /&gt;
 ./udphub -u 127.0.0.1:9007:9008 -l 1440 -p $USERPORT -w /tmp/udphub.log &amp;amp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei einem ausgehenden Connect ist natürlich zu beachten, dass es durchaus passieren könnte, dass der remote Node nach einiger Zeit auf demselben Port &#039;&#039;&#039;nicht mehr antwortet&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das passiert beispielsweise, wenn zwischen dem PR-Node und dem zu verbindenden User ein &#039;&#039;&#039;NAT dazwischen ist&#039;&#039;&#039; - beispielsweise weil das Packet-Gerät im LAN des OMs läuft und bei der Verbindung ins HAMNET mit der 44er IP der HAMNET-Antenne &#039;&#039;geNATted&#039;&#039; wird. In diesem Fall wird die &#039;&#039;&#039;NAT-Session&#039;&#039;&#039; irgendwann in &#039;&#039;&#039;Timeout&#039;&#039;&#039; gehen und folglich ein &#039;&#039;&#039;Connect von außen nicht mehr funktionieren.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In solchen Fällen gilt also: Soll der eigene PR-Node im QTH auch von außen via AXUDP verbindbar sein, dann ist darauf zu achten, dass dieser im idealfall selbst eine 44er IP aus dem HAMNET zugewiesen bekommt.&lt;br /&gt;
&lt;br /&gt;
In diesen Fällen ist es am besten, sich mit einem HAMNET-Sysop zu besprechen.&lt;br /&gt;
[[Kategorie:HAMNET]]&lt;br /&gt;
[[Kategorie:Digitaltechnik]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=PR-Digi_mit_Direwolf&amp;diff=62</id>
		<title>PR-Digi mit Direwolf</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=PR-Digi_mit_Direwolf&amp;diff=62"/>
		<updated>2025-08-26T13:02:46Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: Erste Beschreibung des Setups mit Multibaud + AXUDP Userzugang&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit recht einfachen Software-Mitteln ist es möglich, eine &#039;Moderne&#039; Variante eines Packet Radio Digipeaters zu betreiben, welche (abgesehen vom AF-Interface zum Funkgerät) ganz ohne Spezialhardware auskommt.&lt;br /&gt;
&lt;br /&gt;
Im folgenden wird ein Aufbau beschrieben, welcher sowohl einen Multibaud RF-Zugang, als auch einen HAMNET-Zugang über das AXUDP-Protokoll bereitstellen kann.&lt;br /&gt;
&lt;br /&gt;
=== Plattform ===&lt;br /&gt;
Als systemtechnische Plattform eignet sich im Grunde ein Mikro-PC ähnlich Raspberry PI, auf welchem ein Linux-Betriebssystem lauffähig ist. &lt;br /&gt;
&lt;br /&gt;
Auf unserem Standort [[Gantkofel IR3UGM]] läuft das in diesem Artikel beschriebene Setup beispielsweise mit einem OrangePi Zero (ARM Cortex A7 CPU mit 512MB RAM), aber es sind natürlich auch andere ARM- oder x86-Basierte Systeme möglich.&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist jedoch, dass - vor allem beim Betrieb von MultiBaud oder generell bei mehreren parallelen Zugängen - die verschiedenen Direwolf-Modems zeitgleich laufen und somit CPU-Last erzeugen.&lt;br /&gt;
&lt;br /&gt;
Etwas schnellere CPUs sind daher vorteilhaft.&lt;br /&gt;
&lt;br /&gt;
=== (Soft)Modem ===&lt;br /&gt;
Wo früher Hardware-TNCs ihre Arbeit verrichtet haben, kommen bei moderneren Setups vermehrt Software-Implementierungen zum Einsatz, die sich mittlerweile durchaus mit ihren Hardware-Pendants messen können.&lt;br /&gt;
&lt;br /&gt;
In unserem Setup wird als Software-Modem [https://github.com/wb2osz/direwolf Direwolf] verwendet, mit welchem das Basisband-Signal erzeugt bzw. decodiert werden kann.&lt;br /&gt;
&lt;br /&gt;
Dabei werden mehrere verschiedene Modulationsverfahren/Baudraten unterstützt, unter Anderem:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;1200baud AFSK&#039;&#039;&#039; (der Klassiker)&lt;br /&gt;
* &#039;&#039;&#039;2400bps&#039;&#039;&#039; nach &#039;&#039;&#039;ITU-T V.26b&#039;&#039;&#039;&lt;br /&gt;
** Sollte mit &amp;quot;klassischen&amp;quot; 1k2 fähigen Funkgeräten (also nur über Lautsprecher/Mikrofon Anschlüsse, ohne Zugang auf den FM-Diskriminator/Modulator) noch machbar sein&lt;br /&gt;
** hier wird ebenfalls eine Symbolrate von &#039;&#039;&#039;1200 Symbolen/Sekunde&#039;&#039;&#039; verwendet, jedoch mit &#039;&#039;&#039;4 möglichen Zuständen&#039;&#039;&#039;&lt;br /&gt;
** Somit können &#039;&#039;log2(4) = &#039;&#039;&#039;2&#039;&#039;&#039;&#039;&#039; &#039;&#039;&#039;bit pro Symbol&#039;&#039;&#039; übertragen werden&lt;br /&gt;
** 1200 Symbole/Sekunde * 2bit/Symbol = &#039;&#039;&#039;2400 bit/Sekunde&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;4800bps&#039;&#039;&#039; nach &#039;&#039;&#039;ITU-T V.27&#039;&#039;&#039;&lt;br /&gt;
** die Symbolrate beträgt hier &#039;&#039;&#039;1600 Symbole/Sekunde&#039;&#039;&#039;&lt;br /&gt;
** Das Modulationsschema benutzt &#039;&#039;&#039;8 mögliche Zustände&#039;&#039;&#039;&lt;br /&gt;
** Somit &#039;&#039;log2(8) = 3&#039;&#039; bit pro Symbol&lt;br /&gt;
** bei 1600Symbolen/Sekunde  ergibt das &#039;&#039;&#039;4800 bit/Sekunde&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für den Multibaud-Betrieb ist eine weitere Eigenheit zu beachten: Direwolf kann jeweils nur ein Modem pro Sound-Interface verwenden. &lt;br /&gt;
&lt;br /&gt;
Man kann sich jedoch eines Tricks des Linux-Audio-Subsystems ALSA bedienen: ALSA unterstützt nämlich &#039;&#039;&#039;virtuelle Sound-Interfaces&#039;&#039;&#039;, welche schlussendlich &amp;quot;gemixt&amp;quot; und auf das gleiche physische Audiogerät ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Somit ist es möglich, in der Direwolf-Konfiguration beispielsweise die Modems für 1k2, 2k4 und 4k8 gleichzeitig auf dem gleichen Audio-Interface und somit schlussendlich auf der gleichen QRG zu verwenden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für die Anbindung an die PR-Node-Software gilt zu beachten, dass Direwolf nur ein einziges Pseudo-TTY-Gerät anlegen kann. In unserem Fall bräuchten wir nun aber für 3 Modems folglich 3 Stück.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch hier bedienen wir uns eines kleinen Tricks, um die vorher definierten Direwolf-Modems anzubinden:&lt;br /&gt;
&lt;br /&gt;
Direwolf unterstützt zwar nur ein einziges Pseudo-TTY-Gerät, wohl aber mehrere TCP-KISS Verbindungen. Mit diesen kann aber unsere PR-Node-Software (X)Net nichts anfangen.&lt;br /&gt;
&lt;br /&gt;
Als Bindeglied dient deshalb das Tool &#039;&#039;udpflex&#039;&#039; aus der dxlAPRS Toolchain, welches sich als &#039;&#039;&#039;Bridge&#039;&#039;&#039; dazwischenschalten lässt und von &#039;&#039;&#039;TCP-KISS&#039;&#039;&#039; ins &#039;&#039;&#039;AXUDP&#039;&#039;&#039;-Protokoll konvertiert, welches in (X)Net problemlos angesprochen werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Port-Konfiguration in unserer Direwolf.conf sieht nun folgendermaßen aus:&lt;br /&gt;
 KISSPORT 8000 0&lt;br /&gt;
 KISSPORT 8001 2&lt;br /&gt;
 KISSPORT 8002 4&lt;br /&gt;
.. wobei der erste Wert den zu bindenden TCP-Port definiert, der Zweite steht für den CHANNEL (also das Modem).&lt;br /&gt;
&lt;br /&gt;
Zu beachten: die Channels in Direwolf sind immer STEREO (also immer Paarweise) zu verstehen; somit muss das zweite Modem &#039;&#039;CHANNEL 2&#039;&#039; (das dritte &#039;&#039;CHANNEL 4&#039;&#039; usw.) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun starten wir unsere udpflex-Instanzen, welche sich (option &amp;lt;code&amp;gt;-T host:port&amp;lt;/code&amp;gt;) mit den verschiedenen TCP-KISS Ports am lokalen Host verbinden und ihrerseits UDP-Ports (option &amp;lt;code&amp;gt;-U host:tx-port:rx-port&amp;lt;/code&amp;gt;) am lokalen Host öffnen, wo dann über AXUDP die AX.25 Pakete empfangen/gesendet werden:&lt;br /&gt;
 # udpflex als TCP-KISS &amp;lt;&amp;gt; AXUDP Bridge fuers Anbinden der drei Direwolf-Modems an XNET&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8000 -U 127.0.0.1:10001:10002 &amp;amp;&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8001 -U 127.0.0.1:10003:10004 &amp;amp;&lt;br /&gt;
 ./udpflex -T 127.0.0.1:8002 -U 127.0.0.1:10005:10006 &amp;amp;&lt;br /&gt;
Eine sehr hilfreiche Dokumentation von &#039;&#039;udpflex&#039;&#039; und den anderen Hilfsmitteln aus der dxlAPRS-Toolchain findet sich bei [https://dxlwiki.dl1nux.de/index.php?title=Udpflex dxlwiki.dl1nux.de]&lt;br /&gt;
&lt;br /&gt;
=== Packet-Router (X)Net ===&lt;br /&gt;
Als Packet Node Software bzw. Router ist (X)Net im Einsatz. Dieses ist auch auf neueren Plattformen noch Lauffähig.&lt;br /&gt;
&lt;br /&gt;
Die Anbindung zwischen afskmodem und (X)NET erfolgt wie vorher beschrieben über &#039;&#039;&#039;AXUDP&#039;&#039;&#039;, wobei pro Modem (=Baudrate) ein Port konfiguriert wid. &lt;br /&gt;
&lt;br /&gt;
Somit kann von (X)NET aus durch Auswahl des Ports gewählt werden, in welcher Baudrate eine Station via RF kontaktiert werden soll. Auch &#039;&#039;MHeard&#039;&#039; usw. wird dann entsprechend pro Port/Baudrate angezeigt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Attach-Befehle sehen in unserem Fall beispielsweise folgendermaßen aus:&lt;br /&gt;
 att ip0 axudp 1 1 l10001 d10002 127.0.0.1&lt;br /&gt;
 att ip1 axudp 2 1 l10003 d10004 127.0.0.1&lt;br /&gt;
 att ip2 axudp 3 1 l10005 d10006 127.0.0.1&lt;br /&gt;
Die TX- und RX-Ports müssen hier natürlich genau invertiert zur &#039;&#039;udpflex&#039;&#039;-Konfiguration angegeben werden&lt;br /&gt;
&lt;br /&gt;
=== AXUDP für Userzugang ===&lt;br /&gt;
Wenn neben dem Zugang via RF auch ein AXUDP-Zugang angeboten werden soll, braucht es dazu noch einmal einen kleinen Trick:&lt;br /&gt;
&lt;br /&gt;
(X)Net hat einen AXIP/AXUDP Treiber integriert, mit welchem AXUDP Verbindungen zu anderen Nodes gemacht werden können.&lt;br /&gt;
&lt;br /&gt;
Dabei nimmt (X)Net laut Doku aber aus Sicherheitsgründen nur AXUDP Frames an, die &#039;&#039;&#039;explizit vom konfigurierten Linkpartner kommen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wildcards o.Ä. können keine angegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als Workaround ist nach österreichischem Vorbild &#039;&#039;udphub&#039;&#039; aus der dxlAPRS Toolchain vorgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Konfigurationstechnisch stellt (X)Net eine &#039;&#039;&#039;AXUDP-Verbindung mit 127.0.0.1 her&#039;&#039;&#039; (bei uns beispielsweise über die Ports &#039;&#039;&#039;9007&#039;&#039;&#039; und &#039;&#039;&#039;9008&#039;&#039;&#039;), dort lauscht &#039;&#039;udphub&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Da für (X)Net nun alle Verbindungen &amp;quot;&#039;&#039;vom konfigurierten AXUDP-Partner 127.0.0.1 kommen&#039;&#039;&amp;quot;, ist (X)Net zufrieden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Diese Lösung hat außerdem noch einen weiteren Vorteil: &#039;&#039;udphub&#039;&#039; merkt sich die IP-Adressen der anrufenden Stationen für eine via Konfigurationsparameter definierbare Zeit und kann somit auch ausgehende Connects machen.&lt;br /&gt;
&lt;br /&gt;
Die Verwendung ist also gleich, wie bei Usern die via RF ankommen würden.&lt;br /&gt;
&lt;br /&gt;
 # Port fuer AXUDP User-Zugang &lt;br /&gt;
 USERPORT=10093 &lt;br /&gt;
 # udphub als AXUDP-Switch - Workaround damit XNET AXUDP Calls von Usern entgegennimmt &lt;br /&gt;
 # udphub merkt sich intern fuer die angegebene Zeitdauer (option -l in Sekunden) &lt;br /&gt;
 # die IP-Adressen/Ports der AXUDP-User. &lt;br /&gt;
 # Somit koennen ueber diesen Port auch Stationen connected werden&lt;br /&gt;
 ./udphub -u 127.0.0.1:9007:9008 -l 1440 -p $USERPORT -w /tmp/udphub.log &amp;amp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei einem ausgehenden Connect ist natürlich zu beachten, dass es durchaus passieren könnte, dass der remote Node nach einiger Zeit auf demselben Port &#039;&#039;&#039;nicht mehr antwortet&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das passiert beispielsweise, wenn zwischen dem PR-Node und dem zu verbindenden User ein &#039;&#039;&#039;NAT dazwischen ist&#039;&#039;&#039; - beispielsweise weil das Packet-Gerät im LAN des OMs läuft und bei der Verbindung ins HAMNET mit der 44er IP der HAMNET-Antenne &#039;&#039;geNATted&#039;&#039; wird. In diesem Fall wird die &#039;&#039;&#039;NAT-Session&#039;&#039;&#039; irgendwann in &#039;&#039;&#039;Timeout&#039;&#039;&#039; gehen und folglich ein &#039;&#039;&#039;Connect von außen nicht mehr funktionieren.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In solchen Fällen gilt also: Soll der eigene PR-Node im QTH auch von außen via AXUDP verbindbar sein, dann ist darauf zu achten, dass dieser im idealfall selbst eine 44er IP aus dem HAMNET zugewiesen bekommt.&lt;br /&gt;
&lt;br /&gt;
In diesen Fällen ist es am besten, sich mit einem HAMNET-Sysop zu besprechen.&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=61</id>
		<title>Gantkofel IR3UGM</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=61"/>
		<updated>2025-08-25T16:45:18Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: Standortfoto hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:Gantkofel-ir3ugm.png|alternativtext=Standort IR3UGM Gantkofel|mini|450x450px|Standort IR3UGM Gantkofel]]&lt;br /&gt;
Der &#039;&#039;&#039;Gantkofel&#039;&#039;&#039; ist 1.866 m hoch. Von dort hat man einen fabelhaften Ausblick auf die Stadt Meran, das Etschtal, die Gefrorene Wand (A), das Saltner Hochplateau, das Rittnerhorn, die Stadt Bozen und das Unterland mit Eppan und Kaltern. Im Winter ist der Gantkofel nur zu Fuß oder mit einer Schneekatze erreichbar.&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an die Zuständigen des fabelhaften Standortes Adrian, Bartl und Norbert IW3AKA von Radio Antenne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine Live-Web-Cam, die das aktuelle Panorama des Gantkofels bringt, findet man [https://www.foto-webcam.eu/webcam/gantkofel/ hier]!&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
&lt;br /&gt;
=== Packet Radio ===&lt;br /&gt;
Auf dem Gantkofel ist ein Packet-Radio Digipeater/Gateway installiert. Als Modem wird das Software-Modem &#039;&#039;Direwolf&#039;&#039; verwendet, welches auf einem Orange Pi Zero läuft.&lt;br /&gt;
&lt;br /&gt;
Als Packet Radio Router/Node Software läuft &#039;&#039;(X)Net.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der RF-Zugang auf &#039;&#039;&#039;144.900MHz&#039;&#039;&#039; ist Multi-Baud fähig (1k2 und 2k4). Neben dem RF-Zugang ist ein Hochgeschwindigkeits-Zugang via &#039;&#039;&#039;HAMNET/AXUDP&#039;&#039;&#039; verfügbar.&lt;br /&gt;
&lt;br /&gt;
Als einziger PR-Node des DRC stellt dieser Node einige Funktionen zur Verfügung, wie z.B. eine &amp;quot;textuelle Anzeige&amp;quot; vom Link Südtirol Dashboard. Vorbeischauen lohnt sich!&lt;br /&gt;
  * RF-Einstieg auf &#039;&#039;&#039;144.900 MHz&#039;&#039;&#039;, &#039;&#039;&#039;Multibaud&#039;&#039;&#039;-fähig (1200 baud, 2400 baud nach &#039;&#039;ITU V.26b&#039;&#039;)&lt;br /&gt;
  * AXUDP Einstieg via HAMNET, UDP Port &#039;&#039;&#039;10093&#039;&#039;&#039;&lt;br /&gt;
  * Flexnet Verbindung zu &#039;&#039;&#039;OE7XGR,&#039;&#039;&#039; via &#039;&#039;&#039;HAMNET&#039;&#039;&#039;&lt;br /&gt;
  * IGATE ist über OE7XGR erreichbar&lt;br /&gt;
&lt;br /&gt;
=== HAMNET ===&lt;br /&gt;
&lt;br /&gt;
==== Userzugang Bozen und Umgebung ====&lt;br /&gt;
  * RTX: &#039;&#039;&#039;Mikrotik Metal2&#039;&#039;&#039;&lt;br /&gt;
  * Antenne: &#039;&#039;&#039;120 Grad Sektorantenne, mit vorgeschaltetem Filter&#039;&#039;&#039;&lt;br /&gt;
  * Antennengewinn: &#039;&#039;&#039;17dBi&#039;&#039;&#039;&lt;br /&gt;
  * Standard: &#039;&#039;&#039;802.11n&#039;&#039;&#039;&lt;br /&gt;
  * Frequenz: &#039;&#039;&#039;2GHz-Band&#039;&#039;&#039; (für Einstiege bitte an Thomas IW3AMQ wenden)&lt;br /&gt;
  * Kanalbandbreite: &#039;&#039;&#039;5MHz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Richtfunk Rittnerhorn IR3UHF ====&lt;br /&gt;
  * Antenne: &#039;&#039;&#039;Parabolantenne&#039;&#039;&#039;&lt;br /&gt;
  * Antennengewinn: &#039;&#039;&#039;25dBi&#039;&#039;&#039;&lt;br /&gt;
  * Standard: &#039;&#039;&#039;802.11ac&#039;&#039;&#039;&lt;br /&gt;
  * Frequenz: &#039;&#039;&#039;5GHz-Band&#039;&#039;&#039;&lt;br /&gt;
  * Kanalbandbreite: &#039;&#039;&#039;20MHz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Richtfunk Marlinger Berg IR3UHE ====&lt;br /&gt;
  * Antenne: &#039;&#039;&#039;Grid-Parabel&#039;&#039;&#039;&lt;br /&gt;
  * RTX: &#039;&#039;&#039;Mikrotik Metal5&#039;&#039;&#039;&lt;br /&gt;
  * Band: &#039;&#039;&#039;5GHz&#039;&#039;&#039;&lt;br /&gt;
  * Kanalbandbreite: &#039;&#039;&#039;10MHz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Standorte]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=60</id>
		<title>Gantkofel IR3UGM</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=60"/>
		<updated>2025-08-25T10:30:07Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: /* Packet Radio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der &#039;&#039;&#039;Gantkofel&#039;&#039;&#039; ist 1.866 m hoch. Von dort hat man einen fabelhaften Ausblick auf die Stadt Meran, das Etschtal, die Gefrorene Wand (A), das Saltner Hochplateau, das Rittnerhorn, die Stadt Bozen und das Unterland mit Eppan und Kaltern. Im Winter ist der Gantkofel nur zu Fuß oder mit einer Schneekatze erreichbar.&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an die Zuständigen des fabelhaften Standortes Adrian, Bartl und Norbert IW3AKA von Radio Antenne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine Live-Web-Cam, die das aktuelle Panorama des Gantkofels bringt, findet man [https://www.foto-webcam.eu/webcam/gantkofel/ hier]!&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
&lt;br /&gt;
=== Packet Radio ===&lt;br /&gt;
Auf dem Gantkofel ist ein Packet-Radio Digipeater/Gateway installiert. Als Modem wird das Software-Modem &#039;&#039;Direwolf&#039;&#039; verwendet, welches auf einem Orange Pi Zero läuft.&lt;br /&gt;
&lt;br /&gt;
Als Packet Radio Router/Node Software läuft &#039;&#039;(X)Net.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der RF-Zugang auf &#039;&#039;&#039;144.900MHz&#039;&#039;&#039; ist Multi-Baud fähig (1k2 und 2k4). Neben dem RF-Zugang ist ein Hochgeschwindigkeits-Zugang via &#039;&#039;&#039;HAMNET/AXUDP&#039;&#039;&#039; verfügbar.&lt;br /&gt;
&lt;br /&gt;
Als einziger PR-Node des DRC stellt dieser Node einige Funktionen zur Verfügung, wie z.B. eine &amp;quot;textuelle Anzeige&amp;quot; vom Link Südtirol Dashboard. Vorbeischauen lohnt sich!&lt;br /&gt;
  * RF-Einstieg auf &#039;&#039;&#039;144.900 MHz&#039;&#039;&#039;, &#039;&#039;&#039;Multibaud&#039;&#039;&#039;-fähig (1200 baud, 2400 baud nach &#039;&#039;ITU V.26b&#039;&#039;)&lt;br /&gt;
  * AXUDP Einstieg via HAMNET, UDP Port &#039;&#039;&#039;10093&#039;&#039;&#039;&lt;br /&gt;
  * Flexnet Verbindung zu &#039;&#039;&#039;OE7XGR,&#039;&#039;&#039; via &#039;&#039;&#039;HAMNET&#039;&#039;&#039;&lt;br /&gt;
  * IGATE ist über OE7XGR erreichbar&lt;br /&gt;
&lt;br /&gt;
=== HAMNET ===&lt;br /&gt;
&lt;br /&gt;
==== IR3UGM-1 ====&lt;br /&gt;
  * Haupt-Router am Standort Gantkofel&lt;br /&gt;
  * **Mikrotik RB750UP** im Rack&lt;br /&gt;
&lt;br /&gt;
==== IR3UGM_SW ====&lt;br /&gt;
  * 24Port 100MBit Switch von TP-LINK&lt;br /&gt;
  * im Rack installiert&lt;br /&gt;
  * Hier werden alle Geräte am Standort angeschlossen&lt;br /&gt;
&lt;br /&gt;
==== Richtfunk Marlinger Berg IR3UHE ====&lt;br /&gt;
  * Antenne: Grid-Parabel**&lt;br /&gt;
  * RTX: Mikrotik Metal5&lt;br /&gt;
  * Band: 5GHz&lt;br /&gt;
  * Kanalbandbreite: 10MHz**&lt;br /&gt;
  * Protokoll: DMA&lt;br /&gt;
  * TDMA-Zeitschlitzdauer: **8ms**&lt;br /&gt;
&lt;br /&gt;
==== Userzugang Bozen und Umgebung ====&lt;br /&gt;
  * RTX: &#039;&#039;&#039;Mikrotik Metal2&#039;&#039;&#039;&lt;br /&gt;
  * Antenne: &#039;&#039;&#039;120 Grad Sektorantenne, mit vorgeschaltetem Filter&#039;&#039;&#039;&lt;br /&gt;
  * Antennengewinn: &#039;&#039;&#039;17dBi&#039;&#039;&#039;&lt;br /&gt;
  * Standard: &#039;&#039;&#039;802.11n&#039;&#039;&#039;&lt;br /&gt;
  * Frequenz: &#039;&#039;&#039;2GHz-Band&#039;&#039;&#039; (für Einstiege bitte an Thomas IW3AMQ wenden)&lt;br /&gt;
  * Kanalbandbreite: &#039;&#039;&#039;5MHz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Richtfunk Rittnerhorn IR3UHF ====&lt;br /&gt;
  * Antenne: &#039;&#039;&#039;Parabolantenne&#039;&#039;&#039;&lt;br /&gt;
  * Antennengewinn: &#039;&#039;&#039;25dBi&#039;&#039;&#039;&lt;br /&gt;
  * Standard: &#039;&#039;&#039;802.11ac&#039;&#039;&#039;&lt;br /&gt;
  * Frequenz: &#039;&#039;&#039;5GHz-Band&#039;&#039;&#039;&lt;br /&gt;
  * Kanalbandbreite: &#039;&#039;&#039;20MHz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Standorte]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=59</id>
		<title>Gantkofel IR3UGM</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=59"/>
		<updated>2025-08-25T09:30:15Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: /* Packet Radio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der &#039;&#039;&#039;Gantkofel&#039;&#039;&#039; ist 1.866 m hoch. Von dort hat man einen fabelhaften Ausblick auf die Stadt Meran, das Etschtal, die Gefrorene Wand (A), das Saltner Hochplateau, das Rittnerhorn, die Stadt Bozen und das Unterland mit Eppan und Kaltern. Im Winter ist der Gantkofel nur zu Fuß oder mit einer Schneekatze erreichbar.&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an die Zuständigen des fabelhaften Standortes Adrian, Bartl und Norbert IW3AKA von Radio Antenne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine Live-Web-Cam, die das aktuelle Panorama des Gantkofels bringt, findet man [https://www.foto-webcam.eu/webcam/gantkofel/ hier]!&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
&lt;br /&gt;
=== Packet Radio ===&lt;br /&gt;
Auf dem Gantkofel ist ein Packet-Radio Digipeater/Gateway installiert. Als Modem wird das Software-Modem &#039;&#039;Direwolf&#039;&#039; verwendet, welches auf einem Orange Pi Zero läuft.&lt;br /&gt;
&lt;br /&gt;
Als Packet Radio Router/Node Software läuft &#039;&#039;(X)Net.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der RF-Zugang auf &#039;&#039;&#039;144.900MHz&#039;&#039;&#039; ist Multi-Baud fähig (1k2 und 2k4). Neben dem RF-Zugang ist ein Hochgeschwindigkeits-Zugang via &#039;&#039;&#039;HAMNET/AXUDP&#039;&#039;&#039; verfügbar.&lt;br /&gt;
&lt;br /&gt;
Als einziger PR-Node des DRC stellt dieser Node einige Funktionen zur Verfügung, wie z.B. eine &amp;quot;textuelle Anzeige&amp;quot; vom Link Südtirol Dashboard. Vorbeischauen lohnt sich!&lt;br /&gt;
  * RF-Einstieg auf &#039;&#039;&#039;144.900 MHz&#039;&#039;&#039;, &#039;&#039;&#039;Multibaud&#039;&#039;&#039;-fähig (1200 baud, 2400 baud nach &#039;&#039;ITU V.26b&#039;&#039;)&lt;br /&gt;
  * AXUDP Einstieg via HAMNET, UDP Port &#039;&#039;&#039;10093&#039;&#039;&#039;&lt;br /&gt;
  * Flexnet Verbindung zu &#039;&#039;&#039;IGATE&#039;&#039;&#039; und &#039;&#039;&#039;OE7XGR,&#039;&#039;&#039; via &#039;&#039;&#039;HAMNET&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== HAMNET ===&lt;br /&gt;
&lt;br /&gt;
==== IR3UGM-1 ====&lt;br /&gt;
  * Haupt-Router am Standort Gantkofel&lt;br /&gt;
  * **Mikrotik RB750UP** im Rack&lt;br /&gt;
&lt;br /&gt;
==== IR3UGM_SW ====&lt;br /&gt;
  * 24Port 100MBit Switch von TP-LINK&lt;br /&gt;
  * im Rack installiert&lt;br /&gt;
  * Hier werden alle Geräte am Standort angeschlossen&lt;br /&gt;
&lt;br /&gt;
==== Richtfunk Marlinger Berg IR3UHE ====&lt;br /&gt;
  * Antenne: Grid-Parabel**&lt;br /&gt;
  * RTX: Mikrotik Metal5&lt;br /&gt;
  * Band: 5GHz&lt;br /&gt;
  * Kanalbandbreite: 10MHz**&lt;br /&gt;
  * Protokoll: DMA&lt;br /&gt;
  * TDMA-Zeitschlitzdauer: **8ms**&lt;br /&gt;
&lt;br /&gt;
==== Userzugang Bozen und Umgebung ====&lt;br /&gt;
  * RTX: &#039;&#039;&#039;Mikrotik Metal2&#039;&#039;&#039;&lt;br /&gt;
  * Antenne: &#039;&#039;&#039;120 Grad Sektorantenne, mit vorgeschaltetem Filter&#039;&#039;&#039;&lt;br /&gt;
  * Antennengewinn: &#039;&#039;&#039;17dBi&#039;&#039;&#039;&lt;br /&gt;
  * Standard: &#039;&#039;&#039;802.11n&#039;&#039;&#039;&lt;br /&gt;
  * Frequenz: &#039;&#039;&#039;2GHz-Band&#039;&#039;&#039; (für Einstiege bitte an Thomas IW3AMQ wenden)&lt;br /&gt;
  * Kanalbandbreite: &#039;&#039;&#039;5MHz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Richtfunk Rittnerhorn IR3UHF ====&lt;br /&gt;
  * Antenne: &#039;&#039;&#039;Parabolantenne&#039;&#039;&#039;&lt;br /&gt;
  * Antennengewinn: &#039;&#039;&#039;25dBi&#039;&#039;&#039;&lt;br /&gt;
  * Standard: &#039;&#039;&#039;802.11ac&#039;&#039;&#039;&lt;br /&gt;
  * Frequenz: &#039;&#039;&#039;5GHz-Band&#039;&#039;&#039;&lt;br /&gt;
  * Kanalbandbreite: &#039;&#039;&#039;20MHz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Standorte]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=58</id>
		<title>Gantkofel IR3UGM</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=58"/>
		<updated>2025-08-25T09:28:53Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der &#039;&#039;&#039;Gantkofel&#039;&#039;&#039; ist 1.866 m hoch. Von dort hat man einen fabelhaften Ausblick auf die Stadt Meran, das Etschtal, die Gefrorene Wand (A), das Saltner Hochplateau, das Rittnerhorn, die Stadt Bozen und das Unterland mit Eppan und Kaltern. Im Winter ist der Gantkofel nur zu Fuß oder mit einer Schneekatze erreichbar.&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an die Zuständigen des fabelhaften Standortes Adrian, Bartl und Norbert IW3AKA von Radio Antenne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine Live-Web-Cam, die das aktuelle Panorama des Gantkofels bringt, findet man [https://www.foto-webcam.eu/webcam/gantkofel/ hier]!&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
&lt;br /&gt;
=== Packet Radio ===&lt;br /&gt;
Auf dem Gantkofel ist ein Packet-Radio Digipeater/Gateway installiert. Als Modem wird das Software-Modem &#039;&#039;Direwolf&#039;&#039; verwendet, welches auf einem Orange Pi Zero läuft.&lt;br /&gt;
&lt;br /&gt;
Als Packet Radio Router/Node Software läuft &#039;&#039;(X)Net.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der RF-Zugang auf &#039;&#039;&#039;144.800MHz&#039;&#039;&#039; ist Multi-Baud fähig (1k2 und 2k4). Neben dem RF-Zugang ist ein Hochgeschwindigkeits-Zugang via &#039;&#039;&#039;HAMNET/AXUDP&#039;&#039;&#039; verfügbar.&lt;br /&gt;
&lt;br /&gt;
Als einziger PR-Node des DRC stellt dieser PR-Node einige Funktionen zur Verfügung, wie z.B. eine &amp;quot;textuelle Anzeige&amp;quot; vom Link Südtirol Dashboard und einige andere. Vorbeischauen lohnt sich!&lt;br /&gt;
  * RF-Einstieg auf &#039;&#039;&#039;144.900 MHz&#039;&#039;&#039;, &#039;&#039;&#039;Multibaud&#039;&#039;&#039;-fähig (1200 baud, 2400 baud nach &#039;&#039;ITU V.26b&#039;&#039;)&lt;br /&gt;
  * AXUDP Einstieg via HAMNET, UDP Port &#039;&#039;&#039;10093&#039;&#039;&#039;&lt;br /&gt;
  * Flexnet Verbindung zu &#039;&#039;&#039;IGATE&#039;&#039;&#039; und &#039;&#039;&#039;OE7XGR,&#039;&#039;&#039; via &#039;&#039;&#039;HAMNET&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== HAMNET ===&lt;br /&gt;
&lt;br /&gt;
==== IR3UGM-1 ====&lt;br /&gt;
  * Haupt-Router am Standort Gantkofel&lt;br /&gt;
  * **Mikrotik RB750UP** im Rack&lt;br /&gt;
&lt;br /&gt;
==== IR3UGM_SW ====&lt;br /&gt;
  * 24Port 100MBit Switch von TP-LINK&lt;br /&gt;
  * im Rack installiert&lt;br /&gt;
  * Hier werden alle Geräte am Standort angeschlossen&lt;br /&gt;
&lt;br /&gt;
==== Richtfunk Marlinger Berg IR3UHE ====&lt;br /&gt;
  * Antenne: Grid-Parabel**&lt;br /&gt;
  * RTX: Mikrotik Metal5&lt;br /&gt;
  * Band: 5GHz&lt;br /&gt;
  * Kanalbandbreite: 10MHz**&lt;br /&gt;
  * Protokoll: DMA&lt;br /&gt;
  * TDMA-Zeitschlitzdauer: **8ms**&lt;br /&gt;
&lt;br /&gt;
==== Userzugang Bozen und Umgebung ====&lt;br /&gt;
  * RTX: &#039;&#039;&#039;Mikrotik Metal2&#039;&#039;&#039;&lt;br /&gt;
  * Antenne: &#039;&#039;&#039;120 Grad Sektorantenne, mit vorgeschaltetem Filter&#039;&#039;&#039;&lt;br /&gt;
  * Antennengewinn: &#039;&#039;&#039;17dBi&#039;&#039;&#039;&lt;br /&gt;
  * Standard: &#039;&#039;&#039;802.11n&#039;&#039;&#039;&lt;br /&gt;
  * Frequenz: &#039;&#039;&#039;2GHz-Band&#039;&#039;&#039; (für Einstiege bitte an Thomas IW3AMQ wenden)&lt;br /&gt;
  * Kanalbandbreite: &#039;&#039;&#039;5MHz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Richtfunk Rittnerhorn IR3UHF ====&lt;br /&gt;
  * Antenne: &#039;&#039;&#039;Parabolantenne&#039;&#039;&#039;&lt;br /&gt;
  * Antennengewinn: &#039;&#039;&#039;25dBi&#039;&#039;&#039;&lt;br /&gt;
  * Standard: &#039;&#039;&#039;802.11ac&#039;&#039;&#039;&lt;br /&gt;
  * Frequenz: &#039;&#039;&#039;5GHz-Band&#039;&#039;&#039;&lt;br /&gt;
  * Kanalbandbreite: &#039;&#039;&#039;20MHz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Standorte]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=57</id>
		<title>Gantkofel IR3UGM</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=57"/>
		<updated>2025-08-25T09:25:36Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der &#039;&#039;&#039;Gantkofel&#039;&#039;&#039; ist 1.866 m hoch. Von dort hat man einen fabelhaften Ausblick auf die Stadt Meran, das Etschtal, die Gefrorene Wand (A), das Saltner Hochplateau, das Rittnerhorn, die Stadt Bozen und das Unterland mit Eppan und Kaltern. Im Winter ist der Gantkofel nur zu Fuß oder mit einer Schneekatze erreichbar.&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an die Zuständigen des fabelhaften Standortes Adrian, Bartl und Norbert IW3AKA von Radio Antenne.&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an die Autonome Provinz Bozen und Trient für die Gastfreundschaft in den Gebäuden des Wetterradars (R7 – Ari Bozen).&lt;br /&gt;
&lt;br /&gt;
Eine Live-Web-Cam, die das aktuelle Panorama des Gantkofels bringt, findet man [https://www.foto-webcam.eu/webcam/gantkofel/ hier]!&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
&lt;br /&gt;
=== Packet Radio ===&lt;br /&gt;
Auf dem Gantkofel ist ein Packet-Radio Digipeater/Gateway installiert. Als Modem wird das Software-Modem &#039;&#039;Direwolf&#039;&#039; verwendet, welches auf einem Orange Pi Zero läuft.&lt;br /&gt;
&lt;br /&gt;
Als Packet Radio Router/Node Software läuft &#039;&#039;(X)Net.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der RF-Zugang auf &#039;&#039;&#039;144.800MHz&#039;&#039;&#039; ist Multi-Baud fähig (1k2 und 2k4). Neben dem RF-Zugang ist ein Hochgeschwindigkeits-Zugang via &#039;&#039;&#039;HAMNET/AXUDP&#039;&#039;&#039; verfügbar.&lt;br /&gt;
&lt;br /&gt;
Als einziger PR-Node des DRC stellt dieser PR-Node einige Funktionen zur Verfügung, wie z.B. eine &amp;quot;textuelle Anzeige&amp;quot; vom Link Südtirol Dashboard und einige andere. Vorbeischauen lohnt sich!&lt;br /&gt;
  * RF-Einstieg auf &#039;&#039;&#039;144.900 MHz&#039;&#039;&#039;, &#039;&#039;&#039;Multibaud&#039;&#039;&#039;-fähig (1200 baud, 2400 baud nach &#039;&#039;ITU V.26b&#039;&#039;)&lt;br /&gt;
  * AXUDP Einstieg via HAMNET, UDP Port &#039;&#039;&#039;10093&#039;&#039;&#039;&lt;br /&gt;
  * Flexnet Verbindung zu &#039;&#039;&#039;IGATE&#039;&#039;&#039; und &#039;&#039;&#039;OE7XGR,&#039;&#039;&#039; via &#039;&#039;&#039;HAMNET&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== HAMNET ===&lt;br /&gt;
&lt;br /&gt;
==== IR3UGM-1 ====&lt;br /&gt;
  * Haupt-Router am Standort Gantkofel&lt;br /&gt;
  * **Mikrotik RB750UP** im Rack&lt;br /&gt;
&lt;br /&gt;
==== IR3UGM_SW ====&lt;br /&gt;
  * 24Port 100MBit Switch von TP-LINK&lt;br /&gt;
  * im Rack installiert&lt;br /&gt;
  * Hier werden alle Geräte am Standort angeschlossen&lt;br /&gt;
&lt;br /&gt;
==== Richtfunk Marlinger Berg IR3UHE ====&lt;br /&gt;
  * Antenne: Grid-Parabel**&lt;br /&gt;
  * RTX: Mikrotik Metal5&lt;br /&gt;
  * Band: 5GHz&lt;br /&gt;
  * Kanalbandbreite: 10MHz**&lt;br /&gt;
  * Protokoll: DMA&lt;br /&gt;
  * TDMA-Zeitschlitzdauer: **8ms**&lt;br /&gt;
&lt;br /&gt;
==== Userzugang Bozen und Umgebung ====&lt;br /&gt;
  * RTX: &#039;&#039;&#039;Mikrotik Metal2&#039;&#039;&#039;&lt;br /&gt;
  * Antenne: &#039;&#039;&#039;120 Grad Sektorantenne, mit vorgeschaltetem Filter&#039;&#039;&#039;&lt;br /&gt;
  * Antennengewinn: &#039;&#039;&#039;17dBi&#039;&#039;&#039;&lt;br /&gt;
  * Standard: &#039;&#039;&#039;802.11n&#039;&#039;&#039;&lt;br /&gt;
  * Frequenz: &#039;&#039;&#039;2GHz-Band&#039;&#039;&#039; (für Einstiege bitte an Thomas IW3AMQ wenden)&lt;br /&gt;
  * Kanalbandbreite: &#039;&#039;&#039;5MHz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Richtfunk Rittnerhorn IR3UHF ====&lt;br /&gt;
  * Antenne: &#039;&#039;&#039;Parabolantenne&#039;&#039;&#039;&lt;br /&gt;
  * Antennengewinn: &#039;&#039;&#039;25dBi&#039;&#039;&#039;&lt;br /&gt;
  * Standard: &#039;&#039;&#039;802.11ac&#039;&#039;&#039;&lt;br /&gt;
  * Frequenz: &#039;&#039;&#039;5GHz-Band&#039;&#039;&#039;&lt;br /&gt;
  * Kanalbandbreite: &#039;&#039;&#039;20MHz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Standorte]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Graunerberg_IR3UFL&amp;diff=56</id>
		<title>Graunerberg IR3UFL</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Graunerberg_IR3UFL&amp;diff=56"/>
		<updated>2025-08-25T08:39:01Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Alm am Grauner Berg ist 2.352 m hoch. Von dort hat man einen fabelhaften Ausblick Richtung Westen zum Standort Schöneben, nach Süden zum Ortler und Chavalatsch und nach Osten ins Langtauferertal.[[Datei:Graunerberg-standort.png|alternativtext=Standort Graunerberg inkl. Installationsteam|mini|398x398px|Standort Graunerberg inkl. Installationsteam]]&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung ==&lt;br /&gt;
&lt;br /&gt;
=== Solarzellen ===&lt;br /&gt;
&lt;br /&gt;
    - Leistung: &#039;&#039;&#039;140 W&#039;&#039;&#039;&lt;br /&gt;
    - Spannung: &#039;&#039;&#039;18 V&#039;&#039;&#039; &lt;br /&gt;
    - Anzahl: &#039;&#039;&#039;2&#039;&#039;&#039; &lt;br /&gt;
    - Sicherungen: &#039;&#039;&#039;2 x arretrierbare Sicherungen zu 20 A (auf + und auf GND)&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
=== Batterien ===&lt;br /&gt;
[[Datei:Graunerberg-batterien.png|links|mini|389x389px|Eigenbau LTO-Batterie am Graunerberg*]]&lt;br /&gt;
    - Typologie: &#039;&#039;&#039;LTO&#039;&#039;&#039; (Lithiun Titanat Oxyd)&lt;br /&gt;
    - Anzahl Zellen: &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
    - Nominalspannung Einzelzelle: &#039;&#039;&#039;2,3 V&#039;&#039;&#039;&lt;br /&gt;
    - Kapazität Einzelzelle: &#039;&#039;&#039;40 Ah&#039;&#039;&#039;&lt;br /&gt;
    - Konfiguration: &#039;&#039;&#039;2 Zellen parallel, 5 Zellen serie&#039;&#039;&#039;&lt;br /&gt;
    - Nominalspannung Block: &#039;&#039;&#039;11,5 V&#039;&#039;&#039;&lt;br /&gt;
    - Kapazität Block: &#039;&#039;&#039;80 Ah&#039;&#039;&#039;&lt;br /&gt;
    - BMS (Batteriemanagementsystem): &#039;&#039;&#039;5S2P - 12 V / 80 A&#039;&#039;&#039;&lt;br /&gt;
    - Sicherungen: &#039;&#039;&#039;2 x arretrierbare Sicherungen zu 20 A&#039;&#039;&#039; (auf + und auf GND)&lt;br /&gt;
 &lt;br /&gt;
 *Auf dem Label der Batterie im Foto ist fälschlicherweise &amp;quot;&#039;&#039;&#039;10S1P&#039;&#039;&#039;&amp;quot; angegeben. Richtig ist natürlich &#039;&#039;&#039;5S2P&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Laderegler ===&lt;br /&gt;
[[Datei:Graunerberg-laderegler.png|mini|326x326px|EPEVER Tracer 2210 Laderegler]]&lt;br /&gt;
    - Marke: &#039;&#039;&#039;EPEVER&#039;&#039;&#039;&lt;br /&gt;
    - Modell: &#039;&#039;&#039;Tracer 2210 AN&#039;&#039;&#039;&lt;br /&gt;
    - Max. Strom: &#039;&#039;&#039;20 A&#039;&#039;&#039;&lt;br /&gt;
    - Spannung: &#039;&#039;&#039;12 V&#039;&#039;&#039;&lt;br /&gt;
    - Leistung: &#039;&#039;&#039;260 W&#039;&#039;&#039;&lt;br /&gt;
Der Laderegler verfügt über eine RS485-Schnittstelle, an welcher ein Raspberry Pi angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Eine selbstgebaute Software auf dem Raspberry Pi liest im Minutentakt die einzelnen Parameter über RS485 vom Laderegler aus und übertragt diese an den MQTT Server am Rittnerhorn, wo sie von jedem interessierten OM via [[:Kategorie:HAMNET|HAMNET]] eingesehen werden können.&lt;br /&gt;
&lt;br /&gt;
=== Spannungsregler ===&lt;br /&gt;
&lt;br /&gt;
    - Upconverter: &#039;&#039;&#039;8-14 V =&amp;gt; 24 V / 8 A&#039;&#039;&#039;&lt;br /&gt;
    - Downconverter: &#039;&#039;&#039;24 V =&amp;gt; 12 V / 10 A (Webcam)&#039;&#039;&#039;&lt;br /&gt;
    - Downconverter: &#039;&#039;&#039;24 V =&amp;gt; 5 V / 1,5 A (Raspberry für Solarregler)&#039;&#039;&#039;&lt;br /&gt;
[[Datei:Graunerberg-blockschaltbild.png|zentriert|mini|466x466px|Blockschaltbild]]&lt;br /&gt;
&lt;br /&gt;
== Hamnet ==&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
    - Marke: &#039;&#039;&#039;Mikrotik&#039;&#039;&#039;&lt;br /&gt;
    - Modell: &#039;&#039;&#039;RB750up&#039;&#039;&#039;&lt;br /&gt;
    - Spannungsversorgung: &#039;&#039;&#039;24 V&#039;&#039;&#039;&lt;br /&gt;
    - Portbelegung: &#039;&#039;&#039;siehe Blockschaltbild am Ende der Seite&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Link Schöneben ===&lt;br /&gt;
    - Band: &#039;&#039;&#039;5 GHz&#039;&#039;&#039;&lt;br /&gt;
    - Marke: &#039;&#039;&#039;Mikrotik&#039;&#039;&#039;&lt;br /&gt;
    - Modell: &#039;&#039;&#039;SxtSQ&#039;&#039;&#039;&lt;br /&gt;
    - Spannungsversorgung: &#039;&#039;&#039;POE via Router&#039;&#039;&#039;&lt;br /&gt;
    - Installationsort: &#039;&#039;&#039;Hauswand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Link Chavalatsch ===&lt;br /&gt;
    - Band: &#039;&#039;&#039;5 GHz&#039;&#039;&#039;&lt;br /&gt;
    - Marke: &#039;&#039;&#039;Mikrotik&#039;&#039;&#039;&lt;br /&gt;
    - Modell: &#039;&#039;&#039;QRT5&#039;&#039;&#039;&lt;br /&gt;
    - Spannungsversorgung: &#039;&#039;&#039;POE via Router&#039;&#039;&#039;&lt;br /&gt;
    - Installationsort: &#039;&#039;&#039;Hauswand&#039;&#039;&#039;&lt;br /&gt;
[[Kategorie:Standorte]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Graunerberg_IR3UFL&amp;diff=55</id>
		<title>Graunerberg IR3UFL</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Graunerberg_IR3UFL&amp;diff=55"/>
		<updated>2025-08-25T08:33:06Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Alm am Grauner Berg ist 2.352 m hoch. Von dort hat man einen fabelhaften Ausblick Richtung Westen zum Standort Schöneben, nach Süden zum Ortler und Chavalatsch und nach Osten ins Langtauferertal.[[Datei:Graunerberg-standort.png|alternativtext=Standort Graunerberg inkl. Installationsteam|mini|398x398px|Standort Graunerberg inkl. Installationsteam]]&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung ==&lt;br /&gt;
&lt;br /&gt;
=== Solarzellen ===&lt;br /&gt;
&lt;br /&gt;
    - Leistung: &#039;&#039;&#039;140 W&#039;&#039;&#039;&lt;br /&gt;
    - Spannung: &#039;&#039;&#039;18 V&#039;&#039;&#039; &lt;br /&gt;
    - Anzahl: &#039;&#039;&#039;2&#039;&#039;&#039; &lt;br /&gt;
    - Sicherungen: &#039;&#039;&#039;2 x arretrierbare Sicherungen zu 20 A (auf + und auf GND)&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
=== Batterien ===&lt;br /&gt;
[[Datei:Graunerberg-batterien.png|links|mini|389x389px|Eigenbau LTO-Batterie am Graunerberg*]]&lt;br /&gt;
    - Typologie: &#039;&#039;&#039;LTO&#039;&#039;&#039; (Lithiun Titanat Oxyd)&lt;br /&gt;
    - Anzahl Zellen: &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
    - Nominalspannung Einzelzelle: &#039;&#039;&#039;2,3 V&#039;&#039;&#039;&lt;br /&gt;
    - Kapazität Einzelzelle: &#039;&#039;&#039;40 Ah&#039;&#039;&#039;&lt;br /&gt;
    - Konfiguration: &#039;&#039;&#039;2 Zellen parallel, 5 Zellen serie&#039;&#039;&#039;&lt;br /&gt;
    - Nominalspannung Block: &#039;&#039;&#039;11,5 V&#039;&#039;&#039;&lt;br /&gt;
    - Kapazität Block: &#039;&#039;&#039;80 Ah&#039;&#039;&#039;&lt;br /&gt;
    - BMS (Batteriemanagementsystem): &#039;&#039;&#039;5S2P - 12 V / 80 A&#039;&#039;&#039;&lt;br /&gt;
    - Sicherungen: &#039;&#039;&#039;2 x arretrierbare Sicherungen zu 20 A&#039;&#039;&#039; (auf + und auf GND)&lt;br /&gt;
 &lt;br /&gt;
 *Auf dem Label der Batterie im Foto ist fälschlicherweise &amp;quot;&#039;&#039;&#039;10S1P&#039;&#039;&#039;&amp;quot; angegeben. Richtig ist natürlich &#039;&#039;&#039;5S2P&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Laderegler ===&lt;br /&gt;
[[Datei:Graunerberg-laderegler.png|mini|326x326px|EPEVER Tracer 2210 Laderegler]]&lt;br /&gt;
    - Marke: &#039;&#039;&#039;EPEVER&#039;&#039;&#039;&lt;br /&gt;
    - Modell: &#039;&#039;&#039;Tracer 2210 AN&#039;&#039;&#039;&lt;br /&gt;
    - Max. Strom: &#039;&#039;&#039;20 A&#039;&#039;&#039;&lt;br /&gt;
    - Spannung: &#039;&#039;&#039;12 V&#039;&#039;&#039;&lt;br /&gt;
    - Leistung: &#039;&#039;&#039;260 W&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Spannungsregler ===&lt;br /&gt;
&lt;br /&gt;
    - Upconverter: &#039;&#039;&#039;8-14 V =&amp;gt; 24 V / 8 A&#039;&#039;&#039;&lt;br /&gt;
    - Downconverter: &#039;&#039;&#039;24 V =&amp;gt; 12 V / 10 A (Webcam)&#039;&#039;&#039;&lt;br /&gt;
    - Downconverter: &#039;&#039;&#039;24 V =&amp;gt; 5 V / 1,5 A (Raspberry für Solarregler)&#039;&#039;&#039;&lt;br /&gt;
[[Datei:Graunerberg-blockschaltbild.png|zentriert|mini|466x466px|Blockschaltbild]]&lt;br /&gt;
&lt;br /&gt;
== Hamnet ==&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
    - Marke: &#039;&#039;&#039;Mikrotik&#039;&#039;&#039;&lt;br /&gt;
    - Modell: &#039;&#039;&#039;RB750up&#039;&#039;&#039;&lt;br /&gt;
    - Spannungsversorgung: &#039;&#039;&#039;24 V&#039;&#039;&#039;&lt;br /&gt;
    - Portbelegung: &#039;&#039;&#039;siehe Blockschaltbild am Ende der Seite&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Link Schöneben ===&lt;br /&gt;
    - Band: &#039;&#039;&#039;5 GHz&#039;&#039;&#039;&lt;br /&gt;
    - Marke: &#039;&#039;&#039;Mikrotik&#039;&#039;&#039;&lt;br /&gt;
    - Modell: &#039;&#039;&#039;SxtSQ&#039;&#039;&#039;&lt;br /&gt;
    - Spannungsversorgung: &#039;&#039;&#039;POE via Router&#039;&#039;&#039;&lt;br /&gt;
    - Installationsort: &#039;&#039;&#039;Hauswand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Link Chavalatsch ===&lt;br /&gt;
    - Band: &#039;&#039;&#039;5 GHz&#039;&#039;&#039;&lt;br /&gt;
    - Marke: &#039;&#039;&#039;Mikrotik&#039;&#039;&#039;&lt;br /&gt;
    - Modell: &#039;&#039;&#039;QRT5&#039;&#039;&#039;&lt;br /&gt;
    - Spannungsversorgung: &#039;&#039;&#039;POE via Router&#039;&#039;&#039;&lt;br /&gt;
    - Installationsort: &#039;&#039;&#039;Hauswand&#039;&#039;&#039;&lt;br /&gt;
[[Kategorie:Standorte]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Graunerberg_IR3UFL&amp;diff=54</id>
		<title>Graunerberg IR3UFL</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Graunerberg_IR3UFL&amp;diff=54"/>
		<updated>2025-08-25T08:28:45Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: intro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Alm am Grauner Berg ist 2.352 m hoch. Von dort hat man einen fabelhaften Ausblick Richtung Westen zum Standort Schöneben, nach Süden zum Ortler und Chavalatsch und nach Osten ins Langtauferertal.[[Datei:Graunerberg-standort.png|alternativtext=Standort Graunerberg inkl. Installationsteam|mini|398x398px|Standort Graunerberg inkl. Installationsteam]]&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung ==&lt;br /&gt;
&lt;br /&gt;
=== Solarzellen ===&lt;br /&gt;
&lt;br /&gt;
    - Leistung: &#039;&#039;&#039;140 W&#039;&#039;&#039;&lt;br /&gt;
    - Spannung: &#039;&#039;&#039;18 V&#039;&#039;&#039; &lt;br /&gt;
    - Anzahl: &#039;&#039;&#039;2&#039;&#039;&#039; &lt;br /&gt;
    - Sicherungen: &#039;&#039;&#039;2 x arretrierbare Sicherungen zu 20 A (auf + und auf GND)&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
=== Batterien ===&lt;br /&gt;
[[Datei:Graunerberg-batterien.png|links|mini|389x389px|Eigenbau LTO-Batterie am Graunerberg*]]&lt;br /&gt;
    - Typologie: &#039;&#039;&#039;LTO&#039;&#039;&#039; (Lithiun Titanat Oxyd)&lt;br /&gt;
    - Anzahl Zellen: &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
    - Nominalspannung Einzelzelle: &#039;&#039;&#039;2,3 V&#039;&#039;&#039;&lt;br /&gt;
    - Kapazität Einzelzelle: &#039;&#039;&#039;40 Ah&#039;&#039;&#039;&lt;br /&gt;
    - Konfiguration: &#039;&#039;&#039;2 Zellen parallel, 5 Zellen serie&#039;&#039;&#039;&lt;br /&gt;
    - Nominalspannung Block: &#039;&#039;&#039;11,5 V&#039;&#039;&#039;&lt;br /&gt;
    - Kapazität Block: &#039;&#039;&#039;80 Ah&#039;&#039;&#039;&lt;br /&gt;
    - BMS (Batteriemanagementsystem): &#039;&#039;&#039;5S2P - 12 V / 80 A&#039;&#039;&#039;&lt;br /&gt;
    - Sicherungen: &#039;&#039;&#039;2 x arretrierbare Sicherungen zu 20 A&#039;&#039;&#039; (auf + und auf GND)&lt;br /&gt;
 &lt;br /&gt;
 *Auf dem Label der Batterie im Foto ist fälschlicherweise &amp;quot;&#039;&#039;&#039;10S1P&#039;&#039;&#039;&amp;quot; angegeben. Richtig ist natürlich &#039;&#039;&#039;5S2P&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Laderegler ===&lt;br /&gt;
[[Datei:Graunerberg-laderegler.png|mini|326x326px|EPEVER Tracer 2210 Laderegler]]&lt;br /&gt;
    - Marke: &#039;&#039;&#039;EPEVER&#039;&#039;&#039;&lt;br /&gt;
    - Modell: &#039;&#039;&#039;Tracer 2210 AN&#039;&#039;&#039;&lt;br /&gt;
    - Max. Strom: &#039;&#039;&#039;20 A&#039;&#039;&#039;&lt;br /&gt;
    - Spannung: &#039;&#039;&#039;12 V&#039;&#039;&#039;&lt;br /&gt;
    - Leistung: &#039;&#039;&#039;260 W&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Spannungsregler ===&lt;br /&gt;
&lt;br /&gt;
    - Upconverter: &#039;&#039;&#039;8-14 V =&amp;gt; 24 V / 8 A&#039;&#039;&#039;&lt;br /&gt;
    - Downconverter: &#039;&#039;&#039;24 V =&amp;gt; 12 V / 10 A (Webcam)&#039;&#039;&#039;&lt;br /&gt;
    - Downconverter: &#039;&#039;&#039;24 V =&amp;gt; 5 V / 1,5 A (Raspberry für Solarregler)&#039;&#039;&#039;&lt;br /&gt;
[[Datei:Graunerberg-blockschaltbild.png|zentriert|mini|466x466px|Blockschaltbild]]&lt;br /&gt;
&lt;br /&gt;
== Hamnet ==&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
    - Marke: Mikrotik&lt;br /&gt;
    - Modell: RB750up&lt;br /&gt;
    - Spannungsversorgung: 24 V&lt;br /&gt;
    - Portbelegung: siehe Blockschaltbild am Ende der Seite&lt;br /&gt;
&lt;br /&gt;
=== Link Schöneben ===&lt;br /&gt;
    - Marke: Mikrotik&lt;br /&gt;
    - Modell: SxtSQ&lt;br /&gt;
    - Licence level: 4&lt;br /&gt;
    - Spannungsversorgung: POE via Router&lt;br /&gt;
    - Installationsort: Hauswand&lt;br /&gt;
&lt;br /&gt;
=== Link Chavalatsch ===&lt;br /&gt;
    - Marke: Mikrotik&lt;br /&gt;
    - Modell: QRT5&lt;br /&gt;
    - Licence level: 4&lt;br /&gt;
    - Spannungsversorgung: POE via Router&lt;br /&gt;
    - Installationsort: Hauswand&lt;br /&gt;
[[Kategorie:Standorte]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=RouterOS_Troubleshooting&amp;diff=53</id>
		<title>RouterOS Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=RouterOS_Troubleshooting&amp;diff=53"/>
		<updated>2025-08-22T18:47:05Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== RouterOS 7 BGP Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Ausgehende Advertisements ===&lt;br /&gt;
Mit dem folgenden Kommando können alle ausgehenden BGP Advertisements gefunden werden, die eine bestimmte IP enthalten:&lt;br /&gt;
 &#039;&#039;&#039;&amp;gt; routing/bgp/advertisements/ print where 44.143.160.3 in dst&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
  0 peer=ir3ugm-1 dst=44.143.160.0/27 nexthop=44.169.12.54 origin=0 &lt;br /&gt;
    as-path=sequence 4222260003 4222260005 4223271001 4223271004 atomic-aggregate=yes &lt;br /&gt;
 &lt;br /&gt;
  0 peer=ir3bc-1 dst=44.143.160.0/27 nexthop=44.169.12.62 origin=0 &lt;br /&gt;
    as-path=sequence 4222260003 4222260005 4223271001 4223271004 atomic-aggregate=yes &lt;br /&gt;
 &lt;br /&gt;
  0 peer=ir3ugm-1 dst=44.143.160.0/19 nexthop=44.169.12.54 origin=0 &lt;br /&gt;
    as-path=sequence 4222260003 4222260005 4223271001 4223271003 atomic-aggregate=yes &lt;br /&gt;
 &lt;br /&gt;
  0 peer=ir3bc-1 dst=44.143.160.0/19 nexthop=44.169.12.62 origin=0 &lt;br /&gt;
    as-path=sequence 4222260003 4222260005 4223271001 4223271003 atomic-aggregate=yes &lt;br /&gt;
Alternativ funktioniert die Abfrage auch mit Angabe des expliziten Netzes (es muss exakt dieses Netz sein, kein Subnet oder Supernet):&lt;br /&gt;
 &#039;&#039;&#039;&amp;gt; routing/bgp/advertisements/ print where dst=44.143.160.0/27&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
  0 peer=ir3bc-1 dst=44.143.160.0/27 nexthop=44.169.12.62 origin=0 &lt;br /&gt;
    as-path=sequence 4222260003 4222260005 4223271001 4223271004 atomic-aggregate=yes &lt;br /&gt;
 &lt;br /&gt;
  0 peer=ir3ugm-1 dst=44.143.160.0/27 nexthop=44.169.12.54 origin=0 &lt;br /&gt;
    as-path=sequence 4222260003 4222260005 4223271001 4223271004 atomic-aggregate=yes &lt;br /&gt;
&lt;br /&gt;
=== Eingehende (gelernte) BGP Routen ===&lt;br /&gt;
Unter RouterOS 7 zeigt &#039;&#039;ip/route/print detail&#039;&#039; keine BGP Metriken (AS-Pfade!) mehr an.&lt;br /&gt;
 &#039;&#039;&#039;&amp;gt; ip route/print detail where 44.143.160.3 in dst-address&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 Flags: D - dynamic; X - disabled, I - inactive, A - active; &lt;br /&gt;
 c - connect, s - static, r - rip, b - bgp, o - ospf, d - dhcp, v - vpn, m - modem, y - copy; &lt;br /&gt;
 H - hw-offloaded; + - ecmp &lt;br /&gt;
  0  As   dst-address=0.0.0.0/0 routing-table=main pref-src=&amp;quot;&amp;quot; gateway=44.169.12.57 &lt;br /&gt;
          immediate-gw=44.169.12.57%ether3-ir3bc check-gateway=ping distance=1 scope=30 &lt;br /&gt;
          target-scope=10 suppress-hw-offload=no &lt;br /&gt;
 &lt;br /&gt;
    DAb   dst-address=44.143.160.0/19 routing-table=main gateway=44.169.12.65 &lt;br /&gt;
          immediate-gw=44.169.12.65%ether5-ir3uap distance=20 scope=40 target-scope=10 &lt;br /&gt;
          suppress-hw-offload=no &lt;br /&gt;
 &lt;br /&gt;
    DAb   dst-address=44.143.160.0/27 routing-table=main gateway=44.169.12.65 &lt;br /&gt;
          immediate-gw=44.169.12.65%ether5-ir3uap distance=20 scope=40 target-scope=10 &lt;br /&gt;
          suppress-hw-offload=no &lt;br /&gt;
Die kompletten BGP-Infos findet man über das Kommando &#039;&#039;routing/route/print detail&#039;&#039;:&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;&#039;&amp;gt; routing/route/print detail where 44.143.160.3 in dst-address&#039;&#039;&#039;&amp;lt;/code&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;Flags: X - disabled, F - filtered, U - unreachable, A - active; &lt;br /&gt;
 c - connect, s - static, r - rip, b - bgp, o - ospf, d - dhcp, v - vpn, m - modem, a - ldp-address, l - ldp-mapping, y - copy, a - slaac; &lt;br /&gt;
 H - hw-offloaded; + - ecmp, B - blackhole &lt;br /&gt;
  As   afi=ip4 contribution=active dst-address=0.0.0.0/0 routing-table=main pref-src=&amp;quot;&amp;quot; gateway=44.169.12.57 &lt;br /&gt;
        immediate-gw=44.169.12.57%ether3-ir3bc check-gateway=ping distance=1 scope=30 target-scope=10 belongs-to=&amp;quot;static&amp;quot; &lt;br /&gt;
        debug.fwp-ptr=0x20282000 &lt;br /&gt;
 &lt;br /&gt;
  Ab   afi=ip4 contribution=active dst-address=44.143.160.0/19 routing-table=main gateway=44.169.12.65 &lt;br /&gt;
        immediate-gw=44.169.12.65%ether5-ir3uap distance=20 scope=40 target-scope=10 belongs-to=&amp;quot;bgp-IP-44.169.12.65&amp;quot; &lt;br /&gt;
        bgp.peer-cache-id=*B000002 .as-path=&amp;quot;4222260005,4223271001,4223271003&amp;quot; .atomic-aggregate=yes .origin=igp &lt;br /&gt;
        debug.fwp-ptr=0x20282360 &lt;br /&gt;
 &lt;br /&gt;
  Ab   afi=ip4 contribution=active dst-address=44.143.160.0/27 routing-table=main gateway=44.169.12.65 &lt;br /&gt;
        immediate-gw=44.169.12.65%ether5-ir3uap distance=20 scope=40 target-scope=10 belongs-to=&amp;quot;bgp-IP-44.169.12.65&amp;quot; &lt;br /&gt;
        bgp.peer-cache-id=*B000002 .as-path=&amp;quot;4222260005,4223271001,4223271004&amp;quot; .atomic-aggregate=yes .origin=igp &lt;br /&gt;
        debug.fwp-ptr=0x20282360&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Kategorie:HAMNET]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=RouterOS_Troubleshooting&amp;diff=52</id>
		<title>RouterOS Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=RouterOS_Troubleshooting&amp;diff=52"/>
		<updated>2025-08-22T18:46:28Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: Die Seite wurde neu angelegt: „ == BGP Troubleshooting ==  === Ausgehende Advertisements === Mit dem folgenden Kommando können alle ausgehenden BGP Advertisements gefunden werden, die eine bestimmte IP enthalten:  &amp;#039;&amp;#039;&amp;#039;&amp;gt; routing/bgp/advertisements/ print where 44.143.160.3 in dst&amp;#039;&amp;#039;&amp;#039;     0 peer=ir3ugm-1 dst=44.143.160.0/27 nexthop=44.169.12.54 origin=0      as-path=sequence 4222260003 4222260005 4223271001 4223271004 atomic-aggregate=yes      0 peer=ir3bc-1 dst=44.143.160.0/27 nexthop=44…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== BGP Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Ausgehende Advertisements ===&lt;br /&gt;
Mit dem folgenden Kommando können alle ausgehenden BGP Advertisements gefunden werden, die eine bestimmte IP enthalten:&lt;br /&gt;
 &#039;&#039;&#039;&amp;gt; routing/bgp/advertisements/ print where 44.143.160.3 in dst&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
  0 peer=ir3ugm-1 dst=44.143.160.0/27 nexthop=44.169.12.54 origin=0 &lt;br /&gt;
    as-path=sequence 4222260003 4222260005 4223271001 4223271004 atomic-aggregate=yes &lt;br /&gt;
 &lt;br /&gt;
  0 peer=ir3bc-1 dst=44.143.160.0/27 nexthop=44.169.12.62 origin=0 &lt;br /&gt;
    as-path=sequence 4222260003 4222260005 4223271001 4223271004 atomic-aggregate=yes &lt;br /&gt;
 &lt;br /&gt;
  0 peer=ir3ugm-1 dst=44.143.160.0/19 nexthop=44.169.12.54 origin=0 &lt;br /&gt;
    as-path=sequence 4222260003 4222260005 4223271001 4223271003 atomic-aggregate=yes &lt;br /&gt;
 &lt;br /&gt;
  0 peer=ir3bc-1 dst=44.143.160.0/19 nexthop=44.169.12.62 origin=0 &lt;br /&gt;
    as-path=sequence 4222260003 4222260005 4223271001 4223271003 atomic-aggregate=yes &lt;br /&gt;
Alternativ funktioniert die Abfrage auch mit Angabe des expliziten Netzes (es muss exakt dieses Netz sein, kein Subnet oder Supernet):&lt;br /&gt;
 &#039;&#039;&#039;&amp;gt; routing/bgp/advertisements/ print where dst=44.143.160.0/27&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
  0 peer=ir3bc-1 dst=44.143.160.0/27 nexthop=44.169.12.62 origin=0 &lt;br /&gt;
    as-path=sequence 4222260003 4222260005 4223271001 4223271004 atomic-aggregate=yes &lt;br /&gt;
 &lt;br /&gt;
  0 peer=ir3ugm-1 dst=44.143.160.0/27 nexthop=44.169.12.54 origin=0 &lt;br /&gt;
    as-path=sequence 4222260003 4222260005 4223271001 4223271004 atomic-aggregate=yes &lt;br /&gt;
&lt;br /&gt;
=== Eingehende (gelernte) BGP Routen ===&lt;br /&gt;
Unter RouterOS 7 zeigt &#039;&#039;ip/route/print detail&#039;&#039; keine BGP Metriken (AS-Pfade!) mehr an.&lt;br /&gt;
 &#039;&#039;&#039;&amp;gt; ip route/print detail where 44.143.160.3 in dst-address&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 Flags: D - dynamic; X - disabled, I - inactive, A - active; &lt;br /&gt;
 c - connect, s - static, r - rip, b - bgp, o - ospf, d - dhcp, v - vpn, m - modem, y - copy; &lt;br /&gt;
 H - hw-offloaded; + - ecmp &lt;br /&gt;
  0  As   dst-address=0.0.0.0/0 routing-table=main pref-src=&amp;quot;&amp;quot; gateway=44.169.12.57 &lt;br /&gt;
          immediate-gw=44.169.12.57%ether3-ir3bc check-gateway=ping distance=1 scope=30 &lt;br /&gt;
          target-scope=10 suppress-hw-offload=no &lt;br /&gt;
 &lt;br /&gt;
    DAb   dst-address=44.143.160.0/19 routing-table=main gateway=44.169.12.65 &lt;br /&gt;
          immediate-gw=44.169.12.65%ether5-ir3uap distance=20 scope=40 target-scope=10 &lt;br /&gt;
          suppress-hw-offload=no &lt;br /&gt;
 &lt;br /&gt;
    DAb   dst-address=44.143.160.0/27 routing-table=main gateway=44.169.12.65 &lt;br /&gt;
          immediate-gw=44.169.12.65%ether5-ir3uap distance=20 scope=40 target-scope=10 &lt;br /&gt;
          suppress-hw-offload=no &lt;br /&gt;
Die kompletten BGP-Infos findet man über das Kommando &#039;&#039;routing/route/print detail&#039;&#039;:&lt;br /&gt;
 &amp;lt;code&amp;gt;&#039;&#039;&#039;&amp;gt; routing/route/print detail where 44.143.160.3 in dst-address&#039;&#039;&#039;&amp;lt;/code&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;code&amp;gt;Flags: X - disabled, F - filtered, U - unreachable, A - active; &lt;br /&gt;
 c - connect, s - static, r - rip, b - bgp, o - ospf, d - dhcp, v - vpn, m - modem, a - ldp-address, l - ldp-mapping, y - copy, a - slaac; &lt;br /&gt;
 H - hw-offloaded; + - ecmp, B - blackhole &lt;br /&gt;
  As   afi=ip4 contribution=active dst-address=0.0.0.0/0 routing-table=main pref-src=&amp;quot;&amp;quot; gateway=44.169.12.57 &lt;br /&gt;
        immediate-gw=44.169.12.57%ether3-ir3bc check-gateway=ping distance=1 scope=30 target-scope=10 belongs-to=&amp;quot;static&amp;quot; &lt;br /&gt;
        debug.fwp-ptr=0x20282000 &lt;br /&gt;
 &lt;br /&gt;
  Ab   afi=ip4 contribution=active dst-address=44.143.160.0/19 routing-table=main gateway=44.169.12.65 &lt;br /&gt;
        immediate-gw=44.169.12.65%ether5-ir3uap distance=20 scope=40 target-scope=10 belongs-to=&amp;quot;bgp-IP-44.169.12.65&amp;quot; &lt;br /&gt;
        bgp.peer-cache-id=*B000002 .as-path=&amp;quot;4222260005,4223271001,4223271003&amp;quot; .atomic-aggregate=yes .origin=igp &lt;br /&gt;
        debug.fwp-ptr=0x20282360 &lt;br /&gt;
 &lt;br /&gt;
  Ab   afi=ip4 contribution=active dst-address=44.143.160.0/27 routing-table=main gateway=44.169.12.65 &lt;br /&gt;
        immediate-gw=44.169.12.65%ether5-ir3uap distance=20 scope=40 target-scope=10 belongs-to=&amp;quot;bgp-IP-44.169.12.65&amp;quot; &lt;br /&gt;
        bgp.peer-cache-id=*B000002 .as-path=&amp;quot;4222260005,4223271001,4223271004&amp;quot; .atomic-aggregate=yes .origin=igp &lt;br /&gt;
        debug.fwp-ptr=0x20282360&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Datei:Graunerberg-webcam.png&amp;diff=51</id>
		<title>Datei:Graunerberg-webcam.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Datei:Graunerberg-webcam.png&amp;diff=51"/>
		<updated>2025-08-22T18:30:24Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;graunerberg-webcam&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Graunerberg_IR3UFL&amp;diff=50</id>
		<title>Graunerberg IR3UFL</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Graunerberg_IR3UFL&amp;diff=50"/>
		<updated>2025-08-22T18:28:16Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Datei:Graunerberg-standort.png|alternativtext=Standort Graunerberg inkl. Installationsteam|mini|398x398px|Standort Graunerberg inkl. Installationsteam]]&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung ==&lt;br /&gt;
&lt;br /&gt;
=== Solarzellen ===&lt;br /&gt;
&lt;br /&gt;
    - Leistung: &#039;&#039;&#039;140 W&#039;&#039;&#039;&lt;br /&gt;
    - Spannung: &#039;&#039;&#039;18 V&#039;&#039;&#039; &lt;br /&gt;
    - Anzahl: &#039;&#039;&#039;2&#039;&#039;&#039; &lt;br /&gt;
    - Sicherungen: &#039;&#039;&#039;2 x arretrierbare Sicherungen zu 20 A (auf + und auf GND)&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
=== Batterien ===&lt;br /&gt;
[[Datei:Graunerberg-batterien.png|links|mini|389x389px|Eigenbau LTO-Batterie am Graunerberg*]]&lt;br /&gt;
    - Typologie: &#039;&#039;&#039;LTO&#039;&#039;&#039; (Lithiun Titanat Oxyd)&lt;br /&gt;
    - Anzahl Zellen: &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
    - Nominalspannung Einzelzelle: &#039;&#039;&#039;2,3 V&#039;&#039;&#039;&lt;br /&gt;
    - Kapazität Einzelzelle: &#039;&#039;&#039;40 Ah&#039;&#039;&#039;&lt;br /&gt;
    - Konfiguration: &#039;&#039;&#039;2 Zellen parallel, 5 Zellen serie&#039;&#039;&#039;&lt;br /&gt;
    - Nominalspannung Block: &#039;&#039;&#039;11,5 V&#039;&#039;&#039;&lt;br /&gt;
    - Kapazität Block: &#039;&#039;&#039;80 Ah&#039;&#039;&#039;&lt;br /&gt;
    - BMS (Batteriemanagementsystem): &#039;&#039;&#039;5S2P - 12 V / 80 A&#039;&#039;&#039;&lt;br /&gt;
    - Sicherungen: &#039;&#039;&#039;2 x arretrierbare Sicherungen zu 20 A&#039;&#039;&#039; (auf + und auf GND)&lt;br /&gt;
 &lt;br /&gt;
 *Auf dem Label der Batterie im Foto ist fälschlicherweise &amp;quot;&#039;&#039;&#039;10S1P&#039;&#039;&#039;&amp;quot; angegeben. Richtig ist natürlich &#039;&#039;&#039;5S2P&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Laderegler ===&lt;br /&gt;
[[Datei:Graunerberg-laderegler.png|mini|326x326px|EPEVER Tracer 2210 Laderegler]]&lt;br /&gt;
    - Marke: &#039;&#039;&#039;EPEVER&#039;&#039;&#039;&lt;br /&gt;
    - Modell: &#039;&#039;&#039;Tracer 2210 AN&#039;&#039;&#039;&lt;br /&gt;
    - Max. Strom: &#039;&#039;&#039;20 A&#039;&#039;&#039;&lt;br /&gt;
    - Spannung: &#039;&#039;&#039;12 V&#039;&#039;&#039;&lt;br /&gt;
    - Leistung: &#039;&#039;&#039;260 W&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Spannungsregler ===&lt;br /&gt;
&lt;br /&gt;
    - Upconverter: &#039;&#039;&#039;8-14 V =&amp;gt; 24 V / 8 A&#039;&#039;&#039;&lt;br /&gt;
    - Downconverter: &#039;&#039;&#039;24 V =&amp;gt; 12 V / 10 A (Webcam)&#039;&#039;&#039;&lt;br /&gt;
    - Downconverter: &#039;&#039;&#039;24 V =&amp;gt; 5 V / 1,5 A (Raspberry für Solarregler)&#039;&#039;&#039;&lt;br /&gt;
[[Datei:Graunerberg-blockschaltbild.png|zentriert|mini|466x466px|Blockschaltbild]]&lt;br /&gt;
&lt;br /&gt;
== Hamnet ==&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
    - Marke: Mikrotik&lt;br /&gt;
    - Modell: RB750up&lt;br /&gt;
    - Spannungsversorgung: 24 V&lt;br /&gt;
    - Portbelegung: siehe Blockschaltbild am Ende der Seite&lt;br /&gt;
&lt;br /&gt;
=== Link Schöneben ===&lt;br /&gt;
    - Marke: Mikrotik&lt;br /&gt;
    - Modell: SxtSQ&lt;br /&gt;
    - Licence level: 4&lt;br /&gt;
    - Spannungsversorgung: POE via Router&lt;br /&gt;
    - Installationsort: Hauswand&lt;br /&gt;
&lt;br /&gt;
=== Link Chavalatsch ===&lt;br /&gt;
    - Marke: Mikrotik&lt;br /&gt;
    - Modell: QRT5&lt;br /&gt;
    - Licence level: 4&lt;br /&gt;
    - Spannungsversorgung: POE via Router&lt;br /&gt;
    - Installationsort: Hauswand&lt;br /&gt;
[[Kategorie:Standorte]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Graunerberg_IR3UFL&amp;diff=49</id>
		<title>Graunerberg IR3UFL</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Graunerberg_IR3UFL&amp;diff=49"/>
		<updated>2025-08-22T18:26:38Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: Seite neu angelegt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Datei:Graunerberg-standort.png|alternativtext=Standort Graunerberg inkl. Installationsteam|mini|398x398px|Standort Graunerberg inkl. Installationsteam]]&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung ==&lt;br /&gt;
&lt;br /&gt;
=== Solarzellen ===&lt;br /&gt;
&lt;br /&gt;
    - Leistung: &#039;&#039;&#039;140 W&#039;&#039;&#039;&lt;br /&gt;
    - Spannung: &#039;&#039;&#039;18 V&#039;&#039;&#039; &lt;br /&gt;
    - Anzahl: &#039;&#039;&#039;2&#039;&#039;&#039; &lt;br /&gt;
    - Sicherungen: &#039;&#039;&#039;2 x arretrierbare Sicherungen zu 20 A (auf + und auf GND)&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
=== Batterien ===&lt;br /&gt;
[[Datei:Graunerberg-batterien.png|links|mini|389x389px|Eigenbau LTO-Batterie am Graunerberg*]]&lt;br /&gt;
    - Typologie: &#039;&#039;&#039;LTO&#039;&#039;&#039; (Lithiun Titanat Oxyd)&lt;br /&gt;
    - Anzahl Zellen: &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
    - Nominalspannung Einzelzelle: &#039;&#039;&#039;2,3 V&#039;&#039;&#039;&lt;br /&gt;
    - Kapazität Einzelzelle: &#039;&#039;&#039;40 Ah&#039;&#039;&#039;&lt;br /&gt;
    - Konfiguration: &#039;&#039;&#039;2 Zellen parallel, 5 Zellen serie&#039;&#039;&#039;&lt;br /&gt;
    - Nominalspannung Block: &#039;&#039;&#039;11,5 V&#039;&#039;&#039;&lt;br /&gt;
    - Kapazität Block: &#039;&#039;&#039;80 Ah&#039;&#039;&#039;&lt;br /&gt;
    - BMS (Batteriemanagementsystem): &#039;&#039;&#039;5S2P - 12 V / 80 A&#039;&#039;&#039;&lt;br /&gt;
    - Sicherungen: &#039;&#039;&#039;2 x arretrierbare Sicherungen zu 20 A&#039;&#039;&#039; (auf + und auf GND)&lt;br /&gt;
 &lt;br /&gt;
 *Auf dem Label der Batterie im Foto ist fälschlicherweise &amp;quot;&#039;&#039;&#039;10S1P&#039;&#039;&#039;&amp;quot; angegeben. Richtig ist natürlich &#039;&#039;&#039;5S2P&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Laderegler ===&lt;br /&gt;
[[Datei:Graunerberg-laderegler.png|mini|326x326px|EPEVER Tracer 2210 Laderegler]]&lt;br /&gt;
    - Marke: &#039;&#039;&#039;EPEVER&#039;&#039;&#039;&lt;br /&gt;
    - Modell: &#039;&#039;&#039;Tracer 2210 AN&#039;&#039;&#039;&lt;br /&gt;
    - Max. Strom: &#039;&#039;&#039;20 A&#039;&#039;&#039;&lt;br /&gt;
    - Spannung: &#039;&#039;&#039;12 V&#039;&#039;&#039;&lt;br /&gt;
    - Leistung: &#039;&#039;&#039;260 W&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Spannungsregler ===&lt;br /&gt;
&lt;br /&gt;
    - Upconverter: &#039;&#039;&#039;8-14 V =&amp;gt; 24 V / 8 A&#039;&#039;&#039;&lt;br /&gt;
    - Downconverter: &#039;&#039;&#039;24 V =&amp;gt; 12 V / 10 A (Webcam)&#039;&#039;&#039;&lt;br /&gt;
    - Downconverter: &#039;&#039;&#039;24 V =&amp;gt; 5 V / 1,5 A (Raspberry für Solarregler)&#039;&#039;&#039;&lt;br /&gt;
[[Datei:Graunerberg-blockschaltbild.png|zentriert|mini|466x466px|Blockschaltbild]]&lt;br /&gt;
&lt;br /&gt;
== Hamnet ==&lt;br /&gt;
&lt;br /&gt;
=== Router ===&lt;br /&gt;
&lt;br /&gt;
    - Marke: Mikrotik&lt;br /&gt;
    - Modell: RB750up&lt;br /&gt;
    - Spannungsversorgung: 24 V&lt;br /&gt;
    - Portbelegung: siehe Blockschaltbild am Ende der Seite&lt;br /&gt;
&lt;br /&gt;
=== Link Schöneben ===&lt;br /&gt;
    - Marke: Mikrotik&lt;br /&gt;
    - Modell: SxtSQ&lt;br /&gt;
    - Licence level: 4&lt;br /&gt;
    - Spannungsversorgung: POE via Router&lt;br /&gt;
    - Installationsort: Hauswand&lt;br /&gt;
&lt;br /&gt;
=== Link Chavalatsch ===&lt;br /&gt;
    - Marke: Mikrotik&lt;br /&gt;
    - Modell: QRT5&lt;br /&gt;
    - Licence level: 4&lt;br /&gt;
    - Spannungsversorgung: POE via Router&lt;br /&gt;
    - Installationsort: Hauswand&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Datei:Graunerberg-blockschaltbild.png&amp;diff=48</id>
		<title>Datei:Graunerberg-blockschaltbild.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Datei:Graunerberg-blockschaltbild.png&amp;diff=48"/>
		<updated>2025-08-22T18:24:01Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;graunerberg-blockschaltbild&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Datei:Graunerberg-laderegler.png&amp;diff=47</id>
		<title>Datei:Graunerberg-laderegler.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Datei:Graunerberg-laderegler.png&amp;diff=47"/>
		<updated>2025-08-22T18:23:16Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;graunerberg-laderegler&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Datei:Graunerberg-batterien.png&amp;diff=46</id>
		<title>Datei:Graunerberg-batterien.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Datei:Graunerberg-batterien.png&amp;diff=46"/>
		<updated>2025-08-22T18:21:01Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;graunerberg-batterien&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Datei:Graunerberg-standort.png&amp;diff=45</id>
		<title>Datei:Graunerberg-standort.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Datei:Graunerberg-standort.png&amp;diff=45"/>
		<updated>2025-08-22T18:19:59Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;graunerberg-standort&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=HAMVOIP&amp;diff=44</id>
		<title>HAMVOIP</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=HAMVOIP&amp;diff=44"/>
		<updated>2025-08-22T17:20:27Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Allgemeine Infos ==&lt;br /&gt;
Im HAMNET existiert ein VOIP-Verbund auf Basis von Asterisk (teils &amp;quot;bare-bone&amp;quot; Asterisk, teils FreePBX).&lt;br /&gt;
&lt;br /&gt;
Die Telefonieserver heißen in der HAMNETDB meist &#039;&#039;sip.standort&#039;&#039; und haben auch meist die Beschreibung &#039;&#039;asterisk_dundi&#039;&#039; im Kommentarfeld.&lt;br /&gt;
&lt;br /&gt;
Da sich diese Server im Verbund befinden, ist es möglich, auch Rufnummern auf anderen Servern anzuwählen.&lt;br /&gt;
&lt;br /&gt;
=== Rufnummernschema ===&lt;br /&gt;
Das Rufnummernschema leitet sich durch &amp;quot;Buchstabenwahl&amp;quot; direkt vom Rufzeichen ab:&lt;br /&gt;
&lt;br /&gt;
* Erste Zahl: &#039;&#039;auf welcher Taste befindet sich der Buchstabe?&#039;&#039;&lt;br /&gt;
* zweite Zahl: &#039;&#039;der wievielte Buchstabe auf der Taste?&#039;&#039;&lt;br /&gt;
** für die Ziffer selbst ist die zweite Zahl die 0&lt;br /&gt;
&lt;br /&gt;
Beispiel: IN3FQQ wird zu:&lt;br /&gt;
&lt;br /&gt;
* I =&amp;gt; &#039;&#039;&#039;4 3&#039;&#039;&#039; (dritter Buchstabe auf der Taste 4)&lt;br /&gt;
* N =&amp;gt; &#039;&#039;&#039;6 2&#039;&#039;&#039;&lt;br /&gt;
* 3 =&amp;gt; &#039;&#039;&#039;3 0&#039;&#039;&#039; (die Ziffer selbst auf der Taste 3)&lt;br /&gt;
* F =&amp;gt; &#039;&#039;&#039;3 3&#039;&#039;&#039;&lt;br /&gt;
* Q =&amp;gt; &#039;&#039;&#039;7 2&#039;&#039;&#039;&lt;br /&gt;
* Q =&amp;gt; &#039;&#039;&#039;7 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Nummer für IN3FQQ lautet also: &#039;&#039;&#039;&#039;&#039;43 62 30 33 72 72&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sofern das verwendete Telefon eine Tastatur mit Buchstaben hat, ist die &amp;quot;Übersetzung&amp;quot; des Rufzeichens recht intuitiv.&lt;br /&gt;
&lt;br /&gt;
=== Dundi-Map Projekt ===&lt;br /&gt;
Es gibt ein Projekt, welches versucht, den DUNDi-Verbund im HAMNET mit seinen Peerings auf einer Karte darzustellen.&lt;br /&gt;
&lt;br /&gt;
Hier findet sich die Übersichtsseite im HAMNET:&lt;br /&gt;
&lt;br /&gt;
http://db0bt.hamnet.radio:85/&lt;br /&gt;
&lt;br /&gt;
Um mit einem eigenen Asterisk-Server am Projekt teilzunehmen, muss:&lt;br /&gt;
&lt;br /&gt;
* In der HamnetDB im Kommentar des SIP-Servers &#039;&#039;&#039;asterisk_dundi&#039;&#039;&#039; stehen&lt;br /&gt;
* Auf dem SIP-Server muss ein Webserver laufen, der die beiden Files &#039;&#039;/dundi.info&#039;&#039; und &#039;&#039;/dundi_show_peers.info&#039;&#039; bereitstellt. Das erste File ist statisch, letzteres wird durch einen Cronjob stündlich aktualisiert:&lt;br /&gt;
&lt;br /&gt;
 ~# cat /var/www/html/dundi.info &lt;br /&gt;
 #Rufzeichen;IP des Asterisk-Servers;MAC des Asterisk-Servers;Names des Betreibers;Rufzeichen des Betreibers;Email des Betreibers&lt;br /&gt;
 IR3UHF;44.169.1.29;ee:19:2c:04:d9:fe;Simon;IN3FQQ;tech@drc.bz&lt;br /&gt;
 &lt;br /&gt;
 ~# cat /etc/cron.hourly/dundistatus&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 asterisk -r -x &#039;dundi show peers&#039; &amp;gt; /var/www/html/dundi_show_peers.info&lt;br /&gt;
&lt;br /&gt;
== Technische Hintergründe ==&lt;br /&gt;
&lt;br /&gt;
=== Funktionsweise ===&lt;br /&gt;
Als Basis verwenden die Server jeweils die Software &#039;&#039;asterisk&#039;&#039;. Manche verwenden die Distribution FreePBX, welche mit einer Weboberfläche und einer ganzen Reihe an Erweiterungen kommt.&lt;br /&gt;
&lt;br /&gt;
Auch das &amp;quot;HamServerPI&amp;quot;-Image, das in DL recht verbreitet ist, hat unter anderem Asterisk mit eingebaut. Auch dieses verwendet FreePBX, welcher standardmäßig auf Port 81 mit einer Weboberfläche antwortet.&lt;br /&gt;
&lt;br /&gt;
Unser Server &#039;&#039;&#039;sip.ir3uhf&#039;&#039;&#039; auf dem Rittnerhorn hingegen ist eher &#039;&#039;minimalistisch&#039;&#039; aufgebaut: es läuft ein asterisk &amp;quot;standalone&amp;quot; auf einem Debian LXC Container.&lt;br /&gt;
&lt;br /&gt;
=== Verteiltes Telefonverzeichnis ===&lt;br /&gt;
Für die internationale Vernetzung via HAMNET hat sich das Modul &amp;quot;DUNDi&amp;quot; etabliert. DUNDi steht für &#039;&#039;Distributed Universal Number Discovery&#039;&#039; und ist vereinfacht gesagt eine Implementierung eines verteilten/Peer-to-Peer basierten Telefonbuchs.&lt;br /&gt;
&lt;br /&gt;
Der Ablauf eines Verbindungsaufbaus läuft vereinfacht dargestellt folgendermaßen ab:&lt;br /&gt;
&lt;br /&gt;
# Ist die Telefonnummer am lokalen Server registriert, dann kann diese natürlich direkt erreicht werden.&lt;br /&gt;
# Falls nicht, werden die DUNDi-Peers befragt, ob irgendjemand diese Nummer kennt.&lt;br /&gt;
# Falls ein Server die Nummer kennt, wird mitgeschickt, wie man diesen Server erreichen kann.&lt;br /&gt;
# Der eigene Server baut eine Verbindung zum Zielserver auf&lt;br /&gt;
# Das Telefon des gewählten Verbindungspartners klingelt.&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal das einfachere Negativbeispiel anhand einer fiktiven Nummer &#039;&#039;12345&#039;&#039; welche &#039;&#039;nicht&#039;&#039; existiert:&lt;br /&gt;
&lt;br /&gt;
In diesem Fall sieht die Antwort folgendermaßen aus:&lt;br /&gt;
 vdrcsip01*CLI&amp;gt; dundi lookup 12345@priv&lt;br /&gt;
 DUNDi lookup returned no results.&lt;br /&gt;
 DUNDi lookup completed in 532 ms&lt;br /&gt;
Sollte diese Nummer also auch auf dem lokalen Server nicht bekannt sein, ist in diesem Fall nichts mehr zu machen. Die Verbindung kann nicht aufgebaut werden und das Telefon signalisiert dies dem Benutzer.&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird nun nach der Nummer des DL-Rundspruchs &#039;&#039;3122007431213153&#039;&#039; gesucht.&lt;br /&gt;
&lt;br /&gt;
Diese ist existent und es sollte folglich ein Server im Verbund gefunden werden, der diese Nummer kennt:&lt;br /&gt;
 vdrcsip01*CLI&amp;gt; dundi lookup 3122007431213153@priv&lt;br /&gt;
   1.     0 IAX2/iaxuser:##secret##@44.149.166.36/3122007431213153 (EXISTS)&lt;br /&gt;
      from 62:ec:e3:5a:57:7f, expires in 50 s&lt;br /&gt;
 DUNDi lookup completed in 1668 ms&lt;br /&gt;
In diesem Fall konnte der Server ermittelt werden, welcher diese Nummer aktuell aufliegen hat. Konkret handelt es sich im Beispiel um den Server 44.149.166.36 (sip.db0sda) bei &#039;&#039;&#039;DB0SDA in Aachen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dabei ist hervorzuheben, dass es nicht zwingend notwendig ist, zu diesem Server ein direktes DUNDi-Peering zu haben.&lt;br /&gt;
&lt;br /&gt;
Jeder Peer kann nämlich von sich aus bei einem seiner eigenen Peers weiterfragen, falls er die Information nicht selbst kennt.&lt;br /&gt;
&lt;br /&gt;
Das DUNDi-Netzwerk muss somit also nicht zwingend ein Full-Mesh sein. Es reicht &#039;&#039;jemanden zu kennen, der einen kennt, der die Nummer aufliegen hat.&#039;&#039; Die Rekursionstiefe kann dabei in der Konfigurationsdatei angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Außerdem müssen keine IAX-Trunks oder ähnliches statisch konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie man aus der Antwort des DUNDi-Lookups erkennen kann, wird beim Auffinden einer Telefonnummer die Information mitgeliefert, wie man diese Nummer erreichen kann. Diese besteht aus den folgenden Teilen:&lt;br /&gt;
&lt;br /&gt;
* Technologie/Protokoll, in diesem fall &#039;&#039;&#039;IAX2&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Benutzername&#039;&#039;&#039; und &#039;&#039;&#039;temporäres Passwort&#039;&#039;&#039; für die Verbindung&lt;br /&gt;
* &#039;&#039;&#039;IP Adresse&#039;&#039;&#039; des Zielservers&lt;br /&gt;
* die &#039;&#039;&#039;Anschlussnummer&#039;&#039;&#039;&lt;br /&gt;
* die &#039;&#039;&#039;ID&#039;&#039;&#039; des DUNDi-Peers, von dem die Information empfangen wurde&lt;br /&gt;
&lt;br /&gt;
Im HAMNET VOIP Verbund wird die Verbindung zum Zielserver in den meisten Fällen über das IAX2-Protokoll realisiert.&lt;br /&gt;
&lt;br /&gt;
Die entsprechenden Zugangsdaten für die Verbindung werden in der DUNDi-Antwort mitgeliefert, wobei das Passwort mehrmals täglich rotiert.&lt;br /&gt;
&lt;br /&gt;
 In vielen HAMNET VOIP Beispielen wird in der dundi.conf ein &#039;&#039;secret&#039;&#039; angegeben. Dieses ist vermutlich ein Relikt aus vergangenen Zeiten.&lt;br /&gt;
 &lt;br /&gt;
 In der DUNDi-Dokumentation ist diese Konfigurationsvariable nicht mehr dokumentiert und effektiv funktionieren die Peerings im HAMNET auch ohne ein Secret anzugeben&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Im Folgenden wird eine funktionierende Basiskonfiguration geschildert, so wie sie auch bei &#039;&#039;sip.ir3uhf&#039;&#039; verwendet wird.&lt;br /&gt;
&lt;br /&gt;
=== sip.conf / pjsip.conf ===&lt;br /&gt;
 [global]&lt;br /&gt;
 regcontext=dundiextens&lt;br /&gt;
 &lt;br /&gt;
 [transport-udp]&lt;br /&gt;
 type=transport&lt;br /&gt;
 protocol=udp    ;udp,tcp,tls,ws,wss&lt;br /&gt;
 bind=0.0.0.0&lt;br /&gt;
Die &#039;&#039;regcontext&#039;&#039; Option legt fuer jeden angemeldeten Benutzer dynamisch einen Eintrag im angegebenen Dialplan-Kontext &#039;&#039;dundiextens&#039;&#039; an und entfernt ihn wieder, sobald sich ein Benutzer/Telefon abmeldet.&lt;br /&gt;
&lt;br /&gt;
Die hier eingetragenen Nummern sind jene, die spaeter von DUNDi announced werden.&lt;br /&gt;
&lt;br /&gt;
Die Benutzeraccounts selbst werden in unserem Fall über die Konfigurationsdatei pjsip_wizard.conf anhand der Wizard-Funktion von PJSIP angelegt.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das auch anhand einer Datenbank gemacht werden, welche man dann ggf. auch auf weitere Standorte replizieren kann, um den Benutzern auf weiteren Servern in der Region einen Login mit denselben Zugangsdaten zu erlauben.&lt;br /&gt;
&lt;br /&gt;
=== dundi.conf ===&lt;br /&gt;
 ;&lt;br /&gt;
 ; DUNDi configuration file&lt;br /&gt;
 ;&lt;br /&gt;
 ; For more information about DUNDi, see &amp;lt;nowiki&amp;gt;http://www.dundi.com&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ;&lt;br /&gt;
 ;&lt;br /&gt;
 [general]&lt;br /&gt;
 department=DRC&lt;br /&gt;
 organization=Dolomites Radio Club&lt;br /&gt;
 locality=Bozen&lt;br /&gt;
 country=IT&lt;br /&gt;
 email=drc@drc.bz&lt;br /&gt;
 ttl=2&lt;br /&gt;
 cachetime=50&lt;br /&gt;
 autokill=yes&lt;br /&gt;
 ; eigene ID, normalerweise die eigene MAC Adresse.&lt;br /&gt;
 ; diese geben wir explizit an, damit nach etwaigem Serverumzug die ID gleichbleibt&lt;br /&gt;
 entityid=ab:cd:ef:ab:cd:ef  &lt;br /&gt;
 &lt;br /&gt;
 [mappings]&lt;br /&gt;
 &lt;br /&gt;
 priv =&amp;gt; dundiextens,0,IAX2,iaxuser:${SECRET}@44.169.1.29/${NUMBER},nopartial&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ;; konfiguration eines DUNDi-Peers&lt;br /&gt;
 [aa:bb:cc:dd:ee:ff]&lt;br /&gt;
 ; ip adresse oder hostname des Peers&lt;br /&gt;
 host=sip.standort.hamnet.radio&lt;br /&gt;
 include=priv&lt;br /&gt;
 model=symmetric&lt;br /&gt;
 order=primary&lt;br /&gt;
 permit=priv&lt;br /&gt;
 qualify=yes&lt;br /&gt;
In der dundi.conf werden nun die eigenen Details (department, organization etc. sind im Grunde nicht notwendig) konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind die Optionen &#039;&#039;ttl&#039;&#039;, &#039;&#039;cachetime&#039;&#039; sowie &#039;&#039;autokill&#039;&#039; und &#039;&#039;entityid&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;entityid&#039;&#039; wird - sofern nicht explizit angegeben - von der eigenen MAC-Adresse abgeleitet. Da diese aber bei allen Peers angegeben werden muss, empfiehlt es sich die ID explizit in der Konfigurationsdatei anzugeben, damit diese im Falle eines Server-Umzugs beibehalten werden kann.&lt;br /&gt;
&lt;br /&gt;
Die option &#039;&#039;ttl&#039;&#039; beschreibt, wieviele Hops der DUNDi-Lookup &amp;quot;weitergereicht&amp;quot; werden darf. Der wert 2 bedeutet also, dass alle angeschlossenen DUNDi-Peers auch noch ihre eigenen Peers befragen dürfen. Danach wird nicht mehr weitergefragt.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;cachetime&#039;&#039; gibt an, für wieviele Sekunden eine empfangene Antwort zwischengespeichert werden soll. Sofern nicht angegeben ist der Standardwert 3600 Sekunden (1 Stunde), was für den Einsatzzweck im HAMNET natürlich nicht sinnvoll wäre.&lt;br /&gt;
&lt;br /&gt;
In unserem Fall setzen wir die cachetime auf einen wesentlich kürzeren Wert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;autokill&#039;&#039; definiert, dass Anfragen an nicht antwortende Peers nach standardmäßig 2sec abgebrochen und der Peer als offline markiert wird.&lt;br /&gt;
&lt;br /&gt;
Der wichtigste Teil der Konfiguration befindet sich jedoch im Bereich &#039;&#039;[mappings].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird definiert, welche Nummern vom eigenen Server in den DUNDi-Verbund announced werden.&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationszeile ordnet dem DUNDi-Kontext &#039;&#039;priv&#039;&#039; den internen Kontext &#039;&#039;dundiextens&#039;&#039; zu. Dieser enthält (siehe vorhergehende &#039;&#039;pjsip.conf&#039;&#039; Konfiguration) die Telefonnummern aller aktuell am eigenen Server angemeldeten Benutzer/Telefone.&lt;br /&gt;
&lt;br /&gt;
Die darauffolgende Zahl &#039;&#039;0&#039;&#039; gibt an, dass die Nummern direkt an diesem Server aufliegen.&lt;br /&gt;
&lt;br /&gt;
Abschließend wird der Verbindungsstring angegeben, welcher den anfragenden DUNDi-Peers in der Antwort zurückgeschickt wird.&lt;br /&gt;
&lt;br /&gt;
Die Option &#039;&#039;nopartial&#039;&#039; beschreibt, dass der Server nur für exakt übereinstimmende Nummern und nicht für partielle übereinstimmungen antworten soll.&lt;br /&gt;
&lt;br /&gt;
=== iax.conf ===&lt;br /&gt;
Nach dem Auffinden des Zielservers über ein DUNDi-Lookup kann eine Verbindung zu diesem hergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Dafür wird das IAX2-Protokoll verwendet.&lt;br /&gt;
&lt;br /&gt;
Die Datei &#039;&#039;iax.conf&#039;&#039; definiert die Einzelheiten des Protokolls. Besonders wichtig dabei ist das Anlegen des Benutzers &#039;&#039;iaxuser&#039;&#039; für die einkommenden Verbindungen aus dem Verbund.&lt;br /&gt;
&lt;br /&gt;
Für die Wahl des Passwortes wird &#039;&#039;dbsecret=dundi/secret&#039;&#039; angegeben. Damit wird ein temporäres Passwort referenziert, welches von DUNDi automatisch generiert und mehrfach täglich rotiert wird.&lt;br /&gt;
&lt;br /&gt;
Die eingehenden Verbindungen werden in den Dialplan-Kontext &#039;&#039;incomingdundi&#039;&#039; geleitet.&lt;br /&gt;
&lt;br /&gt;
Im Abschnitt &#039;&#039;[general]&#039;&#039; sind die erlaubten Codecs definiert, welche für eingehende und ausgehende Verbindungen von/in den Verbund verwendet werden dürfen.&lt;br /&gt;
 [general]&lt;br /&gt;
 nochecksums=no&lt;br /&gt;
 bandwidth=low&lt;br /&gt;
 disallow=all&lt;br /&gt;
 allow=g722&lt;br /&gt;
 ;allow=ulaw&lt;br /&gt;
 allow=alaw&lt;br /&gt;
 allow=gsm                      &lt;br /&gt;
 ;jitterbuffer=no&lt;br /&gt;
 jitterbuffer=yes&lt;br /&gt;
 &lt;br /&gt;
 [iaxuser]&lt;br /&gt;
 type=friend&lt;br /&gt;
 dbsecret=dundi/secret&lt;br /&gt;
 context=incomingdundi &lt;br /&gt;
&lt;br /&gt;
=== extensions.conf ===&lt;br /&gt;
 [lookupdundi]&lt;br /&gt;
 switch =&amp;gt; DUNDi/priv&lt;br /&gt;
 &lt;br /&gt;
 [internal]&lt;br /&gt;
 include =&amp;gt; dundiextens&lt;br /&gt;
 &lt;br /&gt;
 exten =&amp;gt; _Z.,1,Dial(PJSIP/${EXTEN})&lt;br /&gt;
 same =&amp;gt; n,Goto(lookupdundi,${EXTEN},1)&lt;br /&gt;
 same =&amp;gt; n,Hangup()&lt;br /&gt;
 &lt;br /&gt;
 [incomingdundi]&lt;br /&gt;
 exten =&amp;gt; _Z.,1,Goto(internal,${EXTEN},1)&lt;br /&gt;
&lt;br /&gt;
= Anbindung von SVXLINK =&lt;br /&gt;
Svxlink kann durch die Erweiterung SipLogic an einen VOIP-Server angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Dazu braucht es:&lt;br /&gt;
&lt;br /&gt;
* PJPROJECT&lt;br /&gt;
* Svxlink von Source kompiliert, mit der Option &amp;lt;code&amp;gt;-DWITH_CONTRIB_SIP_LOGIC=ON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PJPROJECT und Svxlink Kompilieren ==&lt;br /&gt;
Damit PJPROJECT kompiliert, muss der Configure-Befehl lt. Doku mit der Option &amp;lt;code&amp;gt;-fPIC&amp;lt;/code&amp;gt; ausgeführt werden. Auf unseren Relais habe ich mit dem folgenden Configure-Befehl erfolgreich kompiliert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./configure --disable-libwebrtc --disable-video CPPFLAGS=-fPIC CXXFLAGS=-fPIC CFLAGS=-fPIC&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach&lt;br /&gt;
 make dep&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
Danach kann SVXLINK vorbereitet werden. Am besten mit den selben cmake Flags wie immer, aber zusätzlich mit &amp;lt;code&amp;gt;-DWITH_CONTRIB_SIP_LOGIC=ON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SVXLINK Konfiguration ==&lt;br /&gt;
Sämtliche Konfigurationen der SIP-Logic befinden sich in /etc/svxlink/svxlink.d/SipLogic.conf.&lt;br /&gt;
&lt;br /&gt;
Die SipLogic hat auch eine eigene TCL-Logik, und zwar /usr/share/svxlink/events.d/SipLogic.tcl&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HAMNET]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=HAMVOIP&amp;diff=43</id>
		<title>HAMVOIP</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=HAMVOIP&amp;diff=43"/>
		<updated>2025-08-22T17:20:00Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: /* Anbindung von SVXLINK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Allgemeine Infos ==&lt;br /&gt;
Im HAMNET existiert ein VOIP-Verbund auf Basis von Asterisk (teils &amp;quot;bare-bone&amp;quot; Asterisk, teils FreePBX).&lt;br /&gt;
&lt;br /&gt;
Die Telefonieserver heißen in der HAMNETDB meist &#039;&#039;sip.standort&#039;&#039; und haben auch meist die Beschreibung &#039;&#039;asterisk_dundi&#039;&#039; im Kommentarfeld.&lt;br /&gt;
&lt;br /&gt;
Da sich diese Server im Verbund befinden, ist es möglich, auch Rufnummern auf anderen Servern anzuwählen.&lt;br /&gt;
&lt;br /&gt;
=== Rufnummernschema ===&lt;br /&gt;
Das Rufnummernschema leitet sich durch &amp;quot;Buchstabenwahl&amp;quot; direkt vom Rufzeichen ab:&lt;br /&gt;
&lt;br /&gt;
* Erste Zahl: &#039;&#039;auf welcher Taste befindet sich der Buchstabe?&#039;&#039;&lt;br /&gt;
* zweite Zahl: &#039;&#039;der wievielte Buchstabe auf der Taste?&#039;&#039;&lt;br /&gt;
** für die Ziffer selbst ist die zweite Zahl die 0&lt;br /&gt;
&lt;br /&gt;
Beispiel: IN3FQQ wird zu:&lt;br /&gt;
&lt;br /&gt;
* I =&amp;gt; &#039;&#039;&#039;4 3&#039;&#039;&#039; (dritter Buchstabe auf der Taste 4)&lt;br /&gt;
* N =&amp;gt; &#039;&#039;&#039;6 2&#039;&#039;&#039;&lt;br /&gt;
* 3 =&amp;gt; &#039;&#039;&#039;3 0&#039;&#039;&#039; (die Ziffer selbst auf der Taste 3)&lt;br /&gt;
* F =&amp;gt; &#039;&#039;&#039;3 3&#039;&#039;&#039;&lt;br /&gt;
* Q =&amp;gt; &#039;&#039;&#039;7 2&#039;&#039;&#039;&lt;br /&gt;
* Q =&amp;gt; &#039;&#039;&#039;7 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Nummer für IN3FQQ lautet also: &#039;&#039;&#039;&#039;&#039;43 62 30 33 72 72&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sofern das verwendete Telefon eine Tastatur mit Buchstaben hat, ist die &amp;quot;Übersetzung&amp;quot; des Rufzeichens recht intuitiv.&lt;br /&gt;
&lt;br /&gt;
=== Dundi-Map Projekt ===&lt;br /&gt;
Es gibt ein Projekt, welches versucht, den DUNDi-Verbund im HAMNET mit seinen Peerings auf einer Karte darzustellen.&lt;br /&gt;
&lt;br /&gt;
Hier findet sich die Übersichtsseite im HAMNET:&lt;br /&gt;
&lt;br /&gt;
http://db0bt.hamnet.radio:85/&lt;br /&gt;
&lt;br /&gt;
Um mit einem eigenen Asterisk-Server am Projekt teilzunehmen, muss:&lt;br /&gt;
&lt;br /&gt;
* In der HamnetDB im Kommentar des SIP-Servers &#039;&#039;&#039;asterisk_dundi&#039;&#039;&#039; stehen&lt;br /&gt;
* Auf dem SIP-Server muss ein Webserver laufen, der die beiden Files &#039;&#039;/dundi.info&#039;&#039; und &#039;&#039;/dundi_show_peers.info&#039;&#039; bereitstellt. Das erste File ist statisch, letzteres wird durch einen Cronjob stündlich aktualisiert:&lt;br /&gt;
&lt;br /&gt;
 ~# cat /var/www/html/dundi.info &lt;br /&gt;
 #Rufzeichen;IP des Asterisk-Servers;MAC des Asterisk-Servers;Names des Betreibers;Rufzeichen des Betreibers;Email des Betreibers&lt;br /&gt;
 IR3UHF;44.169.1.29;ee:19:2c:04:d9:fe;Simon;IN3FQQ;tech@drc.bz&lt;br /&gt;
 &lt;br /&gt;
 ~# cat /etc/cron.hourly/dundistatus&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 asterisk -r -x &#039;dundi show peers&#039; &amp;gt; /var/www/html/dundi_show_peers.info&lt;br /&gt;
&lt;br /&gt;
== Technische Hintergründe ==&lt;br /&gt;
&lt;br /&gt;
=== Funktionsweise ===&lt;br /&gt;
Als Basis verwenden die Server jeweils die Software &#039;&#039;asterisk&#039;&#039;. Manche verwenden die Distribution FreePBX, welche mit einer Weboberfläche und einer ganzen Reihe an Erweiterungen kommt.&lt;br /&gt;
&lt;br /&gt;
Auch das &amp;quot;HamServerPI&amp;quot;-Image, das in DL recht verbreitet ist, hat unter anderem Asterisk mit eingebaut. Auch dieses verwendet FreePBX, welcher standardmäßig auf Port 81 mit einer Weboberfläche antwortet.&lt;br /&gt;
&lt;br /&gt;
Unser Server &#039;&#039;&#039;sip.ir3uhf&#039;&#039;&#039; auf dem Rittnerhorn hingegen ist eher &#039;&#039;minimalistisch&#039;&#039; aufgebaut: es läuft ein asterisk &amp;quot;standalone&amp;quot; auf einem Debian LXC Container.&lt;br /&gt;
&lt;br /&gt;
=== Verteiltes Telefonverzeichnis ===&lt;br /&gt;
Für die internationale Vernetzung via HAMNET hat sich das Modul &amp;quot;DUNDi&amp;quot; etabliert. DUNDi steht für &#039;&#039;Distributed Universal Number Discovery&#039;&#039; und ist vereinfacht gesagt eine Implementierung eines verteilten/Peer-to-Peer basierten Telefonbuchs.&lt;br /&gt;
&lt;br /&gt;
Der Ablauf eines Verbindungsaufbaus läuft vereinfacht dargestellt folgendermaßen ab:&lt;br /&gt;
&lt;br /&gt;
# Ist die Telefonnummer am lokalen Server registriert, dann kann diese natürlich direkt erreicht werden.&lt;br /&gt;
# Falls nicht, werden die DUNDi-Peers befragt, ob irgendjemand diese Nummer kennt.&lt;br /&gt;
# Falls ein Server die Nummer kennt, wird mitgeschickt, wie man diesen Server erreichen kann.&lt;br /&gt;
# Der eigene Server baut eine Verbindung zum Zielserver auf&lt;br /&gt;
# Das Telefon des gewählten Verbindungspartners klingelt.&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal das einfachere Negativbeispiel anhand einer fiktiven Nummer &#039;&#039;12345&#039;&#039; welche &#039;&#039;nicht&#039;&#039; existiert:&lt;br /&gt;
&lt;br /&gt;
In diesem Fall sieht die Antwort folgendermaßen aus:&lt;br /&gt;
 vdrcsip01*CLI&amp;gt; dundi lookup 12345@priv&lt;br /&gt;
 DUNDi lookup returned no results.&lt;br /&gt;
 DUNDi lookup completed in 532 ms&lt;br /&gt;
Sollte diese Nummer also auch auf dem lokalen Server nicht bekannt sein, ist in diesem Fall nichts mehr zu machen. Die Verbindung kann nicht aufgebaut werden und das Telefon signalisiert dies dem Benutzer.&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird nun nach der Nummer des DL-Rundspruchs &#039;&#039;3122007431213153&#039;&#039; gesucht.&lt;br /&gt;
&lt;br /&gt;
Diese ist existent und es sollte folglich ein Server im Verbund gefunden werden, der diese Nummer kennt:&lt;br /&gt;
 vdrcsip01*CLI&amp;gt; dundi lookup 3122007431213153@priv&lt;br /&gt;
   1.     0 IAX2/iaxuser:##secret##@44.149.166.36/3122007431213153 (EXISTS)&lt;br /&gt;
      from 62:ec:e3:5a:57:7f, expires in 50 s&lt;br /&gt;
 DUNDi lookup completed in 1668 ms&lt;br /&gt;
In diesem Fall konnte der Server ermittelt werden, welcher diese Nummer aktuell aufliegen hat. Konkret handelt es sich im Beispiel um den Server 44.149.166.36 (sip.db0sda) bei &#039;&#039;&#039;DB0SDA in Aachen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dabei ist hervorzuheben, dass es nicht zwingend notwendig ist, zu diesem Server ein direktes DUNDi-Peering zu haben.&lt;br /&gt;
&lt;br /&gt;
Jeder Peer kann nämlich von sich aus bei einem seiner eigenen Peers weiterfragen, falls er die Information nicht selbst kennt.&lt;br /&gt;
&lt;br /&gt;
Das DUNDi-Netzwerk muss somit also nicht zwingend ein Full-Mesh sein. Es reicht &#039;&#039;jemanden zu kennen, der einen kennt, der die Nummer aufliegen hat.&#039;&#039; Die Rekursionstiefe kann dabei in der Konfigurationsdatei angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Außerdem müssen keine IAX-Trunks oder ähnliches statisch konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie man aus der Antwort des DUNDi-Lookups erkennen kann, wird beim Auffinden einer Telefonnummer die Information mitgeliefert, wie man diese Nummer erreichen kann. Diese besteht aus den folgenden Teilen:&lt;br /&gt;
&lt;br /&gt;
* Technologie/Protokoll, in diesem fall &#039;&#039;&#039;IAX2&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Benutzername&#039;&#039;&#039; und &#039;&#039;&#039;temporäres Passwort&#039;&#039;&#039; für die Verbindung&lt;br /&gt;
* &#039;&#039;&#039;IP Adresse&#039;&#039;&#039; des Zielservers&lt;br /&gt;
* die &#039;&#039;&#039;Anschlussnummer&#039;&#039;&#039;&lt;br /&gt;
* die &#039;&#039;&#039;ID&#039;&#039;&#039; des DUNDi-Peers, von dem die Information empfangen wurde&lt;br /&gt;
&lt;br /&gt;
Im HAMNET VOIP Verbund wird die Verbindung zum Zielserver in den meisten Fällen über das IAX2-Protokoll realisiert.&lt;br /&gt;
&lt;br /&gt;
Die entsprechenden Zugangsdaten für die Verbindung werden in der DUNDi-Antwort mitgeliefert, wobei das Passwort mehrmals täglich rotiert.&lt;br /&gt;
&lt;br /&gt;
 In vielen HAMNET VOIP Beispielen wird in der dundi.conf ein &#039;&#039;secret&#039;&#039; angegeben. Dieses ist vermutlich ein Relikt aus vergangenen Zeiten.&lt;br /&gt;
 &lt;br /&gt;
 In der DUNDi-Dokumentation ist diese Konfigurationsvariable nicht mehr dokumentiert und effektiv funktionieren die Peerings im HAMNET auch ohne ein Secret anzugeben&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Im Folgenden wird eine funktionierende Basiskonfiguration geschildert, so wie sie auch bei &#039;&#039;sip.ir3uhf&#039;&#039; verwendet wird.&lt;br /&gt;
&lt;br /&gt;
=== sip.conf / pjsip.conf ===&lt;br /&gt;
 [global]&lt;br /&gt;
 regcontext=dundiextens&lt;br /&gt;
 &lt;br /&gt;
 [transport-udp]&lt;br /&gt;
 type=transport&lt;br /&gt;
 protocol=udp    ;udp,tcp,tls,ws,wss&lt;br /&gt;
 bind=0.0.0.0&lt;br /&gt;
Die &#039;&#039;regcontext&#039;&#039; Option legt fuer jeden angemeldeten Benutzer dynamisch einen Eintrag im angegebenen Dialplan-Kontext &#039;&#039;dundiextens&#039;&#039; an und entfernt ihn wieder, sobald sich ein Benutzer/Telefon abmeldet.&lt;br /&gt;
&lt;br /&gt;
Die hier eingetragenen Nummern sind jene, die spaeter von DUNDi announced werden.&lt;br /&gt;
&lt;br /&gt;
Die Benutzeraccounts selbst werden in unserem Fall über die Konfigurationsdatei pjsip_wizard.conf anhand der Wizard-Funktion von PJSIP angelegt.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das auch anhand einer Datenbank gemacht werden, welche man dann ggf. auch auf weitere Standorte replizieren kann, um den Benutzern auf weiteren Servern in der Region einen Login mit denselben Zugangsdaten zu erlauben.&lt;br /&gt;
&lt;br /&gt;
=== dundi.conf ===&lt;br /&gt;
 ;&lt;br /&gt;
 ; DUNDi configuration file&lt;br /&gt;
 ;&lt;br /&gt;
 ; For more information about DUNDi, see &amp;lt;nowiki&amp;gt;http://www.dundi.com&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ;&lt;br /&gt;
 ;&lt;br /&gt;
 [general]&lt;br /&gt;
 department=DRC&lt;br /&gt;
 organization=Dolomites Radio Club&lt;br /&gt;
 locality=Bozen&lt;br /&gt;
 country=IT&lt;br /&gt;
 email=drc@drc.bz&lt;br /&gt;
 ttl=2&lt;br /&gt;
 cachetime=50&lt;br /&gt;
 autokill=yes&lt;br /&gt;
 ; eigene ID, normalerweise die eigene MAC Adresse.&lt;br /&gt;
 ; diese geben wir explizit an, damit nach etwaigem Serverumzug die ID gleichbleibt&lt;br /&gt;
 entityid=ab:cd:ef:ab:cd:ef  &lt;br /&gt;
 &lt;br /&gt;
 [mappings]&lt;br /&gt;
 &lt;br /&gt;
 priv =&amp;gt; dundiextens,0,IAX2,iaxuser:${SECRET}@44.169.1.29/${NUMBER},nopartial&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ;; konfiguration eines DUNDi-Peers&lt;br /&gt;
 [aa:bb:cc:dd:ee:ff]&lt;br /&gt;
 ; ip adresse oder hostname des Peers&lt;br /&gt;
 host=sip.standort.hamnet.radio&lt;br /&gt;
 include=priv&lt;br /&gt;
 model=symmetric&lt;br /&gt;
 order=primary&lt;br /&gt;
 permit=priv&lt;br /&gt;
 qualify=yes&lt;br /&gt;
In der dundi.conf werden nun die eigenen Details (department, organization etc. sind im Grunde nicht notwendig) konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind die Optionen &#039;&#039;ttl&#039;&#039;, &#039;&#039;cachetime&#039;&#039; sowie &#039;&#039;autokill&#039;&#039; und &#039;&#039;entityid&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;entityid&#039;&#039; wird - sofern nicht explizit angegeben - von der eigenen MAC-Adresse abgeleitet. Da diese aber bei allen Peers angegeben werden muss, empfiehlt es sich die ID explizit in der Konfigurationsdatei anzugeben, damit diese im Falle eines Server-Umzugs beibehalten werden kann.&lt;br /&gt;
&lt;br /&gt;
Die option &#039;&#039;ttl&#039;&#039; beschreibt, wieviele Hops der DUNDi-Lookup &amp;quot;weitergereicht&amp;quot; werden darf. Der wert 2 bedeutet also, dass alle angeschlossenen DUNDi-Peers auch noch ihre eigenen Peers befragen dürfen. Danach wird nicht mehr weitergefragt.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;cachetime&#039;&#039; gibt an, für wieviele Sekunden eine empfangene Antwort zwischengespeichert werden soll. Sofern nicht angegeben ist der Standardwert 3600 Sekunden (1 Stunde), was für den Einsatzzweck im HAMNET natürlich nicht sinnvoll wäre.&lt;br /&gt;
&lt;br /&gt;
In unserem Fall setzen wir die cachetime auf einen wesentlich kürzeren Wert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;autokill&#039;&#039; definiert, dass Anfragen an nicht antwortende Peers nach standardmäßig 2sec abgebrochen und der Peer als offline markiert wird.&lt;br /&gt;
&lt;br /&gt;
Der wichtigste Teil der Konfiguration befindet sich jedoch im Bereich &#039;&#039;[mappings].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird definiert, welche Nummern vom eigenen Server in den DUNDi-Verbund announced werden.&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationszeile ordnet dem DUNDi-Kontext &#039;&#039;priv&#039;&#039; den internen Kontext &#039;&#039;dundiextens&#039;&#039; zu. Dieser enthält (siehe vorhergehende &#039;&#039;pjsip.conf&#039;&#039; Konfiguration) die Telefonnummern aller aktuell am eigenen Server angemeldeten Benutzer/Telefone.&lt;br /&gt;
&lt;br /&gt;
Die darauffolgende Zahl &#039;&#039;0&#039;&#039; gibt an, dass die Nummern direkt an diesem Server aufliegen.&lt;br /&gt;
&lt;br /&gt;
Abschließend wird der Verbindungsstring angegeben, welcher den anfragenden DUNDi-Peers in der Antwort zurückgeschickt wird.&lt;br /&gt;
&lt;br /&gt;
Die Option &#039;&#039;nopartial&#039;&#039; beschreibt, dass der Server nur für exakt übereinstimmende Nummern und nicht für partielle übereinstimmungen antworten soll.&lt;br /&gt;
&lt;br /&gt;
=== iax.conf ===&lt;br /&gt;
Nach dem Auffinden des Zielservers über ein DUNDi-Lookup kann eine Verbindung zu diesem hergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Dafür wird das IAX2-Protokoll verwendet.&lt;br /&gt;
&lt;br /&gt;
Die Datei &#039;&#039;iax.conf&#039;&#039; definiert die Einzelheiten des Protokolls. Besonders wichtig dabei ist das Anlegen des Benutzers &#039;&#039;iaxuser&#039;&#039; für die einkommenden Verbindungen aus dem Verbund.&lt;br /&gt;
&lt;br /&gt;
Für die Wahl des Passwortes wird &#039;&#039;dbsecret=dundi/secret&#039;&#039; angegeben. Damit wird ein temporäres Passwort referenziert, welches von DUNDi automatisch generiert und mehrfach täglich rotiert wird.&lt;br /&gt;
&lt;br /&gt;
Die eingehenden Verbindungen werden in den Dialplan-Kontext &#039;&#039;incomingdundi&#039;&#039; geleitet.&lt;br /&gt;
&lt;br /&gt;
Im Abschnitt &#039;&#039;[general]&#039;&#039; sind die erlaubten Codecs definiert, welche für eingehende und ausgehende Verbindungen von/in den Verbund verwendet werden dürfen.&lt;br /&gt;
 [general]&lt;br /&gt;
 nochecksums=no&lt;br /&gt;
 bandwidth=low&lt;br /&gt;
 disallow=all&lt;br /&gt;
 allow=g722&lt;br /&gt;
 ;allow=ulaw&lt;br /&gt;
 allow=alaw&lt;br /&gt;
 allow=gsm                      &lt;br /&gt;
 ;jitterbuffer=no&lt;br /&gt;
 jitterbuffer=yes&lt;br /&gt;
 &lt;br /&gt;
 [iaxuser]&lt;br /&gt;
 type=friend&lt;br /&gt;
 dbsecret=dundi/secret&lt;br /&gt;
 context=incomingdundi &lt;br /&gt;
&lt;br /&gt;
=== extensions.conf ===&lt;br /&gt;
 [lookupdundi]&lt;br /&gt;
 switch =&amp;gt; DUNDi/priv&lt;br /&gt;
 &lt;br /&gt;
 [internal]&lt;br /&gt;
 include =&amp;gt; dundiextens&lt;br /&gt;
 &lt;br /&gt;
 exten =&amp;gt; _Z.,1,Dial(PJSIP/${EXTEN})&lt;br /&gt;
 same =&amp;gt; n,Goto(lookupdundi,${EXTEN},1)&lt;br /&gt;
 same =&amp;gt; n,Hangup()&lt;br /&gt;
 &lt;br /&gt;
 [incomingdundi]&lt;br /&gt;
 exten =&amp;gt; _Z.,1,Goto(internal,${EXTEN},1)&lt;br /&gt;
&lt;br /&gt;
= Anbindung von SVXLINK =&lt;br /&gt;
Svxlink kann durch die Erweiterung SipLogic an einen VOIP-Server angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Dazu braucht es:&lt;br /&gt;
&lt;br /&gt;
* PJPROJECT&lt;br /&gt;
* Svxlink von Source kompiliert, mit der Option &amp;lt;code&amp;gt;-DWITH_CONTRIB_SIP_LOGIC=ON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PJPROJECT und Svxlink Kompilieren ==&lt;br /&gt;
Damit PJPROJECT kompiliert, muss der Configure-Befehl lt. Doku mit der Option &amp;lt;code&amp;gt;-fPIC&amp;lt;/code&amp;gt; ausgeführt werden. Auf unseren Relais habe ich mit dem folgenden Configure-Befehl erfolgreich kompiliert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./configure --disable-libwebrtc --disable-video CPPFLAGS=-fPIC CXXFLAGS=-fPIC CFLAGS=-fPIC&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach&lt;br /&gt;
 make dep&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
Danach kann SVXLINK vorbereitet werden. Am besten mit den selben cmake Flags wie immer, aber zusätzlich mit &amp;lt;code&amp;gt;-DWITH_CONTRIB_SIP_LOGIC=ON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SVXLINK Konfiguration ==&lt;br /&gt;
Sämtliche Konfigurationen der SIP-Logic befinden sich in /etc/svxlink/svxlink.d/SipLogic.conf.&lt;br /&gt;
&lt;br /&gt;
Die SipLogic hat auch eine eigene TCL-Logik, und zwar /usr/share/svxlink/events.d/SipLogic.tcl&lt;br /&gt;
&lt;br /&gt;
[[index.php?title=Kategorie:HAMNET]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=HAMVOIP&amp;diff=42</id>
		<title>HAMVOIP</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=HAMVOIP&amp;diff=42"/>
		<updated>2025-08-22T14:17:40Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Allgemeine Infos ==&lt;br /&gt;
Im HAMNET existiert ein VOIP-Verbund auf Basis von Asterisk (teils &amp;quot;bare-bone&amp;quot; Asterisk, teils FreePBX).&lt;br /&gt;
&lt;br /&gt;
Die Telefonieserver heißen in der HAMNETDB meist &#039;&#039;sip.standort&#039;&#039; und haben auch meist die Beschreibung &#039;&#039;asterisk_dundi&#039;&#039; im Kommentarfeld.&lt;br /&gt;
&lt;br /&gt;
Da sich diese Server im Verbund befinden, ist es möglich, auch Rufnummern auf anderen Servern anzuwählen.&lt;br /&gt;
&lt;br /&gt;
=== Rufnummernschema ===&lt;br /&gt;
Das Rufnummernschema leitet sich durch &amp;quot;Buchstabenwahl&amp;quot; direkt vom Rufzeichen ab:&lt;br /&gt;
&lt;br /&gt;
* Erste Zahl: &#039;&#039;auf welcher Taste befindet sich der Buchstabe?&#039;&#039;&lt;br /&gt;
* zweite Zahl: &#039;&#039;der wievielte Buchstabe auf der Taste?&#039;&#039;&lt;br /&gt;
** für die Ziffer selbst ist die zweite Zahl die 0&lt;br /&gt;
&lt;br /&gt;
Beispiel: IN3FQQ wird zu:&lt;br /&gt;
&lt;br /&gt;
* I =&amp;gt; &#039;&#039;&#039;4 3&#039;&#039;&#039; (dritter Buchstabe auf der Taste 4)&lt;br /&gt;
* N =&amp;gt; &#039;&#039;&#039;6 2&#039;&#039;&#039;&lt;br /&gt;
* 3 =&amp;gt; &#039;&#039;&#039;3 0&#039;&#039;&#039; (die Ziffer selbst auf der Taste 3)&lt;br /&gt;
* F =&amp;gt; &#039;&#039;&#039;3 3&#039;&#039;&#039;&lt;br /&gt;
* Q =&amp;gt; &#039;&#039;&#039;7 2&#039;&#039;&#039;&lt;br /&gt;
* Q =&amp;gt; &#039;&#039;&#039;7 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Nummer für IN3FQQ lautet also: &#039;&#039;&#039;&#039;&#039;43 62 30 33 72 72&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sofern das verwendete Telefon eine Tastatur mit Buchstaben hat, ist die &amp;quot;Übersetzung&amp;quot; des Rufzeichens recht intuitiv.&lt;br /&gt;
&lt;br /&gt;
=== Dundi-Map Projekt ===&lt;br /&gt;
Es gibt ein Projekt, welches versucht, den DUNDi-Verbund im HAMNET mit seinen Peerings auf einer Karte darzustellen.&lt;br /&gt;
&lt;br /&gt;
Hier findet sich die Übersichtsseite im HAMNET:&lt;br /&gt;
&lt;br /&gt;
http://db0bt.hamnet.radio:85/&lt;br /&gt;
&lt;br /&gt;
Um mit einem eigenen Asterisk-Server am Projekt teilzunehmen, muss:&lt;br /&gt;
&lt;br /&gt;
* In der HamnetDB im Kommentar des SIP-Servers &#039;&#039;&#039;asterisk_dundi&#039;&#039;&#039; stehen&lt;br /&gt;
* Auf dem SIP-Server muss ein Webserver laufen, der die beiden Files &#039;&#039;/dundi.info&#039;&#039; und &#039;&#039;/dundi_show_peers.info&#039;&#039; bereitstellt. Das erste File ist statisch, letzteres wird durch einen Cronjob stündlich aktualisiert:&lt;br /&gt;
&lt;br /&gt;
 ~# cat /var/www/html/dundi.info &lt;br /&gt;
 #Rufzeichen;IP des Asterisk-Servers;MAC des Asterisk-Servers;Names des Betreibers;Rufzeichen des Betreibers;Email des Betreibers&lt;br /&gt;
 IR3UHF;44.169.1.29;ee:19:2c:04:d9:fe;Simon;IN3FQQ;tech@drc.bz&lt;br /&gt;
 &lt;br /&gt;
 ~# cat /etc/cron.hourly/dundistatus&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 asterisk -r -x &#039;dundi show peers&#039; &amp;gt; /var/www/html/dundi_show_peers.info&lt;br /&gt;
&lt;br /&gt;
== Technische Hintergründe ==&lt;br /&gt;
&lt;br /&gt;
=== Funktionsweise ===&lt;br /&gt;
Als Basis verwenden die Server jeweils die Software &#039;&#039;asterisk&#039;&#039;. Manche verwenden die Distribution FreePBX, welche mit einer Weboberfläche und einer ganzen Reihe an Erweiterungen kommt.&lt;br /&gt;
&lt;br /&gt;
Auch das &amp;quot;HamServerPI&amp;quot;-Image, das in DL recht verbreitet ist, hat unter anderem Asterisk mit eingebaut. Auch dieses verwendet FreePBX, welcher standardmäßig auf Port 81 mit einer Weboberfläche antwortet.&lt;br /&gt;
&lt;br /&gt;
Unser Server &#039;&#039;&#039;sip.ir3uhf&#039;&#039;&#039; auf dem Rittnerhorn hingegen ist eher &#039;&#039;minimalistisch&#039;&#039; aufgebaut: es läuft ein asterisk &amp;quot;standalone&amp;quot; auf einem Debian LXC Container.&lt;br /&gt;
&lt;br /&gt;
=== Verteiltes Telefonverzeichnis ===&lt;br /&gt;
Für die internationale Vernetzung via HAMNET hat sich das Modul &amp;quot;DUNDi&amp;quot; etabliert. DUNDi steht für &#039;&#039;Distributed Universal Number Discovery&#039;&#039; und ist vereinfacht gesagt eine Implementierung eines verteilten/Peer-to-Peer basierten Telefonbuchs.&lt;br /&gt;
&lt;br /&gt;
Der Ablauf eines Verbindungsaufbaus läuft vereinfacht dargestellt folgendermaßen ab:&lt;br /&gt;
&lt;br /&gt;
# Ist die Telefonnummer am lokalen Server registriert, dann kann diese natürlich direkt erreicht werden.&lt;br /&gt;
# Falls nicht, werden die DUNDi-Peers befragt, ob irgendjemand diese Nummer kennt.&lt;br /&gt;
# Falls ein Server die Nummer kennt, wird mitgeschickt, wie man diesen Server erreichen kann.&lt;br /&gt;
# Der eigene Server baut eine Verbindung zum Zielserver auf&lt;br /&gt;
# Das Telefon des gewählten Verbindungspartners klingelt.&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal das einfachere Negativbeispiel anhand einer fiktiven Nummer &#039;&#039;12345&#039;&#039; welche &#039;&#039;nicht&#039;&#039; existiert:&lt;br /&gt;
&lt;br /&gt;
In diesem Fall sieht die Antwort folgendermaßen aus:&lt;br /&gt;
 vdrcsip01*CLI&amp;gt; dundi lookup 12345@priv&lt;br /&gt;
 DUNDi lookup returned no results.&lt;br /&gt;
 DUNDi lookup completed in 532 ms&lt;br /&gt;
Sollte diese Nummer also auch auf dem lokalen Server nicht bekannt sein, ist in diesem Fall nichts mehr zu machen. Die Verbindung kann nicht aufgebaut werden und das Telefon signalisiert dies dem Benutzer.&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird nun nach der Nummer des DL-Rundspruchs &#039;&#039;3122007431213153&#039;&#039; gesucht.&lt;br /&gt;
&lt;br /&gt;
Diese ist existent und es sollte folglich ein Server im Verbund gefunden werden, der diese Nummer kennt:&lt;br /&gt;
 vdrcsip01*CLI&amp;gt; dundi lookup 3122007431213153@priv&lt;br /&gt;
   1.     0 IAX2/iaxuser:##secret##@44.149.166.36/3122007431213153 (EXISTS)&lt;br /&gt;
      from 62:ec:e3:5a:57:7f, expires in 50 s&lt;br /&gt;
 DUNDi lookup completed in 1668 ms&lt;br /&gt;
In diesem Fall konnte der Server ermittelt werden, welcher diese Nummer aktuell aufliegen hat. Konkret handelt es sich im Beispiel um den Server 44.149.166.36 (sip.db0sda) bei &#039;&#039;&#039;DB0SDA in Aachen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dabei ist hervorzuheben, dass es nicht zwingend notwendig ist, zu diesem Server ein direktes DUNDi-Peering zu haben.&lt;br /&gt;
&lt;br /&gt;
Jeder Peer kann nämlich von sich aus bei einem seiner eigenen Peers weiterfragen, falls er die Information nicht selbst kennt.&lt;br /&gt;
&lt;br /&gt;
Das DUNDi-Netzwerk muss somit also nicht zwingend ein Full-Mesh sein. Es reicht &#039;&#039;jemanden zu kennen, der einen kennt, der die Nummer aufliegen hat.&#039;&#039; Die Rekursionstiefe kann dabei in der Konfigurationsdatei angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Außerdem müssen keine IAX-Trunks oder ähnliches statisch konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie man aus der Antwort des DUNDi-Lookups erkennen kann, wird beim Auffinden einer Telefonnummer die Information mitgeliefert, wie man diese Nummer erreichen kann. Diese besteht aus den folgenden Teilen:&lt;br /&gt;
&lt;br /&gt;
* Technologie/Protokoll, in diesem fall &#039;&#039;&#039;IAX2&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Benutzername&#039;&#039;&#039; und &#039;&#039;&#039;temporäres Passwort&#039;&#039;&#039; für die Verbindung&lt;br /&gt;
* &#039;&#039;&#039;IP Adresse&#039;&#039;&#039; des Zielservers&lt;br /&gt;
* die &#039;&#039;&#039;Anschlussnummer&#039;&#039;&#039;&lt;br /&gt;
* die &#039;&#039;&#039;ID&#039;&#039;&#039; des DUNDi-Peers, von dem die Information empfangen wurde&lt;br /&gt;
&lt;br /&gt;
Im HAMNET VOIP Verbund wird die Verbindung zum Zielserver in den meisten Fällen über das IAX2-Protokoll realisiert.&lt;br /&gt;
&lt;br /&gt;
Die entsprechenden Zugangsdaten für die Verbindung werden in der DUNDi-Antwort mitgeliefert, wobei das Passwort mehrmals täglich rotiert.&lt;br /&gt;
&lt;br /&gt;
 In vielen HAMNET VOIP Beispielen wird in der dundi.conf ein &#039;&#039;secret&#039;&#039; angegeben. Dieses ist vermutlich ein Relikt aus vergangenen Zeiten.&lt;br /&gt;
 &lt;br /&gt;
 In der DUNDi-Dokumentation ist diese Konfigurationsvariable nicht mehr dokumentiert und effektiv funktionieren die Peerings im HAMNET auch ohne ein Secret anzugeben&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Im Folgenden wird eine funktionierende Basiskonfiguration geschildert, so wie sie auch bei &#039;&#039;sip.ir3uhf&#039;&#039; verwendet wird.&lt;br /&gt;
&lt;br /&gt;
=== sip.conf / pjsip.conf ===&lt;br /&gt;
 [global]&lt;br /&gt;
 regcontext=dundiextens&lt;br /&gt;
 &lt;br /&gt;
 [transport-udp]&lt;br /&gt;
 type=transport&lt;br /&gt;
 protocol=udp    ;udp,tcp,tls,ws,wss&lt;br /&gt;
 bind=0.0.0.0&lt;br /&gt;
Die &#039;&#039;regcontext&#039;&#039; Option legt fuer jeden angemeldeten Benutzer dynamisch einen Eintrag im angegebenen Dialplan-Kontext &#039;&#039;dundiextens&#039;&#039; an und entfernt ihn wieder, sobald sich ein Benutzer/Telefon abmeldet.&lt;br /&gt;
&lt;br /&gt;
Die hier eingetragenen Nummern sind jene, die spaeter von DUNDi announced werden.&lt;br /&gt;
&lt;br /&gt;
Die Benutzeraccounts selbst werden in unserem Fall über die Konfigurationsdatei pjsip_wizard.conf anhand der Wizard-Funktion von PJSIP angelegt.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das auch anhand einer Datenbank gemacht werden, welche man dann ggf. auch auf weitere Standorte replizieren kann, um den Benutzern auf weiteren Servern in der Region einen Login mit denselben Zugangsdaten zu erlauben.&lt;br /&gt;
&lt;br /&gt;
=== dundi.conf ===&lt;br /&gt;
 ;&lt;br /&gt;
 ; DUNDi configuration file&lt;br /&gt;
 ;&lt;br /&gt;
 ; For more information about DUNDi, see &amp;lt;nowiki&amp;gt;http://www.dundi.com&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ;&lt;br /&gt;
 ;&lt;br /&gt;
 [general]&lt;br /&gt;
 department=DRC&lt;br /&gt;
 organization=Dolomites Radio Club&lt;br /&gt;
 locality=Bozen&lt;br /&gt;
 country=IT&lt;br /&gt;
 email=drc@drc.bz&lt;br /&gt;
 ttl=2&lt;br /&gt;
 cachetime=50&lt;br /&gt;
 autokill=yes&lt;br /&gt;
 ; eigene ID, normalerweise die eigene MAC Adresse.&lt;br /&gt;
 ; diese geben wir explizit an, damit nach etwaigem Serverumzug die ID gleichbleibt&lt;br /&gt;
 entityid=ab:cd:ef:ab:cd:ef  &lt;br /&gt;
 &lt;br /&gt;
 [mappings]&lt;br /&gt;
 &lt;br /&gt;
 priv =&amp;gt; dundiextens,0,IAX2,iaxuser:${SECRET}@44.169.1.29/${NUMBER},nopartial&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ;; konfiguration eines DUNDi-Peers&lt;br /&gt;
 [aa:bb:cc:dd:ee:ff]&lt;br /&gt;
 ; ip adresse oder hostname des Peers&lt;br /&gt;
 host=sip.standort.hamnet.radio&lt;br /&gt;
 include=priv&lt;br /&gt;
 model=symmetric&lt;br /&gt;
 order=primary&lt;br /&gt;
 permit=priv&lt;br /&gt;
 qualify=yes&lt;br /&gt;
In der dundi.conf werden nun die eigenen Details (department, organization etc. sind im Grunde nicht notwendig) konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind die Optionen &#039;&#039;ttl&#039;&#039;, &#039;&#039;cachetime&#039;&#039; sowie &#039;&#039;autokill&#039;&#039; und &#039;&#039;entityid&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;entityid&#039;&#039; wird - sofern nicht explizit angegeben - von der eigenen MAC-Adresse abgeleitet. Da diese aber bei allen Peers angegeben werden muss, empfiehlt es sich die ID explizit in der Konfigurationsdatei anzugeben, damit diese im Falle eines Server-Umzugs beibehalten werden kann.&lt;br /&gt;
&lt;br /&gt;
Die option &#039;&#039;ttl&#039;&#039; beschreibt, wieviele Hops der DUNDi-Lookup &amp;quot;weitergereicht&amp;quot; werden darf. Der wert 2 bedeutet also, dass alle angeschlossenen DUNDi-Peers auch noch ihre eigenen Peers befragen dürfen. Danach wird nicht mehr weitergefragt.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;cachetime&#039;&#039; gibt an, für wieviele Sekunden eine empfangene Antwort zwischengespeichert werden soll. Sofern nicht angegeben ist der Standardwert 3600 Sekunden (1 Stunde), was für den Einsatzzweck im HAMNET natürlich nicht sinnvoll wäre.&lt;br /&gt;
&lt;br /&gt;
In unserem Fall setzen wir die cachetime auf einen wesentlich kürzeren Wert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;autokill&#039;&#039; definiert, dass Anfragen an nicht antwortende Peers nach standardmäßig 2sec abgebrochen und der Peer als offline markiert wird.&lt;br /&gt;
&lt;br /&gt;
Der wichtigste Teil der Konfiguration befindet sich jedoch im Bereich &#039;&#039;[mappings].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird definiert, welche Nummern vom eigenen Server in den DUNDi-Verbund announced werden.&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationszeile ordnet dem DUNDi-Kontext &#039;&#039;priv&#039;&#039; den internen Kontext &#039;&#039;dundiextens&#039;&#039; zu. Dieser enthält (siehe vorhergehende &#039;&#039;pjsip.conf&#039;&#039; Konfiguration) die Telefonnummern aller aktuell am eigenen Server angemeldeten Benutzer/Telefone.&lt;br /&gt;
&lt;br /&gt;
Die darauffolgende Zahl &#039;&#039;0&#039;&#039; gibt an, dass die Nummern direkt an diesem Server aufliegen.&lt;br /&gt;
&lt;br /&gt;
Abschließend wird der Verbindungsstring angegeben, welcher den anfragenden DUNDi-Peers in der Antwort zurückgeschickt wird.&lt;br /&gt;
&lt;br /&gt;
Die Option &#039;&#039;nopartial&#039;&#039; beschreibt, dass der Server nur für exakt übereinstimmende Nummern und nicht für partielle übereinstimmungen antworten soll.&lt;br /&gt;
&lt;br /&gt;
=== iax.conf ===&lt;br /&gt;
Nach dem Auffinden des Zielservers über ein DUNDi-Lookup kann eine Verbindung zu diesem hergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Dafür wird das IAX2-Protokoll verwendet.&lt;br /&gt;
&lt;br /&gt;
Die Datei &#039;&#039;iax.conf&#039;&#039; definiert die Einzelheiten des Protokolls. Besonders wichtig dabei ist das Anlegen des Benutzers &#039;&#039;iaxuser&#039;&#039; für die einkommenden Verbindungen aus dem Verbund.&lt;br /&gt;
&lt;br /&gt;
Für die Wahl des Passwortes wird &#039;&#039;dbsecret=dundi/secret&#039;&#039; angegeben. Damit wird ein temporäres Passwort referenziert, welches von DUNDi automatisch generiert und mehrfach täglich rotiert wird.&lt;br /&gt;
&lt;br /&gt;
Die eingehenden Verbindungen werden in den Dialplan-Kontext &#039;&#039;incomingdundi&#039;&#039; geleitet.&lt;br /&gt;
&lt;br /&gt;
Im Abschnitt &#039;&#039;[general]&#039;&#039; sind die erlaubten Codecs definiert, welche für eingehende und ausgehende Verbindungen von/in den Verbund verwendet werden dürfen.&lt;br /&gt;
 [general]&lt;br /&gt;
 nochecksums=no&lt;br /&gt;
 bandwidth=low&lt;br /&gt;
 disallow=all&lt;br /&gt;
 allow=g722&lt;br /&gt;
 ;allow=ulaw&lt;br /&gt;
 allow=alaw&lt;br /&gt;
 allow=gsm                      &lt;br /&gt;
 ;jitterbuffer=no&lt;br /&gt;
 jitterbuffer=yes&lt;br /&gt;
 &lt;br /&gt;
 [iaxuser]&lt;br /&gt;
 type=friend&lt;br /&gt;
 dbsecret=dundi/secret&lt;br /&gt;
 context=incomingdundi &lt;br /&gt;
&lt;br /&gt;
=== extensions.conf ===&lt;br /&gt;
 [lookupdundi]&lt;br /&gt;
 switch =&amp;gt; DUNDi/priv&lt;br /&gt;
 &lt;br /&gt;
 [internal]&lt;br /&gt;
 include =&amp;gt; dundiextens&lt;br /&gt;
 &lt;br /&gt;
 exten =&amp;gt; _Z.,1,Dial(PJSIP/${EXTEN})&lt;br /&gt;
 same =&amp;gt; n,Goto(lookupdundi,${EXTEN},1)&lt;br /&gt;
 same =&amp;gt; n,Hangup()&lt;br /&gt;
 &lt;br /&gt;
 [incomingdundi]&lt;br /&gt;
 exten =&amp;gt; _Z.,1,Goto(internal,${EXTEN},1)&lt;br /&gt;
&lt;br /&gt;
= Anbindung von SVXLINK =&lt;br /&gt;
Svxlink kann durch die Erweiterung SipLogic an einen VOIP-Server angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Dazu braucht es:&lt;br /&gt;
&lt;br /&gt;
* PJPROJECT&lt;br /&gt;
* Svxlink von Source kompiliert, mit der Option -DWITH&lt;br /&gt;
&lt;br /&gt;
== PJPROJECT und Svxlink Kompilieren ==&lt;br /&gt;
Damit PJPROJECT kompiliert, muss der Configure-Befehl lt. Doku mit der Option &amp;lt;code&amp;gt;-fPIC&amp;lt;/code&amp;gt; ausgeführt werden. Auf unseren Relais habe ich mit dem folgenden Configure-Befehl erfolgreich kompiliert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./configure --disable-libwebrtc --disable-video CPPFLAGS=-fPIC CXXFLAGS=-fPIC CFLAGS=-fPIC&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach&lt;br /&gt;
 make dep&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
Danach kann SVXLINK vorbereitet werden. Am besten mit den selben cmake Flags wie immer, aber zusätzlich mit &amp;lt;code&amp;gt;-DWITH_CONTRIB_SIP_LOGIC=ON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SVXLINK Konfiguration ==&lt;br /&gt;
Sämtliche Konfigurationen der SIP-Logic befinden sich in /etc/svxlink/svxlink.d/SipLogic.conf.&lt;br /&gt;
&lt;br /&gt;
Die SipLogic hat auch eine eigene TCL-Logik, und zwar /usr/share/svxlink/events.d/SipLogic.tcl&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:HAMNET]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=HAMVOIP&amp;diff=41</id>
		<title>HAMVOIP</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=HAMVOIP&amp;diff=41"/>
		<updated>2025-08-22T12:04:19Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: /* Dundi-Map Projekt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Allgemeine Infos ==&lt;br /&gt;
Im HAMNET existiert ein VOIP-Verbund auf Basis von Asterisk (teils &amp;quot;bare-bone&amp;quot; Asterisk, teils FreePBX).&lt;br /&gt;
&lt;br /&gt;
Die Telefonieserver heißen in der HAMNETDB meist &#039;&#039;sip.standort&#039;&#039; und haben auch meist die Beschreibung &#039;&#039;asterisk_dundi&#039;&#039; im Kommentarfeld.&lt;br /&gt;
&lt;br /&gt;
Da sich diese Server im Verbund befinden, ist es möglich, auch Rufnummern auf anderen Servern anzuwählen.&lt;br /&gt;
&lt;br /&gt;
=== Rufnummernschema ===&lt;br /&gt;
Das Rufnummernschema leitet sich durch &amp;quot;Buchstabenwahl&amp;quot; direkt vom Rufzeichen ab:&lt;br /&gt;
&lt;br /&gt;
* Erste Zahl: &#039;&#039;auf welcher Taste befindet sich der Buchstabe?&#039;&#039;&lt;br /&gt;
* zweite Zahl: &#039;&#039;der wievielte Buchstabe auf der Taste?&#039;&#039;&lt;br /&gt;
** für die Ziffer selbst ist die zweite Zahl die 0&lt;br /&gt;
&lt;br /&gt;
Beispiel: IN3FQQ wird zu:&lt;br /&gt;
&lt;br /&gt;
* I =&amp;gt; &#039;&#039;&#039;4 3&#039;&#039;&#039; (dritter Buchstabe auf der Taste 4)&lt;br /&gt;
* N =&amp;gt; &#039;&#039;&#039;6 2&#039;&#039;&#039;&lt;br /&gt;
* 3 =&amp;gt; &#039;&#039;&#039;3 0&#039;&#039;&#039; (die Ziffer selbst auf der Taste 3)&lt;br /&gt;
* F =&amp;gt; &#039;&#039;&#039;3 3&#039;&#039;&#039;&lt;br /&gt;
* Q =&amp;gt; &#039;&#039;&#039;7 2&#039;&#039;&#039;&lt;br /&gt;
* Q =&amp;gt; &#039;&#039;&#039;7 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Nummer für IN3FQQ lautet also: &#039;&#039;&#039;&#039;&#039;43 62 30 33 72 72&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sofern das verwendete Telefon eine Tastatur mit Buchstaben hat, ist die &amp;quot;Übersetzung&amp;quot; des Rufzeichens recht intuitiv.&lt;br /&gt;
&lt;br /&gt;
=== Dundi-Map Projekt ===&lt;br /&gt;
Es gibt ein Projekt, welches versucht, den DUNDi-Verbund im HAMNET mit seinen Peerings auf einer Karte darzustellen.&lt;br /&gt;
&lt;br /&gt;
Hier findet sich die Übersichtsseite im HAMNET:&lt;br /&gt;
&lt;br /&gt;
http://db0bt.hamnet.radio:85/&lt;br /&gt;
&lt;br /&gt;
Um mit einem eigenen Asterisk-Server am Projekt teilzunehmen, muss:&lt;br /&gt;
&lt;br /&gt;
* In der HamnetDB im Kommentar des SIP-Servers &#039;&#039;&#039;asterisk_dundi&#039;&#039;&#039; stehen&lt;br /&gt;
* Auf dem SIP-Server muss ein Webserver laufen, der die beiden Files &#039;&#039;/dundi.info&#039;&#039; und &#039;&#039;/dundi_show_peers.info&#039;&#039; bereitstellt. Das erste File ist statisch, letzteres wird durch einen Cronjob stündlich aktualisiert:&lt;br /&gt;
&lt;br /&gt;
 ~# cat /var/www/html/dundi.info &lt;br /&gt;
 #Rufzeichen;IP des Asterisk-Servers;MAC des Asterisk-Servers;Names des Betreibers;Rufzeichen des Betreibers;Email des Betreibers&lt;br /&gt;
 IR3UHF;44.169.1.29;ee:19:2c:04:d9:fe;Simon;IN3FQQ;tech@drc.bz&lt;br /&gt;
 &lt;br /&gt;
 ~# cat /etc/cron.hourly/dundistatus&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 asterisk -r -x &#039;dundi show peers&#039; &amp;gt; /var/www/html/dundi_show_peers.info&lt;br /&gt;
&lt;br /&gt;
== Technische Hintergründe ==&lt;br /&gt;
&lt;br /&gt;
=== Funktionsweise ===&lt;br /&gt;
Als Basis verwenden die Server jeweils die Software &#039;&#039;asterisk&#039;&#039;. Manche verwenden die Distribution FreePBX, welche mit einer Weboberfläche und einer ganzen Reihe an Erweiterungen kommt.&lt;br /&gt;
&lt;br /&gt;
Auch das &amp;quot;HamServerPI&amp;quot;-Image, das in DL recht verbreitet ist, hat unter anderem Asterisk mit eingebaut. Auch dieses verwendet FreePBX, welcher standardmäßig auf Port 81 mit einer Weboberfläche antwortet.&lt;br /&gt;
&lt;br /&gt;
Unser Server &#039;&#039;&#039;sip.ir3uhf&#039;&#039;&#039; auf dem Rittnerhorn hingegen ist eher &#039;&#039;minimalistisch&#039;&#039; aufgebaut: es läuft ein asterisk &amp;quot;standalone&amp;quot; auf einem Debian LXC Container.&lt;br /&gt;
&lt;br /&gt;
=== Verteiltes Telefonverzeichnis ===&lt;br /&gt;
Für die internationale Vernetzung via HAMNET hat sich das Modul &amp;quot;DUNDi&amp;quot; etabliert. DUNDi steht für &#039;&#039;Distributed Universal Number Discovery&#039;&#039; und ist vereinfacht gesagt eine Implementierung eines verteilten/Peer-to-Peer basierten Telefonbuchs.&lt;br /&gt;
&lt;br /&gt;
Der Ablauf eines Verbindungsaufbaus läuft vereinfacht dargestellt folgendermaßen ab:&lt;br /&gt;
&lt;br /&gt;
# Ist die Telefonnummer am lokalen Server registriert, dann kann diese natürlich direkt erreicht werden.&lt;br /&gt;
# Falls nicht, werden die DUNDi-Peers befragt, ob irgendjemand diese Nummer kennt.&lt;br /&gt;
# Falls ein Server die Nummer kennt, wird mitgeschickt, wie man diesen Server erreichen kann.&lt;br /&gt;
# Der eigene Server baut eine Verbindung zum Zielserver auf&lt;br /&gt;
# Das Telefon des gewählten Verbindungspartners klingelt.&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal das einfachere Negativbeispiel anhand einer fiktiven Nummer &#039;&#039;12345&#039;&#039; welche &#039;&#039;nicht&#039;&#039; existiert:&lt;br /&gt;
&lt;br /&gt;
In diesem Fall sieht die Antwort folgendermaßen aus:&lt;br /&gt;
 vdrcsip01*CLI&amp;gt; dundi lookup 12345@priv&lt;br /&gt;
 DUNDi lookup returned no results.&lt;br /&gt;
 DUNDi lookup completed in 532 ms&lt;br /&gt;
Sollte diese Nummer also auch auf dem lokalen Server nicht bekannt sein, ist in diesem Fall nichts mehr zu machen. Die Verbindung kann nicht aufgebaut werden und das Telefon signalisiert dies dem Benutzer.&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird nun nach der Nummer des DL-Rundspruchs &#039;&#039;3122007431213153&#039;&#039; gesucht.&lt;br /&gt;
&lt;br /&gt;
Diese ist existent und es sollte folglich ein Server im Verbund gefunden werden, der diese Nummer kennt:&lt;br /&gt;
 vdrcsip01*CLI&amp;gt; dundi lookup 3122007431213153@priv&lt;br /&gt;
   1.     0 IAX2/iaxuser:##secret##@44.149.166.36/3122007431213153 (EXISTS)&lt;br /&gt;
      from 62:ec:e3:5a:57:7f, expires in 50 s&lt;br /&gt;
 DUNDi lookup completed in 1668 ms&lt;br /&gt;
In diesem Fall konnte der Server ermittelt werden, welcher diese Nummer aktuell aufliegen hat. Konkret handelt es sich im Beispiel um den Server 44.149.166.36 (sip.db0sda) bei &#039;&#039;&#039;DB0SDA in Aachen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dabei ist hervorzuheben, dass es nicht zwingend notwendig ist, zu diesem Server ein direktes DUNDi-Peering zu haben.&lt;br /&gt;
&lt;br /&gt;
Jeder Peer kann nämlich von sich aus bei einem seiner eigenen Peers weiterfragen, falls er die Information nicht selbst kennt.&lt;br /&gt;
&lt;br /&gt;
Das DUNDi-Netzwerk muss somit also nicht zwingend ein Full-Mesh sein. Es reicht &#039;&#039;jemanden zu kennen, der einen kennt, der die Nummer aufliegen hat.&#039;&#039; Die Rekursionstiefe kann dabei in der Konfigurationsdatei angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Außerdem müssen keine IAX-Trunks oder ähnliches statisch konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie man aus der Antwort des DUNDi-Lookups erkennen kann, wird beim Auffinden einer Telefonnummer die Information mitgeliefert, wie man diese Nummer erreichen kann. Diese besteht aus den folgenden Teilen:&lt;br /&gt;
&lt;br /&gt;
* Technologie/Protokoll, in diesem fall &#039;&#039;&#039;IAX2&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Benutzername&#039;&#039;&#039; und &#039;&#039;&#039;temporäres Passwort&#039;&#039;&#039; für die Verbindung&lt;br /&gt;
* &#039;&#039;&#039;IP Adresse&#039;&#039;&#039; des Zielservers&lt;br /&gt;
* die &#039;&#039;&#039;Anschlussnummer&#039;&#039;&#039;&lt;br /&gt;
* die &#039;&#039;&#039;ID&#039;&#039;&#039; des DUNDi-Peers, von dem die Information empfangen wurde&lt;br /&gt;
&lt;br /&gt;
Im HAMNET VOIP Verbund wird die Verbindung zum Zielserver in den meisten Fällen über das IAX2-Protokoll realisiert.&lt;br /&gt;
&lt;br /&gt;
Die entsprechenden Zugangsdaten für die Verbindung werden in der DUNDi-Antwort mitgeliefert, wobei das Passwort mehrmals täglich rotiert.&lt;br /&gt;
&lt;br /&gt;
 In vielen HAMNET VOIP Beispielen wird in der dundi.conf ein &#039;&#039;secret&#039;&#039; angegeben. Dieses ist vermutlich ein Relikt aus vergangenen Zeiten.&lt;br /&gt;
 &lt;br /&gt;
 In der DUNDi-Dokumentation ist diese Konfigurationsvariable nicht mehr dokumentiert und effektiv funktionieren die Peerings im HAMNET auch ohne ein Secret anzugeben&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Im Folgenden wird eine funktionierende Basiskonfiguration geschildert, so wie sie auch bei &#039;&#039;sip.ir3uhf&#039;&#039; verwendet wird.&lt;br /&gt;
&lt;br /&gt;
=== sip.conf / pjsip.conf ===&lt;br /&gt;
 [global]&lt;br /&gt;
 regcontext=dundiextens&lt;br /&gt;
 &lt;br /&gt;
 [transport-udp]&lt;br /&gt;
 type=transport&lt;br /&gt;
 protocol=udp    ;udp,tcp,tls,ws,wss&lt;br /&gt;
 bind=0.0.0.0&lt;br /&gt;
Die &#039;&#039;regcontext&#039;&#039; Option legt fuer jeden angemeldeten Benutzer dynamisch einen Eintrag im angegebenen Dialplan-Kontext &#039;&#039;dundiextens&#039;&#039; an und entfernt ihn wieder, sobald sich ein Benutzer/Telefon abmeldet.&lt;br /&gt;
&lt;br /&gt;
Die hier eingetragenen Nummern sind jene, die spaeter von DUNDi announced werden.&lt;br /&gt;
&lt;br /&gt;
Die Benutzeraccounts selbst werden in unserem Fall über die Konfigurationsdatei pjsip_wizard.conf anhand der Wizard-Funktion von PJSIP angelegt.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das auch anhand einer Datenbank gemacht werden, welche man dann ggf. auch auf weitere Standorte replizieren kann, um den Benutzern auf weiteren Servern in der Region einen Login mit denselben Zugangsdaten zu erlauben.&lt;br /&gt;
&lt;br /&gt;
=== dundi.conf ===&lt;br /&gt;
 ;&lt;br /&gt;
 ; DUNDi configuration file&lt;br /&gt;
 ;&lt;br /&gt;
 ; For more information about DUNDi, see &amp;lt;nowiki&amp;gt;http://www.dundi.com&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ;&lt;br /&gt;
 ;&lt;br /&gt;
 [general]&lt;br /&gt;
 department=DRC&lt;br /&gt;
 organization=Dolomites Radio Club&lt;br /&gt;
 locality=Bozen&lt;br /&gt;
 country=IT&lt;br /&gt;
 email=drc@drc.bz&lt;br /&gt;
 ttl=2&lt;br /&gt;
 cachetime=50&lt;br /&gt;
 autokill=yes&lt;br /&gt;
 ; eigene ID, normalerweise die eigene MAC Adresse.&lt;br /&gt;
 ; diese geben wir explizit an, damit nach etwaigem Serverumzug die ID gleichbleibt&lt;br /&gt;
 entityid=ab:cd:ef:ab:cd:ef  &lt;br /&gt;
 &lt;br /&gt;
 [mappings]&lt;br /&gt;
 &lt;br /&gt;
 priv =&amp;gt; dundiextens,0,IAX2,iaxuser:${SECRET}@44.169.1.29/${NUMBER},nopartial&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ;; konfiguration eines DUNDi-Peers&lt;br /&gt;
 [aa:bb:cc:dd:ee:ff]&lt;br /&gt;
 ; ip adresse oder hostname des Peers&lt;br /&gt;
 host=sip.standort.hamnet.radio&lt;br /&gt;
 include=priv&lt;br /&gt;
 model=symmetric&lt;br /&gt;
 order=primary&lt;br /&gt;
 permit=priv&lt;br /&gt;
 qualify=yes&lt;br /&gt;
In der dundi.conf werden nun die eigenen Details (department, organization etc. sind im Grunde nicht notwendig) konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind die Optionen &#039;&#039;ttl&#039;&#039;, &#039;&#039;cachetime&#039;&#039; sowie &#039;&#039;autokill&#039;&#039; und &#039;&#039;entityid&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;entityid&#039;&#039; wird - sofern nicht explizit angegeben - von der eigenen MAC-Adresse abgeleitet. Da diese aber bei allen Peers angegeben werden muss, empfiehlt es sich die ID explizit in der Konfigurationsdatei anzugeben, damit diese im Falle eines Server-Umzugs beibehalten werden kann.&lt;br /&gt;
&lt;br /&gt;
Die option &#039;&#039;ttl&#039;&#039; beschreibt, wieviele Hops der DUNDi-Lookup &amp;quot;weitergereicht&amp;quot; werden darf. Der wert 2 bedeutet also, dass alle angeschlossenen DUNDi-Peers auch noch ihre eigenen Peers befragen dürfen. Danach wird nicht mehr weitergefragt.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;cachetime&#039;&#039; gibt an, für wieviele Sekunden eine empfangene Antwort zwischengespeichert werden soll. Sofern nicht angegeben ist der Standardwert 3600 Sekunden (1 Stunde), was für den Einsatzzweck im HAMNET natürlich nicht sinnvoll wäre.&lt;br /&gt;
&lt;br /&gt;
In unserem Fall setzen wir die cachetime auf einen wesentlich kürzeren Wert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;autokill&#039;&#039; definiert, dass Anfragen an nicht antwortende Peers nach standardmäßig 2sec abgebrochen und der Peer als offline markiert wird.&lt;br /&gt;
&lt;br /&gt;
Der wichtigste Teil der Konfiguration befindet sich jedoch im Bereich &#039;&#039;[mappings].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird definiert, welche Nummern vom eigenen Server in den DUNDi-Verbund announced werden.&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationszeile ordnet dem DUNDi-Kontext &#039;&#039;priv&#039;&#039; den internen Kontext &#039;&#039;dundiextens&#039;&#039; zu. Dieser enthält (siehe vorhergehende &#039;&#039;pjsip.conf&#039;&#039; Konfiguration) die Telefonnummern aller aktuell am eigenen Server angemeldeten Benutzer/Telefone.&lt;br /&gt;
&lt;br /&gt;
Die darauffolgende Zahl &#039;&#039;0&#039;&#039; gibt an, dass die Nummern direkt an diesem Server aufliegen.&lt;br /&gt;
&lt;br /&gt;
Abschließend wird der Verbindungsstring angegeben, welcher den anfragenden DUNDi-Peers in der Antwort zurückgeschickt wird.&lt;br /&gt;
&lt;br /&gt;
Die Option &#039;&#039;nopartial&#039;&#039; beschreibt, dass der Server nur für exakt übereinstimmende Nummern und nicht für partielle übereinstimmungen antworten soll.&lt;br /&gt;
&lt;br /&gt;
=== iax.conf ===&lt;br /&gt;
Nach dem Auffinden des Zielservers über ein DUNDi-Lookup kann eine Verbindung zu diesem hergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Dafür wird das IAX2-Protokoll verwendet.&lt;br /&gt;
&lt;br /&gt;
Die Datei &#039;&#039;iax.conf&#039;&#039; definiert die Einzelheiten des Protokolls. Besonders wichtig dabei ist das Anlegen des Benutzers &#039;&#039;iaxuser&#039;&#039; für die einkommenden Verbindungen aus dem Verbund.&lt;br /&gt;
&lt;br /&gt;
Für die Wahl des Passwortes wird &#039;&#039;dbsecret=dundi/secret&#039;&#039; angegeben. Damit wird ein temporäres Passwort referenziert, welches von DUNDi automatisch generiert und mehrfach täglich rotiert wird.&lt;br /&gt;
&lt;br /&gt;
Die eingehenden Verbindungen werden in den Dialplan-Kontext &#039;&#039;incomingdundi&#039;&#039; geleitet.&lt;br /&gt;
&lt;br /&gt;
Im Abschnitt &#039;&#039;[general]&#039;&#039; sind die erlaubten Codecs definiert, welche für eingehende und ausgehende Verbindungen von/in den Verbund verwendet werden dürfen.&lt;br /&gt;
 [general]&lt;br /&gt;
 nochecksums=no&lt;br /&gt;
 bandwidth=low&lt;br /&gt;
 disallow=all&lt;br /&gt;
 allow=g722&lt;br /&gt;
 ;allow=ulaw&lt;br /&gt;
 allow=alaw&lt;br /&gt;
 allow=gsm                      &lt;br /&gt;
 ;jitterbuffer=no&lt;br /&gt;
 jitterbuffer=yes&lt;br /&gt;
 &lt;br /&gt;
 [iaxuser]&lt;br /&gt;
 type=friend&lt;br /&gt;
 dbsecret=dundi/secret&lt;br /&gt;
 context=incomingdundi &lt;br /&gt;
&lt;br /&gt;
=== extensions.conf ===&lt;br /&gt;
 [lookupdundi]&lt;br /&gt;
 switch =&amp;gt; DUNDi/priv&lt;br /&gt;
 &lt;br /&gt;
 [internal]&lt;br /&gt;
 include =&amp;gt; dundiextens&lt;br /&gt;
 &lt;br /&gt;
 exten =&amp;gt; _Z.,1,Dial(PJSIP/${EXTEN})&lt;br /&gt;
 same =&amp;gt; n,Goto(lookupdundi,${EXTEN},1)&lt;br /&gt;
 same =&amp;gt; n,Hangup()&lt;br /&gt;
 &lt;br /&gt;
 [incomingdundi]&lt;br /&gt;
 exten =&amp;gt; _Z.,1,Goto(internal,${EXTEN},1)&lt;br /&gt;
&lt;br /&gt;
= Anbindung von SVXLINK =&lt;br /&gt;
Svxlink kann durch die Erweiterung SipLogic an einen VOIP-Server angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Dazu braucht es:&lt;br /&gt;
&lt;br /&gt;
* PJPROJECT&lt;br /&gt;
* Svxlink von Source kompiliert, mit der Option -DWITH&lt;br /&gt;
&lt;br /&gt;
== PJPROJECT und Svxlink Kompilieren ==&lt;br /&gt;
Damit PJPROJECT kompiliert, muss der Configure-Befehl lt. Doku mit der Option &amp;lt;code&amp;gt;-fPIC&amp;lt;/code&amp;gt; ausgeführt werden. Auf unseren Relais habe ich mit dem folgenden Configure-Befehl erfolgreich kompiliert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./configure --disable-libwebrtc --disable-video CPPFLAGS=-fPIC CXXFLAGS=-fPIC CFLAGS=-fPIC&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach&lt;br /&gt;
 make dep&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
Danach kann SVXLINK vorbereitet werden. Am besten mit den selben cmake Flags wie immer, aber zusätzlich mit &amp;lt;code&amp;gt;-DWITH_CONTRIB_SIP_LOGIC=ON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SVXLINK Konfiguration ==&lt;br /&gt;
Sämtliche Konfigurationen der SIP-Logic befinden sich in /etc/svxlink/svxlink.d/SipLogic.conf.&lt;br /&gt;
&lt;br /&gt;
Die SipLogic hat auch eine eigene TCL-Logik, und zwar /usr/share/svxlink/events.d/SipLogic.tcl&lt;br /&gt;
[[index.php?title=Kategorie:HAMNET]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=HAMVOIP&amp;diff=40</id>
		<title>HAMVOIP</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=HAMVOIP&amp;diff=40"/>
		<updated>2025-08-22T12:03:54Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: /* Dundi-Map Projekt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Allgemeine Infos ==&lt;br /&gt;
Im HAMNET existiert ein VOIP-Verbund auf Basis von Asterisk (teils &amp;quot;bare-bone&amp;quot; Asterisk, teils FreePBX).&lt;br /&gt;
&lt;br /&gt;
Die Telefonieserver heißen in der HAMNETDB meist &#039;&#039;sip.standort&#039;&#039; und haben auch meist die Beschreibung &#039;&#039;asterisk_dundi&#039;&#039; im Kommentarfeld.&lt;br /&gt;
&lt;br /&gt;
Da sich diese Server im Verbund befinden, ist es möglich, auch Rufnummern auf anderen Servern anzuwählen.&lt;br /&gt;
&lt;br /&gt;
=== Rufnummernschema ===&lt;br /&gt;
Das Rufnummernschema leitet sich durch &amp;quot;Buchstabenwahl&amp;quot; direkt vom Rufzeichen ab:&lt;br /&gt;
&lt;br /&gt;
* Erste Zahl: &#039;&#039;auf welcher Taste befindet sich der Buchstabe?&#039;&#039;&lt;br /&gt;
* zweite Zahl: &#039;&#039;der wievielte Buchstabe auf der Taste?&#039;&#039;&lt;br /&gt;
** für die Ziffer selbst ist die zweite Zahl die 0&lt;br /&gt;
&lt;br /&gt;
Beispiel: IN3FQQ wird zu:&lt;br /&gt;
&lt;br /&gt;
* I =&amp;gt; &#039;&#039;&#039;4 3&#039;&#039;&#039; (dritter Buchstabe auf der Taste 4)&lt;br /&gt;
* N =&amp;gt; &#039;&#039;&#039;6 2&#039;&#039;&#039;&lt;br /&gt;
* 3 =&amp;gt; &#039;&#039;&#039;3 0&#039;&#039;&#039; (die Ziffer selbst auf der Taste 3)&lt;br /&gt;
* F =&amp;gt; &#039;&#039;&#039;3 3&#039;&#039;&#039;&lt;br /&gt;
* Q =&amp;gt; &#039;&#039;&#039;7 2&#039;&#039;&#039;&lt;br /&gt;
* Q =&amp;gt; &#039;&#039;&#039;7 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die gesamte Nummer für IN3FQQ lautet also: &#039;&#039;&#039;&#039;&#039;43 62 30 33 72 72&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sofern das verwendete Telefon eine Tastatur mit Buchstaben hat, ist die &amp;quot;Übersetzung&amp;quot; des Rufzeichens recht intuitiv.&lt;br /&gt;
&lt;br /&gt;
=== Dundi-Map Projekt ===&lt;br /&gt;
Es gibt ein Projekt, welches versucht, den DUNDi-Verbund im HAMNET mit seinen Peerings auf einer Karte darzustellen.&lt;br /&gt;
&lt;br /&gt;
Hier findet sich die Übersichtsseite im HAMNET:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://db0bt.hamnet.radio:85/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um mit einem eigenen Asterisk-Server am Projekt teilzunehmen, muss:&lt;br /&gt;
&lt;br /&gt;
* In der HamnetDB im Kommentar des SIP-Servers &#039;&#039;&#039;asterisk_dundi&#039;&#039;&#039; stehen&lt;br /&gt;
* Auf dem SIP-Server muss ein Webserver laufen, der die beiden Files &#039;&#039;/dundi.info&#039;&#039; und &#039;&#039;/dundi_show_peers.info&#039;&#039; bereitstellt. Das erste File ist statisch, letzteres wird durch einen Cronjob stündlich aktualisiert:&lt;br /&gt;
&lt;br /&gt;
 ~# cat /var/www/html/dundi.info &lt;br /&gt;
 #Rufzeichen;IP des Asterisk-Servers;MAC des Asterisk-Servers;Names des Betreibers;Rufzeichen des Betreibers;Email des Betreibers&lt;br /&gt;
 IR3UHF;44.169.1.29;ee:19:2c:04:d9:fe;Simon;IN3FQQ;tech@drc.bz&lt;br /&gt;
 &lt;br /&gt;
 ~# cat /etc/cron.hourly/dundistatus&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 asterisk -r -x &#039;dundi show peers&#039; &amp;gt; /var/www/html/dundi_show_peers.info&lt;br /&gt;
&lt;br /&gt;
== Technische Hintergründe ==&lt;br /&gt;
&lt;br /&gt;
=== Funktionsweise ===&lt;br /&gt;
Als Basis verwenden die Server jeweils die Software &#039;&#039;asterisk&#039;&#039;. Manche verwenden die Distribution FreePBX, welche mit einer Weboberfläche und einer ganzen Reihe an Erweiterungen kommt.&lt;br /&gt;
&lt;br /&gt;
Auch das &amp;quot;HamServerPI&amp;quot;-Image, das in DL recht verbreitet ist, hat unter anderem Asterisk mit eingebaut. Auch dieses verwendet FreePBX, welcher standardmäßig auf Port 81 mit einer Weboberfläche antwortet.&lt;br /&gt;
&lt;br /&gt;
Unser Server &#039;&#039;&#039;sip.ir3uhf&#039;&#039;&#039; auf dem Rittnerhorn hingegen ist eher &#039;&#039;minimalistisch&#039;&#039; aufgebaut: es läuft ein asterisk &amp;quot;standalone&amp;quot; auf einem Debian LXC Container.&lt;br /&gt;
&lt;br /&gt;
=== Verteiltes Telefonverzeichnis ===&lt;br /&gt;
Für die internationale Vernetzung via HAMNET hat sich das Modul &amp;quot;DUNDi&amp;quot; etabliert. DUNDi steht für &#039;&#039;Distributed Universal Number Discovery&#039;&#039; und ist vereinfacht gesagt eine Implementierung eines verteilten/Peer-to-Peer basierten Telefonbuchs.&lt;br /&gt;
&lt;br /&gt;
Der Ablauf eines Verbindungsaufbaus läuft vereinfacht dargestellt folgendermaßen ab:&lt;br /&gt;
&lt;br /&gt;
# Ist die Telefonnummer am lokalen Server registriert, dann kann diese natürlich direkt erreicht werden.&lt;br /&gt;
# Falls nicht, werden die DUNDi-Peers befragt, ob irgendjemand diese Nummer kennt.&lt;br /&gt;
# Falls ein Server die Nummer kennt, wird mitgeschickt, wie man diesen Server erreichen kann.&lt;br /&gt;
# Der eigene Server baut eine Verbindung zum Zielserver auf&lt;br /&gt;
# Das Telefon des gewählten Verbindungspartners klingelt.&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal das einfachere Negativbeispiel anhand einer fiktiven Nummer &#039;&#039;12345&#039;&#039; welche &#039;&#039;nicht&#039;&#039; existiert:&lt;br /&gt;
&lt;br /&gt;
In diesem Fall sieht die Antwort folgendermaßen aus:&lt;br /&gt;
 vdrcsip01*CLI&amp;gt; dundi lookup 12345@priv&lt;br /&gt;
 DUNDi lookup returned no results.&lt;br /&gt;
 DUNDi lookup completed in 532 ms&lt;br /&gt;
Sollte diese Nummer also auch auf dem lokalen Server nicht bekannt sein, ist in diesem Fall nichts mehr zu machen. Die Verbindung kann nicht aufgebaut werden und das Telefon signalisiert dies dem Benutzer.&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel wird nun nach der Nummer des DL-Rundspruchs &#039;&#039;3122007431213153&#039;&#039; gesucht.&lt;br /&gt;
&lt;br /&gt;
Diese ist existent und es sollte folglich ein Server im Verbund gefunden werden, der diese Nummer kennt:&lt;br /&gt;
 vdrcsip01*CLI&amp;gt; dundi lookup 3122007431213153@priv&lt;br /&gt;
   1.     0 IAX2/iaxuser:##secret##@44.149.166.36/3122007431213153 (EXISTS)&lt;br /&gt;
      from 62:ec:e3:5a:57:7f, expires in 50 s&lt;br /&gt;
 DUNDi lookup completed in 1668 ms&lt;br /&gt;
In diesem Fall konnte der Server ermittelt werden, welcher diese Nummer aktuell aufliegen hat. Konkret handelt es sich im Beispiel um den Server 44.149.166.36 (sip.db0sda) bei &#039;&#039;&#039;DB0SDA in Aachen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dabei ist hervorzuheben, dass es nicht zwingend notwendig ist, zu diesem Server ein direktes DUNDi-Peering zu haben.&lt;br /&gt;
&lt;br /&gt;
Jeder Peer kann nämlich von sich aus bei einem seiner eigenen Peers weiterfragen, falls er die Information nicht selbst kennt.&lt;br /&gt;
&lt;br /&gt;
Das DUNDi-Netzwerk muss somit also nicht zwingend ein Full-Mesh sein. Es reicht &#039;&#039;jemanden zu kennen, der einen kennt, der die Nummer aufliegen hat.&#039;&#039; Die Rekursionstiefe kann dabei in der Konfigurationsdatei angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Außerdem müssen keine IAX-Trunks oder ähnliches statisch konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie man aus der Antwort des DUNDi-Lookups erkennen kann, wird beim Auffinden einer Telefonnummer die Information mitgeliefert, wie man diese Nummer erreichen kann. Diese besteht aus den folgenden Teilen:&lt;br /&gt;
&lt;br /&gt;
* Technologie/Protokoll, in diesem fall &#039;&#039;&#039;IAX2&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Benutzername&#039;&#039;&#039; und &#039;&#039;&#039;temporäres Passwort&#039;&#039;&#039; für die Verbindung&lt;br /&gt;
* &#039;&#039;&#039;IP Adresse&#039;&#039;&#039; des Zielservers&lt;br /&gt;
* die &#039;&#039;&#039;Anschlussnummer&#039;&#039;&#039;&lt;br /&gt;
* die &#039;&#039;&#039;ID&#039;&#039;&#039; des DUNDi-Peers, von dem die Information empfangen wurde&lt;br /&gt;
&lt;br /&gt;
Im HAMNET VOIP Verbund wird die Verbindung zum Zielserver in den meisten Fällen über das IAX2-Protokoll realisiert.&lt;br /&gt;
&lt;br /&gt;
Die entsprechenden Zugangsdaten für die Verbindung werden in der DUNDi-Antwort mitgeliefert, wobei das Passwort mehrmals täglich rotiert.&lt;br /&gt;
&lt;br /&gt;
 In vielen HAMNET VOIP Beispielen wird in der dundi.conf ein &#039;&#039;secret&#039;&#039; angegeben. Dieses ist vermutlich ein Relikt aus vergangenen Zeiten.&lt;br /&gt;
 &lt;br /&gt;
 In der DUNDi-Dokumentation ist diese Konfigurationsvariable nicht mehr dokumentiert und effektiv funktionieren die Peerings im HAMNET auch ohne ein Secret anzugeben&lt;br /&gt;
&lt;br /&gt;
== Konfiguration ==&lt;br /&gt;
Im Folgenden wird eine funktionierende Basiskonfiguration geschildert, so wie sie auch bei &#039;&#039;sip.ir3uhf&#039;&#039; verwendet wird.&lt;br /&gt;
&lt;br /&gt;
=== sip.conf / pjsip.conf ===&lt;br /&gt;
 [global]&lt;br /&gt;
 regcontext=dundiextens&lt;br /&gt;
 &lt;br /&gt;
 [transport-udp]&lt;br /&gt;
 type=transport&lt;br /&gt;
 protocol=udp    ;udp,tcp,tls,ws,wss&lt;br /&gt;
 bind=0.0.0.0&lt;br /&gt;
Die &#039;&#039;regcontext&#039;&#039; Option legt fuer jeden angemeldeten Benutzer dynamisch einen Eintrag im angegebenen Dialplan-Kontext &#039;&#039;dundiextens&#039;&#039; an und entfernt ihn wieder, sobald sich ein Benutzer/Telefon abmeldet.&lt;br /&gt;
&lt;br /&gt;
Die hier eingetragenen Nummern sind jene, die spaeter von DUNDi announced werden.&lt;br /&gt;
&lt;br /&gt;
Die Benutzeraccounts selbst werden in unserem Fall über die Konfigurationsdatei pjsip_wizard.conf anhand der Wizard-Funktion von PJSIP angelegt.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das auch anhand einer Datenbank gemacht werden, welche man dann ggf. auch auf weitere Standorte replizieren kann, um den Benutzern auf weiteren Servern in der Region einen Login mit denselben Zugangsdaten zu erlauben.&lt;br /&gt;
&lt;br /&gt;
=== dundi.conf ===&lt;br /&gt;
 ;&lt;br /&gt;
 ; DUNDi configuration file&lt;br /&gt;
 ;&lt;br /&gt;
 ; For more information about DUNDi, see &amp;lt;nowiki&amp;gt;http://www.dundi.com&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ;&lt;br /&gt;
 ;&lt;br /&gt;
 [general]&lt;br /&gt;
 department=DRC&lt;br /&gt;
 organization=Dolomites Radio Club&lt;br /&gt;
 locality=Bozen&lt;br /&gt;
 country=IT&lt;br /&gt;
 email=drc@drc.bz&lt;br /&gt;
 ttl=2&lt;br /&gt;
 cachetime=50&lt;br /&gt;
 autokill=yes&lt;br /&gt;
 ; eigene ID, normalerweise die eigene MAC Adresse.&lt;br /&gt;
 ; diese geben wir explizit an, damit nach etwaigem Serverumzug die ID gleichbleibt&lt;br /&gt;
 entityid=ab:cd:ef:ab:cd:ef  &lt;br /&gt;
 &lt;br /&gt;
 [mappings]&lt;br /&gt;
 &lt;br /&gt;
 priv =&amp;gt; dundiextens,0,IAX2,iaxuser:${SECRET}@44.169.1.29/${NUMBER},nopartial&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ;; konfiguration eines DUNDi-Peers&lt;br /&gt;
 [aa:bb:cc:dd:ee:ff]&lt;br /&gt;
 ; ip adresse oder hostname des Peers&lt;br /&gt;
 host=sip.standort.hamnet.radio&lt;br /&gt;
 include=priv&lt;br /&gt;
 model=symmetric&lt;br /&gt;
 order=primary&lt;br /&gt;
 permit=priv&lt;br /&gt;
 qualify=yes&lt;br /&gt;
In der dundi.conf werden nun die eigenen Details (department, organization etc. sind im Grunde nicht notwendig) konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind die Optionen &#039;&#039;ttl&#039;&#039;, &#039;&#039;cachetime&#039;&#039; sowie &#039;&#039;autokill&#039;&#039; und &#039;&#039;entityid&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;entityid&#039;&#039; wird - sofern nicht explizit angegeben - von der eigenen MAC-Adresse abgeleitet. Da diese aber bei allen Peers angegeben werden muss, empfiehlt es sich die ID explizit in der Konfigurationsdatei anzugeben, damit diese im Falle eines Server-Umzugs beibehalten werden kann.&lt;br /&gt;
&lt;br /&gt;
Die option &#039;&#039;ttl&#039;&#039; beschreibt, wieviele Hops der DUNDi-Lookup &amp;quot;weitergereicht&amp;quot; werden darf. Der wert 2 bedeutet also, dass alle angeschlossenen DUNDi-Peers auch noch ihre eigenen Peers befragen dürfen. Danach wird nicht mehr weitergefragt.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;cachetime&#039;&#039; gibt an, für wieviele Sekunden eine empfangene Antwort zwischengespeichert werden soll. Sofern nicht angegeben ist der Standardwert 3600 Sekunden (1 Stunde), was für den Einsatzzweck im HAMNET natürlich nicht sinnvoll wäre.&lt;br /&gt;
&lt;br /&gt;
In unserem Fall setzen wir die cachetime auf einen wesentlich kürzeren Wert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;autokill&#039;&#039; definiert, dass Anfragen an nicht antwortende Peers nach standardmäßig 2sec abgebrochen und der Peer als offline markiert wird.&lt;br /&gt;
&lt;br /&gt;
Der wichtigste Teil der Konfiguration befindet sich jedoch im Bereich &#039;&#039;[mappings].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird definiert, welche Nummern vom eigenen Server in den DUNDi-Verbund announced werden.&lt;br /&gt;
&lt;br /&gt;
Die Konfigurationszeile ordnet dem DUNDi-Kontext &#039;&#039;priv&#039;&#039; den internen Kontext &#039;&#039;dundiextens&#039;&#039; zu. Dieser enthält (siehe vorhergehende &#039;&#039;pjsip.conf&#039;&#039; Konfiguration) die Telefonnummern aller aktuell am eigenen Server angemeldeten Benutzer/Telefone.&lt;br /&gt;
&lt;br /&gt;
Die darauffolgende Zahl &#039;&#039;0&#039;&#039; gibt an, dass die Nummern direkt an diesem Server aufliegen.&lt;br /&gt;
&lt;br /&gt;
Abschließend wird der Verbindungsstring angegeben, welcher den anfragenden DUNDi-Peers in der Antwort zurückgeschickt wird.&lt;br /&gt;
&lt;br /&gt;
Die Option &#039;&#039;nopartial&#039;&#039; beschreibt, dass der Server nur für exakt übereinstimmende Nummern und nicht für partielle übereinstimmungen antworten soll.&lt;br /&gt;
&lt;br /&gt;
=== iax.conf ===&lt;br /&gt;
Nach dem Auffinden des Zielservers über ein DUNDi-Lookup kann eine Verbindung zu diesem hergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Dafür wird das IAX2-Protokoll verwendet.&lt;br /&gt;
&lt;br /&gt;
Die Datei &#039;&#039;iax.conf&#039;&#039; definiert die Einzelheiten des Protokolls. Besonders wichtig dabei ist das Anlegen des Benutzers &#039;&#039;iaxuser&#039;&#039; für die einkommenden Verbindungen aus dem Verbund.&lt;br /&gt;
&lt;br /&gt;
Für die Wahl des Passwortes wird &#039;&#039;dbsecret=dundi/secret&#039;&#039; angegeben. Damit wird ein temporäres Passwort referenziert, welches von DUNDi automatisch generiert und mehrfach täglich rotiert wird.&lt;br /&gt;
&lt;br /&gt;
Die eingehenden Verbindungen werden in den Dialplan-Kontext &#039;&#039;incomingdundi&#039;&#039; geleitet.&lt;br /&gt;
&lt;br /&gt;
Im Abschnitt &#039;&#039;[general]&#039;&#039; sind die erlaubten Codecs definiert, welche für eingehende und ausgehende Verbindungen von/in den Verbund verwendet werden dürfen.&lt;br /&gt;
 [general]&lt;br /&gt;
 nochecksums=no&lt;br /&gt;
 bandwidth=low&lt;br /&gt;
 disallow=all&lt;br /&gt;
 allow=g722&lt;br /&gt;
 ;allow=ulaw&lt;br /&gt;
 allow=alaw&lt;br /&gt;
 allow=gsm                      &lt;br /&gt;
 ;jitterbuffer=no&lt;br /&gt;
 jitterbuffer=yes&lt;br /&gt;
 &lt;br /&gt;
 [iaxuser]&lt;br /&gt;
 type=friend&lt;br /&gt;
 dbsecret=dundi/secret&lt;br /&gt;
 context=incomingdundi &lt;br /&gt;
&lt;br /&gt;
=== extensions.conf ===&lt;br /&gt;
 [lookupdundi]&lt;br /&gt;
 switch =&amp;gt; DUNDi/priv&lt;br /&gt;
 &lt;br /&gt;
 [internal]&lt;br /&gt;
 include =&amp;gt; dundiextens&lt;br /&gt;
 &lt;br /&gt;
 exten =&amp;gt; _Z.,1,Dial(PJSIP/${EXTEN})&lt;br /&gt;
 same =&amp;gt; n,Goto(lookupdundi,${EXTEN},1)&lt;br /&gt;
 same =&amp;gt; n,Hangup()&lt;br /&gt;
 &lt;br /&gt;
 [incomingdundi]&lt;br /&gt;
 exten =&amp;gt; _Z.,1,Goto(internal,${EXTEN},1)&lt;br /&gt;
&lt;br /&gt;
= Anbindung von SVXLINK =&lt;br /&gt;
Svxlink kann durch die Erweiterung SipLogic an einen VOIP-Server angebunden werden.&lt;br /&gt;
&lt;br /&gt;
Dazu braucht es:&lt;br /&gt;
&lt;br /&gt;
* PJPROJECT&lt;br /&gt;
* Svxlink von Source kompiliert, mit der Option -DWITH&lt;br /&gt;
&lt;br /&gt;
== PJPROJECT und Svxlink Kompilieren ==&lt;br /&gt;
Damit PJPROJECT kompiliert, muss der Configure-Befehl lt. Doku mit der Option &amp;lt;code&amp;gt;-fPIC&amp;lt;/code&amp;gt; ausgeführt werden. Auf unseren Relais habe ich mit dem folgenden Configure-Befehl erfolgreich kompiliert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./configure --disable-libwebrtc --disable-video CPPFLAGS=-fPIC CXXFLAGS=-fPIC CFLAGS=-fPIC&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach&lt;br /&gt;
 make dep&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
Danach kann SVXLINK vorbereitet werden. Am besten mit den selben cmake Flags wie immer, aber zusätzlich mit &amp;lt;code&amp;gt;-DWITH_CONTRIB_SIP_LOGIC=ON&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SVXLINK Konfiguration ==&lt;br /&gt;
Sämtliche Konfigurationen der SIP-Logic befinden sich in /etc/svxlink/svxlink.d/SipLogic.conf.&lt;br /&gt;
&lt;br /&gt;
Die SipLogic hat auch eine eigene TCL-Logik, und zwar /usr/share/svxlink/events.d/SipLogic.tcl&lt;br /&gt;
[[index.php?title=Kategorie:HAMNET]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Datei:Gantkofel-IR3V.png&amp;diff=39</id>
		<title>Datei:Gantkofel-IR3V.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Datei:Gantkofel-IR3V.png&amp;diff=39"/>
		<updated>2025-08-22T11:52:25Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gantkofel-IR3V&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=38</id>
		<title>Gantkofel IR3UGM</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=38"/>
		<updated>2025-08-22T11:45:42Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der &#039;&#039;&#039;Gantkofel&#039;&#039;&#039; ist 1.866 m hoch. Von dort hat man einen fabelhaften Ausblick auf die Stadt Meran, das Etschtal, die Gefrorene Wand (A), das Saltner Hochplateau, das Rittnerhorn, die Stadt Bozen und das Unterland mit Eppan und Kaltern. Im Winter ist der Gantkofel nur zu Fuß oder mit einer Schneekatze erreichbar.&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an die Zuständigen des fabelhaften Standortes Adrian, Bartl und Norbert IW3AKA von Radio Antenne.&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an die Autonome Provinz Bozen und Trient für die Gastfreundschaft in den Gebäuden des Wetterradars (R7 – Ari Bozen).&lt;br /&gt;
&lt;br /&gt;
Eine Live-Web-Cam, die das aktuelle Panorama des Gantkofels bringt, findet man [https://www.foto-webcam.eu/webcam/gantkofel/ hier]!&lt;br /&gt;
&lt;br /&gt;
== Technische Daten: ==&lt;br /&gt;
&lt;br /&gt;
==== Aktueller Stand der Hamnet-Anlagen ====&lt;br /&gt;
&lt;br /&gt;
==== IR3UGM-1 ====&lt;br /&gt;
  * Haupt-Router am Standort Gantkofel&lt;br /&gt;
  * **Mikrotik RB750UP** im Rack&lt;br /&gt;
&lt;br /&gt;
==== IR3UGM_SW ====&lt;br /&gt;
  * 24Port 100MBit Switch von TP-LINK&lt;br /&gt;
  * im Rack installiert&lt;br /&gt;
  * Hier werden alle Geräte am Standort angeschlossen&lt;br /&gt;
&lt;br /&gt;
==== Richtfunk Marlinger Berg IR3UHE ====&lt;br /&gt;
  * Antenne: **Grid-Parabel**&lt;br /&gt;
  * RTX: **Mikrotik Metal5**&lt;br /&gt;
  * Standard: **IEEE 802.11a**&lt;br /&gt;
  * Frequenz: **5GHz-Band**&lt;br /&gt;
  * Kanalbandbreite: **10MHz**&lt;br /&gt;
  * Protokoll: **Mikrotik NV2 (TDMA)**&lt;br /&gt;
  * TDMA-Zeitschlitzdauer: **8ms**&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Userzugang Bozen und Umgebung ===&lt;br /&gt;
  * Antenne: **Sektorantenne**,&lt;br /&gt;
  * RTX: **Mikrotik Metal2**&lt;br /&gt;
  * Öffnungswinkel: **120 Grad**&lt;br /&gt;
  * Antennengewinn: **17dBi**&lt;br /&gt;
  * Standard: **802.11b/g**&lt;br /&gt;
  * Frequenz: **2GHz-Band** (für Einstiege bitte an Tobias IW3BRC wenden)&lt;br /&gt;
  * Kanalbandbreite: **5MHz**&lt;br /&gt;
  * Protokoll: **Standard 802.11**&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Richtfunk Seceda IR3UGB ===&lt;br /&gt;
  * Antenne: **Kathrein Parabolspiegel**&lt;br /&gt;
  * RTX: **&#039;&#039;&#039;Mikrotik Metal5&#039;&#039;&#039;**&lt;br /&gt;
  * Standard: **IEEE 802.11a**&lt;br /&gt;
  * Frequenz: **5790MHz**&lt;br /&gt;
  * Kanalbandbreite: **10MHz**&lt;br /&gt;
  * Protokoll: **Mikrotik NV2**&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Richtfunk Rittnerhorn IR3UHF ===&lt;br /&gt;
  * Antenne: **Panelantenne** (QRT5)&lt;br /&gt;
  * Standard: **802.11a**&lt;br /&gt;
  * Frequenz: **5GHz-Band**&lt;br /&gt;
  * Kanalbandbreite: **10MHz**&lt;br /&gt;
  * Protokoll: **Mikrotik NV2 (TDMA)** (seit Juni 2016)&lt;br /&gt;
  * TDMA-Zeitschlitzdauer: **8ms**&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== Packet Radio ======&lt;br /&gt;
  * PR-Einstieg auf 144.900 MHz 1200 baud&lt;br /&gt;
  * Flexnet Verbindung zu IGATE und DB0FHN&lt;br /&gt;
  * Orange Pi Zero:&lt;br /&gt;
    * Direwolf Software TNC&lt;br /&gt;
    * (X)net Flexnet Digipeater (**IR3UGM**)&lt;br /&gt;
    * LinBPQ Digipeater (**IR3UGM-1**)&lt;br /&gt;
[[Kategorie:Standorte]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=37</id>
		<title>Gantkofel IR3UGM</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Gantkofel_IR3UGM&amp;diff=37"/>
		<updated>2025-08-22T11:37:17Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der &#039;&#039;&#039;Gantkofel&#039;&#039;&#039; ist 1.866 m hoch. Von dort hat man einen fabelhaften Ausblick auf die Stadt Meran, das Etschtal, die Gefrorene Wand (A), das Saltner Hochplateau, das Rittnerhorn, die Stadt Bozen und das Unterland mit Eppan und Kaltern. Im Winter ist der Gantkofel nur zu Fuß oder mit einer Schneekatze erreichbar.&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an die Zuständigen des fabelhaften Standortes Adrian, Bartl und Norbert IW3AKA von Radio Antenne.&lt;br /&gt;
&lt;br /&gt;
Vielen Dank an die Autonome Provinz Bozen und Trient für die Gastfreundschaft in den Gebäuden des Wetterradars (R7 – Ari Bozen).&lt;br /&gt;
&lt;br /&gt;
Eine Live-Web-Cam, die das aktuelle Panorama des Gantkofels bringt, findet man [https://www.foto-webcam.eu/webcam/gantkofel/ hier]!&lt;br /&gt;
&lt;br /&gt;
== Technische Daten: ==&lt;br /&gt;
&lt;br /&gt;
==== Aktueller Stand der Hamnet-Anlagen ====&lt;br /&gt;
&lt;br /&gt;
==== IR3UGM-1 ====&lt;br /&gt;
  * Haupt-Router am Standort Gantkofel&lt;br /&gt;
  * **Mikrotik RB750UP** im Rack&lt;br /&gt;
&lt;br /&gt;
==== IR3UGM_SW ====&lt;br /&gt;
  * 24Port 100MBit Switch von TP-LINK&lt;br /&gt;
  * im Rack installiert&lt;br /&gt;
  * Hier werden alle Geräte am Standort angeschlossen&lt;br /&gt;
&lt;br /&gt;
==== Richtfunk Marlinger Berg IR3UHE ====&lt;br /&gt;
  * Antenne: **Grid-Parabel**&lt;br /&gt;
  * RTX: **Mikrotik Metal5**&lt;br /&gt;
  * Standard: **IEEE 802.11a**&lt;br /&gt;
  * Frequenz: **5GHz-Band**&lt;br /&gt;
  * Kanalbandbreite: **10MHz**&lt;br /&gt;
  * Protokoll: **Mikrotik NV2 (TDMA)**&lt;br /&gt;
  * TDMA-Zeitschlitzdauer: **8ms**&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Userzugang Bozen und Umgebung ===&lt;br /&gt;
  * Antenne: **Sektorantenne**,&lt;br /&gt;
  * RTX: **Mikrotik Metal2**&lt;br /&gt;
  * Öffnungswinkel: **120 Grad**&lt;br /&gt;
  * Antennengewinn: **17dBi**&lt;br /&gt;
  * Standard: **802.11b/g**&lt;br /&gt;
  * Frequenz: **2GHz-Band** (für Einstiege bitte an Tobias IW3BRC wenden)&lt;br /&gt;
  * Kanalbandbreite: **5MHz**&lt;br /&gt;
  * Protokoll: **Standard 802.11**&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Richtfunk Seceda IR3UGB ===&lt;br /&gt;
  * Antenne: **Kathrein Parabolspiegel**&lt;br /&gt;
  * RTX: **&#039;&#039;&#039;Mikrotik Metal5&#039;&#039;&#039;**&lt;br /&gt;
  * Standard: **IEEE 802.11a**&lt;br /&gt;
  * Frequenz: **5790MHz**&lt;br /&gt;
  * Kanalbandbreite: **10MHz**&lt;br /&gt;
  * Protokoll: **Mikrotik NV2**&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Richtfunk Rittnerhorn IR3UHF ===&lt;br /&gt;
  * Antenne: **Panelantenne** (QRT5)&lt;br /&gt;
  * Standard: **802.11a**&lt;br /&gt;
  * Frequenz: **5GHz-Band**&lt;br /&gt;
  * Kanalbandbreite: **10MHz**&lt;br /&gt;
  * Protokoll: **Mikrotik NV2 (TDMA)** (seit Juni 2016)&lt;br /&gt;
  * TDMA-Zeitschlitzdauer: **8ms**&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== Packet Radio ======&lt;br /&gt;
  * PR-Einstieg auf 144.900 MHz 1200 baud&lt;br /&gt;
  * Flexnet Verbindung zu IGATE und DB0FHN&lt;br /&gt;
  * Orange Pi Zero:&lt;br /&gt;
    * Direwolf Software TNC&lt;br /&gt;
    * (X)net Flexnet Digipeater (**IR3UGM**)&lt;br /&gt;
    * LinBPQ Digipeater (**IR3UGM-1**)&lt;br /&gt;
[[index.php?title=Kategorie:Standorte]]&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Kategorie:HAMNET&amp;diff=36</id>
		<title>Kategorie:HAMNET</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Kategorie:HAMNET&amp;diff=36"/>
		<updated>2025-08-22T09:39:06Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Begriff „&#039;&#039;&#039;HAMNET&#039;&#039;&#039;“ steht für Highspeed Amateurradio Multimedia Network. &lt;br /&gt;
&lt;br /&gt;
Es handelt sich um ein internationales Projekt zur digitalen Vernetzung von automatisch arbeitenden Amateurfunkstellen. Die gemeinsame Basis des HAMNET ist das TCP/IP-Protokoll unter Verwendung des für Funkamateure zugewiesenen IPv4-Adressbereichs 44.0.0.0/8 (Network 44) und des Routingprotokolls BGP4 (Border Gateway Protokoll), welches auch das Internet zusammenhält. &lt;br /&gt;
&lt;br /&gt;
Das HAMNET ist ein nichtöffentliches Netzwerk (Intranet) mit einem begrenzten Nutzerkreis (Funkamateure). Einzelne Netzsegmente können über das Internet oder WLAN (ISM) verbunden werden. Endnutzer können sich neben direktem Funkzugang auch über öffentliche Netze (z.B. dem Internet) unter Verwendung von Authentifizierungsmechanismen in das HAMNET einwählen. Innerhalb des HAMNET gilt jeder als vertrauenswürdig, so dass keine zusätzliche Authentifizierung erfolgen muss.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Infos ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HAMNET Datenbank&#039;&#039;&#039; mit allen Sites, Richtfunkstrecken und Diensten: https://hamnetdb.net&lt;br /&gt;
* &#039;&#039;&#039;HAMNET Übersichtskarte:&#039;&#039;&#039; https://hamnetdb.net/map.cgi&lt;br /&gt;
* Informationsseiten unserer Kollegen der &#039;&#039;&#039;IP Koordination DL&#039;&#039;&#039;:  https://de.hamnet.network&lt;br /&gt;
* Ansprechpartner in IN3&lt;br /&gt;
** Thomas, IW3AMQ (Koordinator)&lt;br /&gt;
** Simon, IN3FQQ&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Kategorie:HAMNET&amp;diff=35</id>
		<title>Kategorie:HAMNET</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Kategorie:HAMNET&amp;diff=35"/>
		<updated>2025-08-22T09:38:01Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Begriff „&#039;&#039;&#039;HAMNET&#039;&#039;&#039;“ steht für Highspeed Amateurradio Multimedia Network. &lt;br /&gt;
&lt;br /&gt;
Es handelt sich um ein internationales Projekt zur digitalen Vernetzung von automatisch arbeitenden Amateurfunkstellen. Die gemeinsame Basis des HAMNET ist das TCP/IP-Protokoll unter Verwendung des für Funkamateure zugewiesenen IPv4-Adressbereichs 44.0.0.0/8 (Network 44) und des Routingprotokolls BGP4 (Border Gateway Protokoll), welches auch das Internet zusammenhält. &lt;br /&gt;
&lt;br /&gt;
Das HAMNET ist ein nichtöffentliches Netzwerk (Intranet) mit einem begrenzten Nutzerkreis (Funkamateure). Einzelne Netzsegmente können über das Internet oder WLAN (ISM) verbunden werden. Endnutzer können sich neben direktem Funkzugang auch über öffentliche Netze (z.B. dem Internet) unter Verwendung von Authentifizierungsmechanismen in das HAMNET einwählen. Innerhalb des HAMNET gilt jeder als vertrauenswürdig, so dass keine zusätzliche Authentifizierung erfolgen muss.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Infos ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HAMNET Datenbank&#039;&#039;&#039; mit allen Sites, Richtfunkstrecken und Diensten: https://hamnetdb.net&lt;br /&gt;
* Informationsseiten unserer Kollegen der &#039;&#039;&#039;IP Koordination DL&#039;&#039;&#039;:  https://de.hamnet.network&lt;br /&gt;
* Ansprechpartner in IN3&lt;br /&gt;
** Thomas, IW3AMQ (Koordinator)&lt;br /&gt;
** Simon, IN3FQQ&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
	<entry>
		<id>https://wiki.drc.bz/index.php?title=Kategorie:HAMNET&amp;diff=34</id>
		<title>Kategorie:HAMNET</title>
		<link rel="alternate" type="text/html" href="https://wiki.drc.bz/index.php?title=Kategorie:HAMNET&amp;diff=34"/>
		<updated>2025-08-22T09:33:17Z</updated>

		<summary type="html">&lt;p&gt;IN3FQQ: Die Seite wurde neu angelegt: „Der Begriff „&amp;#039;&amp;#039;&amp;#039;HAMNET&amp;#039;&amp;#039;&amp;#039;“ steht für Highspeed Amateurradio Multimedia Network.   Es handelt sich um ein internationales Projekt zur digitalen Vernetzung von automatisch arbeitenden Amateurfunkstellen. Die gemeinsame Basis des HAMNET ist das TCP/IP-Protokoll unter Verwendung des für Funkamateure zugewiesenen IPv4-Adressbereichs 44.0.0.0/8 (Network 44) und des Routingprotokolls BGP4 (Border Gateway Protokoll), welches auch das Internet zusammenhält.…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Begriff „&#039;&#039;&#039;HAMNET&#039;&#039;&#039;“ steht für Highspeed Amateurradio Multimedia Network. &lt;br /&gt;
&lt;br /&gt;
Es handelt sich um ein internationales Projekt zur digitalen Vernetzung von automatisch arbeitenden Amateurfunkstellen. Die gemeinsame Basis des HAMNET ist das TCP/IP-Protokoll unter Verwendung des für Funkamateure zugewiesenen IPv4-Adressbereichs 44.0.0.0/8 (Network 44) und des Routingprotokolls BGP4 (Border Gateway Protokoll), welches auch das Internet zusammenhält. &lt;br /&gt;
&lt;br /&gt;
Das HAMNET ist ein nichtöffentliches Netzwerk (Intranet) mit einem begrenzten Nutzerkreis (Funkamateure). Einzelne Netzsegmente können über das Internet oder WLAN (ISM) verbunden werden. Endnutzer können sich neben direktem Funkzugang auch über öffentliche Netze (z.B. dem Internet) unter Verwendung von Authentifizierungsmechanismen in das HAMNET einwählen. Innerhalb des HAMNET gilt jeder als vertrauenswürdig, so dass keine zusätzliche Authentifizierung erfolgen muss.&lt;/div&gt;</summary>
		<author><name>IN3FQQ</name></author>
	</entry>
</feed>