	-----=== HF ===-----
	
H F   -   H O W T O 

LINUX-AMATEURFUNK-KURZWELLEN-PROGRAMM 
FR RTTY, AMTOR, GTOR, PACTOR 1, MT63 
MIT INTERFACE ZUR F6FBB - MAILBOX 

Version 0.7 JANUAR 2005

  
1) Einfhrung :
   ============

Das hf-Paket implementiert die Amateurfunk-FSK-Protokolle 
RTTY, AMTOR (SITOR), GTOR, Pactor-1 und MT63. 
Es bentzt eine normale Soundkarte als Modem. 
Der Geschwindigkeitswechsel bei Pactor (von 100 auf 200 baud)
geschieht automatisch. 
Das PTT- (push to talk) Signal kann ber den RTS-Pin 
einer seriellen Schnittstelle ausgegeben werden.  

Die Implementation der Protokolle ist im Programm hfkernel, das im
Hintergrund als "Dmon" luft. Es stellt ein UNIX-domain-socket zur
Verfgung, das mit einer Benutzeroberflche und Mailbox-Schnittstelle 
kommunizieren kann - wie etwa dem Terminalprogramm hfterm. 
UNIX-domain-sockets wurden gewhlt, weil sie in der Zukunft leicht in 
Internet-domain-sockets umgewandelt werden knnen, so da der
hfkernel-Prozess auch auf einem anderen Computer als die

Hfkernel verwendet intern drei Unterprozesse (threads): 
einen Modemcode, der im Echtzeitmodus die Soundkarte beschreibt und liest,
einen fr das jeweils laufende Protokoll, 
und einen der die Socket- Ein- und Ausgabe steuert.

Hfkernel wurde fr den OSS-Soundtreiber geschrieben, luft aber auch mit
den neuen ALSA-Treibern, den diese haben eine OSS-Emulation, die
stndig verbessert wird. Wegen des fr das Amtor- und Pactor-Protokoll
notwendigen Echtzeitmodus und den dafr ntigen kurzen Signallaufzeiten
wird die Soundkarte ber den  "mmap()"-Mechanismus (memory mapping)
angesprochen, was nicht jede Hardware untersttzt. Es luft deswegen
nicht mit allen Soundkarten und Treibern!  Systemabstrze knnen nicht
ausgeschlossen werden! 
Die experimentelle Option '-n' (no-mmap) funktioniert oft gut,
sie ist auch fr die 2 der 3 beigefgten Kalibrierprogramme vorhanden,
die mmap() verwenden.

Fr die ARQ-Modes und MT63 kann eine Kalibrierung in vielen Fllen ntig sein. 
Dazu sind drei Kalibrierprogramme im Paket enthalten.

Das Terminalprogramm hfterm ist die Benutzeroberflche zu hfkernel.

Das Startskript hf liest die Konfigurationsdatei ein,
prft sie und startet hfkernel und hfterm.

ber einen TCP-Port kann hfterm mit dem bekannten Mailbox-Programm F6FBB
(und, wie wir hoffen, auch mit anderen Mailbox-Programmen)
verbunden werden und so als automatische Pactor- Amtor- 
oder MT63-Mailbox arbeiten.

Das Programm wurde 1997 von Tom Sailer geschrieben (Danke!!!) und wird
laufend von Axel Krause, Gnther Montag und vielen Freunden
weiterentwickelt. Ab Version 0.6.6 ist Pawel Jalocha's MT63 integriert.

Bitte um Kontakt ber die Mailingliste!


2) Installation, Konfiguration, erster Test:
   =========================================

Voraussetzungen:
Hardware: 
Pentium ab 133 MHz. Die Soundkarte mu mmap() untersttzen.
Software:
hf bentzt das gtk+ -Toolkit (Version ab 1.2.0),
das in vielen Linux-Distributionen enthalten ist.
Mit 'gtk-config --version' wird die installierte Version angezeigt.

'hf-<version>.tar.gz':
entpacke:
# tar -zxvf hf-<version>.tar.gz 
gehe in das Verzeichnis:
# cd hf-<version> ,
starte das configure-Skript:
# ./configure ,
(die Optionen sind sichtbar mit	configure --help,
aber normalerweise mssen keine Optionen mehr eingeben werden)
kompiliere es:
# mit make,
installiere es (wegen sonst fehlender Schreibrechte als root !):
# make install 

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

Die systemweite Konfigurationsdatei ist /etc/hf.conf.
Dort mu normalerweise nur die serielle Schnittstelle fr 
die PTT-Schaltung eingestellt werden. 

