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


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

Version 0.7.3 (4/2005)
Von Gnther Montag DL4MGE
  


1. Einfhrung :
===============

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

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. ber ein UNIX-domain-socket  kommuniziert
es mit dem zugehrigen graphischen Terminalprogramm hfterm. 

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

Hfkernel kann fr die (traditionellen) OSS-Soundtreiber und somit auch
fr die OSS-Emulation der neuen ALSA-Treiber, aber auch fr die neue
ALSA-API direkt konfiguriert werden. 

Wegen des fr das Amtor- und Pactor-Protokoll notwendigen Echtzeitmodus
und den dafr ntigen kurzen Signallaufzeiten wird die Soundkarte in Tom
Sailer's Original-Code ber den "mmap()"-Mechanismus (memory mapping)
angesprochen, was nicht jede Hardware und nicht jeder  Treiber
untersttzt. Dieser Code luft deswegen nicht mit allen Soundkarten und
Treibern! Abstrze sind mglich. 

Die experimentelle Option '-n' (no-mmap) fr den OSS-Treiber
funktioniert oft gut, sie ist auch fr die 2 der 3 beigefgten
Kalibrierprogramme vorhanden, die mmap() verwenden. Sie wird nun (ab V.
0.7.3) in der globalen Konfigurationsdatei als Standard vorgegeben, um
den ersten Start mit dem Programm leichter zu machen.

Fr die ARQ-Modes und MT63 soll hfkernel aber auf jeden Fall ohne die
Option -n getestet werden, auerdem ist eine Kalibrierung in vielen
Fllen ntig.  Dazu sind drei Kalibrierprogramme im Paket enthalten.

Das Startskript hf liest die globale Konfigurationsdatei /etc/hf.conf
ein, prft sie und startet hfkernel und hfterm.

ber einen TCP-Port kann hfterm mit dem bekannten Mailbox-Programm F6FBB
mit anderen Mailboxprogrammen, mit allen Programmen, die eine
TCP/IP-Schnittstelle haben, oder mit solchen, die ber inetd.conf als
Internet-Dienst eingerichtet werden knnen, verbunden werden.

So kann hf als automatische Pactor- Amtor- oder (in Zukunft)
MT63-ARQ-Mailbox arbeiten oder zu Fernsteuerungszwecken dienen.

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

Bitte um Kontakt ber die Mailingliste!



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

2.1. Voraussetzungen: 

Hardware: Unkritisch. Prozessor ab 100 MHz. RAM ab 16 MB. 

Software: hf bentzt das gtk+ Toolkit (Version ab 1.2.0), das in allen
Linux-Distributionen enthalten ist. Das Paket 'gtk-devel' mu auch
installiert sein. Mit 'gtk-config --version' wird dis getestet. 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.


2.2. Installation des Quelltextpakets:

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 angegeben werden)
kompiliere es (c- und c++ -Compiler mssen installiert sein):
# make
installiere es (wegen sonst fehlender Schreibrechte als root !):
# make install 


2.3. Installation des rpm-Pakets:

Das i386-rpm ist fr ltere Computer gedacht (auch ohne ALSA-Soundtreiber),
das i686-rpm fr neuere Systeme.

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


2.4. Erster Test:

2.4.1. Testen von hfkernel auf einer Konsole:

Starte einmal als root und als normaler Benutzer 
# /usr/bin/hf
ohne Optionen.

Das Startskript hf liest die systemweite Konfigurationsdatei
/etc/hf.conf  ein. Bei der Neuinstallation legt es ein Verzeichnis "hf"
im Home-Verzeichnis des Benutzers an und fllt es mit den
Beispieldateien aus /usr/share/hf/hf-examplefiles. 

Bei erfolgreichem Start von hfkernel rollt nach den ersten Meldungen
eine Zahlenreihe wie diese ber den Schirm:  

hfkernel running: corrout ... intermediate ...  

Das ist das EKG. Das bedeutet, da das "Herz" des Programms, hfkernel,
regelmig schlgt. Gewonnen! Beende nun hfkernel wieder mit <Strg>+c.

Kein Herzton? Dann braucht hfkernel besondere Optionen, siehe Kapitel 4. 

Fr ganz Ungeduldige:
Teste an einer Konsole diese Optionen in dieser Reihenfolge:
# hfkernel 
# hfkernel -a plughw:0,0
# hfkernel -n
# hfkernel -R
# hfkernel -h -R
# aoss hfkernel 
# aoss hfkernel -n
# aoss hfkernel -h
# aoss hfkernel -R
# aoss hfkernel -h -R
Bei Erfolg schreibe die guten Options auf und setze sie in /etc/hf.conf
und freue Dich.


2.4.2 Kombibierter Start hfkernel und hfterm durch das Skript hf:

Wenn hfkernel ergolgreich getestet ist, ffne im graphischen Modus mit
<Alt>++F2 ein Befehlsfenster und schreibe hinein:

# /usr/bin/hf

Das Startskript hf startet nun zuerst hfkernel im Hintergrund und dann
das graphische Terminal hfterm im Vordergrund. 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 und der Squelch richtig eingestellt ist.  Der Squelch lt
sich mit der rechten Maustaste ndern. Im RX-Fenster erscheinen
decodierte Zeichen.

Wenn hf luft, kannst Du als root 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? So kann das Programm in 
Zukunft mit einem Mausklick gestartet werden.


2.5. Konfiguration


2.5.1. Global:

Die globale Konfigurationsdatei, die vor dem Start eingelesen wird, ist
/etc/hf.conf. Sie kann (als root) mit jedem Editor bearbeitet werden.
Hier sollte die serielle Schnittstelle fr PTT (und Elbug) eingestellt werden.
Auperdem gibt es Optionen fr die Wahl der Soundkarte und des Soundtreibers.


