----=== HF ===-----


H F   -   H O W T O   

LINUX-AMATEURFUNK-KURZWELLEN-PROGRAMM 

RTTY, AMTOR, GTOR, PACTOR 1, MT63  

MIT TCP/IP INTERFACE ZUR F6FBB - MAILBOX  

MIT CW-ELBUG

Von Gnther Montag DL4MGE  

Version 0.8 (2/2007)



1. Einfhrung :

Das hf-Paket implementiert die historischen Amateurfunk-
FSK-Protokolle RTTY, AMTOR (SITOR), GTOR, Pactor-1, auerdem
Pawel Jalocha's Multiton-Protokoll MT63 und eine CW-Elbug fr
Maus und Paddle.

Die Implementation der Protokolle ist im Programm hfkernel, das
im Hintergrund als "Dmon" luft. ber ein UNIX-domain-socket
kommuniziert es mit dem zugehrigen graphischen Terminal
hfterm. Das Startskript hf startet hfterm, dieses startet
hfkernel.

Das PTT- (push to talk) Signal kann ber den RTS-Pin einer
seriellen Schnittstelle ausgegeben werden.  

Eine Kalibration kann ntig sein, 3 Tools dazu sind enthalten.

ber einen TCP-Port kann hfterm mit dem bekannten
Mailbox-Programm F6FBB, und allen Programmen, die eine
TCP/IP-Schnittstelle haben und Text auf eine Konsole ausgeben. 
verbunden werden. So kann hf als automatische Mailbox arbeiten
oder zu Fernsteuerungszwecken dienen.

Das Programm wurde 1997 von Tom Sailer geschrieben (Danke!!!)
und wird laufend von Gnther Montag und vielen Freunden
weiterentwickelt.

Bitte um Kontakt ber die Mailingliste!


2. Installation, erster Test, Konfiguration:

2.1. Installation des rpm-Pakets:

rpm -i hf-<version>.rpm 
oder (bei falscher Fehlermeldung wegen fehlendem gtk)
rpm -i --nodeps hf-<version>.rpm

2.2. Installation des Quelltextpakets:

(fr Entwickler!)
tar -zxvf hf-<version>.tar.gz 
cd hf-<version> 
./configure 
make
(als root):  make install 

Abhngigkeiten: 
ncurses-devel, glib-devel, gtk-devel(Version 1.2.10)

Probleme:
Wenn configure klagt 'Cannot find GTK: Is gtk-config in path?',
gtk aber da ist, suche es: 'which gtk-config' und dann hilft
ein link wie dieses (als root ausfhren): 
ln -s /opt/gnome/bin/gtk-config /usr/bin/gtk-config. 
Oder trage den Pfad von gtk-config in /etc/ld.so.conf ein. 
Wenn gtk-config anzeigt da die gtk-libraries
in/opt/gnome/kde... sind, mssen diese evtl nach /usr/lib
kopiert werden, damit configure sie findet.

2.3. Erster Test:

Am besten, rufe auf einer X-Konsole (Befehlsfenster) das
Startskript hf auf. Es startet das graphische Terminal hfterm,
dieses startet das Hintergrundprogramm hfkernel. Auf der
Konsole zeigen die Meldungen von hfkernel, ob alles in Ordnung
ist. Wenn ein Funkgert an die Soundkarte angeschlossen ist,
zeigt das Spektrumdisplay (Spectrum-Button oder F2 oder
<Strg>+F), ob Signale ankommen, und ob die Verstrkung der
Soundkarte richtig eingestellt ist. Der Squelch lt sich im
Spektrum mit der rechten Maustaste ndern. Nachdem ein Modus
gewhlt ist (linke Knopfleiste), erscheinen im RX-Fenster
decodierte Zeichen. Gewonnen!

Wenn hf luft, kannst Du mit der rechten Maustaste auf das
Desktop klicken, ein Men erscheint, mit dem du hf mit einem
Icon verknpfen kannst... das wei aber ein alter Linux-Hase
schon.

Probleme: 
hfkernel hat manchmal Konflikte mit der Soundkarte. Vieles habe
ich aber schon fr den Frieden getan. Siehe Kapitel 4. 

2.4. Konfiguration

Alle Einstellungen erfolgen ber das Men 'config' in hfterm.
Gerteeinstellungen (Serielle Schnittstelle, Soundkarte) und
Kalibrationen werden erst nach Neustarten von hf wirksam. Die
Textbausteine knnen ber das Men 'fixtexts' gendert werden.

Das Startskript hf legt brigens beim ersten Start in Deinem
home-Verzeichnis ein Verzeichnis "hf" an und fllt es mit den
Beispieldateien aus /usr/(local)/share/hf/hf-examplefiles fr
die Textmakros.


3. Anschlu der PTT-Buchse und der Elbug: 

3.1. PTT / Key:

Wie bei jedem Funkprogramm, werden mit 1 npn-Transistor und 2
Widerstnden Computer und Funkgert verbunden:                 
     
                              _____
                      /------|_10k_|---O  
 RTS pin             /                PTT pin 
 Computer           /                 Transceiver
       _____    B |/      C
 O----|_10k_|-----|\
                  | \     E
                     _|
           npn        \
           Transistor |
                      |
                      |
              Masse =====
                                               

Die gleiche Schaltung brauchst Du noch einmal, falls Du die
Ausgabe des elbug (DTR-Pin der seriellen Schnittstelle) mit der
Key-Buchse des Funkgerts verbinden willst. Natrlich kannst Du
auch die Elbug an RTS lassen und mit einem Umschalter zwischen
Key und PTT whlen.

Fr manche Transceiver ist diese Schaltung zu hochohmig, dann
den Collectorwiderstand weglassen und als Emitter 330 Ohm. Fr
diesen Fall gibt es ein gutes Beispiel (Danke an Waldis
Jirgens) bei:http://members.optusnet.com.au/~waldis/ifacen.gif,
da ist auch eine Transformator-Kopplung fr die Soundkarte
gezeigt.

3.2. elbug:

Paddle: +9 V ber Widerstand 2 k,
Linker Kontakt:  -> DCD (9-pin Stecker: 1) (25-pin Stecker: 8),
Rechter Kontakt: -> CTS (9-pin Stecker: 8) (25-pin Stecker: 5),
Masse:                  (9-pin Stecker: 5) (25-pin Stecker: 7) 


4. Optionen und Problemlsungen fr hfkernel:

Wenn hf luft, dieses Kapitel berspringen!

Es ist ein "besonderes" Programm, und stellt daher auch
manchmal "besondere" Ansprche. Darber mu man einiges wissen,
um die hufigsten Fehlermeldungen verstehen zu knnen.

4.1. Root-Rechte

hfkernel mu wegen des besonderen Hardwarezugriffs
(Echtzeitmodus, hohe Prioritt, threads, mmap) mit den Rechten
von root, dem Superuser, aufgerufen werden. Bei der
Installation wird automatisch das Suid-Bit an hfkernel
vergeben, 
mit dem Befehl chmod 4755 hfkernel. Wenn das luft und Du so 
zufrieden bist, brauchst Du nicht weiterlesen.

Fehler mit 'permission denied' und mit 'pthread_create' bei
Start von hfkernel als Nicht-root weisen auf ein Problem hier
hin: Ist das suid-bit gesetzt? ls -l /usr/local/bin/hfkernel
sollte ergeben: -rwsr-xr-x. Das 's' ist das suid-Bit, also
Superuser-Recht bei Ausfhrung. Wenn es nicht da ist, setze es
von Hand als root mit chmod u+s hfkernel oder chmod 4755
hfkernel.

4.2 Serielle Schnittstelle:

Fehler mit 'ioctl: TIOCMBI[CS]:' Konflikt mit der Maus? Ist die
serielle Schnittstelle richtig eingestellt? (Daher ist als
Vorgabe im Config-Men keine eingestellt.)

4.3. Probleme mit Soundkarten:

Die Soundkarte mu 16-Bit-Sampling in der Byteordnung der CPU,
8kHz Sampling-Rate, und sollte memory mapping der DMA-Puffer
untersttzen. Sie mu im "Mono"-Betrieb laufen knnen, was
manche neuere Soundkarten nicht mehr knnen! Eine
Voll-Duplex-Soundkarte ist vorzuziehen.

hfkernel mit Tom's Original-Code geht nicht mit jeder
Soundkarte und nicht mit jedem Treiber. Grund ist nicht, weil
das Programm schlecht wre, sondern weil es gut ist! Wegen der
zeitkritischen FSK-ARQ-Protokolle (Amtor, Gtor, Pactor) ist es
notwendig, im Echtzeit-Modus zu arbeiten, und deswegen wurde
von Tom als bester Weg das Programm mit dem "mmap()" -
Systemaufruf geschrieben. Dies (auch "DMA", direct memory
access, direkter Zpeicherzugriff, also direktes Spiegeln des
Soundkarten-Ringpuffers im Arbeitsspeicher des Computers) kann
nicht jede Soundkarte, und nicht jeder Soundtreiber untersttzt
das richtig.

Dafr ist die '-n' -Option, die diese Schwierigkeit umgeht.
hfkernel sollte sie ab V. 0.8 automatisch bei Bedarf selbst
setzen. Wenn nicht, von Hand versuchen im Config-Men.
(Probeweise in Konsole: hfkernel -n)