Erster Test:
Von der Konsole:
Starte einmal als root und als normaler Benutzer
# /usr/bin/hf
ohne Optionen.
Das Startskript hf prft die Konfiguration und gibt Hinweise.
Als user gestartet, legt es ein Verzeichnis "hf" in Deinem Home-Verzeichnis 
an und fllt es mit Beispieldateien.
(Wenn Du das hf-Skript nicht verwendest, tue dies von Hand.
Die Beispiele sind in /usr/share/hf/hf-examplefiles.)
Bei Erfolg rollt nach den ersten Meldungen eine Zahlenreihe wie diese
ber den Schirm:
corrout	...	intermediate   ...
Das bedeutet, da das "Herz" hfkernel regelmig schlgt.

Wenn das luft, dann unter X:
mit 'ALT + F2' ein Befehlsfenster ffnen,
# /usr/bin/hf
Hfkernel erscheint in einem "xterm", danach
erscheint das graphische Terminal hfterm im Vordergrund. 
Das Spektrumdisplay (Spectrum-Button oder F2 oder <Strg>F) zeigt ob Signale
ankommen, und ob die Verstrkung der Soundkarte richtig eingestellt ist.
Im RX-Fenster erscheinen decodierte Zeichen.

Wenn hf luft: mit ln -s /usr/bin/hf /home/(Benutzername)/Desktop/hf 
ein dynamisches Link auf das Desktop legen. Dies geht auch, wenn man mit
der rechten Maustaste  auf das Desktop klickt, 'neu', 'Anwendung' ... 
aber das wei ein alter Linux-Hase schon, oder?

Wie bereits gesagt: Das Verzeichnis fr Deine persnlichen Dateien 
(Konfiguration, Fixtexte, Log...) heit "hf" in Deinem home-Verzeichnis 
und wird beim ersten Start von hf automatisch angelegt 
und mit Beispieldateien gefllt.
Die persnliche Konfiguration (Rufzeichen, Name...) erfolgt mengefhrt
von hfterm aus.

Die Dokumentation ist in /usr/share/hf, und - je nach Distribution - 
in /usr/share/doc/hf oder in /usr/share/doc/packages/hf,
der wichtigste Text ist dieser.


3) Anschlu der PTT-Buchse :
   =========================

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  =====
                                               

Natrlich gibt es jede Menge verfeinerte Mglichkeiten
mit Optokopplern und Relais...


4) Probleme mit hfkernel:
   ======================

Manchmal "klemmt" das Programm nur einfach: 
-> mit <strg> c oder hfkernel -k beenden und nochmal probieren.

Versagt das Startskript hf oder mchtest Du "von Hand" starten?
Versuche von einer Konsole aus hfkernel starten:
# hfkernel
Fge bei Erfolg
(corrout	...	intermediate   ...)
nach und nach die weiteren bentigten Optionen hinzu.
Am wichtigsten das socket zur Verbindung mit hfterm (-c /var/run/hfapp),
und die serielle Schnittstelle.
Dann starte als normaler Benutzer unter X:
# hfterm -k /var/run/hfapp 

Hufigste Fehhlermeldungen:

Fehler mit 'MMAP': (HUFIGSTER FEHLER !)
Soundkarte und / oder -treiber untersttzt 'mmap()' nicht.
(DMA, Programm greift direkt auf den Soundkartenpuffer zu)
Versuche zuerst die experimentelle Option -n (no mmap)
oder die Option -h (Halbduplex erzwingen), ausfhrlichere Hilfe: siehe 7).
Am besten, setze die Optionen mit einem beliebigen Editor
in /etc/hf.conf, dort sind auch hilfreiche Kommentare, und starte dann 
# /usr/bin/hf

Fehler mit 'open':
Ist der Soundkarten-Treiber geladen ? (siehe 7).

Fehler mit 'ioctl: TIOCMBI[CS]:'
Ist die serielle Schnittstelle in /etc/hf.conf richtig? 

Fehler mit 'permission denied':
Fehler mit 'pthread_create':
Bei Start von hfkernel als Nicht-root: Ist das suid-bit gesetzt?
# ls -l /usr/bin/hfkernel 
sollte etwa ergeben:
-rwsr-xr-x   1 root     root       372757 Sep 13 10:34 /usr/bin/hfkernel
Das 's' hier ist das suid-Bit, also Superuser-Recht bei Ausfhrung.
Wenn es nicht da ist, setze das Suid-Bit von Hand mit
# chmod 4755 /usr/bin/hfkernel. 
Es gibt noch 2 andere Wege, hfkernel fr Nicht-root-Bentzer ausfhrbar
zu machen: siehe dazu 6) Root-Rechte.

Bei manchen Kombinationen von Soundkarte und -treiber kann sich der
hfkernel aufhngen mit einer Endlosschleife von 
"... fragments passed since last wakeup" 
oder 
"OSS driver lost interrupt". 
Leider gab es manchmal auch Abstrze, sorry!
In V.0.6 habe ich eine Sicherungsfunktion eingebaut, die dies
verhindern sollte.
Mehr ber Probleme mit der Soundkarte oder Sound-Treiber: 7).