2.5.2. Persnliche Konfiguration:

Die persnliche Konfiguration (Rufzeichen, Name, Baudraten)
erfolgt ber das Men 'config' von hfterm aus.

Die Textbausteine knnen ber das Men 'fixtexts' gendert werden.

Das Verzeichnis fr Deine persnlichen Dateien (Konfiguration, Fixtexte,
Log...) heit brigens "hf" in Deinem home-Verzeichnis  und wird beim
ersten Start von hf automatisch angelegt und mit Beispieldateien
gefllt. 

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, auch ber das Hilfe-Men erreichbar.


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 einaml, wenn Du die elbug mit
Ausgabe ber den DTR-Pin der seriellen Schnittstelle und Ansteuerung der
Key-Buchse des Funkgerts benutzen willst. Natrlich kannst Du auch die
Elbug an RTS lassen und mit einem Umschalter zwischen Key und PTT
whlen.

Fr PTT und Key gibt es jede Menge verfeinerte Mglichkeiten mit
Optokopplern und Relais.

Fr manche Transceiver ist diese Schaltung zu hochohmig, dann den 
Collectorwiderstand weglassen und als Basiswiderstand 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:

Mittelfeder: +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:
=============================================

Startet hfkernel nicht mit dem Startskript hf, oder mchtest Du "von Hand"
starten, um die Optionen kennenzulernen und zu testen?

Starte hfkernel auf einer Konsole, zuerst ganz einfach mit  
# hfkernel

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 (im Echtzeitmodus,
mit hoher Prioritt, threads, mmap) mit den Rechten 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. 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.

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/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 es von Hand mit
# chmod u+s /usr/bin/hfkernel. 
(gleichbedeutend: chmod 4755 /usr/bin/hfkernel)

Wenn das suid-Bit nicht gewnscht wird, brauchst Du eins der 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.
Allerdings ist su1 in neueren Distributionen oft nicht mehr enthalten.

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!

Der primitivste Weg ist:
Starte hf als root, dann hfterm als user.


4.2 Serielle Schnittstelle:

Fehler mit 'ioctl: TIOCMBI[CS]:' 
Konflikt mit der Maus? Ist die serielle Schnittstelle in /etc/hf.conf
richtig eingestellt? (Als Default ist keine eingestellt, also kommt auch
zunchst dieser Fehler nicht...)


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 and triggering
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 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.

* Darum ist die '-n' -Option, die diese Schwierigkeit umgeht, nun als
* Standard in  /etc/hf.conf gesetzt, um den Anfang zu erleichtern.  Aber
* teste hf auch ohne  sie, um in den ARQ modes bessere Ergebnisse zu
* erreichen!

Fr MT63 ist es kein Problem wenn der mmap-Modus nicht arbeitet.

Halb-Duplex-Soundkarten werden 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 Parameters-Men von hfterm auf einen
etwas 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.


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: 

Die ltere, traditionelle API heit OSS (Open Sound Systems), in
Distributionen bis etwa Kernel 2.4 sind die OSS-Treiber als ladbare
Kernelmodule standardmig dabei. 

Es gibt auch kufliche, teils bessere Weiterentwicklungen der OSS-Treiber.

