Für die Fritz!Card USB 2.0 gibt es aktuell keinerlei Treiber für Ubuntu 7.04.Die Sourcen von AVM sind leider auch auf einem sehr alten Stand und hören bei Suse 9.3 auf.Dazwischen hat sich am Kernel aber so viel geändert, dass sich diese Treiber mit einem Kernel 2.6.20 nicht übersetzen lassen
Es gibt einige Versuche im Web die Suse 9.3 Treiber unter Feisty zu übersetzen. Aber die Lösungen die ich gefunden habe sind alle Lückenhaft und funktionieren letztlich alle nicht
Es gibt unter Ubuntu einen Ansatz Treiber (Module) für nicht unter der GPL stehende Treiber anhzubieten. In linux-restricted-modules gibt es einige AVM Treiber, aber nicht für die Fritz!Card USB 2.0In dem Paket avm-fritz-kernel-source sind die Treiber für die Fritz!Card USB 2.0 auch nicht enthalten.Hier gibt es nur die Fritz!Card USB (1.0)
Ubuntu hochfahren und Terminalfenster öffnen# tail -f /var/log/messages
Dann die Fritz!Card USB 2.0 einstecken.
May 4 16:00:44 localhost kernel: [ 107.616000] usb 2-1: new full speed USB device using uhci_hcd and address 2
May 4 16:00:44 localhost kernel: [ 107.796000] usb 2-1: configuration #1 chosen from 2 choices
Immerhin von Seiten USB wird eine Karte erkannt aber mehr auch nicht.
Siehe: www.ubuntu-forum.de/thread.php
Auch lsusb zeigt die Karte korrekt an:
# lsusb
Bus 002 Device 002: ID 057c:1000 AVM GmbH
Also versuchen wir es selbst
Kernel
Wir benötigen einen Kernel mit ISDN Support. Das prüfen wir im Editor via
# joe /usr/src/linux
#
# ISDN subsystem
#
CONFIG_ISDN=m
#
# Old ISDN4Linux
#
# CONFIG_ISDN_I4L is not set
#
# CAPI subsystem
#
CONFIG_ISDN_CAPI=m
CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
CONFIG_CAPI_TRACE=y
CONFIG_ISDN_CAPI_MIDDLEWARE=y
CONFIG_ISDN_CAPI_CAPI20=m
CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
CONFIG_ISDN_CAPI_CAPIFS=m
Wenn diese Angaben differieren müssen wir einen passenden Kernel bauen
Wir installieren diese Pakete
# sudo apt-get install isdnutils-base isdnutils
# sudo apt-get install capiutils pppdcapiplugin isdnactivecards
libcapi20-3 libcapi20-dev
# sudo apt-get install ppp pppstatus
Das sollte alles fehlerfrei durchlaufen.
Ich bekam "Fehler:mount: unknown filesystem type 'capifs'"
Ich habe kein ISDN in meinem Kernel konfiguriert. Also erst mal einen neuen Kernel bauen...
Wir besorgen uns die letzten AVM Treiber für die Fritz!Card USB 2.0
# cd /home/thomas/install/fritzcard/fritzcard.usb2/
# wget ftp://ftp.avm.de/cardware/fritzcrdusb.v20/linux/suse.93/fcusb2-suse93-3.11-07.tar.gz
# tar xzfv fcusb2-suse93-3.11-07.tar.gz
# mv fritz fcusb2-suse93-3.11-07
# cd fcusb2-suse93-3.11-07
Ich habe basierend auf den letzten Stand von AVM fcusb2-suse93-3.11-07.tar.gz die Unterschiede als Patch / Diff Dateien erstellt.
Siehe Download
Wer diese Patches einspielt, braucht die folgenden manuellen Änderungen nicht vorzunehmen.
Der erste Fehler bezieht sich auf tools.h:74:
Fehler:
expected identifier or »(« before »typeof« Dieser Fehler ist bekannt.Wir editieren die Datei
# joe src/tools.h
Alter Stand:
static inline unsigned long atomic_xchg (
volatile atomic_t * v,
unsigned value
) {
return __xchg (value, &v->counter, sizeof (unsigned));
} /* atomic_xchg */
Neuer Stand (wir kommentieren nur diese Zeilen aus)
/* static inline unsigned long atomic_xchg (
volatile atomic_t * v,
unsigned value
) {
return __xchg (value, &v->counter, sizeof (unsigned));
}*/ /* atomic_xchg */
Der zweite Fehler bezieht sich auf: driver.h:28:26: error: linux/config.h: No such file or directory
Wir editieren die Datei:
# joe src/driver.h
Alter Stand:
#include <linux/config.h>
Neuer Stand
#include <linux/autoconf.h>
Der dritte Fehler bezieht sich auf: main.c:85: Fehler: unbekanntes Feld »owner« in Initialisierung angegeben Dieser Fehler ist ebenso bekannt.Wir editieren die Datei:
# joe src/main.c
Alter Stand:
struct usb_driver usb_driver = {
.owner = THIS_MODULE,
.name = TARGET,
.id_table = usb_id_table,
.probe = usb_probe,
.disconnect = usb_disconnect,
} ;
Neuer Stand (wir kommentieren eine Zeile aus)
struct usb_driver usb_driver = {
/* .owner = THIS_MODULE, */
.name = TARGET,
.id_table = usb_id_table,
.probe = usb_probe,
.disconnect = usb_disconnect,
} ;
Der vierte Fehler bezieht sich auf: driver.c:792:53: error: macro "INIT_WORK" passed 3 arguments, but takes just 2 Für diesen Fehler habe ich keine Lösung gefunden. Ich habe daraufhin den Quellcode der Fritz!Card USB aus dem Ubuntu Paket avm-fritz-kernel-source mit der entsprechenden Stellen verglichen und kam zur folgenden LösungWir editieren die Datei:
# joe src/main.c
Alter Stand:
INIT_WORK (&closing_work, closing_worker, capi_card);
Neuer Stand (der letzte Parameter entfällt)
INIT_WORK (&closing_work, closing_worker);
Jetzt sollte sich der Sourcecode mit einigen Warnungen übersetzen lassen.# cd /home/thomas/install/fritzcard/fritzcard.usb2/fcusb2-suse93-3.11-07/
# sudo make clean
# sudo make
...
make[2]: Verlasse Verzeichnis '/usr/src/linux-source-2.6.20r21'
make[1]: Verlasse Verzeichnis '/home/thomas/install/fritzcard/fritzcard.usb2/fcusb2-suse93-3.11-07/src'
Die Installation sollte auch funktionieren:
# sudo make install
Wir aktualisieren noch die Liste der Module
# sudo depmod
Wir müssen nun noch in der /etc/isdn/capi.conf die Frit!Card USB 2.0 eintragen# joe /etc/isdn/capi.conf
Für eine Fritz!Card USB 2.0# card file proto io irq mem cardnr options
fcusb2 /etc/isdn/fus2base.frm DSS1 - - - -
Für eine Fritz!Card USB 2.1# card file proto io irq mem cardnr options
fcusb2 /etc/isdn/fus3base.frm DSS1 - - - -
Wir starten den Rechner neu
# sudo shutdown now -r
Dann starten wir die capiutils neu:
# sudo /etc/init.d/capiutils restart
Achtung!!! Das führt zu einer Kernel Panic! Genaueres im nächsten Punkt!
Beim Beenden des Daemons /usr/sbin/capiinit in der /etc/init.d/capiutils kommt es zu einem Kernel Panic. Dieser ist auf zwei IBM Thinkpads (T42 / R52) nachvollziehbar.
Als Hack kann man in der /etc/init.d/capiutils die beiden Zeilen mit "$DAEMON stop" auskommentieren.
Das sieht dann so aus:
#!/bin/sh -e
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/capiinit
NAME=capiinit
DESC='ISDN CAPI Cards'
test -f $DAEMON || exit 0 # sanity check
. /lib/lsb/init-functions
if [ -f /etc/default/capiutils ]; then
. /etc/default/capiutils
fi
mkcapidev()
{
if [ ! -e /dev/capi20 ]; then
mknod -m 660 /dev/capi20 c 68 0
chown root:dialout /dev/capi20
fi
}
mountcapifs()
{
if grep -q '/dev devfs rw' /proc/mounts; then
return
fi
if [ -e /dev/.devfsd ]; then
modprobe capifs
fi
if grep -q '^capifs /dev/capi ' /proc/mounts; then
return
fi
rm -rf /dev/capi
mkdir -m 755 /dev/capi
mount -t capifs -omode=0666 capifs /dev/capi
}
umountcapifs()
{
if ! grep -q '^capifs /dev/capi ' /proc/mounts; then
return
fi
umount /dev/capi
if ! grep -q '^capifs ' /proc/mounts; then
rmmod capifs 2>/dev/null || true
fi
}
case "$1" in
start)
mkcapidev
mountcapifs
if grep -Evq '^ *$|^ *#' /etc/isdn/capi.conf; then
# assume AVM driver
log_begin_msg "Starting $DESC..."
$DAEMON start
log_end_msg $?
elif [ -n "$MISDN_DRIVER" ]; then
# assume mISDN driver
modprobe capi
log_begin_msg "Loading mISDN..."
for m in $MISDN_MODULES; do
modprobe $m || true
done
modprobe $MISDN_DRIVER || true
log_end_msg $?
fi
;;
stop)
if [ -d /proc/capi ]; then
if grep -Evq '^ *$|^ *#' /etc/isdn/capi.conf; then
log_begin_msg "Stopping $DESC :"
#Kernel Panic!!!
#$DAEMON stop
log_end_msg $?
fi
if [ -n "$MISDN_DRIVER" ]; then
modprobe -r ${MISDN_DRIVER%% *}
for m in $MISDN_MODULES; do ms="$m $ms"; done
for m in $ms; do
modprobe -r $m || true
done
fi
fi
umountcapifs
exit 0
;;
reload|restart|force-reload)
# reload doesn't really work here...
if [ -d /proc/capi ]; then
if grep -Evq '^ *$|^ *#' /etc/isdn/capi.conf; then
log_begin_msg "Restarting $DESC :"
#Kernel Panic!!!
#$DAEMON stop
fi
fi
mkcapidev
mountcapifs
if grep -Evq '^ *$|^ *#' /etc/isdn/capi.conf; then
$DAEMON start
log_end_msg $?
elif [ -n "$MISDN_DRIVER" ]; then
# assume mISDN driver
log_begin_msg "Loading mISDN..."
modprobe capi
for m in $MISDN_MODULES; do
modprobe $m || true
done
modprobe $MISDN_DRIVER || true
log_end_msg $?
fi
;;
*)
log_success_msg "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}"
exit 1
;;
esac
exit 0
Zitat von hier:
wiki.ubuntuusers.de/CapiSuite
Um aus OpenOffice.org heraus faxen zu können, muss man mit Hilfe des Programms /usr/lib/openoffice/program/spadmin einen neuen Fax-Drucker konfigurieren. Im spadmin-Fenster also "Neuer Drucker" auswählen, dann "eine Faxlösung anbinden", "der Standardtreiber", und dann folgendes als Kommandozeile angeben:/usr/bin/capisuitefax -q -d "(PHONE)" "(TMP)"
Dann noch einen Namen für den Drucker vergeben, und "Fertig stellen"Anmerkung: Ich dachte man könne die Faxnummer in der fax.conf leer lassen, wenn man nicht empfangen will. Aber das geht nicht, denn dann ist der Faxversand nicht erlaubt. Ich habe deswegen eine ungültige Faxnummer eingegeben:
[thomas]
# Leere Nummer geht nicht!!!
fax_numbers="0190999999"
fax_stationID="+49 30 000000"
fax_headline="Fax von Anja & Thomas"
fax_email=""
fax_action="MailAndSave"