Wenn bei Halbduplexbetrieb die Zahlen 
corrout	...	intermediate   ...
immer sehr gro sind (z.B. 8000)  mu evtl. die Option
'-R' (Ausschalten der RDTSC-Instruktion, prozessorabhngig, 
vor allem bei Nicht-Intel-Prozessoren) zugefgt werden.

Wenn Pactor-ARQ nicht oder nur schlecht geht, 
(vor allem dann, wenn hfkernel nur mit der Option -h oder 
- noch schlechter - -R luft) 
mut Du noch eine Kalibrierung durchfhren - siehe 8).

Versuche auf jeden Fall, hfkernel ber das Skript hf, das /etc/hf.conf 
einliest, zum Laufen zu bringen. Das kombinierten Starten mit hfterm 
ist dann leichter. Alle zustzlichen Optionen knnen 
in /etc/hf.conf in die Zeile "otheroptions" eingefgt werden, 
von Leerzeichen getrennt, z.B. "-n -i "

Hier ist die vollstndige Liste der Optionen von hfkernel:
 -2 Im Standby-Modus 200 Baud nicht decodieren
 -3 Im Standby-Modus 300 Baud nicht decodieren
 -a Pfad zum Audio-Gert (Default: /dev/dsp)
 -c Pfad zur Software-Schnittstelle (Default: /var/run/hfapp)
 -f Im Standby-Modus keine Frequenznachstellung (frequency tracking)
 -h Halbduplex erzwingen (luft mit manchen Soundkarten besser)
 -i invertiert PTT-Impuls
 -k Hfkernel beenden (wird im Startskript hf verwendet)
 -l Eintrge in Logdatei (Default: keine)
 -M Pfad zum Mixergert 
 -m CPU-Uhr in MHz (auf khz genau)
 -n Verzicht auf 'mmap()' (kein direkter Zugriff auf Soundkartenpuffer).
    Experimentell! Fr manche Soundkarten, die (oder deren Treiber) mmap
    nicht richtig untersttzen.
 -p Pfad zur seriellen Schnittstelle fr die PTT-Ausgabe (Default: keiner)
 -R deaktiviert den Gebrauch der RDTSC-Instruction (nur bei Intel-Systemen).
    Die Verwendung der RDTSC-Instruktion kann bei Laptops und/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 (Zeitbestimmung ber Prozessortaktrate)

   
5) hfterm und die Digimodes:
   =========================

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 <Shft>F...

Es gibt 3 Ebenen fr Fehler- und Verlaufsmeldungen:
1. Das xterm-Fenster im Hintergrund: die unterste Soundtreiber-Ebene.
2. Das Monitorfenster: der Protokoll-Ebene
3. Fr den normalen Benutzer am ntzlichsten sind 
   die Meldungen im Status-Display-Fenster unten im Schirm. 

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. Aber ich 
mag es, es entspannt mich! Falls sich das Programm aufhngt, erst mal
warten,  evtl. neu starten (hf, nicht den Computer. Wir sind ja hier
nicht bei Bill.) 

 "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 ein Poti in der Leitung vom Rig zur Soundkarte oder einen Mixer
wie aumix (fr OSS) oder alsamixer. 
Das Spektrum hat eine blaue und rote Linie fr Mark und Space, und eine
grne Linie, der Squelch. 
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. Die Werte werden gespeichert. 
Der rechte Knopf whlt den Squelch, er wird nicht gespeichert, der
Anfangswert ist  immer 10 %. 

 "RTTY" 
Zum Anfreunden mit dem Programm versuche zuerst RTTY zu
empfangen und zu senden. blich sind Shift 170 Hz und Baudrate 45. 
Suche im 20m-Band nach dem typischen schnen
RTTY-Maschinengerusch. ffne ber das Men Utilities oder einfach mit
'<Strg> F' (<Strg>-Taste gedrckt halten und F eingeben) das
Frequenzspektrumdisplay. Nach meiner Erfahrung geht das Abstimmen am
schnellsten mit dem Transceiver.  Drehe die 2 Peaks unter die blaue und
rote Linie im Spektrum. Mit '<Strg> F' verlasse das Spektrum, gehe auf
'RTTY-Rx' und staune, das  Empfangsfenster decodiert Text. Warum nicht
einen CQ-Ruf beantworten? Natrlich nur mit Funklizenz, ohne
bersteuerte Soundkarte, mit miger Leistung (20 W gengt!), und mit
Rcksicht auf die Anderen, wie in allen Digimodes. 
Bei Dauersendung kommt ein "Diddle" mit "LTRS...".

 "PACTOR - AMTOR - GTOR"