In alten Linux-Distributionen gab es ein Zwischending, ein 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. 

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 (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.  

So weit ich wei, wird OSS immer noch weiterentwickelt, die
neueren OSS-Treiber kosten etwas (www.opensound.com). 

ALSA: 

Neu entwickelt, flexibler, komplexer und fortschrittlicher, (und
deswegen  auch manchmal vielleicht noch fehleranflliger und langsamer)
ist 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 und wird fleiig bei SuSE
weiterentwickelt und von vielen anderen Linux-Distributionen bernommen.
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 (`Nachahmung') enthalten
wrde, wre das schlimm, dann wrden viele guten alten Programme (fr
Funk, Musik, Spiele...) nicht mehr mit dem neuen Linux laufen. :-( 

(Du kannst die verschiedenen Programmcodes in hfkernel/l1/oss.c und
hfkernel/l1/alsa.c vergleichen!)

Nun wird es ein bichen kompliziert: ALSA hat 2 alternative 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 (dsp) anspricht, so wie es alle
OSS-Programme tun. 

Die andere (alternative) ist in einer zustzlichen library, die durch
das Skript /usr/bin/aoss (in dem steht: env
LD_PRELOAD=/usr/lib/libaoss.so $*)  an das Programm gelinkt wird:  
# aoss <Programm>.


4.4.3 hfkernel, OSS und ALSA:

hfkernel's Soundschnittstelle wurde, wie die der meisten
Amateurfunkprogramme, fr die  OSS-API geschrieben, luft aber auch mit 
den 2 OSS-Emulationen der ALSA-Treiber, die auch stndig verbessert 
werden. Ich habe noch nicht herausgefunden, ob das Prefix aoss einen
Vorteil bringt (Es kann in /etc/hf.conf eingestellt werden.)

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 der OSS-Emulation von
ALSA, manchmal gar nicht! Es wird intensiv an Verbesserungen gearbeitet,
hole Dir die neuesten Version von ALSA und hf und sei geduldig!!! ( be
patient with your patient because your patient is a patient  patient.)

Ich habe zustzlich einen experimentellen Code in der OSS-API geschrieben, 
der nicht mmap(), sondern normale read() und write()-Zugriffe verwendet.
Dazu ist die Option "-n" (no mmap) vorbereitet. 

Fr Version hf-7.1.1 habe ich dazu noch den Voll-Duplex-Code fr die 
ALSA-API gemacht. Um ihn zu testen, mut Du hfkernel entsprechend der 
ALSA-Konvention mit der Option
-a plughw:0,0 fr die erste, oder 
-a plughw:1,0 fr die zweite Soundkarte aufrufen, usw.
Auch das feste Einstellen dieser Option ist in /etc/hf.conf vorbereitet.

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


4.4.4 Stufenplan bei Soundtreiber-Problemen mit hfkernel

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 zu testen:

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

Sonst: 

Fehler mit 'MMAP':
Teste die read()/write()- verwendende Version ohne mmap() mit:
# hfkernel -n

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

Wenn bei Halbduplexbetrieb die Zahlen bei '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 der RDTSC-Instruktion)
zugefgt werden:
# hfkernel -R 
oder 
# hfkernel -h -R

Immer noch nichts? 

Dann versuche fr all diese Optionen zustzlich dem aoss-Prefix
(bis auf -a plughw:0,0, da bringt es ja nichts, ist ja kein OSS mehr):
# aoss hfkernel 
# aoss hfkernel -n
# aoss hfkernel -h
# aoss hfkernel -R
# aoss hfkernel -h -R

Immer noch nichts? 

Versuche eine andere Soundkarte.
Versuche die neueste ALSA-Version, es wird besser.
Versuche das kommerzielle OSS, wenn Du es hast (vielleicht eine 'freie' 
Version aus einer alten Distribution, wie ich, siehe oben!)

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

Achtung: Vor V. 0.6, bei manchen Kombinationen von Soundkarte und
-treiber hngte sich hfkernel mit einer Endlosschleife von  "...
fragments passed since last wakeup" oder "OSS driver lost interrupt". 
Leider gab es manchmal auch Abstrze und einmal einen Plattencrash,
sorry! In V.0.6 habe ich eine Sicherungsfunktion eingebaut, die dies
verhindern sollte.


4.4.5. Sichern der Konfiguration und Deiner Seele

Wenn hfkernel luft, fixiere ihn mit Leim und berhre das laufende
System nie mehr. Das heit, stelle die fr Dich richtigen Optionen fest
in /etc/hf.conf ein und sichere dieses, damit es beim nchsten Update 
nicht verlorengeht. (Darin wirst Du spter nach erfolgreicher 
Kalibrierung auch Deine wertvollen goldenen 3 Korrekturfaktoren
speichern!) So kannst Du hfkernel und hfterm ber das Skript hf, das
/etc/hf.conf einliest, leicht starten.

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.


4.4.6. 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 (OSS))
    (Fr ALSA: -a plughw:0,0)
 -c Pfad zur Software-Schnittstelle (Default: /var/run/hfapp)
 -f Im Standby-Modus keine Frequenznachstellung (frequency tracking)
 -h Halbduplex erzwingen (nur fr OSS)
 -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. (Nur fr OSS)
 -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:
============================

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

Es gibt 3 Ebenen fr Fehler- und Verlaufsmeldungen:
1. Das xterm-Fenster oder die Konsole im Hintergrund: 
   Ausgabe von hfkernel, die unterste Soundtreiber- und Protokoll-Ebene.
2. Das Monidiemp und isapnp,
(siehe manpages), bei PCI-Karten lspci, und die Dokumentation in	
/usr/src/linux/Documentation/sound fr Deine Soundkarte.  

So weit ich wei, wird OSS immer noch weiterentwickelt, die
neueren OSS-Treiber kosten etwas (www.opensound.com). 

ALSA: 

Neu entwickelt, flexibler, komplexer und fortschrittlicher, (und
deswegen  auch manchmal vielleicht noch fehleranflliger und langsamer)
ist 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 und wird fleiig bei SuSE
weiterentwickelt und von vielen anderen Linux-Distributionen bernommen.
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 (`Nachahmung') enthalten
wrde, wre das schlimm, dann wrden viele guten alten Programme (fr
Funk, Musik, Spiele...) nicht mehr mit dem neuen Linux laufen. :-( 

(Du kannst die verschiedenen Programmcodes in hfkernel/l1/oss.c und
hfkernel/l1/alsa.c vergleichen!)

Nun wird es ein bichen kompliziert: ALSA hat 2 alternative 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 (dsp) anspricht, so wie es alle
OSS-Programme tun. 

Die andere (alternative) ist in einer zustzlichen library, die durch
das Skript /usr/bin/aoss (in dem steht: env
LD_PRELOAD=/usr/lib/libaoss.so $*)  an das Programm gelinkt wird:  
# aoss <Programm>.


4.4.3 hfkernel, OSS und ALSA:

hfkernel's Soundschnittstelle wurde, wie die der meisten
Amateurfunkprogramme, fr die  OSS-API geschrieben, luft aber auch mit 
den 2 OSS-Emulationen der ALSA-Treiber, die auch stndig verbessert 
werden. Ich habe noch nicht herausgefunden, ob das Prefix aoss einen
Vorteil bringt (Es kann in /etc/hf.conf eingestellt werden.)

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 der OSS-Emulation von
ALSA, manchmal gar nicht! Es wird intensiv an Verbesserungen gearbeitet,
hole Dir die neuesten Version von ALSA und hf und sei geduldig!!! ( be
patient with your patient because your patient is a patient  patient.)

Ich habe zustzlich einen experimentellen Code in der OSS-API geschrieben, 
der nicht mmap(), sondern normale read() und write()-Zugriffe verwendet.
Dazu ist die Option "-n" (no mmap) vorbereitet. 

Fr Version hf-7.1.1 habe ich dazu noch den Voll-Duplex-Code fr die 
ALSA-API gemacht. Um ihn zu testen, mut Du hfkernel entsprechend der 
ALSA-Konvention mit der Option
-a plughw:0,0 fr die erste, oder 
-a plughw:1,0 fr die zweite Soundkarte aufrufen, usw.
Auch das feste Einstellen dieser Option ist in /etc/hf.conf vorbereitet.

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


4.4.4 Stufenplan bei Soundtreiber-Problemen mit hfkernel

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 zu testen:

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

Sonst: 

Fehler mit 'MMAP':
Teste die read()/write()- verwendende Version ohne mmap() mit:
# hfkernel -n

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

Wenn bei Halbduplexbetrieb die Zahlen bei '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 der RDTSC-Instruktion)
zugefgt werden:
# hfkernel -R 
oder 
# hfkernel -h -R

Immer noch nichts? 

Dann versuche fr all diese Optionen zustzlich dem aoss-Prefix
(bis auf -a plughw:0,0, da bringt es ja nichts, ist ja kein OSS mehr):
# aoss hfkernel 
# aoss hfkernel -n
# aoss hfkernel -h
# aoss hfkernel -R
# aoss hfkernel -h -R

Immer noch nichts? 

Versuche eine andere Soundkarte.
Versuche die neueste ALSA-Version, es wird besser.
Versuche das kommerzielle OSS, wenn Du es hast (vielleicht eine 'freie' 
Version aus einer alten Distribution, wie ich, siehe oben!)

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

Achtung: Vor V. 0.6, bei manchen Kombinationen von Soundkarte und
-treiber hngte sich hfkernel mit einer Endlosschleife von  "...
fragments passed since last wakeup" oder "OSS driver lost interrupt". 
Leider gab es manchmal auch Abstrze und einmal einen Plattencrash,
sorry! In V.0.6 habe ich eine Sicherungsfunktion eingebaut, die dies
verhindern sollte.


4.4.5. Sichern der Konfiguration und Deiner Seele

Wenn hfkernel luft, fixiere ihn mit Leim und berhre das laufende
System nie mehr. Das heit, stelle die fr Dich richtigen Optionen fest
in /etc/hf.conf ein und sichere dieses, damit es beim nchsten Update 
nicht verlorengeht. (Darin wirst Du spter nach erfolgreicher 
Kalibrierung auch Deine wertvollen goldenen 3 Korrekturfaktoren
speichern!) So kannst Du hfkernel und hfterm ber das Skript hf, das
/etc/hf.conf einliest, leicht starten.

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.


4.4.6. 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 (OSS))
    (Fr ALSA: -a plughw:0,0)
 -c Pfad zur Software-Schnittstelle (Default: /var/run/hfapp)
 -f Im Standby-Modus keine Frequenznachstellung (frequency tracking)
 -h Halbduplex erzwingen (nur fr OSS)
 -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. (Nur fr OSS)
 -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:
============================

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

Es gibt 3 Ebenen fr Fehler- und Verlaufsmeldungen:
1. Das xterm-Fenster oder die Konsole im Hintergrund: 
   Ausgabe von hfkernel, die unterste Soundtreiber- und Protokoll-Ebene.
2. Das Monidiemp und isapnp,
(siehe manpages), bei PCI-Karten lspci, und die Dokumentation in	
/usr/src/linux/Documentation/sound fr Deine Soundkarte.  

So weit ich wei, wird OSS immer noch weiterentwickelt, die
neueren OSS-Treiber kosten etwas (www.opensound.com). 

ALSA: 

Neu entwickelt, flexibler, komplexer und fortschrittlicher, (und
deswegen  auch manchmal vielleicht noch fehleranflliger und langsamer)
ist 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 und wird fleiig bei SuSE
weiterentwickelt und von vielen anderen Linux-Distributionen bernommen.
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 (`Nachahmung') enthalten
wrde, wre das schlimm, dann wrden viele guten alten Programme (fr
Funk, Musik, Spiele...) nicht mehr mit dem neuen Linux laufen. :-( 

(Du kannst die verschiedenen Programmcodes in hfkernel/l1/oss.c und
hfkernel/l1/alsa.c vergleichen!)

Nun wird es ein bichen kompliziert: ALSA hat 2 alternative 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 (dsp) anspricht, so wie es alle
OSS-Programme tun. 

Die andere (alternative) ist in einer zustzlichen library, die durch
das Skript /usr/bin/aoss (in dem steht: env
LD_PRELOAD=/usr/lib/libaoss.so $*)  an das Programm gelinkt wird:  
# aoss <Programm>.


4.4.3 hfkernel, OSS und ALSA:

hfkernel's Soundschnittstelle wurde, wie die der meisten
Amateurfunkprogramme, fr die  OSS-API geschrieben, luft aber auch mit 
den 2 OSS-Emulationen der ALSA-Treiber, die auch stndig verbessert 
werden. Ich habe noch nicht herausgefunden, ob das Prefix aoss einen
Vorteil bringt (Es kann in /etc/hf.conf eingestellt werden.)

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 der OSS-Emulation von
ALSA, manchmal gar nicht! Es wird intensiv an Verbesserungen gearbeitet,
hole Dir die neuesten Version von ALSA und hf und sei geduldig!!! ( be
patient with your patient because your patient is a patient  patient.)

Ich habe zustzlich einen experimentellen Code in der OSS-API geschrieben, 
der nicht mmap(), sondern normale read() und write()-Zugriffe verwendet.
Dazu ist die Option "-n" (no mmap) vorbereitet. 

Fr Version hf-7.1.1 habe ich dazu noch den Voll-Duplex-Code fr die 
ALSA-API gemacht. Um ihn zu testen, mut Du hfkernel entsprechend der 
ALSA-Konvention mit der Option
-a plughw:0,0 fr die erste, oder 
-a plughw:1,0 fr die zweite Soundkarte aufrufen, usw.
Auch das feste Einstellen dieser Option ist in /etc/hf.conf vorbereitet.

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


4.4.4 Stufenplan bei Soundtreiber-Problemen mit hfkernel

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 zu testen:

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

Sonst: 

Fehler mit 'MMAP':
Teste die read()/write()- verwendende Version ohne mmap() mit:
# hfkernel -n

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

Wenn bei Halbduplexbetrieb die Zahlen bei '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 der RDTSC-Instruktion)
zugefgt werden:
# hfkernel -R 
oder 
# hfkernel -h -R

Immer noch nichts? 

Dann versuche fr all diese Optionen zustzlich dem aoss-Prefix
(bis auf -a plughw:0,0, da bringt es ja nichts, ist ja kein OSS mehr):
# aoss hfkernel 
# aoss hfkernel -n
# aoss hfkernel -h
# aoss hfkernel -R
# aoss hfkernel -h -R

Immer noch nichts? 

Versuche eine andere Soundkarte.
Versuche die neueste ALSA-Version, es wird besser.
Versuche das kommerzielle OSS, wenn Du es hast (vielleicht eine 'freie' 
Version aus einer alten Distribution, wie ich, siehe oben!)

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

Achtung: Vor V. 0.6, bei manchen Kombinationen von Soundkarte und
-treiber hngte sich hfkernel mit einer Endlosschleife von  "...
fragments passed since last wakeup" oder "OSS driver lost interrupt". 
Leider gab es manchmal auch Abstrze und einmal einen Plattencrash,
sorry! In V.0.6 habe ich eine Sicherungsfunktion eingebaut, die dies
verhindern sollte.


4.4.5. Sichern der Konfiguration und Deiner Seele

Wenn hfkernel luft, fixiere ihn mit Leim und berhre das laufende
System nie mehr. Das heit, stelle die fr Dich richtigen Optionen fest
in /etc/hf.conf ein und sichere dieses, damit es beim nchsten Update 
nicht verlorengeht. (Darin wirst Du spter nach erfolgreicher 
Kalibrierung auch Deine wertvollen goldenen 3 Korrekturfaktoren
speichern!) So kannst Du hfkernel und hfterm ber das Skript hf, das
/etc/hf.conf einliest, leicht starten.

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.


4.4.6. 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 (OSS))
    (Fr ALSA: -a plughw:0,0)
 -c Pfad zur Software-Schnittstelle (Default: /var/run/hfapp)
 -f Im Standby-Modus keine Frequenznachstellung (frequency tracking)
 -h Halbduplex erzwingen (nur fr OSS)
 -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. (Nur fr OSS)
 -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:
============================

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

Es gibt 3 Ebenen fr Fehler- und Verlaufsmeldungen:
1. Das xterm-Fenster oder die Konsole im Hintergrund: 
   Ausgabe von hfkernel, die unterste Soundtreiber- und Protokoll-Ebene.
2. Das Monidiemp und isapnp,
(siehe manpages), bei PCI-Karten lspci, und die Dokumentation in	
/usr/src/linux/Documentation/sound fr Deine Soundkarte.  

So weit ich wei, wird OSS immer noch weiterentwickelt, die
neueren OSS-Treiber kosten etwas (www.opensound.com). 

ALSA: 

Neu entwickelt, flexibler, komplexer und fortschrittlicher, (und
deswegen  auch manchmal vielleicht noch fehleranflliger und langsamer)
ist 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 und wird fleiig bei SuSE
weiterentwickelt und von vielen anderen Linux-Distributionen bernommen.
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 (`Nachahmung') enthalten
wrde, wre das schlimm, dann wrden viele guten alten Programme (fr
Funk, Musik, Spiele...) nicht mehr mit dem neuen Linux laufen. :-( 

(Du kannst die verschiedenen Programmcodes in hfkernel/l1/oss.c und
hfkernel/l1/alsa.c vergleichen!)

Nun wird es ein bichen kompliziert: ALSA hat 2 alternative 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 (dsp) anspricht, so wie es alle
OSS-Programme tun. 

Die andere (alternative) ist in einer zustzlichen library, die durch
das Skript /usr/bin/aoss (in dem steht: env
LD_PRELOAD=/usr/lib/libaoss.so $*)  an das Programm gelinkt wird:  
# aoss <Programm>.


4.4.3 hfkernel, OSS und ALSA:

hfkernel's Soundschnittstelle wurde, wie die der meisten
Amateurfunkprogramme, fr die  OSS-API geschrieben, luft aber auch mit 
den 2 OSS-Emulationen der ALSA-Treiber, die auch stndig verbessert 
werden. Ich habe noch nicht herausgefunden, ob das Prefix aoss einen
Vorteil bringt (Es kann in /etc/hf.conf eingestellt werden.)

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 der OSS-Emulation von
ALSA, manchmal gar nicht! Es wird intensiv an Verbesserungen gearbeitet,
hole Dir die neuesten Version von ALSA und hf und sei geduldig!!! ( be
patient with your patient because your patient is a patient  patient.)

Ich habe zustzlich einen experimentellen Code in der OSS-API geschrieben, 
der nicht mmap(), sondern normale read() und write()-Zugriffe verwendet.
Dazu ist die Option "-n" (no mmap) vorbereitet. 

Fr Version hf-7.1.1 habe ich dazu noch den Voll-Duplex-Code fr die 
ALSA-API gemacht. Um ihn zu testen, mut Du hfkernel entsprechend der 
ALSA-Konvention mit der Option
-a plughw:0,0 fr die erste, oder 
-a plughw:1,0 fr die zweite Soundkarte aufrufen, usw.
Auch das feste Einstellen dieser Option ist in /etc/hf.conf vorbereitet.

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


4.4.4 Stufenplan bei Soundtreiber-Problemen mit hfkernel

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 zu testen:

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

Sonst: 

Fehler mit 'MMAP':
Teste die read()/write()- verwendende Version ohne mmap() mit:
# hfkernel -n

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

Wenn bei Halbduplexbetrieb die Zahlen bei '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 der RDTSC-Instruktion)
zugefgt werden:
# hfkernel -R 
oder 
# hfkernel -h -R

Immer noch nichts? 

Dann versuche fr all diese Optionen zustzlich dem aoss-Prefix
(bis auf -a plughw:0,0, da bringt es ja nichts, ist ja kein OSS mehr):
# aoss hfkernel 
# aoss hfkernel -n
# aoss hfkernel -h
# aoss hfkernel -R
# aoss hfkernel -h -R

Immer noch nichts? 

Versuche eine andere Soundkarte.
Versuche die neueste ALSA-Version, es wird besser.
Versuche das kommerzielle OSS, wenn Du es hast (vielleicht eine 'freie' 
Version aus einer alten Distribution, wie ich, siehe oben!)

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

Achtung: Vor V. 0.6, bei manchen Kombinationen von Soundkarte und
-treiber hngte sich hfkernel mit einer Endlosschleife von  "...
fragments passed since last wakeup" oder "OSS driver lost interrupt". 
Leider gab es manchmal auch Abstrze und einmal einen Plattencrash,
sorry! In V.0.6 habe ich eine Sicherungsfunktion eingebaut, die dies
verhindern sollte.


4.4.5. Sichern der Konfiguration und Deiner Seele

Wenn hfkernel luft, fixiere ihn mit Leim und berhre das laufende
System nie mehr. Das heit, stelle die fr Dich richtigen Optionen fest
in /etc/hf.conf ein und sichere dieses, damit es beim nchsten Update 
nicht verlorengeht. (Darin wirst Du spter nach erfolgreicher 
Kalibrierung auch Deine wertvollen goldenen 3 Korrekturfaktoren
speichern!) So kannst Du hfkernel und hfterm ber das Skript hf, das
/etc/hf.conf einliest, leicht starten.

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.


4.4.6. 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 (OSS))
    (Fr ALSA: -a plughw:0,0)
 -c Pfad zur Software-Schnittstelle (Default: /var/run/hfapp)
 -f Im Standby-Modus keine Frequenznachstellung (frequency tracking)
 -h Halbduplex erzwingen (nur fr OSS)
 -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. (Nur fr OSS)
 -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:
============================

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

Es gibt 3 Ebenen fr Fehler- und Verlaufsmeldungen:
1. Das xterm-Fenster oder die Konsole im Hintergrund: 
   Ausgabe von hfkernel, die unterste Soundtreiber- und Protokoll-Ebene.
2. Das Monidiemp und isapnp,
(siehe manpages), bei PCI-Karten lspci, und die Dokumentation in	
/usr/src/linux/Documentation/sound fr Deine Soundkarte.  

So weit ich wei, wird OSS immer noch weiterentwickelt, die
neueren OSS-Treiber kosten etwas (www.opensound.com). 

ALSA: 

Neu entwickelt, flexibler, komplexer und fortschrittlicher, (und
deswegen  auch manchmal vielleicht noch fehleranflliger und langsamer)
ist 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 und wird fleiig bei SuSE
weiterentwickelt und von vielen anderen Linux-Distributionen bernommen.
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 (`Nachahmung') enthalten
wrde, wre das schlimm, dann wrden viele guten alten Programme (fr
Funk, Musik, Spiele...) nicht mehr mit dem neuen Linux laufen. :-( 

(Du kannst die verschiedenen Programmcodes in hfkernel/l1/oss.c und
hfkernel/l1/alsa.c vergleichen!)

Nun wird es ein bichen kompliziert: ALSA hat 2 alternative 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 (dsp) anspricht, so wie es alle
OSS-Programme tun. 

Die andere (alternative) ist in einer zustzlichen library, die durch
das Skript /usr/bin/aoss (in dem steht: env
LD_PRELOAD=/usr/lib/libaoss.so $*)  an das Programm gelinkt wird:  
# aoss <Programm>.


4.4.3 hfkernel, OSS und ALSA:

hfkernel's Soundschnittstelle wurde, wie die der meisten
Amateurfunkprogramme, fr die  OSS-API geschrieben, luft aber auch mit 
den 2 OSS-Emulationen der ALSA-Treiber, die auch stndig verbessert 
werden. Ich habe noch nicht herausgefunden, ob das Prefix aoss einen
Vorteil bringt (Es kann in /etc/hf.conf eingestellt werden.)

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 der OSS-Emulation von
ALSA, manchmal gar nicht! Es wird intensiv an Verbesserungen gearbeitet,
hole Dir die neuesten Version von ALSA und hf und sei geduldig!!! ( be
patient with your patient because your patient is a patient  patient.)

Ich habe zustzlich einen experimentellen Code in der OSS-API geschrieben, 
der nicht mmap(), sondern normale read() und write()-Zugriffe verwendet.
Dazu ist die Option "-n" (no mmap) vorbereitet. 

Fr Version hf-7.1.1 habe ich dazu noch den Voll-Duplex-Code fr die 
ALSA-API gemacht. Um ihn zu testen, mut Du hfkernel entsprechend der 
ALSA-Konvention mit der Option
-a plughw:0,0 fr die erste, oder 
-a plughw:1,0 fr die zweite Soundkarte aufrufen, usw.
Auch das feste Einstellen dieser Option ist in /etc/hf.conf vorbereitet.

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


4.4.4 Stufenplan bei Soundtreiber-Problemen mit hfkernel

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 zu testen:

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

Sonst: 

Fehler mit 'MMAP':
Teste die read()/write()- verwendende Version ohne mmap() mit:
# hfkernel -n

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

Wenn bei Halbduplexbetrieb die Zahlen bei '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 der RDTSC-Instruktion)
zugefgt werden:
# hfkernel -R 
oder 
# hfkernel -h -R

Immer noch nichts? 

Dann versuche fr all diese Optionen zustzlich dem aoss-Prefix
(bis auf -a plughw:0,0, da bringt es ja nichts, ist ja kein OSS mehr):
# aoss hfkernel 
# aoss hfkernel -n
# aoss hfkernel -h
# aoss hfkernel -R
# aoss hfkernel -h -R

Immer noch nichts? 

Versuche eine andere Soundkarte.
Versuche die neueste ALSA-Version, es wird besser.
Versuche das kommerzielle OSS, wenn Du es hast (vielleicht eine 'freie' 
Version aus einer alten Distribution, wie ich, siehe oben!)

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

Achtung: Vor V. 0.6, bei manchen Kombinationen von Soundkarte und
-treiber hngte sich hfkernel mit einer Endlosschleife von  "...
fragments passed since last wakeup" oder "OSS driver lost interrupt". 
Leider gab es manchmal auch Abstrze und einmal einen Plattencrash,
sorry! In V.0.6 habe ich eine Sicherungsfunktion eingebaut, die dies
verhindern sollte.


4.4.5. Sichern der Konfiguration und Deiner Seele

Wenn hfkernel luft, fixiere ihn mit Leim und berhre das laufende
System nie mehr. Das heit, stelle die fr Dich richtigen Optionen fest
in /etc/hf.conf ein und sichere dieses, damit es beim nchsten Update 
nicht verlorengeht. (Darin wirst Du spter nach erfolgreicher 
Kalibrierung auch Deine wertvollen goldenen 3 Korrekturfaktoren
speichern!) So kannst Du hfkernel und hfterm ber das Skript hf, das
/etc/hf.conf einliest, leicht starten.

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.


4.4.6. 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 (OSS))
    (Fr ALSA: -a plughw:0,0)
 -c Pfad zur Software-Schnittstelle (Default: /var/run/hfapp)
 -f Im Standby-Modus keine Frequenznachstellung (frequency tracking)
 -h Halbduplex erzwingen (nur fr OSS)
 -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. (Nur fr OSS)
 -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:
============================

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

Es gibt 3 Ebenen fr Fehler- und Verlaufsmeldungen:
1. Das xterm-Fenster oder die Konsole im Hintergrund: 
   Ausgabe von hfkernel, die unterste Soundtreiber- und Protokoll-Ebene.
2. Das Monidiemp und isapnp,
(siehe manpages), bei PCI-Karten lspci, und die Dokumentation in	
/usr/src/linux/Documentation/sound fr Deine Soundkarte.  

So weit ich wei, wird OSS immer noch weiterentwickelt, die
neueren OSS-Treiber kosten etwas (www.opensound.com). 

ALSA: 

Neu entwickelt, flexibler, komplexer und fortschrittlicher, (und
deswegen  auch manchmal vielleicht noch fehleranflliger und langsamer)
ist 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 und wird fleiig bei SuSE
weiterentwickelt und von vielen anderen Linux-Distributionen bernommen.
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 (`Nachahmung') enthalten
wrde, wre das schlimm, dann wrden viele guten alten Programme (fr
Funk, Musik, Spiele...) nicht mehr mit dem neuen Linux laufen. :-( 

(Du kannst die verschiedenen Programmcodes in hfkernel/l1/oss.c und
hfkernel/l1/alsa.c vergleichen!)

Nun wird es ein bichen kompliziert: ALSA hat 2 alternative 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 (dsp) anspricht, so wie es alle
OSS-Programme tun. 

Die andere (alternative) ist in einer zustzlichen library, die durch
das Skript /usr/bin/aoss (in dem steht: env
LD_PRELOAD=/usr/lib/libaoss.so $*)  an das Programm gelinkt wird:  
# aoss <Programm>.


4.4.3 hfkernel, OSS und ALSA:

hfkernel's Soundschnittstelle wurde, wie die der meisten
Amateurfunkprogramme, fr die  OSS-API geschrieben, luft aber auch mit 
den 2 OSS-Emulationen der ALSA-Treiber, die auch stndig verbessert 
werden. Ich habe noch nicht herausgefunden, ob das Prefix aoss einen
Vorteil bringt (Es kann in /etc/hf.conf eingestellt werden.)

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 der OSS-Emulation von
ALSA, manchmal gar nicht! Es wird intensiv an Verbesserungen gearbeitet,
hole Dir die neuesten Version von ALSA und hf und sei geduldig!!! ( be
patient with your patient because your patient is a patient  patient.)

Ich habe zustzlich einen experimentellen Code in der OSS-API geschrieben, 
der nicht mmap(), sondern normale read() und write()-Zugriffe verwendet.
Dazu ist die Option "-n" (no mmap) vorbereitet. 

Fr Version hf-7.1.1 habe ich dazu noch den Voll-Duplex-Code fr die 
ALSA-API gemacht. Um ihn zu testen, mut Du hfkernel entsprechend der 
ALSA-Konvention mit der Option
-a plughw:0,0 fr die erste, oder 
-a plughw:1,0 fr die zweite Soundkarte aufrufen, usw.
Auch das feste Einstellen dieser Option ist in /etc/hf.conf vorbereitet.

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


4.4.4 Stufenplan bei Soundtreiber-Problemen mit hfkernel

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 zu testen:

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

Sonst: 

Fehler mit 'MMAP':
Teste die read()/write()- verwendende Version ohne mmap() mit:
# hfkernel -n

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

Wenn bei Halbduplexbetrieb die Zahlen bei '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 der RDTSC-Instruktion)
zugefgt werden:
# hfkernel -R 
oder 
# hfkernel -h -R

Immer noch nichts? 

Dann versuche fr all diese Optionen zustzlich dem aoss-Prefix
(bis auf -a plughw:0,0, da bringt es ja nichts, ist ja kein OSS mehr):
# aoss hfkernel 
# aoss hfkernel -n
# aoss hfkernel -h
# aoss hfkernel -R
# aoss hfkernel -h -R

Immer noch nichts? 

Versuche eine andere Soundkarte.
Versuche die neueste ALSA-Version, es wird besser.
Versuche das kommerzielle OSS, wenn Du es hast (vielleicht eine 'freie' 
Version aus einer alten Distribution, wie ich, siehe oben!)

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

Achtung: Vor V. 0.6, bei manchen Kombinationen von Soundkarte und
-treiber hngte sich hfkernel mit einer Endlosschleife von  "...
fragments passed since last wakeup" oder "OSS driver lost interrupt". 
Leider gab es manchmal auch Abstrze und einmal einen Plattencrash,
sorry! In V.0.6 habe ich eine Sicherungsfunktion eingebaut, die dies
verhindern sollte.


4.4.5. Sichern der Konfiguration und Deiner Seele

Wenn hfkernel luft, fixiere ihn mit Leim und berhre das laufende
System nie mehr. Das heit, stelle die fr Dich richtigen Optionen fest
in /etc/hf.conf ein und sichere dieses, damit es beim nchsten Update 
nicht verlorengeht. (Darin wirst Du spter nach erfolgreicher 
Kalibrierung auch Deine wertvollen goldenen 3 Korrekturfaktoren
speichern!) So kannst Du hfkernel und hfterm ber das Skript hf, das
/etc/hf.conf einliest, leicht starten.

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.


4.4.6. 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 (OSS))
    (Fr ALSA: -a plughw:0,0)
 -c Pfad zur Software-Schnittstelle (Default: /var/run/hfapp)
 -f Im Standby-Modus keine Frequenznachstellung (frequency tracking)
 -h Halbduplex erzwingen (nur fr OSS)
 -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. (Nur fr OSS)
 -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:
============================

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

Es gibt 3 Ebenen fr Fehler- und Verlaufsmeldungen:
1. Das xterm-Fenster oder die Konsole im Hintergrund: 
   Ausgabe von hfkernel, die unterste Soundtreiber- und Protokoll-Ebene.
2. Das Monidiemp und isapnp,
(siehe manpages), bei PCI-Karten lspci, und die Dokumentation in	
/usr/src/linux/Documentation/sound fr Deine Soundkarte.  

So weit ich wei, wird OSS immer noch weiterentwickelt, die
neueren OSS-Treiber kosten etwas (www.opensound.com). 

ALSA: 

Neu entwickelt, flexibler, komplexer und fortschrittlicher, (und
deswegen  auch manchmal vielleicht noch fehleranflliger und langsamer)
ist 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 und wird fleiig bei SuSE
weiterentwickelt und von vielen anderen Linux-Distributionen bernommen.
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 (`Nachahmung') enthalten
wrde, wre das schlimm, dann wrden viele guten alten Programme (fr
Funk, Musik, Spiele...) nicht mehr mit dem neuen Linux laufen. :-( 

(Du kannst die verschiedenen Programmcodes in hfkernel/l1/oss.c und
hfkernel/l1/alsa.c vergleichen!)

Nun wird es ein bichen kompliziert: ALSA hat 2 alternative 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 (dsp) anspricht, so wie es alle
OSS-Programme tun. 

Die andere (alternative) ist in einer zustzlichen library, die durch
das Skript /usr/bin/aoss (in dem steht: env
LD_PRELOAD=/usr/lib/libaoss.so $*)  an das Programm gelinkt wird:  
# aoss <Programm>.


4.4.3 hfkernel, OSS und ALSA:

hfkernel's Soundschnittstelle wurde, wie die der meisten
Amateurfunkprogramme, fr die  OSS-API geschrieben, luft aber auch mit 
den 2 OSS-Emulationen der ALSA-Treiber, die auch stndig verbessert 
werden. Ich habe noch nicht herausgefunden, ob das Prefix aoss einen
Vorteil bringt (Es kann in /etc/hf.conf eingestellt werden.)

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 der OSS-Emulation von
ALSA, manchmal gar nicht! Es wird intensiv an Verbesserungen gearbeitet,
hole Dir die neuesten Version von ALSA und hf und sei geduldig!!! ( be
patient with your patient because your patient is a patient  patient.)

Ich habe zustzlich einen experimentellen Code in der OSS-API geschrieben, 
der nicht mmap(), sondern normale read() und write()-Zugriffe verwendet.
Dazu ist die Option "-n" (no mmap) vorbereitet. 

Fr Version hf-7.1.1 habe ich dazu noch den Voll-Duplex-Code fr die 
ALSA-API gemacht. Um ihn zu testen, mut Du hfkernel entsprechend der 
ALSA-Konvention mit der Option
-a plughw:0,0 fr die erste, oder 
-a plughw:1,0 fr die zweite Soundkarte aufrufen, usw.
Auch das feste Einstellen dieser Option ist in /etc/hf.conf vorbereitet.

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


4.4.4 Stufenplan bei Soundtreiber-Problemen mit hfkernel

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 zu testen:

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

Sonst: 

Fehler mit 'MMAP':
Teste die read()/write()- verwendende Version ohne mmap() mit:
# hfkernel -n

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

Wenn bei Halbduplexbetrieb die Zahlen bei '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 der RDTSC-Instruktion)
zugefgt werden:
# hfkernel -R 
oder 
# hfkernel -h -R

Immer noch nichts? 

Dann versuche fr all diese Optionen zustzlich dem aoss-Prefix
(bis auf -a plughw:0,0, da bringt es ja nichts, ist ja kein OSS mehr):
# aoss hfkernel 
# aoss hfkernel -n
# aoss hfkernel -h
# aoss hfkernel -R
# aoss hfkernel -h -R

Immer noch nichts? 

Versuche eine andere Soundkarte.
