Linux-Tipps
Die Anleitung zur Installation des USB-ISDN-Adapters, die den Hauptteil dieser Tipp-Seite ausmacht, ist schon recht alt und bei der heutigen Verbreitung von DSL nicht mehr so relevant.
Einen kleinen neuen (Anfänger-/Umsteiger-)Tipp gebe ich anlässlich des Jubiläums-Umbaus 2008: Man sollte, um flüssiger zu arbeiten, bzw. überhaupt vernünftig mit dem vielfenstrigen GIMP arbeiten zu können, in der verwendeten Fenster-Verwaltung (KDE, Gnome oder andere) die Einstellung für Fenster-Aktivierung auf focus-follows-mouse stellen (ein aktuelles GIMP, ab 2.8, hat nicht mehr unbedingt viele Fenster - aber ich bevorzuge den „Normales-Fenster-Modus“ für Werkzeuge usw.). Mit vielen Fenstern ist es generell hilfreich, mehrere Arbeitsflächen zu haben, wie es bei GNU/Linux-Oberflächen seit jeher der Fall ist und bei MacOSX im Jahr 2007 (in Version 10.5) mit „Spaces“ möglich wurde.
- Bessere Tastaturbelegung mit deutschen Umlauten
- Teledat USB 2 a/b mit Capi2.0 unter Debian GNU/Linux installieren
Bessere Tastaturbelegung mit deutschen Umlauten
Zumindest für Leute, die gelegentlich ein Programm in C oder Java schreiben, wird die deutsche Tastaturbelegung schnell zur Qual: eckige und geschweifte Klammern nur mit AltGr-Taste erreichbar, für das Semikolon an jedem Zeilenende die Umschalttaste, für jedes undo (Strg+Z) einen Fingerspagat, Slash (/) nicht so bequem erreichbar... Das lässt sich einfach vermeiden, indem man das amerikanische Tastaturlayout wählt. Jetzt fehlen nur die Umlaute, schließlich kommt es nicht so gut, in E-Mails immer ae, oe, ue... zu schreiben. In (Debian) GNU/Linux lässt sich das einfach erreichen:
xmodmap -e "keycode 94 = dead_diaeresis"
Damit wird (bei mir zumindest) die nicht benutzte Kleiner-/Größer-Taste (bei deutschen und britischen Tastaturen zwischen linker Umschalttaste und Y bzw. Z) zu einer Art Accent-Taste (wie die, mit denen man bei deutscher Tastaturbelegung normalerweise "à", "è" usw. erzeugen kann), so dass Folgendes passiert:
<dead_diaeresis> <a> = ä <dead_diaeresis> <o> = ö <dead_diaeresis> <u> = ü <dead_diaeresis> <A> = Ä ...
Ein Compose-Key eröffnet weitere Möglichkeiten, dieser kann z.B. mit
xmodmap -e "keycode 117 = Multi_key"
auf die "anderes Betriebssystem"-Menue-Taste gelegt werden.
Man kann natürlich auch gut "AltGr" dafür nehmen, das braucht man jetzt ja nicht mehr.
Die Tastaturcodes der Tasten können leicht mit xev ermittelt werden.
Mehr Informationen zum Compose-Key gibt es im Belgian-HOWTO
Die Kombinationsmöglichkeiten können in der Datei /usr/X11R6/lib/X11/locale/iso8859-1/Compose nachgesehen und verändert werden. Beispiele:
<Multi_key> <L> <-> = £ <Multi_key> <c> <o> = © <Multi_key> <s> <s> = ß ...
Eine weitere Verbesserung ist es (zumindest bei meiner kleinen Strg-Taste), einfach die Umschaltfeststelltaste auch zur Strg-Taste zu machen.
Das funktioniert wie oben beschrieben, also mit xmodmap -e "keycode 66 = Control_L".
Oder mit folgendem Eintrag im Keyboard-Abschnitt der /etc/X11/XF86Config-4:
Option "XkbOptions" "ctrl:nocaps"
Wenn man sich nun mit xmodmap -e... eine individuelle Tastaturbelegung erstellt hat, kann man sie auch mit xmodmap -pke [Datei] in einer Datei speichern und mit xmodmap [Datei] wieder herstellen. Normalerweise wird ~/.Xmodmap automatisch beim Systemstart geladen.
Diese Methode funktioniert auch, wenn man die XF86Config-4 des Systems nicht verändern kann oder möchte.
Meine Konfiguration: früher, aktuell (nur noch einige Tasten verändert).
Um die Befehle zum Verändern der Tastaturbelegung nicht jedes Mal per Hand ausführen zu müssen, sollte man sie in die Autostart-Datei des verwendeten Window- bzw. Login-Managers schreiben. Beim WindowManager WMaker ist das z.B. /GNUstep/Library/WindowMaker/autostart, beim Login-Manager XDM müsste /.xsession unabhängig vom verwendeten WindowManager funktionieren.
Umlaute für externe Android-Tastatur
Android ist ein Linux-System und insofern sollte nicht überraschen, dass es (ab Version 3) auch die oben beschriebene Umlaut-Taste dead_diaeresis unterstützt. Bei Android heißt sie Umlaut accent.
Konfigurationsdateien:
/system/usr/keylayout/Generic.kl /system/usr/keychars/Generic.kcm
Offensichtlich benötigt man Root-Zugriff auf sein Gerät, um die obigen Dateien zu verändern. Außerdem muss die System-Partition schreibbar sein, was bei meinem HTC-Gerät standardmäßig nicht der Fall ist, sich aber leicht ändern lässt:
# mount -o remount,rw /system
Eigentlich soll man die Generic-Dateien nicht verändern, sondern Dateien nach dem Muster Vendor_XXXX_Product_XXXX.kl erstellen, aber meine Vendor_05ac_Product_023a.kl wurde nie geladen, obwohl das die richtige ID sein sollte... egal. Die einzige Gefahr: hat man eine inkorrekte Generic-Datei, funktioniert die Hardware-Tastatur gar nicht mehr! Man sollte also immer die Original-Dateien behalten und sie gegebenenfalls z.B. mit Hilfe des Hacker's Keyboard wieder herstellen können. Diese Software-Tastatur ist sowieso empfehlenswert, denn mit dem standardmäßig aktivierten Touch Input funktioniert das Zusammensetzen von Umlauten bei meinem Android-Telefon nicht!
Da ich eine Apple-Bluetooth-Tastatur besitze, habe ich als Layout-Basis die mit meinem Telefon gelieferte Datei Vendor_05ac_Product_0239.kl verwendet. Meine zwei Änderungen: „key 41“ ist bei mir die Umlaut-Taste und bekam entsprechend den „Dummy“-Bezeichner MEDIA_PREVIOUS, statt „GRAVE“.
Neu eingefügt habe ich eine Zeile „key 86 GRAVE“, vor der Zeile „key 87 F11“.
Meine KCM-Datei enthält im Vergleich zur alten Generic-Datei nur einen neuen Block, eingefügt hinter „key APOSTROPHE“:
# 'COMBINING DIAERESIS' und scharfes S auf die Taste zwischen Shift_L und Y (bzw. Z): key MEDIA_PREVIOUS { label, number: '<' base: '\u0308' shift: '\u00df' ctrl, alt, meta: '\u007c' }
Hinweis: Schon völlig ohne Änderungen am System und ohne die spezielle Umlaut-Taste können die Wörter „grün“, „Straße“ und „Café“ geschrieben werden: dazu dienen die Alt-Belegungen von U, S und E.
Diskussionen mit hilfreichen Informationen zur Android-Tastatur-Belegung fand ich bei Android-Hilfe.de und bei xdadevelopers.
Teledat USB 2 a/b mit Capi2.0 installieren
Zunächst eine Warnung: diese Anleitung ist im Wesentlichen ein Gedächnissprotokoll. Sie soll es dem Leser leichter machen, als ich es hatte, bei der Installation von Capi 2 und USB-ISDN-Controllern von AVM unter Debian GNU/Linux. Ich habe es nach mehrtägigem Herumprobieren und Lektüre unterschiedlicher, teils veralteter Anleitungen (ohne die ich es allerdings natärlich gar nicht geschafft hätte, deshalb mein Dank an alle Autoren!) erreicht, dass ich nun mit meinem Teledat USB 2 a/b mit dem jetzt (November 2001) aktuellen Debian GNU/Linux testing/unstable (aka Woody) ins Internet komme. Mit dieser Anleitung hätte es schneller gehen können, aber Fallstricke lauern überall...
Voraussetzungen:
- Ein 2.4er Kernel (vielleicht geht auch ein 2.2er mit USB- und Capi-Patch), ich habe 2.4.14 bis 2.4.20 (update 2005: Kernel 2.6.11) erfolgreich getestet (neuere Kernel jeweils mit neueren Treiber-Versionen)
- Die FritzX-USB-Treiber von AVM (nicht an der Bezeichnung stören, ich habe zuletzt fxusb-suse8.1-03.10.02.tar.gz verwendet)
- Die Debian-Pakete
libcapi20, isdnactivecards, ppp, pppdcapiplugin
Nicht benötigt werden: isdnutils, ipppd, usbmgr - Die Fähigkeiten, einen Kernel zu kompilieren und zu installieren und einen Editor zu bedienen (ist ja nicht allzu schwer und eigentlich selbstverständlich, bei Leuten die testing verwenden)
Kernel konfigurieren
Mit "make menuconfig":
<*> ISDN support [*] Support synchronous PPP [*] Use VJ-compression with synchronous PPP [ ] Support generic MP (RFC 1717) <M> Support BSD compression [ ] Support audio via ISDN ISDN feature submodules ---> --- low-level hardware drivers Passive ISDN cards ---> < > HiSax SiemensChipSet driver support Active ISDN cards ---> ... <M> CAPI2.0 support [*] Verbose reason code reporting (kernel size +=7K) [*] CAPI2.0 Middleware support (EXPERIMENTAL) <M> CAPI2.0 /dev/capi support [*] CAPI2.0 filesystem support <M> CAPI2.0 capidrv interface support ...
"..." steht hier für mehr Optionen, die alle nicht aktiviert zu sein brauchen.
Das mit der Kompression kann man sich vielleicht auch sparen, aber es wird schon nicht schaden.
Natürlich muss der Kenel den eigenen USB-Controller unterstützen und alles, was sonst noch so gebraucht wird...
Dann kompilieren z.B. mit
make dep clean bzImage && make modules
Nun als root den Kernel installieren (z. B. mit lilo...) und auch an die Module denken:
make modules_install
Kernel-Modul kompilieren
tar xzf fxusb.suse[Versionsnummer].tar.gz cd fritz
Nun muss in der Datei src.drv/main.c die Zeile "#define PRODUCT_ID 0x2000" geändert werden in "#define PRODUCT_ID 0x2800".
make drv
Wenn die Kompilierung erfolgreich gelaufen ist nun ein Verzeichniss misc im Modul-Verzeichniss des Kernels erstellen und darein das modul fxusb.o aus src.drv kopieren.
mkdir /lib/modules/[Version]/misc cp src.drv/fxusb.o /lib/modules/[Version]/misc
Capi-Pakete installieren
Glück hat, wer auch ohne die Teledat noch eine Internet-Verbindung hinbekommt (vielleicht mit einem alten Modem), denn dann sind die notwendigen Debian-Pakete super-schnell installiert:
apt-get install libcapi20 isdnactivecards ppp pppdcapiplugin
Falls weitere Pakete von den oben genannten abhängig sein sollten, werden diese automatisch mit installiert.
Natürlich können die Pakete auch anders besorgt werden, zur Not über Windows vom Debian-HTTP oder -FTP-Server.
/etc/isdn/capi.conf ?
Nun ist einer der wenigen Zeitpunkte gekommen, wo auch ein Linux-System neu gestartet werden kann.
Es geht sicher auch ohne, aber dann muss man sich selbst mit den ganzen Modulen und init-scripten herumschlagen...
Ein Blick in das Verzeichniss /etc/init.d empfielt sich aber trotzdem.
Ein eventuell vorhandenes isdnutils-Script sollte jetzt z.B. nicht mehr gebraucht werden (verschieben, nicht löschen!).
Nach dem Neustart kann das fxusb-Modul mit dem interaktiven Debian-tool modconf geladen werden (ggf. vorher depmod -a aufrufen).
Ein Aufruf von lsmod sollte jetzt unter anderem Folgendes liefern:
fxusb 558168 1 capi 17600 2 kernelcapi 28896 2 [fxusb capi] capifs 3424 1 [capi] capiutil 22208 0 [kernelcapi]
Man kann auch in /proc nachsehen, ob alles gut läuft:
vlado@mog:~$ cat /proc/capi/controller 1 fxusb running fritz-usb A1 3.09-10 3 vlado@mog:~$ cat /proc/capi/controllers/1 name fritz-usb dev 3 type A1 ver_driver 3.09-10 ver_cardtype fritz-usb protocol DSS1 linetype point to multipoint
Das war’s!
Verbindung testen/konfigurieren
Eine Testverbindung zu AVM (wie in fritz/install_passive.de beschrieben) könnte jetzt direkt schon klappen. Zur Sicherheit kann man die Systemnachrichten mitverfolgen (mit tail -f /var/log/messages):
pppd call isdn/avm
Damit wird das script /etc/ppp/peers/isdn/avm ausgeführt, was eine Testverbindung zum AVM-Rechner in Berlin erstellt.
In dem selben Verzeichniss kann man nun ein eigenes kurzes Script nach dem gleichen Muster erstelen.
Ein Beispiel:
# # PROVIDERNAME # debug sync noauth usepeerdns #idle 420 plugin userpass.so username BENUTZERNAME defaultroute plugin capiplugin.so #controller 1 #numberprefix 0 number TELEFONNUMMER protocol hdlc ipcp-accept-local ipcp-accept-remote /dev/null
In /etc/ppp/pap-secrets bzw. chap-secrets kommt dann noch entsprechend eine Zeile:
BENUTZERNAME PROVIDER PASSWORD
Wobei "PROVIDER" auch durch "*" ersetzt werden kann, was bedeutet "für alle provider".
Ein großes Problem war für mich noch, dass die "route" nicht erfolgreich gesetzt wurde (Test über tail -f /var/log/messages und route -n). Ich hatte zwar eine Verbindung zum Provider, konnte aber nichts machen. Da ich ziemlicher tcp/ip-Laie bin, konnte ich das nur lösen, indem ich die vorhandene (aus dem eigentlich nicht benötigten ipppd) /etc/ppp/ip-up.d/00-ipppd in eine /etc/ppp/ip-up.d/00-pppd (ohne i) umgewandelt habe. Alles, was ich in der Datei geändert habe, war wie im Namen ein "i" wegzulöschen. Wobei der Name sicher nicht so wichtig ist... Hier meine Dateien für Leute, die noch welche brauchen:
/etc/ppp/ip-up.d/00-pppd /etc/ppp/ip-down.d/99-pppd
Aber Hauptsache es funktioniert endlich! Nachdem ich die Teledat schon über ein Jahr hier rumstehen habe, mir deswegen Anfang 2001 eine Fritz!PCI gekauft habe, nur um mit Linux ins Netz zu kommen...
Auch wichtig: die Verbindung wieder beenden (ISDN-Flatrates sind selten geworden :-)
Unter Debian gibt es dafür das Script poff (aus dem Paket ppp).
poff isdn/PROVIDER
So wie ich das sehe macht es nichts anderes, als genau den pppd-Prozess zu killen, der für die Verbindung zu PROVIDER verantwortlich ist.
Wenn man poff ohne Parameter aufruft und es nur einen pppd gibt, wird dieser beendet.
Es gibt auch die Möglichkeit in das Provider-Script eine idle-Zeit einzubauen.
Mehr Informationen zu den Möglichkeiten von pppd liefert
man pppd
Hilfs-Programme
Das gute, alte xisdnload funtioniert mit Capi2 nicht mehr, aber dafür gibt es eine ganze Reihe ppp-Monitor-Programme (Debian-Paket-Namen): wmppp.app pppstatus (nicht-graphisch) procmeter gkrellm gpppkill
Auch die KDE-Systemüberwachung (ksysguard) kann irgendwie PPP-Informationen anzeigen
Quellen / weitere Informationen
Rund um USB-Geräte für Linux
H Zero Seven - Development Team (since 1999)- Passte AVM-Fritz!X-Treiber für Teledat an und es gab dort auch ein Forum, woraus mir ein Eintrag besonders geholfen hatte. Allerdings gibt es das Forum nun nicht mehr und das Projekt wird woanders weitergeführt:
Nun gibt es ein Sourceforge-Projekt zu Fritz!X USB/Teledat, wo auch versucht wird das Kommunikations-Protokoll zu entschlüsseln, um irgendwann richtige OpenSource-Unterstützung für diese Geräte zu bekommen. Zu dem Projekt gehört außerdem auch ein Forum, in dem sich Nutzer und Entwickler austauschen.
Kommentare, Verbesserungsvorschläge, Erfolgs- und Misserfolgsmeldungen zu dieser Anleitung sind sehr willkommen!
E-Mail: vlado <bei> gmx.net
Besonderen Dank an dieser Stelle an Gottfried Schwieters! Er hatte eine Installationsanleitung für Debian (unstable) in o.g. Teledat-Board gestellt und mir zu meiner Anleitung eine ganze Reihe Verbesserungsvorschläge geschickt, die ich natürlich sofort getestet und eingebaut habe.