Pactor ist eine Wissenschaft fr sich. Wenn Du noch nichts darber
weit, lies 'pactor.txt' in /usr/share/hf. be erst das Empfangen, 
es ist etwas schwieriger als bei RTTY. Im Spektrumdisplay
sieht Pactor wie RTTY aus, aber der Ton ist im 1.25 Sekunden- Rhythmus
gehackt. (Amtor: 0,45 sec.) Manchmal kannst Du zwischen den Datenblcken die kurzen
Kontrollblcke hren. Auch bei exakter Abstimmung kannst Du manchmal
nichts dekodieren, wenn die Sendung in  Pactor-Level II oder III ist (mit PTC).
Manchmal erkennst du nur ein Rufzeichen, das immer in  Level I gesendet
wird. Rufe CQ in Pactor-FEC (Geduld!). Wenn jemand in FEC ruft, antworte
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 ('Alt Q'), etwas warten (QRT -Routine),  dann geht das 
Program von selbst in standby (Bereitschaft). 

 "MT63"
Vielen Dank an Pawel Jalocha, der diesen neuen 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, Notfallnetzwerke, siehe dazu die
gegenwrtig laufende interessante 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. Danke!

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 die Abweichung,   
vielleicht schaffe ich die Mglichkeit in zuknftigen Versionen. 
2. Beschdige beim Verbinden der Soundkarte mit Deinem PC/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 Station en
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 Symbols  (3.2 Sekunden) 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 der fr Bits pro Ton 
gleich, also kann das Modem 10 7-bit-Zeichen pro Sekunde senden. Das
Modem kann auch in 2 anderen Betriebsarten laufen:

Bandbreite Frequenzbereich Baudrate Zeichenrate  Verschachtelung/Zeichen
  500 Hz   500-1000 Hz     5 baud     5 char/s   6.4 oder 12.8 sec
 1000 Hz   500-1500 Hz    10 baud    10 char/s   3.2 oder  6.4 sec
 2000 Hz   500-2500 Hz	  20 baud    20 char/s   1.6 oder  3.2 sec

Fr jeden Modus kann der Interleave-Faktor verdoppelt werden, so wird 
jedes Zeichenn 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 its 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 selbstabstimmend und
selbstsynchronisierend, 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!)

Ich habe in hf die Zeit des Auslaufens der Datenverschachtelung 
("flushing data interleaver") am Ende jedes Sendezyklus noch mehr  als
Pawel im Originalcode verlngert, damit meine Squelch-Funktion  beim
Empfang nicht die letzten Daten abschneidet.

 "PARAMETER"
'<Strg> P' ffnet eine Eingabemglickheit fr Dein Rufzeichen und
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!).

 "'BRAG' (PERSNLICHE DATEN)"
'<Strg> B' ffnet ein Eingabefeld fr Dein Rufzeichen und 'brag'
(Angeben), also  Power, Rig, Antenne, Locator, QTH, Name, Mail. Diese
Daten werden von einer Such- und  Ersetz- Funktion zusammen mit den
Fixtexten bentzt, um Textbausteine zu senden. Der Ruhm Deiner Station
wird in ~hf/hfterm.brag gespeichert. 

 "FIXTEXTE"  
Wenn Du Textbausteine magst, editiere die Fixtexte (bis to 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 Buttons klicken
oder  'Shift F<1 ..12>', zurcklehnen und Kaffee trinken. 
Die Fixtexte werden in ~/hf/fix.<nr> gespeichert und knnen auch 
auerhalb des Programms editiert werden. 
Durch Einfgen oder Umbenennen kannst Du 
beliebige Ascii-Texte bis zu einer Lnge von 1024 Zeichen importieren.
Mit dem File-Men  kannst Du auch eine beliebige Datei einmal oder als
Bake senden.

 "LOGBUCH"
Es gibt sogar 2. Eins fr groe Schirme, es ist immer offen.  Einfach
ausfllen und auf 'save' (oder 'clear') im Log-Men klicken. Das andere
Log ist 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.

 "RX-TEXT" 
Empfangene Texte werden als hfrx gespeichert, bis zu 5 alte Texte in 
in ~/hf aufgehoben. Im File-Men kann auch zustzlich eine Datei zum
Speichern ausgewhlt werden.


6) Root-Rechte:
   ============

hfkernel mu wegen des besonderen Hardwarezugriffs (im  Echtzeitmodus,
mit hoher Prioritt) nur von root, dem Superuser, aufgerufen werden. Im
normalen Betrieb sollte man aber nur als normaler Benutzer arbeiten.
Damit normale Benutzer hfkernel mit hfterm zusammen bequem starten
knnen,  wird nun bei der Installation von hfkernel automatisch das
Suid-Bit an hfkernel  vergeben mit: 
chmod u+s /usr/bin/hfkernel.
Dann kann das Programm vom normalen user mit Superuser-Rechten 
ausgefhrt werden. 
Wenn das luft und Du so zufrieden bist, brauchst Du
nichts weiter ndern und diesen Abschnitt nicht weiterlesen.

