A small selection of my recent San Francisco black and white pictures:
Sync your Motorola C390 with iSync for free
Recently my SonyEricsson cellphone broke and I wanted to replace it by my Bluetooth enabled Motorola C390. Apple’s iSync is really great to keep your address book and calendar in sync with your cellphone. Unfortunately the C390 is not supported by default. Your Mac can pair with the phone and use it for data connections but iSync does not support it, see [1].
There seem to be some commercial solutions which may help, though I didn’t test one of them, just search the web for iSync and C390 and you will find them.
Luckily I also found this guy’s Howto in a forum about adding Motorola C390 support to iSync for free just by modifying a xml file [2]. However, since I am running Mac OS X 10.4.9, I recognized slight changes in the xml tag names. That’s why I noted the instructions below.
Enabling Motorola C390 for iSync
- Right click on the iSync Application
- Show Package Contents
- Goto Contents/Plugins/ApplePhoneConduit.syncdevice/Contents/ Plugins/PhoneModelsSync.phoneplugin/Contents/ Resources
- Backup and modify the MetaClasses.plist file to make it look like below in the beginning
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.motorola.C390</key> <dict> <key>Identification</key> <dict> <key>com.apple.gmi+gmm</key> <string>"Motorola CE, Copyright 2000"+C390</string> </dict> <key>InheritsFrom</key> <array> <string>com.motorola.usb-bt.0x22B8/0x4902</string> </array> <key>Services</key> <array> <dict> <key>ServiceName</key> <string>com.apple.model</string> <key>ServiceProperties</key> <dict> <key>ModelIcon</key> <string>MOTC390.tiff</string> <key>ModelName</key> <string>C390</string> </dict> </dict> </array> </dict> </dict>
- You will need a tiff file, with the name you entered under ModelIcon, but you can just copy it from another one in the same folder as the MetaClasses.plist file
- Start iSync
- Select Devices->Add Device from the menu
- et voilà, your Motorola C390 should show up as a supported phone
I synced my address book and calendar successfully with it, so I don’t know, why the phone is not supported by default. Anyways, use at your own risk.
Wiimote controls Front Row on a PowerBook
I have this 2005 12″ PowerBook G4 with Mac OS X Tiger 10.4.9 and was jealous of the new MacBooks’ Remote Controls. One day I found a movie on youtube about someone controlling Front Row with a Wiimote. I just didn’t find all the links in one place. Maybe this is of help for you. It should work on other Bluetooth enabled Macintosh computers as well.
1. Get Front Row to work on a Mac without Remote Control
- Download the Front Row application from Apple
- Enable Front Row on your Mac through Andrew Escobars Enabler
2. Install DarwiinRemote
- Get DarwiinRemote
- The key mapping matches the one of Front Row by default, though, you might want to change the Wiimote’s + and – buttons to change volume control as well
Works like a charme.
You can also use the Wiimote with DarwiinRemote to go through your PowerPoint Presentations 🙂
Howto remove the nVidia linux drivers
Issue
Recently it happened to me, that I removed a nVidia 3D accelerated graphics card from my computer which was supported by nVidia’s driver and I wanted to switch back to the integrated graphics chipset which is supported by X.org. However the nVidia driver, which usually comes as a package like NVIDIA-Linux-x86-x.x-xxxx-pkg1.run, has overwritten some libraries and header files so that just changing the driver name in /etc/X11/xorg.conf worked for 2D modes, though OpenGL did not work because some of the X servers lbraries and header files were replaced. Furthermore there was no uninstallation procedure included in the driver package which I had (Version 1.0-7676).
Solution
Luckiliy the nVidia installer left a log of the files which were added or replaced in /var/lib/nvidia/log. You may want to delete the mentioned files manually and reinstall the x.org and mesa packages of your distribution to make sure the OpenGL libraries and headers are restored.
Afterwards the X server should work fine again – 3D including.
xerces-c-src_2_6_0 on Mac OS X Tiger
Issue
When I tried to compile Xerces-C++ Version 2.6.0 from source on Mac OS X Tiger 10.4.2 with gcc-4.0.0 the compiler complained:
MacOSUnicodeConverter.cpp:78: error: 'static' may not be used when defining (as opposed to declaring) a static data member MacOSUnicodeConverter.cpp:84: error: 'static' may not be used when defining (as opposed to declaring) a static data member make[2]: *** [MacOSUnicodeConverter.o] Error 1 make[1]: *** [transcoders] Error 2 make: *** [Util] Error 2
Solution
The solution is easy, just delete the word static in the source code manually and build again or use this patch:
Patch instructions
Download the Xerces-C++ source distribution from [1].
The sources contained in my case version 2.6.0.
Extract sources and apply patch:
tar xzf xerces-c-current.tar.gz cd xerces-c-src_2_6_0 patch -p1 <../xerces-c-src_2_6_0-tiger.diff
Please make sure that the paths are adjusted to your system. Follow the official build instructions Building Xerces-C++ from the Mac OS X command line at [2] afterwards.
FRITZ!Card DSL SL mit Linux Kernel 2.6.x
Mit freundlicher Genehmigung von Andreas Huppert.
Original Quelle zu diesem Posting: http://martin.wojtczyk.de/howto/fritzcard_dsl_sl/fcdslsl-kernel-2.6.txt
Einführung
Folgende Beschreibung will schrittweise darstellen, wie ich meine Fritz!Card DSL SL Karte unter Fedora 2 + Linux-kern 2.6.8.1 zum Laufen gebracht habe. Dennoch gehe ich davon aus, daß dieses Kochbuch auch denjenigen zu Gute kommt, die andere nicht-SuSe Distribution verwenden.
Benötigte Downloads
Kernel Konfiguration
Da möchte ich lediglich auf die ISDN und PPP Konfiguration hinweisen. Die Kommandos “grep ISDN .config” bzw. “grep PPP .config” ergeben folgende Ausgaben:
# ISDN subsystem CONFIG_ISDN=m # Old ISDN4Linux # CONFIG_ISDN_I4L is not set CONFIG_ISDN_CAPI=m CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y CONFIG_ISDN_CAPI_MIDDLEWARE=y CONFIG_ISDN_CAPI_CAPI20=m CONFIG_ISDN_CAPI_CAPIFS_BOOL=y CONFIG_ISDN_CAPI_CAPIFS=m
CONFIG_SYNCLINK_SYNCPPP=m CONFIG_HDLC_PPP=y CONFIG_PPP=m CONFIG_PPP_MULTILINK=y CONFIG_PPP_FILTER=y CONFIG_PPP_ASYNC=m CONFIG_PPP_SYNC_TTY=m # CONFIG_PPP_DEFLATE is not set # CONFIG_PPP_BSDCOMP is not set CONFIG_PPPOE=m
Nach dem REBOOT mit dem neuen Kernel
Bevor wir den fcdslsl-driver übersetzen, muß /usr/src/linux auf den richtigen Kernel-Baum zeigen und das bewirkt folgendes Kommando:
# ln -s /<your path>/linux-2.6.8.1 /usr/src/linux
Entpacken wir das Archiv fcdslsl-suse9.1-3.11-04.tar.gz :
# tar -xzvf fcdslsl-suse9.1-3.11-04.tar.gz
Übersetzen wir den fcdslsl driver:
# cd fritz # make install
Das Ende der Ausgabe sollte folgendermaßen aussehen:
for f in src/fcdslsl.ko; do cp -vf $f /lib/modules/2.6.8.1/extra/; done `src/fcdslsl.ko' -> `/lib/modules/2.6.8.1/extra/fcdslsl.ko'
# reboot
Bei diesem REBOOT wird die “Fritz!Card DSL SL” Karte entdeckt und die soll “Using dynamic IP configuration” konfiguriert werden. Diese Aktion hat folgende Konsequenzen:
1. Die Fritz!Card wird als Ethernet Device konfiguriert und damit eine config Datei /etc/sysconfig/network-scripts/ifcfg-eth1 angelegt. Der Inhalt dieser Datei ist allerdings FALSCH(!):
# AVM Audiovisuelles|Fritz!Card DSL SL DEVICE=eth1 ONBOOT=yes BOOTPROTO=dhcp
Wir müssen die Konfiguration durch “System Settings” -> “Network” -> “Edit” ändern, indem das BOOTPROTO “dialup” wird.
Die RICHTIGE /etc/sysconfig/network-scripts/ifcfg-eth1 Datei sieht so aus:
# AVM Audiovisuelles|Fritz!Card DSL SL DEVICE=eth1 ONBOOT=yes BOOTPROTO=dialup USERCTL=no # diese Zeile sollte bewirken, daß ein /etc/resolv.conf angelegt wird PEERDNS=yes TYPE=Ethernet IPV6INIT=no
2. In der Datei modprobe.conf ein “alias eth1 fcdslsl” Eintrag, der dazu führt, daß der fcdslsl-driver als eth1-driver benützt wird.
3. Das Modul fcdslsl wird geladen und das zeigen folgende Zeilen in der messages Datei:
CAPI Subsystem Rev 1.1.2.8 fcdslsl: AVM FRITZ!Card DSL SL driver, revision 0.2.1 fcdslsl: (fcdslsl built on Sep 8 2004 at 19:05:26) fcdslsl: Loading... kcapi: Controller 1: fcdslsl-b400-5 attached fcdslsl: Loaded.
Die eth1 Schnittstelle ist allerdings noch nicht funktionsfähig, dazu brauchen wir noch die capi4k-utils Programme.
CAPI Utilities Installieren
# tar -xzvf capi4k-utils-2004-06-14.tar.gz # cd capi4k-utils # make menuconfig
Da müssen folgende Zeilen markiert werden:
[*] avmcapictrl & capiinit [ ] capifax [ ] rcapid [*] pppdcapiplugin
-> Save
# make install
Sollten Fehler wegen “getpass redefinition” auftreten, muß die Zeile
extern char *getpass (__const char *__prompt);
in /usr/include/unistd.h auskommentiert werden.
capiinit Aufruf vorbereiten
# echo fcdslsl fdssbase.bin > /etc/capi.conf # cd fritz # wo der fcdslsl-driver generiert wurde # cp fdssbase.bin /usr/lib/isdn # /sbin/capiinit start
Dieses Kommando sollte die Kernel-Module
- capi
- capifs
- kernelcapi
nachladen und in der messages Datei folgende Ausgaben erzeugen:
capifs: Rev 1.1.2.3 creating device node '/udev/capi' ... creating device node '/udev/capi20' capi20: Rev 1.1.2.7: started up with major 68 (middleware+capifs) creating device node '/udev/capi24' ... creating device node '/udev/capi30' fcdslsl: Using VCC/VPI/VCI = 0x1/0x1/0x20 fcdslsl: Stack version 3.11-04 kcapi: card 1 "fcdslsl-b400-5" ready.
Zur Kontrolle die “capiinfo” Ausgabe:
Number of Controllers : 1 Controller 1: Manufacturer: AVM-GmbH CAPI Version: 2.0 Manufacturer Version: 3.101-04 (49.20) Serial Number: 0000000 BChannels: 1 Global Options: 0x00000001 internal controller supported B1 protocols support: 0x10000000 B2 protocols support: 0x40000002 Transparent B3 protocols support: 0x40000001 Transparent 0100 0100 01000000 00000010 02000040 01000040 00000000 00000000 00000000 00000000 00000000 00000000 01000001 00020000 00000000 00000000 00000000 Supplementary services support: 0x000003ff Hold / Retrieve Terminal Portability ECT 3PTY Call Forwarding Call Deflection MCID CCBS
Verbindugsaufbau zum DSL-Provider
Dazu benötigen wir noch zwei weitere config Dateien:
******************** /etc/drdsl/adsl.conf ******************** controller 1 protocol adslpppoe vpi 1 vci 32
******************** /etc/ppp/peers/t-dsl ******************** # Ondemand Verbindung zu T-DSL über die Fritz!Card DSL debug sync noauth defaultroute lcp-echo-interval 5 lcp-echo-failure 3 lcp-max-configure 50 lcp-max-terminate 2 noccp noipx # persist #demand connect "" # mru 1490 mtu 1490 ipcp-accept-local ipcp-accept-remote # plugin userpass.so # Anschlusskennung T-Online-Nummer Mitbenutzerkennung # | | | user xxxxxxxxxxxx\#yyyyyyyyyyyy\#0001\#@t-online.de password zzzzzzzz linkname t-dsl ipparam internet plugin capiplugin.so avmadsl : /dev/null ##############################################################
Die Verbindung wird mit folgendem Kommando aufgebaut:
# /usr/sbin/pppd call t-dsl
Dadurch werden in der messages Datei folgende Ausgaben generiert:
pppd[4532]: Plugin userpass.so loaded. pppd[4532]: userpass: $Revision: 1.4 $ pppd[4532]: Plugin capiplugin.so loaded. pppd[4532]: capiplugin: $Revision: 1.34 $ pppd[4532]: capiconn: 1.9 kernel: CSLIP: code copyright 1989 Regents of the University of California kernel: PPP generic driver version 2.4.2 pppd[4544]: pppd 2.4.2 started by root, uid 0 pppd[4544]: capiplugin: phase serialconn. pppd[4544]: capiplugin: leased line (adslpppoe) udev[4543]: creating device node '/udev/ppp' pppd[4544]: capiplugin: connected: "" -> "" outgoing (pcli=0x101/ncci=0x10101) pppd[4544]: capiplugin: using /dev/capi/0: "" -> "" outgoing (pcli=0x101/ncci=0x10101) pppd[4544]: Using interface ppp0 pppd[4544]: Connect: ppp0 <--> /dev/capi/0 pppd[4544]: capiplugin: phase establish (was serialconn). pppd[4544]: capiplugin: phase authenticate (was establish). pppd[4544]: PAP authentication succeeded pppd[4544]: capiplugin: phase network (was authenticate). pppd[4544]: local IP address 84.128.65.129 pppd[4544]: remote IP address 217.5.98.172 pppd[4544]: capiplugin: phase running (was network).
und folgende Kernel-Module nachgeladen:
- ppp_synctty
- ppp_generic
- slhc
Damit sind wir mit dem DSL-Provider verbunden und “ifconfig -a” zeigt eine neue Netzwerk- Schnittstelle an:
ppp0 Link encap:Point-to-Point Protocol inet addr:84.128.65.129 P-t-P:217.5.98.172 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1490 Metric:1 RX packets:62 errors:0 dropped:0 overruns:0 frame:0 TX packets:62 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:2924 (2.8 Kb) TX bytes:4554 (4.4 Kb)
Die Verbindung besteht, so lange der Prozess pppd läuft.
DNS (Domain Name Server) ansetzen
Frühere Versionen von capi4k-utils haben nach dem Start von pppd eine /etc/ppp/resolv.conf Datei mit “nameserver” Zeilen erzeugt und wir brauchten lediglich /etc/resolv.conf dazu linken. Die neue Version tut es – zumindest bei mir – nicht, so kann ich zunächst nur die “quick-and-dirty” Lösung anbieten: Wir müssen die /etc/resolv.conf Datei selbst mit folgendem Inhalt anlegen:
nameserver 194.25.2.129 nameserver 217.237.151.97
Ohne diese Aktion ist die ppp0 Schnittstelle zwar oben, aber wir können keine symbolischen IP-Adressen – wie z.B. www.google.de – erreichen.
Sollte jemand diesbezüglich die richtige Lösung erraten, soll er/sie mich benachrichtigen.
Schlußbemerkungen
Ich habe mich nicht bemüht, eine abstrakte Beschreibung zu geben, so müssen paar Sachen entsprechend angepaßt/verstanden werden, wie z.B. “eth1”: Das hängt nämlich von den sonstigen vorhandenen Netzwerk-Schnittstellen ab.
Ob und wie das Starten von DSL beim Bootvorgang stattfindet, ist Geschmacksache und ich wollte diesbezüglich keine Insellösung vorschlagen. Ich habe in der ifup script dafür eine kleine Änderung mit “/sbin/capiinit start; /usr/sbin/pppd call t-dsl” gemacht. Sollte jemandem die korrekte Lösung einfallen, soll er/sie mich benachrichtigen.
VIEL SPASS
Andreas Huppert
e-mail: a.hup@web.de
Qt-mac-free-3.3.4 on Mac OS X Tiger
Hint
If you don’t need specifically qt-mac-free-3.3.4 but any 3.3.x would do it, you might want to check out Trolltech’s recently published Version 3.3.5. If you ever wondered – like me – where you can still download the 3.3.x branch have a look at
ftp://ftp.trolltech.com/qt/source/
It seems that you can’t find any more download links for 3.3.x at Trolltech’s webpage.
Issue
When I tried to compile Qt for Mac 3.3.4 from source on Max OS X Tiger 10.4.2 with gcc-4.0.0 the compiler complained:
kernel/qaccessible_mac.cpp:189: error: non-local variable '<anonymous struct> text_bindings [][10]' uses anonymous type make[2]: *** [.obj/release-shared/qaccessible_mac.o] Error 1 make[1]: *** [sub-src] Error 2 make: *** [init] Error 2
and
network/qsocketdevice_unix.cpp: In function `int qt_socket_accept(int, sockaddr*, int*)': network/qsocketdevice_unix.cpp:47: error: invalid conversion from 'int*' to 'socklen_t*' network/qsocketdevice_unix.cpp:47: error: initializing argument 3 of 'int accept(int, sockaddr*, socklen_t*)' network/qsocketdevice_unix.cpp: In member function `QSocketDevice::Protocol QSocketDevice::getProtocol() const': network/qsocketdevice_unix.cpp:132: error: invalid conversion from 'int*' to 'socklen_t*' network/qsocketdevice_unix.cpp:132: error: initializing argument 3 of 'int getsockname(int, sockaddr*, socklen_t*)' network/qsocketdevice_unix.cpp: In member function `int QSocketDevice::option(QSocketDevice::Option) const': network/qsocketdevice_unix.cpp:324: error: invalid conversion from 'int*' to 'socklen_t*' network/qsocketdevice_unix.cpp:324: error: initializing argument 5 of 'int getsockopt(int, int, int, void*, socklen_t*)' network/qsocketdevice_unix.cpp: In member function `virtual Q_LONG QSocketDevice::readBlock(char*, Q_ULONG)': network/qsocketdevice_unix.cpp:784: error: invalid conversion from 'int*' to 'socklen_t*' network/qsocketdevice_unix.cpp:784: error: initializing argument 6 of 'ssize_t recvfrom(int, void*, size_t, int, sockaddr*, socklen_t*) network/qsocketdevice_unix.cpp: In member function `void QSocketDevice::fetchConnectionParameters()': network/qsocketdevice_unix.cpp:1053: error: invalid conversion from 'int*' to 'socklen_t*' network/qsocketdevice_unix.cpp:1053: error: initializing argument 3 of 'int getsockname(int, sockaddr*, socklen_t*)' network/qsocketdevice_unix.cpp:1057: error: invalid conversion from 'int*' to 'socklen_t*' network/qsocketdevice_unix.cpp:1057: error: initializing argument 3 of 'int getpeername(int, sockaddr*, socklen_t*)' make[2]: *** [.obj/release-shared/qsocketdevice_unix.o] Error 1 make[1]: *** [sub-src] Error 2 make: *** [init] Error 2
Additionally with both compilers gcc 4.0 and gcc 3.3 linking an application against qt-mac-free-3.3.4 resulted in warning messages like the following, because Mac OS X Tiger comes with additional dynamic library handling functions which now conflict with qt:
/usr/bin/ld: warning multiple definitions of symbol _dlsym /usr/lib/gcc/powerpc-apple-darwin8/4.0.0/../../../libpthread.dylib (dyldAPIsInLibSystem.o) definition of _dlsym /usr/local/lib/libqt-mt.dylib(dlfcn.o) definition of _dlsym /usr/bin/ld: warning multiple definitions of symbol _dladdr /usr/lib/gcc/powerpc-apple-darwin8/4.0.0/../../../libpthread.dylib (dyldAPIsInLibSystem.o) definition of _dladdr /usr/local/lib/libqt-mt.dylib(dlfcn.o) definition of _dladdr /usr/bin/ld: warning multiple definitions of symbol _dlclose /usr/lib/gcc/powerpc-apple-darwin8/4.0.0/../../../libpthread.dylib (dyldAPIsInLibSystem.o) definition of _dlclose /usr/local/lib/libqt-mt.dylib(dlfcn.o) definition of _dlclose /usr/bin/ld: warning multiple definitions of symbol _dlerror /usr/lib/gcc/powerpc-apple-darwin8/4.0.0/../../../libpthread.dylib (dyldAPIsInLibSystem.o) definition of _dlerror /usr/local/lib/libqt-mt.dylib(dlfcn.o) definition of _dlerror /usr/bin/ld: warning multiple definitions of symbol _dlopen /usr/lib/gcc/powerpc-apple-darwin8/4.0.0/../../../libpthread.dylib (dyldAPIsInLibSystem.o) definition of _dlopen /usr/local/lib/libqt-mt.dylib(dlfcn.o) definition of _dlopen /usr/bin/ld: warning suggest use of -bind_at_load, as lazy binding may result in errors or different symbols being used symbol _dladdr used from dynamic library /usr/lib/gcc/ powerpc-apple-darwin8/4.0.0/../../../libpthread.dylib (dyldAPIsInLibSystem.o) not from earlier dynamic library libqt-mt.3.dylib(dlfcn.o) symbol _dlclose used from dynamic library /usr/lib/gcc/ powerpc-apple-darwin8/4.0.0/../../../libpthread.dylib (dyldAPIsInLibSystem.o) not from earlier dynamic library libqt-mt.3.dylib(dlfcn.o) symbol _dlerror used from dynamic library /usr/lib/gcc/ powerpc-apple-darwin8/4.0.0/../../../libpthread.dylib (dyldAPIsInLibSystem.o) not from earlier dynamic library libqt-mt.3.dylib(dlfcn.o) symbol _dlopen used from dynamic library /usr/lib/gcc/ powerpc-apple-darwin8/4.0.0/../../../libpthread.dylib (dyldAPIsInLibSystem.o) not from earlier dynamic library libqt-mt.3.dylib(dlfcn.o) symbol _dlsym used from dynamic library /usr/lib/gcc/ powerpc-apple-darwin8/4.0.0/../../../libpthread.dylib (dyldAPIsInLibSystem.o) not from earlier dynamic library libqt-mt.3.dylib(dlfcn.o)
Solution
Apply the following patch:
Patch instructions
Extract sources and apply patch:
tar xjf qt-mac-free-3.3.4.tar.bz2 cd qt-mac-free-3.3.4 patch -p1 <../qt-mac-free-3.3.4-tiger.diff
Please make sure that the paths are adjusted to your system. Follow the official build instructions afterwards. After applying the little patch qt-mac-free-3.3.4 and applications linked to it should build fine with gcc 4.0 and gcc 3.3.
References
My patch is based on the following Articles:
FRITZ!Card DSL SL unter RedHat Linux 9
(dürfte aber auch mit einigen anderen Distributionen funktionieren)
Original Quelle zu diesem Artikel: http://martin.wojtczyk.de/howto/fritzcard_dsl_sl/FRITZ!Card_DSL_SL_unter_RedHat_9_0_-_Howto.html
Andreas Huppert setzte sich mit den kürzlich erschienenen Treibern für den 2.6er Linux-Kernel auseinander und stellte das Howto freundlicherweise für die Veröffentlichung zur Verfügung. FRITZ!Card DSL SL mit Linux Kernel 2.6.x
Einleitung
Wie wohl viele andere Leute auch, habe ich gespannt die Linuxtreiber für die FRITZ!Card DSL SL erwartet, die Ende August erschienen sind, doch die Treiber sind leider nur auf SuSE Linux abgestimmt. Da ich selbst kein Howto für die Installation der Karte unter anderen Distributionen finden konnte, habe ich dieses kleine Howto zusammengestellt. Alle beschriebenen Kommandos sollten als root durchgeführt werden.
Voraussetzungen
Zum einen benötigt man das Treiberpaket fcdslsl-suse8.2-03.11.02.tar.gz (bzw. eine neuere Version) von avm: [1]
sowie das capi4k-utils-Paket capi4k-utils-2003-06-16.tar.gz (oder aktueller) von: [2]
Was den Kernel angeht, so ist seinerseits CAPI 2.0 Unterstützung erforderlich, der Standardkernel von redhat, hat diese integriert, Selberbauer sollten darauf achten, dass im Konfigurationsmenü des Kernels unter ISDN Subsystem -> Active ISDN Cards folgende Punkte aktiviert sind (Weitere Treiber aus diesem Menü sind nicht nötig):
<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
Im Menü Network device support aktiviert man noch folgende Punkte:
<M> PPP (point-to-point protocol) support [ ] PPP multilink support (EXPERIMENTAL) <M> PPP support for async serial ports <M> PPP support for sync tty ports <M> PPP Deflate compression <M> PPP BSD-Compress compression <M> PPP over Ethernet (EXPERIMENTAL)
Um die EXPERIMENTAL Punkte einblenden zu lassen ist im Menü Code maturity level options die folgende Option erforderlich:
[*] Prompt for development and/or incomplete code/drivers
Sollten im Laufe der Installation oder beim Laden des Moduls fcdslsl.o Fehlermeldungen der Art “CAPI Modul konnte nicht geladen werden” so ist sehr wahrscheinlich die CAPI Unterstützung im Kernel deaktiviert.
Installation
capi4k-utils installieren
tar xzf capi4k-utils-2003-06-16.tar.gz cd capi4k-utils make
anchschließend erscheint ein Konfigurationsmenü, bei dem man vor allem darauf achten sollte, dass man den richtigen Pfad zu den Kernel-Sourcen angibt – unter Redhat: /usr/src/linux-2.4 – sowie darauf, dass man das pppdcapiplugin mitkompiliert, das im Menü an unterster Stelle defaultmäßig deaktiviert ist. Anschließend geht man auf Exit, speichert die Einstellungen und wartet den Kompiliervorgang ab. Nun installiert man die Tools.
make install
FRITZ!Card DSL SL Treiber übersetzen und installieren
tar xzf fcdslsl-suse8.2-03.11.02.tar.gz cd fritz make make install
Anschließend muss man das SuSE-spezifische start/stop-Skript load-fcdslsl abändern, damit es unter RedHat funktioniert. Dazu habe ich die rc*-Aufrufe auskommentiert… ist vielleicht noch nicht ganz professionell aber es funktioniert damit. In der Datei install macht man nun noch folgende Änderungen:
Vorher:
Zeile 103: opt_check_kernel=1 Zeile 104: opt_check_pppd=1 Zeile 301: drdsl
Nachher:
Zeile 103: opt_check_kernel=0 Zeile 104: opt_check_pppd=0 Zeile 301: ./drdsl
Der pppd muss natürlich in einer aktuellen Version vorhanden sein, aber defaultmäßig findet das Skript den pppd nicht und bricht ab, da unter RedHat /usr/sbin nicht in $PATH enthalten ist. Alternativ zum Ändern der opt_check_pppd-Variable kann man also auch einfach den Pfad mittels PATH=$PATH:/usr/bin ändern. Die beiden geänderten Dateien, habe ich auch zum Download bereitgestellt load-fcdslsl, install
Das install-Skript kopiert u.a. die Firmware der Karte in das Verzeichnis /usr/lib/isdn. Man sollte sicherstellen, dass das Verzeichnis auch tatsächlich existiert oder andernfalls an dieser Stelle selbst erzeugen und anschließend das install-Skript im fritz-Verzeichnis starten:
./install
und fügt start/stop-links in /etc/rc.d/rcX.d hinzu z.B:
ln -s /etc/rc.d/init.d/load-fcdslsl /etc/rc.d/rc3.d/S60load-fcdslsl ln -s /etc/rc.d/init.d/load-fcdslsl /etc/rc.d/rc4.d/S60load-fcdslsl ln -s /etc/rc.d/init.d/load-fcdslsl /etc/rc.d/rc5.d/S60load-fcdslsl ln -s /etc/rc.d/init.d/load-fcdslsl /etc/rc.d/rc3.d/K20load-fcdslsl ln -s /etc/rc.d/init.d/load-fcdslsl /etc/rc.d/rc4.d/K20load-fcdslsl ln -s /etc/rc.d/init.d/load-fcdslsl /etc/rc.d/rc5.d/K20load-fcdslsl
Somit werden die Treiber für die Karte bei jedem Systemstart geladen und beim herunterfahren automatisch entfernt.
Internetverbindung mittels pppd aufbauen
Damit die Namensauflösung funktioniert musste ich die Datei resolve.conf vom /etc/ppp-Verzeichnis ins /etc-Verzeichnis linken:
ln -s /etc/ppp/resolve.conf /etc/resolve.conf
Außerdem benötigt man nun noch eine Einwahldatei, die man unter /etc/ppp/peers ablegt. Man kann auch mehrere Dateien für verschiedene Provider im Verzeichnis anlegen. z.B. /etc/ppp/peers/gmx
debug sync noauth defaultroute lcp-echo-interval 5 lcp-echo-failure 3 lcp-max-configure 50 lcp-max-terminate 2 noccp noipx persist user GMX/YourAccount@online.de hide-password plugin capiplugin.so avmadsl ipcp-accept-remote ipcp-accept-local usepeerdns noipdefault # Kompression abschalten noaccomp nopcomp novj novjccomp nobsdcomp nodeflate noccp # kein handshake nocrtscts local noauth lock :
Das Feld user sollte natürlich abgeändert werden. Zuletzt trägt man noch in /etc/ppp/pap-secrets und /etc/ppp/chap-secrets die Login/Passwort-Kobinationen für die Accounts in der folgenden Form ein.
"login" * "password"
Nun kann man jederzeit mittels
/usr/sbin/pppd call gmx
die Internetverbindung herstellen. Idealerweise trägt man diesen Aufruf auch in ein Startskript ein. Unter Redhat ist zu diesem Zweck die Datei /etc/rc.local dafür gut geeignet, nur muss man dann dem Aufruf auch noch ein tty übergeben, damit der pppd problemlos im Hintergrund läuft s. man pppd. Sollen auch normale User die Verbindung herstellen können, muss evtl. das suid-Bit beim pppd gesetzt werden.
Sollte die Verbindung nicht zustande kommen hilft ein Blick in die /var/log/messages oder der Aufruf von drdsl im fritz-Verzeichnis.
Die Verbindung lässt sich sehr gut mit dem Tool kadslwatch überwachen, das avm unter [3] anbietet. Die Installation ist sehr einfach und in dem Paket dokumentiert.
Nützliche Links
Zu diesem Howto waren mir die folgenden beiden Texte eine große Hilfe:
http://www.ossi-industries.de/document/fritzdsl_rh73.html
http://www.adsl4linux.de/howtos/rp-pppoe.php?PROVIDER=Hansenet&DIST=RH80 bzw. http://www.adsl4linux.de/howtos/
Probleme
Fritz Treiber kompiliert nicht mit neuerer 2.4er Kernelversion
Nach meinem Umstieg zu gentoo Linux und einem Kernelupgrade auf die Version 2.4.25 habe ich festgestellt, dass der Fritztreiber beim Aufruf von make nicht mehr kompiliert. Die Meldung lautete bei mir im Detail:
fritz $ make (cd src.drv; make CARD=fcdslsl) make[1]: Entering directory `/home/martin/archiv/dsl/fritz/src.drv' gcc -c -DMODULE -D__KERNEL__ -DNDEBUG -D__fcdslsl__ -DTARGET=\"fcdslsl\" -O2 -Wall -I /lib/modules/`uname -r`/build/include main.c -o main.o In file included from /lib/modules/2.4.25-gentoo/build/include/linux/spinlock.h:7, from /lib/modules/2.4.25-gentoo/build/include/linux/wait.h:16, from /lib/modules/2.4.25-gentoo/build/include/linux/fs.h:12, from /lib/modules/2.4.25-gentoo/build/include/linux/capability.h:17, from /lib/modules/2.4.25-gentoo/build/include/linux/binfmts.h:5, from /lib/modules/2.4.25-gentoo/build/include/linux/sched.h:9, from /lib/modules/2.4.25-gentoo/build/include/asm/uaccess.h:8, from main.c:28: /lib/modules/2.4.25-gentoo/build/include/asm/system.h: In function `__set_64bit_var': /lib/modules/2.4.25-gentoo/build/include/asm/system.h:192: warning: dereferencing type-punned pointer will break strict-aliasing rules /lib/modules/2.4.25-gentoo/build/include/asm/system.h:192: warning: dereferencing type-punned pointer will break strict-aliasing rules In file included from tools.h:30, from main.c:42: defs.h: At top level: defs.h:85: error: redefinition of `irqreturn_t' /lib/modules/2.4.25-gentoo/build/include/linux/interrupt.h:16: error: `irqreturn_t' previously declared here make[1]: *** [main.o] Error 1 make[1]: Leaving directory `/home/martin/archiv/dsl/fritz/src.drv' make: *** [drv] Error 2
Lösung: Wenn man sich die Datei fritz/src.drv/defs.h ansieht
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 0) typedef void irqreturn_t;
…so bemerkt man, dass in Zeile 84/85 je nach Kernelversion irqreturn_t definiert wird, was aber scheinbar auch schon in neueren 2.4er Kernelsourcen gemacht wird… deshalb habe ich bei mir an der Stelle KERNEL_VERSION(2, 4, 23) eingetragen – ich weiß jedoch nicht genau, ob die 2.4.23er Version auch wirklich die erste Version war, bei der die Definition bereits enthalten war, es war jedoch die erste, bei der ich das obige Problem beobachtet habe und das sich auf diesem Weg lösen ließ.
load-fcdslsl startet nicht auf Anhieb
Bisher konnte ich die Ursache noch nicht lokalisieren, seit bei mir gentoo Linux installiert ist muss ich jedoch load-fcdsl starten, stoppen und dann nochmals starten, damit alles funktioniert… vielleicht liegt es aber auch nur an lokalen Änderungen, die mir gerade nicht aufgefallen sind. Ich arbeite noch dran… zur Zeit werde ich jedoch sehr stark von meiner Diplomarbeit beansprucht. Wollte den Punkt nur erwähnen, vielleicht hilft das auch bei dem ein oder anderem.
Danke an…
Andreas Huppert für den Hinweis zum ppp-Kernelsupport
2.9.2003 – Martin Wojtczyk – Last updated: 27.3.2004