Halb-Duplex-Soundkarten: Falls hfkernel sie nicht automatisch
erkennt, Option -h. Die Soundharte wird umgeschaltet, wenn das
Protokoll vom Empfangen zum Senden und umgekehrt bergeht. Das
dauert recht lang, zwischen 5 und 35 ms. Das Program mit die
durchschnittliche Zeit beim Start. Es versucht, diese Latenz in
der PTT-Auftastverzgerung (TXDelay) zu verstecken, also stelle
das txdelay im Config-Men von hfterm auf einen etwas greren
Wert als die von hfkernel gemessene Umschaltzeit ein, und
hoffe, da die Summe aus Ausbreitungszeit zu Deinem Funkpartner
und dessen txdelay auch lnger ist. (Voreinstellung 30 ms)

4.4. Probleme mit dem Sound-Treiber

4.4.1. Was ist ein Treiber, was ist ein API?

Ein Treiber ist ein Programm, das 'allgemeine' Befehle aus
einer Anwendung (z.B. hfkernel, oder ein Programm zum Hren von
Musikdateien) in 'spezielle' Befehle fr ein spezielles Gert,
z.B. die Soundkarte Via 82C686, bersetzt.

Der Treiber stellt also fr den Programmierer die 'allgemeinen'
Befehlsstze zur Verfgung und bersetzt sie beim laufenden
Programm im Verborgenen in die 'speziellen'.