Wenn dies nicht gewnscht wird, sind in /etc/hf.conf 2 andere Wege
vorbereitet und beschrieben. Du brauchst dazu eins der (2 oder mehr?)
Programme, die es normalen Benutzern ermglichen, Programme mit
root-Rechten auszufhren: 'su1' oder 'sudo'. Diese sind in den meisten
Linux-Versionen enthalten.

su1: (man su1). 
Installiere su1, ffne mit einem Editor 
/etc/su1.priv (als root natrlich) und ndere wie folgt:
	# Define some privileged users
	define	GODS	root <dein_user_name>
und
	# These never require a password since they are reasonably safe
	ask	never
	allow   GODS    prefix  /usr/bin/hfkernel
Und: hf (vom user gestartet) ruft hfkernel mit Root-Rechten auf.
Eine Beispieldatei fr /etc/su1.priv ist 
/usr/share/hf/hfsu1.priv.txt

sudo: (man sudo)
Als root ergnze die Datei '/etc/sudoers' mit der Zeile 
<dein_benutzername> ALL=(ALL) NOPASSWD: /usr/bin/hfkernel
Und: hf (vom user gestartet) ruft hfkernel (mit Root-Rechten) auf.

Vorsicht: Alle diese Umgehungen der Root-Schranke knnen
Sicherheitslcken sein!


7) Probleme mit Soundkarten und Treibern:
   ======================================

Soundkarte :
============

hf 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 ARQ-Protokolle ist es notwendig, im
Echtzeit-Modus zu arbeiten, und deswegen wurde von Tom Sailer als bester
Weg das Programm mit dem "mmap()" - Systemaufruf geschrieben. Diese
Technik wird auch "DMA" (direct memory access, direkter Zpeicherzugriff)
genannt, also direktes Spiegeln des Soundkarten-Ringpuffers im
Arbeitsspeicher des Computers. Und nicht jede Soundkarte kann das, und
nicht jeder Soundtreiber untersttzt das richtig.

Ich experimentiere mit einem alternativen Code mit der OSS-API, der
nicht mmap(), sondern normale read() und write()-Zugriffe verwendet.
Dazu ist eine Option "-n" (no mmap) vorbereitet. 

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

Halb-Duplex-Soundkarten mssen umgeschaltet werden, 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 Parameters-Men von
hfterm auf einen greren Wert ein! Und hoffe, da die Summe aus
Ausbreitungszeit zu Deinem Funkpartner  und dessen txdelay auch lnger
ist.

Die Audio-Level und -Parameter knnen mit den blichen Mixer-
Programmen eingestellt werden. Das eingebaute AGC sollte ausgeschaltet
sein.

Probleme (Abstrze und Hngenbleiben) gab es bei: 
ESS 1968 "Chipbug",hfkernel geht nicht mit OSS und nicht mit ALSA. 
VIA82C686: nicht mit OSS-Treiber, geht aber mit ALSA. 
Intel 101k: viele xruns ("OSS driver lost interrupt"), decodiert schlecht.

Treiber :
=========
hfkernel wurde fr die (alten) OSS-Treiber geschrieben, luft aber auch
(und oft besser) mit den neuen ALSA-Treibern, den diese haben
eine OSS-Emulation, die stndig verbessert wird. Je nach Soundkarte
luft hf mit beidem, einem oder keinem dieser zwei Treiberklassen. 

OSS:  

In alten Linux-Distributionen gab es ein 'freies' (mit der Distribution
bezahltes) OSS-Paket, das, z.B. bei meinem SuSE 6.3 in /tmp/opso
gefunden werden konnte und mit hf gut funktioniert, ich verwende es
immer noch. So weit ich wei, wird OSS immer noch weiterentwickelt, die
neueren OSS-Treiber kosten etwas (www.opensound.com). 

Mit alten und auch mit neuen (bis Kernel 2.4....) Linux-Versionen 
werden Kernelmodule mitgeliefert, die den alten OSS-Treibern hnlich
oder gleich sind. (Unterschied zu den ALSA-Modulen: Sie fangen nicht mit
'snd-' an.) Sie sind in /lib/modules/<kernelversion>/misc. (Quelltexte
in /usr/src/linux/<kernelversion>/drivers/sound). Sie lassen sich, nach
Deaktivieren von ALSA (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: 

Zur Zeit wird die neue ALSA (Advanced Linux Sound Architecture)
rasant weiterentwickelt und von vielen Linux-Systemen verwendet. ALSA
wird mit den neuen Kerneln ab 2.6 als Standard geliefert. 
Die neueste Version von ALSA und viel gute Dokumentation 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

Das ALSA-System hat 2 Arten der OSS-Emulation:

Die standardmige, (in den ALSA-Kernelmodulen enthaltene)  wird
automatisch aktiviert, wenn ein Programm wie hfkernel die  erste
(zweite...) Soundkarte als /dev/dsp0 (1...) anspricht, so wie es alle
OSS-Programme tun. 

Die andere (alternative) ist in einer zustzlichen library, die durch
das Skript  /usr/bin/aoss (enthlt: env LD_PRELOAD=/usr/lib/libaoss.so
$*) an das Programm gelinkt wird, z.B.: aoss <Programm).
Diese Mglichkeit ist in /etc/hf.conf vorbereitet. Um diese lib zu verwenden,
mu die Konfigurationsdatei /etc/asoundrc oder ~/asoundrc vorbereitet
werden mit dem Inhalt (bei nur einer Soundkarte)

	pcm.dsp0 {
		type hw
		card 0
	}

In neueren ALSA-Versionen ist diese Datei bereits vorhanden.

Beide Arten der ALSA-OSS-Emulation sind noch in der Entwicklung, und da
hfkernel besondere Ansprche stellt (mmap und Realtime-Modus) luft es,
je nach Soundkarte, manchmal mit OSS, manchmal mit ALSA, manchmal gar
nicht! Es wird intensiv an Verbesserungen gearbeitet, hole Dir die
neueste Version von ALSA und sei geduldig!!!

erweiterte PROBLEMLSUNG :
==========================

Wenn hfkernel nicht luft,
schlage ich die folgende Strategie vor:
for(;;) { 
	Sichere Deine Daten.
	Versuche zuerst die Soundkarte und den Treiber, die du hast.
	Versuche Optionen -n (no-mmap), oder -h (halfduplex).
	Versuche ALSA im normalen Modus.
	Versuche ALSA mit dem aoss-Prefix 
	(in /etc/hf.conf nur ein Kommentarzeichen entfernen)
	Versuche die neueste ALSA-Version, es wird besser.
	Versuche die neueste ALSA-Version mit dem aoss-Prefix.
	Versuche das kommerzielle OSS, wenn Du es hast.
	Versuche die OSS-Kernelmodule in Deiner Distribution.
	Versuche eine andere Soundkarte.
	if (Nerven am Ende) {
		break;
	}
}
if (wenn du c-programmieren kannst) {
	Verbessere l1/user/oss.c: oss_nommap_fdx_driver() und 
	oss_nommap_hdx_driver(), darin werden einfache read()'s und write()'s 
	mit der OSS-API versucht. (Ich, Gnther, arbeite auch daran gerade, 
	hf gibt	schon vertraute Gerusche von sich, Pactor-ARQ in schlechtert
	Qualitt mglich! Bitte Kontakt ber die Mailingliste!)
	Oder schreibe es in die ALSA-API um, die fr mmap-hnliche Mechanismen
	mehr Mglichkeiten hat. (Das sei aber schwerer als die OSS-Api, hat 
	man mir gesagt.) (Wenn Du das tust, verwende die neueste ALSA-lib, 
	weil sich mit Version 1.0 die API etwas gendert hat.)
}
else {
	versuche die vielen Linux-PSK-31-, MT63, MFSK - Programme,
	die gut laufen und auch Spa machen
	Versuchs mit hf wieder in 1 Jahr.
}

Wenn hfkernel luft, fixiere ihn mit Leim und berhre das System nie
mehr. 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 ein Psychotherapeut. Wirklich. Ich heile mich
selbst durch Klavierspielen, andere Sachen machen und computerfreie
Tage feiern.


8) Echtzeit-Probleme und Kalibrierung: 
   =================================== 

Kurzwellenprotokolle sind normalerweise synchron. Sie bentigen eine
exakte Zeitquelle, um auch bei lngeren Unterbrechungen der bertragung
bitsynchron zu bleiben. Z.B. fordert das SITOR- (hnlich Amtor-)
Protokoll, da die Referenzzeitquelle nicht mehr als 20ppm vom Idealwert
abweichen darf. Pactor stellt hnliche Anforderungen, damit lngere
Verbindungen stabil 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 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
K5 PR133  auf 100MHz.

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 2 Programme zur Kalibrierung enthalten. Die beiden
ersten, dcf77rx und reffreq, schreiben sogar selbstttig ihre Ergebnisse
in die Konfigureationsdatei /etc/hf.conf. Aber bitte diese vor Gebrauch
testen, evtl. von Hand editieren! Am Ende des Kapitels beschreibe ich
eine primitive Schtzmethode mit  der ich Erfolg hatte, und ein Skript
das die Samplerate fr MT63 raten kann. Das hilft bei alter Hardware, wo
cpu und/oder Speicher  nicht fr die Kalibrier-Algorithmen ausreichen.

dcf77rx   
=======  
benutzt das Zeitzeichensignal des bekannten Langwellen-
Frequenznormalsenders 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
zu empfangen ist und brigens auch das Signal fr die Funkuhren liefert.
(Siehe auch dcf77.txt) Wenn Du dieses Signal noch nie gehrt hast, teste
doch einfach einmal das Demo-Programm dcf77gen !