Die 'allgemeinen' Befehlsstze heien auch API (Application
Programmer`s Interface) und man kann sie sich auch wie eine
kleine `Programmiersprache', oder auch so etwas wie eine
Fachsprache fr ein spezielles Gebiet innerhalb von c
vorstellen.

4.4.2 OSS und ALSA

Fr Linux gibt es fr die Soundkartenprogrammierung 2
verschiedene APIs:

OSS: 
(Open Sound Systems) Die ltere, traditionelle API. Bis etwa
Kernel 2.4 waren die OSS-Treiber als ladbare Kernelmodule
standardmig dabei. In alten Linux-Distributionen gab es ein
Zwischending, ein mit der Distribution bezahltes OSS-Paket,
das, z.B. bei meinem SuSE6.3 in /tmp/opso gefunden werden
konnte und mit hf gut funktioniert. Die
Standard-OSS-Kernelmodule sind
in/lib/modules/<kernelversion>/misc (Quelltexte in
/usr/src/linux/<kernelversion>/drivers/sound). Sie lassen sich,
ggf. nach Deaktivieren von ALSA mit rcalsasound stop, mit
modprobe installieren. (man modprobe, modprobe -p ... liefert
Parameterinformation, modprobe -d zeigt die Reihenfolge des
Ladens der voneinander abhngigen Module.) Vielleicht hilft Dir
-bei ISA-PNP-Karten- pnpdump und isapnp, (siehe manpages), bei
PCI-Karten lspci, und die Dokumentation in
/usr/src/linux/Documentation/sound fr Deine Soundkarte.  

ALSA: 
(Advanced Linux Sound Architecture). Die ALSA-Treibermodule
sind ab Kernel 2.4 als Option, ab Kernel 2.6 als Standard dabei
und werden wohl in Zukunft die Hauptrolle spielen. ALSA
untersttzt auch viele der neuesten Soundkarten. Die neueste
Version von ALSA und viel gute Dokumentation gibt es bei:
http://www.alsa-project.org
http://www.alsa-opensource.org
Mailinglisten knnen abonniert werden, fast 1000 Mails
pro Monat:
https://lists.sourceforge.net/lists/listinfo/alsa-devel
https://lists.sourceforge.net/lists/listinfo/alsa-user

Du kannst als root mit dem Befehl lsmod testen, welche
Soundtreiber-Module in Deinem Linux laufen: Die ALSA-Module
fangen alle mit 'snd-' an.

Die ALSA-API hat eine vllig andere Logik als die OSS-API. Wenn
ALSA nicht auch noch zustzlich eine OSS-Emulation enthalten
wrde, wre das schlimm, dann wrden viele gute alte Programme
(Funk, Musik, Spiele...) nicht mehr mit dem neuen Linux
laufen.:-(  da sie auch heute noch in der OSS-Api programmiert
sind. (Du kannst die verschiedenen Programmcodes in
hfkernel/l1/oss.c und hfkernel/l1/alsa.c vergleichen!)

4.4.3 hfkernel, OSS und ALSA:

hfkernel's Soundschnittstelle wurde, wie die der meisten
Amateurfunkprogramme, fr die  OSS-API geschrieben, luft auch
mit der OSS-Emulation der ALSA-Treiber.

Da hfkernel besondere Ansprche stellt (mmap und Realtime-
Modus) luft es, je nach Soundkarte, manchmal mit OSS, manchmal
mit der OSS-Emulation von ALSA, manchmal gar nicht!

Um den neuen ALSA-Voll-Duplex-Code zu testen, mut Du 
entsprechend der ALSA-Konvention die Option 
'-a hw:0,0' fr die erste, oder 
'-a hw:1,0' fr die zweite Soundkarte usw. 
im Config-Men in hfterm whlen.

Noch ist der Code fr das OSS-API als Standard eingestellt. 
Aber bitte teste den ALSA-Code! Danke!  ;-) 

4.4.4 Stufenplan bei Soundtreiber-Problemen mit hfkernel

Setze probeweise Optionen in hfterm's config-Men / General, 
dann rufe hf von einer Konsole aus, damit Du hfkernel's 
Ausgaben siehst. 

Fehler mit 'open': Ist der Soundkarten-Treiber berhaupt
geladen ? (lsmod, kann ein anderes Programm, z.B. dcf77gen oder
dcf77gen-n, einen Ton erzeugen?)

Wenn hfkernel nicht luft, knntest Du die Optionen in dieser
Reihenfolge testen:

Falls ALSA-Treiber installiert sind (teste das als root mit
'lsmod', die Module beginnen mit '-snd'): '-a hw:0,0'

Sonst: Fehler mit 'MMAP': '-n'

Manchmal sagt das Testprogramm da die Soundkarte
voll-duplexfhig ist, aber sie ist es nicht: Erwzinge den
Halbduplex-Mode mit '-h'

Wenn bei Halbduplexbetrieb in Standby die Zahlen nach 'corrout
...intermediate ...' immer 8000 sind, funktioniert im
Halbduplex-Modus die rdtsc-Zeitabfrage nicht. Dies kommt vor
allem bei Nicht-Intel-Prozessoren vor. Dann mu die Option '-R'
(deaktiviert die RDTSC-Instruktion) zugefgt werden.

Immer noch nichts? Andere Seondkarte probieren.

if (Nervensystem == am Ende) { 
subscribe_mailing_list
("https://lists.sourceforge.net/lists/listinfo/hfterm-hackers")
;
mailto(hfterm.hackers@sf.net);
sleep (24 hrs);
break;}

4.5. Probleme mit threads

In der Dokumentation zu Suse 9.2 steht da der Kernel 2.6.8 mit
Threads anders umgeht. (Ein Thread ist so etwas wie eine
programminterne Endlosschleife.) hfterm und hfkernel luft mit
diesem Kernel nur wenn sie mit einem Prefix aufgerufen werden,
das den Kernel anweist, auf die alte Art mit den Threads
umzugehen: 'LD_ASSUME_KERNEL=2.2.5 hfterm ' Wenn hfterm
hfkernel aufruft, gengt dies fr beide. Im hf-Startskript ist
das voreingestellt. Im Test mit einem neuen ubuntu-Kernel
2.6.18 scheint das Prefix wiederum nicht ntig zu sein, es lief
ohne.

4.6. Sichern der Konfiguration und Deiner Seele

Wenn hf luft, fixiere es mit Leim und berhre das laufende
System nie mehr. Das heit, stelle die fr Dich richtigen
Optionen fest im Men ein. Arbeite nie mehr als 24 Stunden pro
Abend. Schau ob Deine Familie noch da ist. Vergi nie: Mach das
Ganze nur mit Spa. Wenn Du depressiv wirst, maile mir. Ich bin
Psychotherapeut. War aber selber zeitweise programmierschtig.
Ich heilte mich selbst durch Klavierspielen, Besuch am Grab
meines Vaters, andere Sachen machen und computerfreie Tage
feiern.

4.7. Vollstndige Liste der Optionen von hfkernel:

Teils experimentell. Nur zur Information. 
-2 Im Standby-Modus 200 Baud nicht decodieren 
-3 Im Standby-Modus 300 Baud nicht decodieren 
-a Pfad zum Audio-Gert
(Default: /dev/dsp (OSS), fr ALSA: -a plughw:0,0) 
-c Pfad zur Software-Schnittstelle (Default: /var/run/hfapp) 
-f Im Standby-Modus keine Frequenznachstellung
(frequencytracking) -h Halbduplex erzwingen (nur fr OSS) 
-i invertiert PTT-Impuls 
-k Hfkernel beenden (wird im Startskript hf verwendet, hilft
auch bei Hngenbleiben...)
-l Eintrge in Logdatei (Default: keine) 
-M Pfad zum Mixergert (nicht gebraucht) 
-m CPU-Uhr in MHz (auf khz genau) 
-n Verzicht auf 'mmap()' (siehe oben) (Nur fr OSS) 
-p Pfad zur seriellen Schnittstelle fr PTT (Default: keiner) 
-R deaktiviert RDTSC-Instruction (nur bei Intel-Systemen). Die
Verwendung der RDTSC-Instruktion kann bei Laptopsund/oder bei
aktiviertem APM (Advanced Power Management) Probleme
verursachen.
-r Zugangsrechte zur Software-Schnittstelle 
(Default: 0777 =rwxrwxrwx) 
-s Korrektur der soundcard sampling rate 
-t gettimeofday - Korrekturfaktor 


5. hfterm und die Digimodes:

5.1. Einfhrung

Die Bedienung von hfterm ist intuitiv. Hilfe, wenn gebraucht:
F1. Status- und Mode-Men und die Buttons erklren sich selbst.
Wenn Du, wie ich, keine Muse magst, werden Dich die vielen
Tastenkrzel, siehe Mens, beglcken. Modus mit F...,
Textmakros mit <Shift>F...

Es gibt 3 Ebenen fr Fehler- und Verlaufsmeldungen:
1. Die Konsole im Hintergrund: Ausgabe von hfkernel.
2. Monitor: Empfangene Daten auerhalb eines Connects.
3. Status-Display: Was hf gerade tut.
Wenn hf gut luft, wird nur 3. gebraucht.

Wenn Du wissen mchtest, wie die Digimodes klingen:
Beispielklnge in www.wunclub.com/sounds !

hfterm denkt mit (autorx / autotx -Funktionen). Eingaben ins
Sendefenster schalten auf Senden im passenden oder letzten
Modus. Nach einigen Sekunden schaltet hfterm auf Empfang, auer
es ist explizit ein Sendemodus, z.B. Rtty-Tx, gewhlt.
Autorx/tx ist hilfreich fr die Baken- und Mailbox-Funktion,
kann aber durch zu wenig Warten und zu viel Klicken verwirrt
werden. Besonders MT63 braucht lange Zeit zwischen Empfang und
Senden und zurck, wegen der Datenverschachtelung, die Puffer
mssen leerlaufen.

Wenn Du einen Modus wechselst, gehe nicht von einem Sendemodus
direkt in einen anderen! Sondern, wie Du als guter Funkamateur
ja weit, zuerst auf Empfang (oder warte autorx ab), dann auf
Empfang des neuen Modus, dann erst auf Sendung.

Falls sich das Programm aufhngt, erst mal warten, evtl.
neustarten (erst mal hf, nicht den Computer. Wir sind ja hier
nicht bei Bill.)  (Aber auch Hardlocks der Soundkarte sind
durch zu viel Herumklicken mglich, da hilft dann nur Neustart
des Computers, fast wie bei Bill.)

5.2. Allgemeines 

5.2.1 SPEKTRUM

Als neuer Benutzer freunde Dich zuerst mit dem Spektrum an.
Falls kein Signal erscheint, schau nach ob Rig und Soundkarte
(Line out) richtig verkabelt sind, und ob die Signalstrke gut
eingestellt ist, z.B. mit Poti in der Leitung vom Rig zur
Soundkarte oder einen Mixer wie aumix (fr OSS und ALSA) oder
alsamixer. Das Spektrum hat eine blaue und rote Linie fr Mark
und Space, und eine waagrechte grne Linie fr Squelch. 

Mark und Space: Du kannst Mark und Space mit der Maus ndern:
Wenn einer der gegebenen Shifts gewhlt ist, wird der linke
Knopf mark whlen (space ist mark plus shift), oder der
mittlere Knopf whlt die Mittelfrequenz. Wenn der "other" shift
gewhlt ist, mut Du 2 mal fr erst mark, dann space klicken.
Das ganze wirkt natrlich nur fr die FSK-Modes. MT63 hat einen
festen Audio-Frequenzbereich.

Squelch: Der rechte Mausknopf whlt den Squelch.

5.2.2 PARAMETER

Im Config-Men (<Ctrl>+P) gibt es eine Eingabemglickheit fr
persnliche Parameter, wie Rufzeichen und Leistung, Rig,
Antenne, Locator, QTH, Name, Mail. Diese Daten werden in die
Fixtexte bernommen. Dann gibt es Programm-Parameter wie Mark,
Shift, Baudrate, Txdelay fr die verschiedenen Betriebsarten.
Beim Beenden von hfterm werden die Parameter in ~/hf/hfterm.rc
gespeichert (digital, bitte nicht editieren!). Nach nderungen
in "General" mu hf neu gestartet werden.

5.2.3 FIXTEXTE

Wenn Du Textbausteine magst, editiere die Fixtexte (bis 12) mit
'<Strg>+ T'. Bestimmte Begriffe in eckigen Klammern werden
ersetzt, Gedchtnissttze fr die mglichen Schlsselwrter ist
das Fenster unten im Fixtexteditor. Zum Beispiel: [B] =
Bakenaussendung (z.B.CQ), [TIME]= Zeitstempel. Zum Senden eines
Bausteins auf einen der 12 Buttonsklicken oder 'Shift F<1
..12>', zurcklehnen und Kaffeetrinken. Die Fixtexte werden in
~/hf/fix.<nr> gespeichert und knnen auch von auerhalb des
Programms editiert werden. Durch Einfgen oder Umbenennen
kannst Du beliebige Ascii-Texte bis zu einerLnge von 1024
Zeichen importieren. Mit dem File-Men kannst Du aber auch eine
beliebige Datei suchen und senden.

5.2.4 BAKE

Wie gesagt, wenn ein Fixtext [B] enthlt, wird bei seiner
Auswahl automatisch die Bake gestartet. Du kannst sie mit
<Alt>+B oder ber das File-Men stoppen. Wenn Du eine externe
Datei als Bake senden mchtest,starte den Bakenmodus mit
<Alt>+B oder ber das File-Men, dann erscheint ein
Dateiauswahl-Dialog. Nach Stop und Neustart der Bake wird die
zuvor eingestellte Datei wieder gesendet. Wird aber ein
Fixtext angewhlt, der [B] enthlt, ist dieser der neue
Bakentext. Wenn hf als Mailbox betrieben wird, wird fr die
Zeit 
eines hereinkommenden Connects die Bake unterbrochen.

Das Zeitintervall fr die Bakensendung wird im Config-Men
festgelegt, es wird etwa auf ein Vielfaches von 5 Sekunden
gerundet, die Angabe ist aber nicht genau.

5.2.5 LOGBUCH

Es gibt sogar 2. Eins fr groe Schirme, es ist immer offen.
Einfach ausfllen und auf 'save' (oder 'clear') klicken. Das
andere Logist fr meinen alten kleinen Bildschirm (ein grerer
pat nicht in mein Funkzimmer).  Entferne das groe
Log-Eingabefeld mit '<Strg>+Q'.  Mit'<Strg>+ N' ffnet sich das
kleine Log, wenn Du es brauchst, und das Status display unten
bleibt zu sehen. '<Strg>+ L' zeigt das ganze Logbuch, '<Strg>+
A' archiviert die Logdatei und ffnet eine neue.'<Strg>+ O'
sucht alte Eintrge zum Editieren oder Lschen. Das Log wird in
Portionen zu je 50 Eintrgen gespeichert. Die alten Logdateien
werden numeriert und knnen nicht mehr von hfterm, aber extern
mit jedem Texteditor bearbeitet werden. Das Format ist an den
Cabrillo-Standard angepat. nderungswnsche fr Deinen
speziellen Contest knnen bei Verstndnis der printf-
Formatspezifizierer (man printf) im Quelltext hfterm/src/log.c
leicht verwirklicht werden!

5.2.6 RX-TEXT

Empfangene Texte werden in ~/hf/hfrx gespeichert. Wenn das
Programm lange luft, wird immer wieder eine Hlfte des Textes
im Empfangsfenster an diese Datei angehngt. Bis zu 5 alte
Texte werden in  ~/hf/hfrx.old... aufgehoben. Im File-Men kann
auch zustzlich ein Dateiname zum Speichernausgewhlt werden.

5.3 Die Modes

5.3.0 CW Elbug

Mein neuester Hack, einzigartig in Linux? Ich wurde dafr
inspiriert von Larry Winslow's "CW" DOS-Programm. Die Schaltung
ist auch aus Larry's Beschreibung. HF hat nur die Simulation
einer elektronischen Taste. Ein Tastatur-Encoder and -Decoder
sind schon in gMFSK verwirklicht.

Meine Tests mit der Soundkarte gaben eine zu groe Verzgerung,
so da elbug nun nur mit dem PC-Lautsprecher kommt noch, die
Ausgabe ist als nur RTS oder DTR. Im Empfangsfenster
erscheinen Deine Zeichen decodiert.
Danke fr die Inspirationen aus cwdaemon und cwlib:
http://www.qsl.net/pg4i/linux/cwdaemon.html

Du kannst den elbug durch Klicken mit dem rechten und linken
Mausknopf in das Sendefenster testen. (Tip: Maus umdrehen und
einklemmen.) Mit der Maus morst es sich aber nicht so bequem,
Paddle ist besser. Verkabelung siehe Kap. 3 oben und
Konsolenausgabe. Die Geschwindigkeit, Ton und serieller Pin 
knnen im Config-Men eingestellt werden.

Es gibt den Elbug auch als kleines Konsolenprogramm elbug, in
hf enthalten und gebrauchsfertig. (Keine Mausuntersttzung).

5.3.1. RTTY

Zum Anfreunden mit dem hf-Programm versuche zuerst RTTY zu
empfangen und zu senden. blich sind Shift 170 Hz und Baudrate
45.45. Suche im 20m-Band nach dem typischen schnen
RTTY-Maschinengerusch. Nach meiner Erfahrung geht das
Abstimmen
am schnellsten mit dem Transceiver. Drehe die 2 Peaks unter die
blaue und rote Linie im Spektrum. Bei Dauersendung (Mode-Men) 
kommt ein "Diddle" mit "LTRS...".

5.3.2. Die FEC / ARQ - Modes PACTOR - AMTOR - GTOR

Wenn Du mit hf diese Modes testen wollt, versucht bitte
unbedingt, ob hfkernel ohne die Option -n geht, und teste auch
den ALSA-Vollduplextreiber durch Whlen der Soundkarte 'hw:0,0'
im Config-Men.

FEC (Forward Error Correction):
Pactor 1 und Amtor: 
Signale werden mehrmals gesendet und ausgemittelt.
Z.B. fr CQ.

ARQ (Automatic Repeat Request): 
Pactor, Amtor und Gtor:
fr Connects zwischen 2 Stationen: Nach jedem Datenpaket sendet
der Empfnger ein Kontrollpaket, das den richtigen Empfang
besttigt (wenn die vom Empfnger berechnete CRC, eine
Checksumme, stimmt) und ggf. um Wiederholung, Langsamerwerden,
Schnellerwerden oder Richtungswechsel bittet.

5.3.2.1 Amtor

Amtor ist, so weit ich wei, der erste Digimode, der
automatische Connects ermglichte. Es wurde aus RTTY
entwickelt. Der Abstand der einzelnen Datenpakete ist 0,45 sec.

5.3.2.2 Gtor

Gtor scheint kaum mehr gebruchlich zu sein.

Das Howto ist hier noch unvollstndig, bitte schickt mir
Dokumentationen ber Amtor und Gtor!

5.3.2.3 Pactor

Wichtig: Wenn Du Dich ernsthaft mit Pactor beschftigen willst,
lies auch /usr/(local/)share/doc/hf/Pactor.txt und Kap. 6.
Pactor ist eine Weiterentwicklung von Amtor, sein Level 1 war
lange Zeit sehr gebruchlich, geht nun immer mehr zurck
zugunsten der Level 2 und 3, die nicht als Soundkartenprogramme
verfgbar sind. Im laufenden Connect folgt auf jedes
Datenpaktet ein kurzen Besttigungspaket, so da man einen
Wechsel von langen und kurzen Tnen hrt, im 1.25-Sekunden-
Rhythmus abgehackt. be erst das Empfangen, es ist etwas
schwieriger als bei RTTY. Im Spektrumdisplay sieht Pactor
hnlich wie RTTY aus. Rufe CQ in Pactor-FEC (Geduld!). Wenn
jemand in FEC zurck ruft, vereinbart ein Connect in ARQ. Rufe
eine Mailbox in ARQ. Gehe nach dem Senden nicht sofort in
'standby', das Programm knnte hngen. (Wenn es hngt, einfach
warten.) Sondern: QRT ('AltQ'), etwas warten (QRT -Routine),
dann geht das Program von selbst in standby. Der
Geschwindigkeitswechsel bei Pactor 1 (von 100 auf 200 baud)
geschieht automatisch. 

5.3.3 MT63

Vielen Dank an Pawel Jalocha, der diesen neueren Modus
programmiert hat. Er ist sehr robust, und insbesondere bei
schlechten bertragungsbedingungen besser als Pactor 3, und
knnte in der Zukunft fr geplante "emcomm" Systeme  wertvoll
sein. (Emergency communication, siehe dazu die Diskussion in
der linlink-Mailingliste bei www.wetnet.net)

Aufgrund der vielen interessanten Experimentiermglichkeiten
habe ich Pawel`s gesamtes MT63-Paket mit den Konsolenprogrammen
mt63tx, mt63rx und mt63trx, die Tools morsecod, peakrms,
addnoise und das Kalibrierprogramm ratecal1 ins hf-Paket
eingefgt.

Ich fge hier einen Teil von Pawel`s Dokumentation ber MT63
ein. (Das ganze Dokument ist mt63.txt im doc-Verzeichnis.)

Das ist Version 0.5 des MT63-Modem fr LINUX. 08-JUL-2004,
Autor: Pawel Jalocha, SP9VRC, Pawel.Jalocha@cern.ch 

Wichtig: 
1. Um das MT63-Modem voll auszunutzen, mu die sampling rate
Deiner Soundkarte entweder kalibriert werden oder genau bei
8000.0 Hz liegen. Derzeit informiert der MT63-Decoder nicht
ber  die Abweichung, vielleicht schaffe ich die Mglichkeit in
zuknftigen Versionen. 
2. Beschdige beim Verbinden der Soundkarte mit DeinemPC/Laptop
nicht die Soundkarteneingnge. Ich schlage vor, erst die Massen
von Rig und Computer, und erst dann die Audiokabel zu
verbinden. 

Das MT63-Modem ist fr Amateurfunk als RTTY-hnliche
Konversation gedacht, bei der eine Station sendet und eine oder
mehr Stationen hren. Es sendet 64 Tne in seiner Bandbreite
von 1 kHz im Bereich 500-1500 Hz. In differentialer bipolarer
Phasenmodulation werden 10 Bits/s auf jedem Ton codiert. Die
Daten werden als 7-bit ASCII-Characters als Satz von
64-Punkt-Walsh-Functionen encodiert. Die Bits werden ber 32
Symbole (3.2Sekunden) verschachtelt (Orig. "interleaved", so
auch die Parametereinstellung, Anm. d. .) gesendet, dies macht
den Modus sowohl gegen phasische als auch frequenzabhngige
Strgerusche und Fading unempfindlich. 

Die bertragungsgeschwindigkeit fr Zeichen ist die gleiche wie
fr Bits pro Ton, also kann das Modem 10 7-bit-Zeichen pro
Sekunde senden. Das Modem kann auch in 2 anderen Betriebsarten
laufen:

Bandbr.   Frequenzber.    Baudrate  Zeichenrate Interleave/Z.
 500 Hz   500-1000 Hz     5 baud     5 char/s   6.4 / 12.8sec
1000 Hz   500-1500 Hz    10 baud    10 char/s   3.2 /  6.4sec
2000 Hz   500-2500 Hz	 20 baud    20 char/s   1.6 /  3.2sec

Fr jeden Modus kann der Interleave-Faktor verdoppelt werden,
so wird jedes Zeichen ber die zweifache Zeitspanne verstreut
gesendet. Die ersten Versuche mit dieser Technik wurden mit dem
EVM56K DSP evaluation board von Motorola gemacht, das Programm
hie MT63ASC.ZIP. Diese LINUX-Implementierung ist mit diesem
Paket kompatibel gehalten. Das MT63-Modem ist fr SSB-Betrieb
gemacht. Die Signale der Soundkarte werden dem SSB-Modulator
zugefhrt. Auf der Empfangsseite geht der Output des
SSB-Demodulators zum Eingang der Soundkarte. 

Die Hllkurve des MT63-Signals ist nicht fest, wie in anderen
Vieltonsystemen - sie sieht mehr wie Rauschen aus. Man mu
darauf achten, den Sender nicht zu bersteuern. 

Die Empfangsseite von MT63 ist selbst abstimmend und selbst
synchronisierend, so mu der OP im 1000 Hz -Grundmodus nur auf
+/- 100 Hz genau in das Signal hinein abstimmen. Das Modem wird
die genaue Frequenzabweichung mitteilen, nachdem es sich
synchronisiert hat. Der OP sollte nicht versuchen, diese
Abweichung zu korrigieren, wenn er nicht sehr langsam abstimmen
kann, da MT63 als langsam phasenmoduliertes System schnelle
Frequenznderungen nicht mag. 

Pawel, SP9VRC. (Danke, Pawel!)


6. Echtzeit-Probleme und Kalibrierung: 

6.1 Grundlagen

Kurzwellenprotokolle sind normalerweise synchron. Sie bentigen
eine exakte Zeitquelle, um auch bei lngeren Unterbrechungen
der bertragungbitsynchron zu bleiben. Z.B. fordert das SITOR-
(Amtor-) Protokoll,da die Referenzzeitquelle nicht mehr als
20ppm vom Idealwert abweichen darf. Pactor stellt hnliche
Anforderungen, damit lngere Verbindungenstabil bleiben. Es ist
schwierig, eine so exakte Zeitquelle zu finden. Deshalb
erfordern alle Optionen, die in dieser Implementation gewhlt
werden knnen, eine manuelle Einstellung.

Wenn die Soundkarte voll-duplex-fhig ist, wird die
Referenzzeit von der Sampling-Rate (Zahl der pro Sekunde
aufgenommenen, z.B.16-Bit-Dateneinheiten) der Soundkarte
abgeleitet. Um unzutreffende Informationen des OSS-Treibers
ber die Sample-Rate zu korrigieren, kann die Option -s bentzt
werden. Die Soundkarte sollte echte Quarze statt billiger
keramischer Resonatoren enthalten. Auch MT63 in hf benutzt den
Samplerate-Korrekturfaktor (-s).

Wenn die Soundkarte nicht voll-duplex-fhig ist, kann die o.g.
Methode nicht angewandt werden. Auf Intel-Architekturen testet
das Programm dann die Prozessorinstruktion RDTSC (read time
stamp counters, lese Zeitmarkenzhler), um zu sehen ob sie
verfgbar ist und arbeitet (auf Pentium-Computern und neueren
sollte dies der Fall sein). Dieser Zhler zhlt im Takt der
CPU-Uhr,deshalb mu dem Programm die auf khz exakte Frequenz
der CPU-Uhr bekannt sein (Option -m). La Dich nicht von
Werbegags irrefhren, z.B. luft ein AMD K5PR133 auf 100 MHz.

Auf Nicht-Intel-Systemen, oder wenn die RDTSC-Instruktion nicht
verfgbar ist oder nicht arbeitet, verwenden wir gettimeofday -
in der Hoffnung da das tv_usec-Feld genau genug ist.
Systematische Frequenzabweichungen knnten mit der Option -t
korrigiert werden.

RTTY, Pactor-FEC und Amtor-FEC sind oft ohne Kalibrierung
mglich, es wurde auch ber erfolgreiche Pactor- / Amtor-ARQ -
Verbindungen ohne Kalibrierung berichtet. Wenn ARQ-Verbindungen
in Pactor, Amtor oder GTOR lnger bestehen sollen, kann eine
Kalibrierung die Leistung des Programms verbessern. 

Wie bereits beschrieben, kann man mittels Optionen an hfkernel
Korrekturfaktoren fr die Samplingrate der Soundkarte (-s), die
Prozessortaktrate (-m) und die gettimeofday-Funktion (-t)
bergeben. -s wirkt nur bei Vollduplex-Betrieb (Taktgeber ist
hier die Soundkarte), -m nur bei Halbduplexbetrieb mit
funktionierender RDTSC-Instruktion, -t nur bei
Halbduplexbetrieb ohne funktionierende RDTSC-Instruktion, das
ist schlechter, da hier der Prozessor ber die Funktion
gettimeofday() die Zeit angibt, dies ist wegen schwankender
Systemauslastung ungenauer. 

Im hf-Paket sind 3 Programme zur Kalibrierung enthalten. Die
beiden ersten, dcf77rx und reffreq, schreiben ihre Ergebnisse
auch in /etc/calibratons. Bitte die Ausgaben aber mehrmals
testen und kritisch berprfen. Zum Gebrauch von Hand in das
Men Config/General von hfterm eintragen. 

Am Ende des Kapitels beschreibe ich eine primitive
Schtzmethode, mit der ich Erfolg hatte, und ein Skript das die
wirkliche Soundkarten-Samplerate raten kann. Das hilft bei
alter Hardware, wo cpu und/oder Speicher nicht fr die
Kalibrier-Algorithmen ausreichen.

6.2. dcf77rx

benutzt das Zeitzeichensignal des bekannten
Langwellen-Frequenznormals DCF77 auf 77,5 KHz in der Nhe von
Frankfurt, der mit einer Leistung von 25 kW in etwa 2000 km
Entfernung in fast ganz Europa zuempfangen ist und brigens
auch das Signal fr die Funkuhren liefert. (Siehe auch
dcf77.txt, bitte bersetzt es wenigstens auf Franzsisch,
Polnisch...) Wenn Du dieses Signal noch nie gehrt hast, teste
doch einfach einmal das Demo-Programm dcf77gen ! 
Wenn es nicht luft, Option -n versuchen.

Das Signal mu auf eine Frequenz von 1000 Hz umgesetzt und an
den Mic- oder Line in - Eingang der Soundkarte gelegt werden.
Stelle dazu Deinen Empfnger auf 78.5kHz LSB (oder 76.5kHz
USB). Weil ich keinen Langwellenempfnger fr diesen Bereich
hatte, habe ich, von Vorschlgen aus dem Internet inspiriert,
einen kleinen Konverter gebastelt, der die 77,5 KHz auf 4077,5
KHz umsetzt, die ich dann mit meinem Funkgert empfangen
konnte. Fr den Konverter brauchte ich einen 4MHz-Quarz aus der
Bastelkiste, 5 npn-Transistoren und noch ein paar Teile, auf
deren Werte es nicht exakt ankommt. Zum Empfangen gengt eine
Ferritantenne aus einem alten Radio oder ein einfacher Draht.
Der Schaltplan ist in/usr/share/hf/lfconv.jpg. 

Starte dann dcf77rx (vorzugsweise als root). Man mu im SSB-
oder CW- Modus den DCF77-Sender ziemlich fein auf 1000 Hz
einstellen, bis die Sekundenticks mglichst regelmig erkannt
werden. Das gelingt am besten mit der Option -v 2 oder (nach
etwas Training) mit dem Blick auf die rotierende Linie.

Nach 1-2 Minuten (unter strungsfreien Bedingungen) sollte das
Programm die DCF77-Zeit ermittelt haben. Von da an warte etwa
15 Minuten und prfe die Messungen. Du kannst sie zur
Sicherheit aufschreiben. Sie werden in /etc/calibrations
geschrieben. Sieh dort, ob die Korrekturwerte glaubhaft und
etwa konstant sind. Trage die Werte von Hand in das Config-Men
von hfterm ein.

Dcf77rx hat auch eine Option zum Setzen der Systemzeit (siehe
man dcf77rx).

dcf77rx und auch dcf77gen haben brigens jetzt auch schon eine
-n (no mmap) -Option. Sie gibt fr den wichtigsten Wert -s bei
mir akzeptable Werte. Die anderen schwanken mehr.

dcf77rx hat auch eine Option zum Empfang des Schweizer
Zeitnormalsenders HBG bei 75 kHz.

Wenn Du 2 Soundkarten aufeinander abstimmen mchtest, auch ber
Funk, knnte ein Partner dcf77gen und der andere dcf77rx
laufenlassen.

6.3. reffreq 

Wenn Du weder DCF77 noch HBG empfangen kannst, bentze reffreq
und eine bekannte exakte Zeitquelle im Bereich von 20Hz-20kHz. 

Falls dcf77rx schlecht funktioniert, wenn Du aber das
DCF77-Signal in AM empfangen kannst, (2500 Hz), geht damit
reffreq -f 2500. Espulsiert,aber es funktioniert!

Wenn Du Referenzfrequenzen in Funk oder Radio suchst, kann Dir
hfterm's Spectrum bei der groben Messung helfen. Rate dann
einen runden Wert und lasse reffreq damit laufen. Kennst Du
Normfrequenzbaken in Deiner Gegend? Teile sie mir mit!

Zum Schtzen von mglichen Referenzfrequenzen geht noch besser
mein Klavier-Stimm-Programm piano, das es bei
piano-tuner.sf.net gibt. Es kann spter mit den gleichen
Faktoren wie hf kalibriert werden und dann Niederfrequenzen
auch gut messen, auerdem natrlich Dir beim Stimmen Deines 
Klaviers und anderer Instrumente helfen.

Danke an Dave <dalechid@cox.net> fr die Information ber die
USA-Zeitstandardbake WWV, Boulder, Colorado, die abwechselnd
500 und 600 Hz auf 2.5, 5 and 10 MHz AM sendet! Also: reffreq
-f 500 oder reffreq -f 600. Trotz der 10 oder 25 ms dauernden
Pausen und der 5 ms dauernden 1000 Hz - Markierungen scheint
reffreq gute, genaue Kalibrierdaten zu ergeben. Interessante
Einzelheiten ber das WWV-Signal gibt es in:
http://www.boulder.nist.gov/timefreq/stations/iform.html
(Ich wei, es gibt jemand hier, der lt sich von den WWV-Specs
in dieser Homepage inspirieren, etwas wie dcf77rx fr WWV zu
schreiben!)

Wer wei etwas ber JJY in Japan?

Eine in den meisten Haushalten bereitstehende und normalerweise
sehr genaue Quelle ist die Zeilenfrequenz-Synchronisation eines
gewhnlichen Fernsehempfngers. Die Zeilenfrequenz des ZDF wird
auch von Behrden alsZeitnormal benutzt. 

Stelle Deinen Fernseher (mit Video-Grundfrequenzausgang) auf
einen Kanal ein und leite den Videoausgang an die Soundkarte.
Starte 'reffreq -f 15625' als root. Nach einigen Sekunden
sollte das Programm die Korrekturparameter ermittelt haben.
(Die oben angegebene Kommandozeile setzt das PAL-format mit
seiner Zeilenfrequenz von 15625 Hz voraus. Fr andere Formate
verwende die entsprechende Frequenz.)

In der CQDL 3/2003, S. 168, ist ein interessanter Artikel von
Stefan Steger, der beschreibt, wie man aus einem
Fernsehempfnger das Zeilenfrequenzsignal ableiten kann, dazu
gibt es eine Schaltung die es in gerade Normalfrequenzen
umwandelt:
(http://home.t-online.de/home/stefan.steger/homepage.html)

Ich konnte auch schon aus dem Koax-Kabel, das einen
Satellitenreceiver mit dem Fernseher verbindet, mit dem
Oszillographen die 15625 Hz erkennen.

Reffreq knnte fr eine Kalibrierung ber Funk dienen: Einer
setzt bei hfterm Mark- und Space-Frequenz auf 1000 und sendet
RTTY (Dauersendung: RTTYTX im Mode-Men), Funkgert auf AM. Ein
Sinuston 1000 Hz wird gesendet. Der andere hrt den Ton mit AM
und kalibriert mit reffreq -f 1000.

6.4. ratecal1

Dieses Tool stammt von Pawel Jalocha und ist Teil seines MT63,
danke! Ich fge hier seine Anleitung ein:

MT63 ist ein synchronisiertes System and hngt davon ab, da
die Sampleraten der Soundkarten bei Sender und Empfnger gleich
sind. Sie sollten sich wenigstens nicht mehr als 10^-4
unterscheiden.

MT63 bentzt die Rate 8000 Hz. Wenn Deine Karte bei 8000.5
luft, ist es wahrscheinlich kein Problem, aber 8005 Hz ist
nicht gut! 

Ein extremes Beispiel ist: Meine Soundman-16 (PAS-16-Klon) sagt
mir, da sie nur 8008 Hz laufen kann, wenn ich sie um 8000Hz
bitte, luft aber wirklich mit 7910.3 Hz, eine Abweichung ber
1% -viel zu viel fr MT63, auch beim besten
Signal-Rausch-Abstand. Meine zwei anderen Karten (DSP-16 und
Ensoniq 1371) sind vernnftiger: Sie weichen 0.3 - 0.5 Hz von
8000 Hz ab.

Um die Samplerate zu messen habe ich das "ratecal1" -Utility
vorbereitet. Es wurde fr den Empfang von Zeitsignalen im
Sekundentakt auf Kurzwelle konzipiert. Ich verwende die Signale
auf 4996.0, 9996.0 und 14996.0 kHz. 

Ich stimme meinen Empfnger in USB auf 1 kHz unterhalb der zu
empfangenden Frequenz ab, um 1 kHz-Tne zu erhalten. 

Im Prinzip kann jedes Signal verwendet werden, das eine
periodische Hllkurve mit bekannter Regelmigkeit hat, z.B.
eine AMTOR-/SITOR- Station, wenn Du die Bezugsperiode mit der
Option -T0.450 auf 450 ms nderst. Was zhlt, ist die Hllkurve
um das Signal mit etwa der Frequenz, die mit -F angegeben wird,
und innerhalb der Bandbreite die mit -B gegeben wird. 

Ich stelle also den Empfnger z.B. auf 4995.0 USB ein, so da
die Pulse als 1kHz-Tne ankommen, schliee die Soundkarte an
(z.B. /dev/dsp) und schreibe: ratecal1 -d. Nach 10-20 sehe ich
die gemessene Samplerate meiner Karte. Die Rechenfunktion
versucht, die Probe mit der kleinsten Abweichung zu finden. Das
Verfahren gibt die Samplerate bei 8000Hz auf 0.5Hz genau an.

Fr grere Genauigkeit erhhe die Zahl der Wiederholungen
desPulssignals: Gebe -T4.0 fr 4 Sekunden dauernde
Vergleichsintervalle ein. Ein Signal mit der Periode T ist auch
periodisch ber die Zeit n * T wenn n eine ganze Zahl ist.

Wenn die Abweichung der Samplerate gro ist (wie bei meiner
Karte), sage dem Programm die ungefhre wahre Rate mit der
Option -R. Zum Beispiel lasse ich fr meine Karte einen
genaueren Test laufen mit ratecal1 -r8000 -R7910 -T4.0 -I40
-B200. Der genaueste Test, den ich jemals gemacht habe, lief
ber 10 min auf 14995.0 kHz USB und war: ratecal1 -r8000
-R7910.3 -T300 -I60.0 -B500 -D4. Nach erfolgter Kalibration
schreibe die zwei Werte auf: Die angeforderte Rate (-r) und die
wahre Rate, die Du erhalten hast. Versuche verschiedene
angeforderte Raten, um die wirkliche Rate nahe an die von Dir
gewnschte zu bekommen. Zum Beispiel mute ich fr meine Karte
8100 Hz anfordern, um die wirkliche Rate 8018.2 Hz zu bekommen,
die am nchsten an den 8000 Hz ist, die ich fr meine
Anwendungen brauche.

Die Zeitsignale auf 4996, 9996 and 14996 kHz sind nicht ideal
periodisch,weil manche Pulse lnger, manche doppelt sind. Das
beeintrchtigt die Genauigkeit der Kalibration. Die Pulse
werden auch nicht den ganzen Tag ber gesendet, so da wir
nicht zu lange Zeit messen knnen. Doch ist eine Bestimmung der
Rate mit einer Abweichung von etwa 10^-5 mglich.

Wenn Du die wirkliche Samplerate weit, kannst Du sie fr MT63
mit der -R -Option angeben. Wenn Du fr Deine Karte /dev/dsp2
die Rate 8010.5 Hz gemessen hast schreibe: mt63trx -d2
-R8010.5. Ich tat das fr meinen PAS-16-Klon und er arbeitet
gut mit MT63 trotz der 1% -Abweichung. Wenn Deine Karte nicht
auf 8000 Hz arbeiten kann, bist Du nicht ganz verloren. Wenn
z.B. /dev/dsp1 nur 9600 Hz samplen kann und aber bei der
Anforderung 9600, in Wirklichkeit 9605.4 Hz samplet (gemessen
mit ratecal1), schreibe fr den MT63-Empfang: MT63rx -d2 -r9600
-R9605.4. MT63rx wird den Soundtreiber bitten, mit 9600 zu
samplen, und dabei wissen, da es eigentlich 9605.4 meint, und
die Rate umrechnen. Im Idealfall sollte jeder OP die Samplerate
seiner Soundkarte wissenund die Korrektur beim Senden und
Empfangen angeben. So htte jedes Signal auf dem Band sein
richtiges Timing und knnte von jedem gelesen werden.(Danke,
Pawel!)

Ich (Gnther) verglich ratecal1 mit den 2 anderen
Abstimmprogrammen underhielt gleich gute Ergebnisse.  Pawel
teilte mir mit, da die erwhnten Pulssignale auf 4996.0,
9996.0 und 14996.0 kHz aus Ruland stammen. Ich konnte sie hier
bei meinen Tests nicht empfangen, aber ratecal1 funktionierte
gut mit den gepulsten Signalen von der DCF77-Bake. Wenn ich die
`offizielle` Samplerate meiner Soundkarte durch die wirkliche,
durch ratecal1 ermittelte, teile, erhalte ich den selben
"soundcorr"-Faktor (beimir z. B. 1, 0011) wie bei den anderen 
2 Tools, auf 10^-4 genau, wasgengt.

Auch ratecal1 knnte fr eine Kalibrierung ber Funk dienen:
Einer sendet Amtor ARQ oder Pactor ARQ, (oder sogar dcf77gen,
das aber noch keinen Korrekturfaktor als Option verarbeiten
kann!) der andere kalibriert mit ratecal -d -T0.45 (fr Amtor),
-d -T1.25 (fr Pactor) oder -d fr dcf77gen.

6.5. Schtzen der Samplerate mit dem Gehr und ratetry

Ich hatte ein Abenteuer mit meinem Laptop (150 MHz Pentium 1,
nur 14 MBRAM!), ich mu Euch das erzhlen. Es hilft wenn Ihr
auch so alte Hardware habt... Hf und auch MT63 geht mit dem
Laptop, aber die Kalibriertools gehen schlecht, sie brauchen
viel Speicher und Prozessorlast!  Das Laptop hatt in meinen
Tests mit 2 verkabelten Computern mit Pactor und Amtor gut
funktioniert, aber kein einziges Zeichen mit MT63 decodiert.
Keine Idee wie seine wirkliche Samplerate war! Ich schrieb das
Skript ratetry. Schau es Dir an, Du kannst es nach Bedarf
ndern, es versucht einfach mit wirklichen Sampleraten von...
bis..., die ihm als Option gegeben werden, MT63zu senden. Ich
versuchte es erst um 8000 herum, kein Erfolg. In meiner
Verzweiflung fiel mir ein sehr primitiver erster Test ein, der
nur mit dem Gehr funktioniert: Ich sagte beiden Computern, mit
'mt63tx -d -C_____T____' MT63 mit einem einzelnen 'dah' (T) in 9
Leerrumen als CW-Id zu senden. Nun hrte ich den Unterschied:
Das Laptop war viel schneller, es berholte den anderen
Computer. Es klang wirklich wie der kleine Fuchs, der ber den
faulen Hund springt. Nun riet ich die wirkliche Rate vom
Laptop: 8100,8200, 8300... und sendete MT63 damit mit 
'mt63tx -d -C_____T____ -R8100 ' usw. 
Mit R8300 klangen die 2 'dahs' in etwa gleichem Rhythmus. 
So konnte ich, whrend 
'ratetry 8200 8350' lief, mit dem anderen Computer zwischen 
der "wirkliche Rate" des Laptops 8241 and 8335 Daten empfangen.
Versuchsaufbau luft, Projekt kann weitergehen.

7. Mailbox 

7.1. Prinzip

hfterm hat einen TCP-IP-Portanschlu. Jedes Programm, das
"internetfhig" ist, also ber 'telnet <host> <port>'
erreichbar ist, kann prinzipiell von einem entfernten Partner
ber hf angesteuert werden, wenn Du es so einrichtest. Siehe
man inetd oder  /etc/services, um zu sehen was auf Deiner Kiste
so alles luft... 

Du kannst Deinen Computer mit hf fernsteuern... Znde nicht die
Raketen!

7.2. Erster Test des TCP/IP - Ports mit portecho:

Hf ist als F6FBB-Mailbox gedacht. Aber falls Du F6FBB noch
nicht kennst, ein schneller erster Test: Es gibt ein
Testprogramm "portecho". Es gibt einfach das, was es hrt, in
Grobuchstaben zurck, es ist auch hflich,grt und
verabschiedet sich. 

Starte portecho mit einer Portnummer als Option: portecho 3333.
Teste von einer anderen Konsole, ob es luft, mit telnet
localhost 3333. 

Dann setze im Config-Men von hfterm den Port auf 3333. Starte
in hfterm mit <Alt>+M die Mailboxfunktion. Durch Schreiben ins
Empfangsfenster kannst Du die ersten Tests machen, am besten in
RTTY  oder Pactor-FEC oder Amtor-FEC oder MT63.

Wenn Du hf auf 2 Computern mit gegenseitig verkabelten
Soundkarten laufen lassen kannst, versuche doch einen Pactor-
oder Amtor-Connect herzustellen, und lasse auf einem der beiden
Computer hf im Mailbox-Modus mit Portecho laufen!

7.3. Konfiguration von F6FBB

hfterm kann ber das TCP/IP-Protokoll (das heit, ber seinen
telnet-Port) Verbindung zu dem hauptschlich im Packet Radio
bekannten und bewhrten Programm F6FBB aufnehmen. Dies kann auf
dem gleichen, oder auf einem ber Ethernet oder PLIP
verbundenen anderen Computer installiert sein. Falls Computer
und Port fr F6FBB anders sein sollen als die Vorgabe
(Localhost =127.0.0.1 = derselbe Computer, Port 6300, wie fr
F6FBB blich), bitte das im Config-Men ndern. Aber wenn es
geht, bleibe bei Port 6300, dann ist in hfterm ein fr F6FBB
optimierter spezieller Code aktiv, der Bugs von F6FBB umgeht
und beim  Pactor-Connect automatisch das Call des Partners an
F6FBB weitergibt.

Einiges ist als Vorbereitung in nur 5 Konfigurationsdateien und
einer Binrdatei zu ndern. Nicht erschrecken, ich helfe Dir.
Logge Dich auf einer Konsole als root ein. Falls xfbbd schon
luft (prfe es mit ps -ax) beende es mit killall xfbbd. Zum
Testen nach den nderungen starte es wieder mit `xfbbd`.

Also, es geht ganz einfach los:

7.3.1. /etc/ax25/fbb/passwd.sys:

Ersetze das Passwort nach der Zeile
#PASSWORD OF ALL NON DEFINED CALLSIGNS.
einfach durch eine leere Zeile!

7.3.2. /etc/ax25/fbb/port.sys:

Die nderungen sind mit Pfeilen markiert.
# FBB7.00
#
#Ports TNCs
1     1				<-
#
#Com Interface Adress (Hex) Baud
8   9         189C          0	<- (189C hex. = 6300 dec.) 
#
#TNC NbCh Com MultCh Pacln Maxfr NbFwd MxBloc M/P-Fwd Mode Freq
 0   0    0   0      0     0     0     0    00/01  <- File-fwd.
# 1  8    9   ax0    250   3     1     10   30/60 XUWYL Linux
 2   8    8   0      250   2     1     10   0/60   TUR #hf <-
#
# End of file.
#

(Diese port.sys ist nur fr hf konfiguriert. Wenn schon andere
Ports /TNC's da sind, mu fr hf einfach je 1 Port / TNC zu den
bestehenden addiert werden. Die anderen mit Pfeil markierten
Zeilen mssen fr hf zustzlich eingefgt werden.)

7.3.3. /etc/ax25/fbb.conf:

(in lteren F6FBB-Versionen war das init.srv)

#
# FBB Set-up file
#
version = FBB7.01
callsign = DL4MGE.BAY.DEU.EU  			<-----   
# Qra Locator of BBS
locator = JN58NG				<-----
qral = JN58NG					<-----
# Qth of BBS
city = Baindlkirch				<-----
# First name of SYSOP
name = Guenther					<-----
# Callsign of SYSOP
sysop = DL4MGE					<-----
# Callsign (and route if needed) that will have copy of SYSOP
messages
sysmail = DL4MGE				<-----
# Wait for informations (Name, HomeBBS, Qth, ZIP)
askinfo = NO 		(whle eins davon)	<-----
#askinfo = OK		( "    "     "   )	<-----	
		
# First connection mask :
# 0  : Disable
# 1  : Excluded
# 2  : Local				
# 4  : Expert	
# 8  : Sysop
# 16 : BBS
# 32 : Pagination
# 64 : Guest
# 128: Modem				
# 256: See-all-messages
# 512: Unproto list asking is allowed
# 1024: Liste des messages nouveaux.
# original was: mask = 3616
# orig + 2 + 128 means: plus local and modem    
mask = 3746 					<-----

Das wichtigste ist "mask" - addiere zur vorgegebenen "mask"
130. Das ist: 2 fr 'Local' und 128 fr 'Modem'. Dann kann sich
ein User "local" (wozu auch das IP und telnet zhlt) einloggen
und hat Zugang zum "Modem", das ist auch ein TNC, und hfterm 
wird von F6FBB als TNC betrachtet. Nun kann ein neuer Benutzer
beim zweiten Einloggen Mails verschicken, ohne da der Sysop
aktiv werden mu.

3746 ist brigens  2 + 32 + 128 + 512 + 1024 + 2048.
Es geht aber auch nur mit mask = 130, also  2 + 128!

7.3.4. /etc/ax25/fbb/lang/english.ent:

Ersetze die Datei english.ent durch eine leere Datei.

7.3.5. /etc/ax25/fbb/lang/english.txt: 

Du solltest die Botschaften fr Kurzwelle anpassen, das heit
krzen! Ich habe nun herausgefunden, wie man diese Datei
ndert, ohne F6FBB verrckt zu machen: Es ist ganz einfach
wichtig da die Zahl der Zeilen 287 bleibt! Dabei werden
Zeilen, die mit einem Kommentarzeichen (# wie inShellscripten)
beginnen, nicht mitgezhlt. Also kannst Du einfach eine Zeile
mit #auskommentieren (lsche sie nicht, das hilft Dir spter
beim Debuggen), dann kopiere und verndere sie. Das '$W'
bedeutet, da F6FBB eine neue Zeile anfngt. Einige der Zeilen
(in denen F6FBB nach Name, Heimat-Mailbox, Stadt usw. fragt)
hngen von Deiner Einstellung in /etc/ax25/fbb.conf bei
"askinfo" ab: Nur newlines bei 'askinfo=NO', (ganz leere Zeilen
ergeben hier Fehler)  und z.B. "Name ? " bei'askinfo=OK'. Ich
liefere meine english.txt in /usr/(local)/share/doc/hf mit.
Schau sie an, editiere sie nach Deinen Wnschen und kopiere sie
als root an ihren  Platz in /etc/ax25/fbb/lang.

7.3.6. Verndern der Binrdatei /usr/sbin/xfbbd:

Und nun die gefhrlichste Operation. Medizinstudium
erforderlich. (;-) Schon mal eine Binrdatei gehackt? Es geht
ganz einfach: Es geht um die erste Meldung von /usr/sbin/xfbbd,
die ist nmlich im Programmcode 'hartcodiert', aber sie pat
nicht mehr fr unser hf. Wenn sich ein neuer user bei F6FBB
einloggt, kommt die Meldung 


"Login in read-only mode.
You may leave a message to SYSOP."

Diese Meldung aber pat viel besser und ist klarer:  

"First login to register.
You can send mail at next login!"

Gesehen: Die neuen Meldungen haben gleich viele Zeichen.

Wie geht das? Mache zuerst auf jeden Fall eine Sicherheitskopie
von usr/sbin/xfbbd. (Die Binrdatei kann durch nur ein Zeichen
zu viel unbrauchbar werden!) Dann ffne xfbbd mit einem Editor,
z.B. mcedit, am besten im berschreibmodus. Suche (mit F7 bei
mc) nach 'SYSOP'. berschreibe nur die zwei Begrungszeilen,
nicht mehr! Die erste Zeile hat 24 Zeichen, die zweite 33. Bei
mir ging es!

F6FBB zu konfigurieren, ist manchmal "kryptisch", aber es ist
ein gutes und stabiles Programm. Ich mute ein bichen knobeln
um das alles herauszufinden. Danke an alle Freunde von der
F6FBB-Mailingliste xfbb@f6fbb.org und fr die gute
Dokumentation: http://www.f6fbb.org/fbbdoc/doc.htm und
natrlich fr F6FBB selbst an  den Autor Jean-Paul Robeller.

7.3.7. F6FBB testen:

Nun kannst Du F6FBB mit `telnet localhost 6300` testen. Es mu
mglichsein, sich mit einem Rufzeichen einzuloggen, sich zu
registrieren, auszuloggen, und beim nchsten login Mails zu
senden und zu lesen. 

Nun ist das Starten der hf-Mailbox ganz einfach: Starte als
root xfbbd, dann starte hf als normaler user, dann (wenn Du
willst) aktiviere die Mailbox-Bake (Fixtext 10, Alt-F10), dann
aktiviere die Mailbox mit <Alt>+M oder ber das State-Men, und
es luft!

Die Verbindung hfterm <--> F6FBB kann nun durch Schreiben ins
Empfangs-Fenster getestet werden (im Modus Standby Pactor only,
dann wird in Pactor-FEC gesendet, oder im Modus MT63, ist
schneller.) So kannst Du den Login eines entfernten Benutzers
simulieren, ohne 2 Computer verkabeln oder eine Verbindung ber
Funk machen zu mssen.

Ein simulierter Pactor-Connect mit dem Call 'Mycall'
(Config-Men, Pactor) oder ein entsprechend Amtor-Connect mit
Deinem Amtor-Mycall  ffnet die Mailbox. In FEC-Modes mu der
Partner Dein bliches Call, das in den Stationsdaten des
Config-Mens konfiguriert ist, rufen.

Ich habe die Mailbox mit 2 Computern mit verkabelten
Soundkarten  mit Pactor FEC, Pactor ARQ, Amtor FEC und Amtor
ARQ mit gutem Erfolg getestet. Mit RTTY und MT63 geht sie jetzt
manchmal mit viel Glck und Geduld, aber ist doch sehr
stranfllig, und das verwirrt F6FBB. (Die Squelch-Funktion mu
fr FSK eine kleine und fr MT63 eine ziemlich groe
Zeitverzgerung haben und lt daher noch am Anfang und Ende
jedes Sendezyklus etwas Mll durch!) Also warten wir doch
besser auf den MT63-ARQ-Modus, der in Entwicklung ist!

Beachte beim Betrieb einer automatischen Mailbox-Station die
Bestimmungen Deines Landes!

Aber das wre doch was mit einer ptc-freien, microsoft-freien,
vllig mit freier Software laufenden Mailbox in Eurer
Clubstation?

7.4. hf als selbstkonfigurierte automatische Station 

Du kannst jedes Programm, das ein Konsolenprompt hat, als
Internet-Dienst einrichten und mit hf ber Funk ansprechen. 

Ich machte ein kleines Beispiel-Skript 'hftcp', es kann Deine
Mailslesen und senden (mit dem Programm 'mail'), und es kann
fr alles was Du willst konfiguriert werden, siehe die
Beispielbefehle wie etwa die Friedensbotschaft. Es kann sogar
eine Shell erffnen (gefhrlich!). So kannst Du mit hf Deinen
Computer fernsteuern... Znde nicht die Raketen!

Teste das Skript auf einer Konsole, um zu sehen was es tut. Du
kannst es editieren und nach Deinem Geschmack verndern. Du
knntest z.B. den Mail-Lese-Modus erweitern, indem Du zuerst
eine Internetverbindung startest, mit fetchmail Deine Mails
nach/var/mail/<Dein-user-name> schaufelst, und dann 'mail'
laufen lt. So kannst Du Deine Mails ber Funk bestellen.
(nicht in jedem Land erlaubt)

Nun schaue ob Port 3333 auf Deinem Computer frei ist mit 
netcat -z localhost 3333 && echo nicht frei
oder
telnet -e# localhost 3333
Wenn nicht, suche einen anderen.

Um hftcp mit hf zu verwenden, mut Du (als root) nur eine Zeile
in/etc/inetd.conf schreiben: 
hftcp	stream	tcp nowait	root /usr/bin/hftcp	hftcp 
und eine in /etc/services:   
hftcp           3333/hftcp   

Dann starte hftcp auf einer Konsole, teste es von einer anderen
mit
netcat localhost 3333
Dann, wenn o.k., setze in hfterm den Port z.B. auf 3333
(Config-Men), schalte zum Mailbox-Modus mit <Alt>+m, und es
luft.


8. Liste aller im Paket enthaltenen Programme 

Alle werden in /usr/local/bin installiert:
hfkernel, hfterm: Die 2 Hauptprogramme.
hf: Das Startskript fr beide.    
elbug:  Konsolenprogram fr elektronischeTaste.
paccalc: berechnet den Datendurchsatz fr Pactor.
channel: Simulator fr die bertragung auf Kurzwelle.
dcf77rx: Berechnet Uhr-Korrekt ausDCF77-Zeitnormalsignal.
Setzt auch die Systemzeit, siehe man dcf77rx.
dcf77gen: erzeugt DCF77-Signal, siehe man dcf77gen.
reffreq: Berechnet Uhr-Korrektur aus Referenzfrequenz.
portecho: Einfaches TCP-Testprogramm fr den Mailbox-Modus.  
hftcp: Einfaches TCP-Testscript frFernsteuerung.
Pawel Jalocha's MT63 -Suite als Konsolenprogramme, mit vielen
experimentellen Features: 
mt63rx:	empfngt MT63.
mt63tx:	sendet   MT63.    
mt63trx: tut beides.
ratecal1: berechnet wirkliche Samplerate aus pulsierendem
Signal. addnoise: setzt Rauschen auf Audio-Datei,experimentell.
morsecod: wandelt digitales in lesbares Morsealphabet.    
peakrms: Tools zum Untersuchen vonMT63-Audiodateien.
ratetry: Script testet von mt63tx mit verschiedenen
Sampleraten.

Weitere Testprogramme in den Unterverzeichnissen test und util
des hf-Quelltext-Verzeichnisses. Hilfe: Rufe die Programme
ohne Optionen auf! (Bei Pawel's Programen: kein Zwischenraum
zwischen Optionen und Argumenten.)


9. Verzeichnis der Hilfetexte:

Bis jetzt gibt es Hilfe auf deutsch und englisch. 
bersetzungen in andere Sprachen sind willkommen!

Die Texte warten im Programm-Verzeichnisbaum unter /doc auf den
geneigten Leser, und kommen bei der Installation ins
Verzeichnis /usr/(local)/share/hf und, je nach Distribution, in
/usr/(local)/share/doc/hf oder/usr/share//doc/packages/hf. 

  
DEUTSCH:
DE-HF-HOWTO.txt, pactor.txt, pactor.ps, dcf77.txt, man hf.

ENGLISCH:
HF-HOWTO.txt, P-MB-list.txt (Liste der Pactor-Mailboxen von
Jost, ZS5S), english.txt (Beispiel fr
/etc/ax25/fbb/lang/english.txt), mt63.txt, man hf, man
dcf77gen, man dcf77rx.

BILDER: lfconv.jpg (Schaltplan Langwellen -> 4MHz- Konverter).


10. Schluwort

Das Programm hat noch einige BUGS, manche sind auch FEATURES,
nicht brllen, besser warten, noch besser reporten, am besten
mitprogrammieren. Mich selbst hat dieses Programm inspiriert, c
zu lernen und es hat mir bisher (meistens) viel Spagemacht !

Ich mache jetzt ein bichen ruhiger, bin aber noch da

Ich hoffe Tom und Ihr alle werdet es mgen. Viel Spa!


Gnther Montag DL4MGE


			    AUTOREN

Schpfer des genialen FSK-ARQ-Kerns: (Tnx!)
Thomas M. Sailer	HB9JNX/AE4WA	
			
Viele graphische Verbesserungen:
Ralf-Axel Krause	DF3JRK		

MT63:
Pawel Jalocha		SP9VRC		Pawel.Jalocha@cern.ch

und viele andere (siehe ChangeLog), tnx!

Maintainer:
Gnther Montag		DL4MGE Safaridoktor@compuserve.de
 					
Main project home page:
http://hfterm.sourceforge.net
a quicker mirror in Europe is
http://www.hfterm.de.vu
	
Mailingliste:
Anmeldung:
http://lists.sourceforge.net/lists/listinfo/hfterm-hackers
Mails:
hfterm-hackers@lists.sourceforge.net	
	


                             \\I//
                            (     )
                           [  @ @  ]    
                            )  ^  (
                             \ 0 /
	*============OOOO0===========0OOOO==============*
	*                                               *
	*     73 's and good bye                        *
	*     hope to see you again on my screen        *
	*                                               *
	*                              de dl4mge
	*                                               *
	*=============oooo0=========0oooo===============*
                      (   )         (   )
                       \  )         (  /
                        ~~           ~~