Das Signal mu dazu 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 Konverters 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/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 strungs- freien Bedingungen) sollte das
Programm die DCF77-Zeit ermittelt haben. Von da an warte etwa 15 Minuten
und prfe die Messungen auf. Du kannst sie zur Sicherheit aufschreiben.
Aber sie werden automatisch nach /etc/hf.conf geschrieben. 
Sieh dort, ob die Korrekturwerte glaubhaft und etwa konstant sind, 
editiere sie wenn ntig, die letzten in der Datei werden vom Startskript
hf als Optionen fr hfkernel gelesen.

Dcf77rx hat auch eine Option zum Setzen der Systemzeit zugefgt 
(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.

Der Schweizer Zeitnormalsender HBG bei 75 kHz knnte vermutlich auch
verwendet werden, aber wir kennen das genaue Format seiner bertragung
nicht (es scheint dem des DCF77 sehr hnlich zu sein).

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

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), feht damit reffreq -f 2500. Es pulsiert,
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!

Danke an Dave <dalechid@cox.net> fr die Information ber die
USA-Zeitstandardbake WWV, Boulder, Colorado,  die abwechselnd 400 und
600 Hz auf 2.5, 5 and 10 MHz AM sendet! 
Also: reffreq -f 400 oder reffreq -f 600.
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 als
Zeitnormal 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 (RTTY TX 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.

ratecal1:
=========
Dieses Tool stammt auch von Pawel 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 8000 Hz 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 ergibt die Samplerate bei 8000Hz auf 0.5 Hz genau an.

Fr grere Genauigkeit erhhe die Zahl der Wiederholungen des Pulssignals:
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 erfolgtee 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 ideally periodisch,
weil manche Pulses 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 wissen
und 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
und erhielt 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 (bei mir z. B. 1, 0011) wie bei den anderen 
2 Tools, auf 10^-4 genau, was gengt.

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.

Ich hatte ein Abenteuer mit meinem Laptop (150 MHz Pentium 1, nur 14 MB RAM!),
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 Speucher und Prozessorlast! 
Das Laptop hatte 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
als Option gegeben werden, MT63 zu 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 waw 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 u.s.w.
Mit R8300 klangen die 2 'dahs' in etwa gleichem Rhythmus. 
So konnte ich, whrend 
ratetry 8200 8350 
lief, mit dem anderen Computer zwischen Laptop's "wirklicher Rate" 
8241 and 8335 Daten empfangen. Versuchsaufbau luft, Projekt kann weitergehen.


9) Mailbox :
   =========

hfterm kann ber das TCP/IP-Protokoll (ber einen  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 in /etc/hf.conf ndern.

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:
/etc/ax25/fbb/passwd.sys:
Ersetze das Passwort nach der Zeile
#PASSWORD OF ALL NON DEFINED CALLSIGNS.
einfach durch eine leere Zeile!

/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_telnet   <-----
#
# End of file.
#
(Diese port.sys ist nur fr hf konfiguriert. Wenn schon andere Ports 
/TNC's da sind, mu fr hf je 1 Port / TNC zu den bestehenden addiert
werden. Die anderen mit Pfeil markierten Zeilen mssen fr hf zustzlich
eingefgt werden.)

/etc/ax25/fbb.conf:
(in lteren 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 gleich beim ersten Einloggen 
Mails verschicken. 
3746 ist brigens  2 + 32 + 128 + 512 + 1024 + 2048.
Es geht aber auch nur mit mask = 130, also  2 + 128!

/etc/ax25/fbb/lang:
Ersetze english.ent durch eine leere Datei.

/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
in Shellscripten) 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 "NO", (ganz leere Zeilen ergeben Fehler) 
und z.B.  "Name ? " bei OK. 
Ich liefere meine english.txt in /usr/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.

Und nun die gefhrlichste Operation. Medizinstudium erforderlich. Schon
mal eine Binrdatei gehackt? Es geht ganz einfach:  Es geht um die erste
Meldung von 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!
Wie geht das? Mache zuerst auf jeden Fall eine Sicherheitskopie von
/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 selbst!

Nun kannst Du F6FBB mit `telnet localhost 6300` testen. Es mu mglich
sein, 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.) So kannst Du den Login eines
entfernten Bentzers simulieren, ohne 2 Computer verkabeln oder eine
Verbindung ber Funk machen zu mssen.

Ein Pactor-Connect mit dem Call im Men Utilities/Parameters/Pactor/Mycall
oder ein Amtor-Connect mit dem Call in ../Amtor/Mycall ffnet die Mailbox.
In FEC-Modes mu der Partner das Call, das in 'Personal Edit` (brag) 
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!

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

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


10) Liste aller im Paket enthaltenen Programme :
    ============================================

   Alle werden in /usr/bin installiert:
   
   hfkernel, 
   hfterm:		Die 2 Hauptprogramme.
   hf: 			das Startskript fr beide. 
   paccalc:		berechnet den Datendurchsatz fr Pactor
   channel:		Simulator fr die bertragung auf Kurzwelle.
   dcf77rx:		Berechnet Uhr-Korrektur aus DCF77-Zeitnormalsignal
			Setzt auch die Systemzeit, siehe man dcf77rx.
   dcf77gen:		erzeugt DCF77-Signal, siehe man dcf77gen.
   reffreq:		Berechnet Uhr-Korrektur aus Referenzfrequenz 

			und: (neu!) Pawel Jalocha's MT63 -Suite als 
			Konsolenprogramme, mit vielen experimentellen Features:
			(Hilfe fr sie alle: Rufe sie ohne Optionen auf!)
    mt63rx:		empfngt MT63
    mt63tx:		sendet   MT63
    mt63trx:		tut beides 
    ratecal1:		berechnet wirkliche Samplerate aus pulsierendem Signal
    addnoise:		setzt Rauschen auf Audio-Datei, experimental
    morsecod:		wandelt digitales in lesbares Morsealfabet
    peakrms:		Tools zum Untersuchen von MT63-Audiodateien
    ratetry:		Script testet von mt63tx mit verschiedenen Sampleraten 


11) Verzeichnis der Hilfetexte :
    ============================
    
Bis jetzt gibt es Hilfe auf deutsch und englisch. bersetzungen sind
willkommen!

Die Texte warten im Programm-Verzeichnisbaum unter /doc auf den
geneigten Leser, und werden bei der Installation ins Verzeichnis 
/usr/share/hf kopiert. Die wichtigsten Texte sind ber das
Hilfe-Men von hfterm (F1) erreichbar.
   
  
    DEUTSCH:
    ========
   
    DE-HF-HOWTO.txt	(dieser Text, 
                        enthlt nun auch den Inhalt von 
			man hfkernel-de und man hfterm-de)
    pactor.txt		(gute Erklrung von Pactor, H.-P. Helfert et al.)
    pactor.ps		(wie oben in ps, drucke es mit lpr pactor.ps)
    dcf77.txt		(Langwellen-Zeitnormal fr Kalibrierung)
    TODO		(Die Stimmen, die Programmierer in schlaflosen 
                         Nchten im Kopf hren, zweisprachig)
    deutsche manpages:
    man hfkernel-de	
    man hfterm-de   	
   
    ENGLISCH:
    =========
   
    HF-HOWTO.txt	(wie dieser Text)
    P-MB-list.txt	Liste der Pactor-Mailboxen von Jost, ZS5S
    TODO		(die Stimmen..., zweisprachig)
    english.txt		Beispiel fr /etc/ax25/fbb/lang/english.txt.
    mt63.txt		Pawel Jalocha's original MT63 doc

    englische manpages:
    man hf, man hfkernel, man hfterm, man dcf77gen, man dcf77rx  	


    BILDER :
    ========
    lfconv.jpg		Schaltplan von  DL4MGE's Langwellen-4 MHz-Konverter


12 ) Schluwort :
=================
 
Das Programm hat noch einige BUGS,  manche sind auch FEATURES,  nicht
brllen, besser warten, noch besser reporten,  am besten
mitprogrammieren (Siehe 'TODO')! Mich selbst hat dieses Programm
inspiriert, c zu lernen, ich habe sehr viel gelernt (alles, was ich hier
geschrieben habe, wute ich vorher auch nicht!) und es hat mir bisher
(meistens) viel Spa gemacht !

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


Gnther Montag DL4MGE

00000000000000000000000000000000000000000000000000000000000000000000000


AUTOREN

Thomas M. Sailer	HB9JNX/AE4WA	Mail: sailer@scs.ch
			
Ralf-Axel Krause	DF3JRK		http://www.df3jrk.de.vu
					Mail: df3jrk@gmx.de	
					Packet: df3jrk @ df0hmb.#hh.deu.eu

Gnther Montag		DL4MGE  	Mail: dl4mge@darc.de
 					Packet: dl4mge @ db0zka.#bay.deu.eu

Pawel Jalocha		SP9VRC		Pawel.Jalocha@cern.ch	
	
Homepage des Projekts, neueste Meldungen und neueste Version:
	http://hfterm.sourceforge.net	
	(Link: www.hfterm.de.vu)

Bitte trage Dich UNBEDINGT als Mitglied der mailing list ein bei:	
	https://lists.sourceforge.net/lists/listinfo/hfterm-hackers

Bitte alle Fragen und Bugmeldungen NUR an die mailing list:
	hfterm-hackers@lists.sourceforge.net
	
