Capio auf der FritzBox

Hallo zusammen,

bin etwas spät auf diesen Thread gestoßen, möchte euch aber meine Erkentnisse zu dem Thema nicht vorenthalten ;-) Die ganze "NetCAPI" Sache ist eine Implementierung mit dem CMTP (CAPI Message Transfer Protocol). Die komplette Implementierung wiederrum findet man in den Linux-Kernel Sourcen (einfach mal Dateien suchen die mit cmtp anfangen). Das Problem hier ist, dass das ganze momentan so implementiert ist, dass nur Bluetooth als Transport-Träger unterstützt wird. Das ganze müsste also entsprechend auf Ethernet portiert werden.
Ich habe hierzu auch mal mit einem der Bluetooth-Maintainer kontakt gehabt und er meinte, es wäre theoretisch nicht so mega schwer, aber er hätte jetzt auch nicht so die Zeit dafür... und mit der mISDN-Implementierung die irgendwann mal kommen solle, wäre das soviel einfacher, da könne er dass dann mitmachen.
Das ist mein letzter Stand...
Vielleicht könnt ihr also die Kernel-Implementierung für eure Zwecke nutzen. Lizenzfrage stellt sich hier dann ja auch nicht ;-)

Edit: Die Sourcen sind im Linux-Kernel unter /net/bluetooth/cmtp zu finden.
 
Zuletzt bearbeitet:
@laland:
Die Anzahl der Controller bekommt man über den CAPI20_GET_PROFILE() Befehl. Ctrl muss dafür auf 0 gesetzt sein, um die komplette Anzahl zu ermitteln. Siehe auch hier.

@prodigy:
ich erinnere mich. Wir hatten auch mal drüber gesprochen ;)
Ein Kernel-Modul wäre natürlich das Optimum. Leider bin ich da noch nicht so fit drin, deswegen habe erstmal die libcapi20.so Variante im User-Mode gewählt. Die Controller werden in der libcapi20 "virtuell" angehängt. 10, bzw. 5 falls kein lokales CAPI besteht. ISDN Module (isdn.ko, capidrv.ko, etc.) müssen dafür nicht geladen werden.
 
@prodigy:
ich erinnere mich. Wir hatten auch mal drüber gesprochen ;)
Ein Kernel-Modul wäre natürlich das Optimum. Leider bin ich da noch nicht so fit drin, deswegen habe erstmal die libcapi20.so Variante im User-Mode gewählt. Die Controller werden in der libcapi20 "virtuell" angehängt. 10 bzw. 5 falls kein lokales CAPI besteht.
Ich bin auch nicht so der C/C++ Freak wie du, aber guck mal rein in die Sourcen. Soweit ich das beurteilen kann, sind die Happen, die euch interessieren könnten, relativ leicht verdaulich von der Menge ;-)
Ich denke, wenn es nicht als Kernel-Modul läuft, wäre es auch nicht so schlimm. Wenn es auf verschiedene Systeme portierbar wäre, wäre das "netter".
 
Hi prodigy,

habe mal den aktuellen Source angehangen. Nicht richtig viel getestet, aber lauffähig. Ein Fax habe ich auch noch nicht übertragen.

Der capiinfo auf der FB gibt mir folgendes aus (Loopback auf den eigenen CAPI-over-TCP ;)):
Code:
CAPI manufacturer: AVM Berlin
CAPI version: 2.0 49.23
CAPI serial: 0004711

10 controllers found, enumerating...

Controller 1:
	manufacturer: AVM Berlin
	CAPI version: 2.0 49.23
	CAPI serial: 0000000
	featuring global options:
		Internal controller
		DTMF
		Supplementary services
		Channel allocation

	2 B-channels featuring
	B1 protocols:
		64 kbits/s with HDLC framing
		64 kbits/s transparent operation with byte framing from network
		V.110 synchronous operation with HDLC framing
		T.30 modem for Group 3 fax
		reserved 10
		reserved 11
		reserved 12
		reserved 13
		reserved 31

	B2 protocols:
		ISO 7776 (X.75 SLP)
		Transparent
		T.30 for Group 3 fax

	B3 protocols:
		Transparent
		T.30 for Group 3 fax

	manufacturer specific information:
	01 00 00 01 00 02 00 00 00 00 00 00 00 00 00 00 ................
	00 00 00 00                                     ....            

Controller 2:
	manufacturer: AVM Berlin
	CAPI version: 2.0 49.23
	CAPI serial: 0000000
	featuring global options:
		Internal controller
		DTMF
		Supplementary services
		Channel allocation

	2 B-channels featuring
	B1 protocols:
		64 kbits/s with HDLC framing
		64 kbits/s transparent operation with byte framing from network
		V.110 synchronous operation with HDLC framing
		T.30 modem for Group 3 fax
		reserved 10
		reserved 11
		reserved 12
		reserved 13
		reserved 31

	B2 protocols:
		ISO 7776 (X.75 SLP)
		Transparent
		T.30 for Group 3 fax

	B3 protocols:
		Transparent
		T.30 for Group 3 fax

	manufacturer specific information:
	01 00 00 01 00 02 00 00 00 00 00 00 00 00 00 00 ................
	00 00 00 00                                     ....            

Controller 3:
	manufacturer: AVM Berlin
	CAPI version: 2.0 49.23
	CAPI serial: 0000000
	featuring global options:
		Internal controller
		DTMF
		Supplementary services
		Channel allocation

	2 B-channels featuring
	B1 protocols:
		64 kbits/s with HDLC framing
		64 kbits/s transparent operation with byte framing from network
		V.110 synchronous operation with HDLC framing
		T.30 modem for Group 3 fax
		reserved 10
		reserved 11
		reserved 12
		reserved 13
		reserved 31

	B2 protocols:
		ISO 7776 (X.75 SLP)
		Transparent
		T.30 for Group 3 fax

	B3 protocols:
		Transparent
		T.30 for Group 3 fax

	manufacturer specific information:
	01 00 00 00 20 02 00 00 00 00 00 00 00 00 00 00 .... ...........
	00 00 00 00                                     ....            

Controller 4:
	manufacturer: AVM Berlin
	CAPI version: 2.0 49.23
	CAPI serial: 0000000
	featuring global options:
		Internal controller
		DTMF
		Supplementary services
		Channel allocation

	1 B-channels featuring
	B1 protocols:
		64 kbits/s with HDLC framing
		64 kbits/s transparent operation with byte framing from network
		V.110 synchronous operation with HDLC framing
		T.30 modem for Group 3 fax
		reserved 10
		reserved 11
		reserved 12
		reserved 13
		reserved 31

	B2 protocols:
		ISO 7776 (X.75 SLP)
		Transparent
		T.30 for Group 3 fax

	B3 protocols:
		Transparent
		T.30 for Group 3 fax

	manufacturer specific information:
	01 00 00 00 40 02 00 00 00 00 00 00 00 00 00 00 ....@...........
	00 00 00 00                                     ....            

Controller 5:
	manufacturer: AVM Berlin
	CAPI version: 2.0 49.23
	CAPI serial: 0000000
	featuring global options:
		Internal controller
		DTMF
		Supplementary services
		Channel allocation

	3 B-channels featuring
	B1 protocols:
		64 kbits/s with HDLC framing
		64 kbits/s transparent operation with byte framing from network
		V.110 synchronous operation with HDLC framing
		T.30 modem for Group 3 fax
		reserved 10
		reserved 11
		reserved 12
		reserved 13
		reserved 31

	B2 protocols:
		ISO 7776 (X.75 SLP)
		Transparent
		T.30 for Group 3 fax

	B3 protocols:
		Transparent
		T.30 for Group 3 fax

	manufacturer specific information:
	01 00 00 00 80 02 00 00 00 00 00 00 00 00 00 00 ................
	00 00 00 00                                     ....            

Controller 6:
	manufacturer: AVM 000
	CAPI version: 2.0 0.1
	CAPI serial: 0004711
	featuring global options:
		Internal controller
		DTMF
		Supplementary services
		Channel allocation

	2 B-channels featuring
	B1 protocols:
		64 kbits/s with HDLC framing
		64 kbits/s transparent operation with byte framing from network
		V.110 synchronous operation with HDLC framing
		reserved 10
		reserved 11
		reserved 12
		reserved 13
		reserved 31

	B2 protocols:
		ISO 7776 (X.75 SLP)
		Transparent

	B3 protocols:
		Transparent

	manufacturer specific information:
	01 00 00 01 00 02 00 00 00 00 00 00 00 00 00 00 ................
	00 00 00 00                                     ....            

Controller 7:
	manufacturer: AVM 711
	CAPI version: 2.0 0.1
	CAPI serial: 0004711
	featuring global options:
		Internal controller
		DTMF
		Supplementary services
		Channel allocation

	2 B-channels featuring
	B1 protocols:
		64 kbits/s with HDLC framing
		64 kbits/s transparent operation with byte framing from network
		V.110 synchronous operation with HDLC framing
		reserved 10
		reserved 11
		reserved 12
		reserved 13
		reserved 31

	B2 protocols:
		ISO 7776 (X.75 SLP)
		Transparent

	B3 protocols:
		Transparent

	manufacturer specific information:
	01 00 00 01 00 02 00 00 00 00 00 00 00 00 00 00 ................
	00 00 00 00                                     ....            

Controller 8:
	manufacturer: AVM 711
	CAPI version: 2.0 0.1
	CAPI serial: 0004711
	featuring global options:
		Internal controller
		DTMF
		Supplementary services
		Channel allocation

	2 B-channels featuring
	B1 protocols:
		64 kbits/s with HDLC framing
		64 kbits/s transparent operation with byte framing from network
		V.110 synchronous operation with HDLC framing
		reserved 10
		reserved 11
		reserved 12
		reserved 13
		reserved 31

	B2 protocols:
		ISO 7776 (X.75 SLP)
		Transparent

	B3 protocols:
		Transparent

	manufacturer specific information:
	01 00 00 00 20 02 00 00 00 00 00 00 00 00 00 00 .... ...........
	00 00 00 00                                     ....            

Controller 9:
	manufacturer: AVM 711
	CAPI version: 2.0 0.1
	CAPI serial: 0004711
	featuring global options:
		Internal controller
		DTMF
		Supplementary services
		Channel allocation

	1 B-channels featuring
	B1 protocols:
		64 kbits/s with HDLC framing
		64 kbits/s transparent operation with byte framing from network
		V.110 synchronous operation with HDLC framing
		reserved 10
		reserved 11
		reserved 12
		reserved 13
		reserved 31

	B2 protocols:
		ISO 7776 (X.75 SLP)
		Transparent

	B3 protocols:
		Transparent

	manufacturer specific information:
	01 00 00 00 40 02 00 00 00 00 00 00 00 00 00 00 ....@...........
	00 00 00 00                                     ....            

Controller 10:
	manufacturer: AVM 711
	CAPI version: 2.0 0.1
	CAPI serial: 0004711
	featuring global options:
		Internal controller
		DTMF
		Supplementary services
		Channel allocation

	3 B-channels featuring
	B1 protocols:
		64 kbits/s with HDLC framing
		64 kbits/s transparent operation with byte framing from network
		V.110 synchronous operation with HDLC framing
		reserved 10
		reserved 11
		reserved 12
		reserved 13
		reserved 31

	B2 protocols:
		ISO 7776 (X.75 SLP)
		Transparent

	B3 protocols:
		Transparent

	manufacturer specific information:
	01 00 00 00 80 02 00 00 00 00 00 00 00 00 00 00 ................
	00 00 00 00                                     ....
capiinfo unter einem i686-Linux gibt manchmal ein segfault aus - Anwendungen scheinen aber zu laufen.

Die Adresse und der Port sind hart gecoded und stehen in der capi20_tcp_fb.c:
Code:
...
const int CAPI20_FB_TCP_DEFAULT_PORT = 5031;
const char* CAPI20_FB_TCP_DEFAULT_IP = "192.168.178.1";
...

Datei wäre natürlich schöner...

EDIT:
Habe es mal mit CapiFaxSp probiert. Funktioniert auch. Die alte Fax-Problematik bleibt natürlich, was zu erwarten war.
Besteht an der Weiterentwicklung überhaupt Interesse? Ansonsten belasse ich es dabei.... Wäre natürlich schön, wenn sich ein paar Leute mehr daran wagen würden. Irgendwie ist man hier (leider) oft Einzelkämpfer :(
 

Anhänge

  • libcapi-2.0_fb-0.1.tar.gz
    36.1 KB · Aufrufe: 30
Zuletzt bearbeitet:
capiinfo unter einem i686-Linux gibt manchmal ein segfault aus - Anwendungen scheinen aber zu laufen.

Bei mir gibt es immer einen segfault (capiinfo auf meinem lokalen Rechner). Grund dafür ist, dass capiinfo die Funktion capi20_waitformessage mit einer 0 statt mit gültiger struct timeval aufruft (was wohl so auch OK ist). Das führt dann zum segfault beim ersten Zugriff auf TimeOut->tv_sec in Deiner capi20.c.

Ich habe mal einen Check auf Nullpointer in die Funktion eingebaut, jetzt läuft zumindest capiinfo sauber durch.

Habe es mal mit CapiFaxSp probiert. Funktioniert auch. Die alte Fax-Problematik bleibt natürlich, was zu erwarten war.
Besteht an der Weiterentwicklung überhaupt Interesse? Ansonsten belasse ich es dabei.... Wäre natürlich schön, wenn sich ein paar Leute mehr daran wagen würden. Irgendwie ist man hier (leider) oft Einzelkämpfer :(

Interesse besteht auf alle Fälle. Und zwar genau um CapiFaxSp auf einer standard Fritzbox ohne Installation von rcapid zum Laufen zu bekommen.

Bei mir läuft CapiFaxSp leider nicht, sondern produziert munter segfaults. Habe aber noch nicht weiter mit gdb nachschauen können, wo die herkommen.

Wenn Du Hilfe beim Testen brauchst, sag' einfach bescheid. Zeit ist allerdings momentan leider ein Problem bei mir.

Gruß, JanO
 
@laland:
Die Anzahl der Controller bekommt man über den CAPI20_GET_PROFILE() Befehl. Ctrl muss dafür auf 0 gesetzt sein, um die komplette Anzahl zu ermitteln. Siehe auch hier.

Okay, das habe ich jetzt verstanden. Aber wie verschicke ich diesen GET_PROFILE-Request? In den Capi-PDFs wurde er zwar erwähnt, jedoch fand ich keine Informationen über den Coammand, Subcommand, den ich in so einer Message verwendet muss. :(
 
onaj schrieb:
Bei mir gibt es immer einen segfault (capiinfo auf meinem lokalen Rechner). Grund dafür ist, dass capiinfo die Funktion capi20_waitformessage mit einer 0 statt mit gültiger struct timeval aufruft (was wohl so auch OK ist). Das führt dann zum segfault beim ersten Zugriff auf TimeOut->tv_sec in Deiner capi20.c.
Ohja... jetzt wo du es sagst. Das timeval struct darf bei dem select() ruhig NULL sein, da es dann für immer wartet. Nur wenn man lokal und remote capi gleichzeitig ansprechen möchte, sollte es nicht NULL sein. wait_for_message() darf nicht zu lange warten, da sonst der eine select() den anderen blockieren könnte. Deswegen hatte ich timeval auf 1ms gesetzt, egal welcher Wert übergeben wird (außer tv_sec = 0, tv_usec = 0). Werde auch auf Null-Pointer prüfen... Danke :)

onaj schrieb:
Bei mir läuft CapiFaxSp leider nicht, sondern produziert munter segfaults. Habe aber noch nicht weiter mit gdb nachschauen können, wo die herkommen.

Wenn Du Hilfe beim Testen brauchst, sag' einfach bescheid. Zeit ist allerdings momentan leider ein Problem bei mir.
Bei mir läuft es (libtiff 3.8.2, spandsp-pre7), bricht aber nach ca. 64 kb ab. Das war aber schon auf der FB so. Liegt daran, dass die capi-Pakete verfälscht werden und so Schrott empfangen wird :(. Bei Audioübertragung fällt das nicht auf, aber bei einem Fax darf sowas nicht passieren.

Werde auf dein Angebot, bzgl. testen, zurückkommen (du wirst ja sehen, wenn ich was poste ;)). Zeitlich ist das bei mir auch immer so eine Sache... Viel muss an der libcapi20 eigentlich nicht mehr gemacht werden. Eine Konfig-Datei fehlt noch und eventuell ein paar Bugfixes/Optimierungen...

laland schrieb:
Aber wie verschicke ich diesen GET_PROFILE-Request? In den Capi-PDFs wurde er zwar erwähnt, jedoch fand ich keine Informationen über den Coammand, Subcommand, den ich in so einer Message verwendet muss.
Man könnte sich an ETSI orientieren.
Aber das halte ich für sehr mühselig. In der libcapi20 werden die Informationen aus einem _cmsg struct generiert und an die Funktionen weitergereicht, um das Ganze etwas einfacher zu machen (capifuncs.c). Dort findest du auch die entsprechenden Hex-Werte.
Z.B. ein CONNECT_REQ erstellt einen Header (Cmd: 0x02, SubCmd:0x80) und befüllt cmsg mit den jew. Infos (CalledParty, CallingParty, etc...). Am Ende wird die Funktion capi_put_cmsg aufgerufen, welche aus einem _cmsg struct ein byte array macht und an die Funktion CAPI_PUT_MESSAGE() übergibt.
 
Zuletzt bearbeitet:
Habe jetzt mal faxen unter Linux mit CapiSpFax und Remote-CAPI getestet. Es läuft zumindest etwas zuverlässiger als auf der FB (so der Eindruck). Mit 14400bps hatte ich die besten Ergebnisse erzielt. Ein 10-seitiges Fax kam ohne Probleme durch.

IP und Port kann man über Environment Variablen einstellen:
Code:
export FB_REMOTE_CAPI_IP=192.168.178.1
export FB_REMOTE_CAPI_PORT=5031
./CapiSpFax -v -i 12345 -r ./

EDIT:

CapiSpFax-i386_mod1:
- Prozess-Priorität wird erhöht beim Senden und Empfangen
- Hilfe mit -h oder -?
- Controller kann ausgewählt werden (-cX, X = CAPI-Controller, default: 1)
- ECM ist standardmäßig aus (kann mit -e aktiviert werden)

Ergänzend sei gesagt, das Empfang und Versand recht problemlos verläuft. Ich habe zwischen GMX-Fax<->CapiSpFax und Fritz!Fax<->CapiSpFax getestet (14400bps). Es kommt schon vor, dass ein Fax abbricht, aber das passiert auch schon mal mit Fritz!Fax. Es hängt auch viel von der aktuellen Rechner-Auslastung ab. Wenn es bei der TCP-Verbindung zu Aussetzern kommt, kann man nichts machen. Deswegen auch der "Prozess-Boost" bei der Version ;)
Zudem kommen noch Störungen, die durch die CAPI übertragen werden. Diese scheinen aber nicht großartig ins Gewicht zu fallen.
 

Anhänge

  • libcapi-2.0_fb-0.2.tar.gz
    36.4 KB · Aufrufe: 55
  • CapiSpFax-i386_mod1.tar.gz
    2.7 MB · Aufrufe: 61
Zuletzt bearbeitet:
Hi bodega,

ich bin immer wieder erstaunt, was Du da alles so zauberst.

Hab mal zwei kleine Patches gemacht:
1. für libcapi: musste die capi20.h aus diesem capi-Paket nehmen, damit es kompiliert. Weiterhin hab ich das Makefile so geändert, dass die Libraries in /usr/lib und die Header-Dateien in /usr/include installiert werden.
2. Habe LocalHeaderInfo in CapiSpFax hinzugefügt. Dies war reines Copy&Paste von cjp's Änderungen.

EDIT:
Leider krieg ich es aber nicht zum Laufen.
Bei capiinfo sehe ich aus Ausgabe:
capiinfo
Number of Controllers : 0
could not register - (0x1008)

Und bei CapiSpFax nur: "CAPI not installed!"

Aber die libs und /dev/capi20 sind da:
ll /usr/lib/libcapi*
lrwxrwxrwx 1 root root 25 2008-04-29 09:45 /usr/lib/libcapi20_remote.so.3 -> libcapi20_remote.so.3.0.4
-rw-r--r-- 1 root root 23148 2008-04-29 09:47 /usr/lib/libcapi20_remote.so.3.0.4
lrwxrwxrwx 1 root root 25 2008-04-29 14:18 /usr/lib/libcapi20.so.3 -> libcapi20_remote.so.3.0.4
-rw-r--r-- 1 root root 31184 2008-04-04 23:07 /usr/lib/libcapi20.so.3.0.4

EDIT 2: Scheint daran zu liegen, dass ich kein /dev/rcapi20 habe. Wie muss man das mit mknod anlegen? Welche Werte genau?

Beste Grüße,
Whoopie
 

Anhänge

  • libcapi20.patch.txt
    3.9 KB · Aufrufe: 15
  • capi_fax.patch.txt
    3.8 KB · Aufrufe: 10
Zuletzt bearbeitet:
Hi Whoopie,

die libcapi20.so ist so angepasst, dass kein /dev/rcapi20 benötigt wird.
/dev/capi20 wird eigentlich auch nicht benötigt. Wenn man den dennoch hat, werden bei installierter ISDN-Karte gleich 10 Controller angezeigt.

Man muss so fragen:
1. Ist der Capi-over-TCP auf der Fritz!Box eingeschaltet?
Aus: #96*2* / An: #96*3*
Auf Console: ps eingeben und nach capiotcp schauen...
2. Hat deine FB eine andere IP-Adresse, bzw. läuft der capiotcp auf einen anderen Port? Das kann man mit den Exports abändern.
3. Ist CapiSpFax auch gegen -lcapi20 gelinkt worden?? Nicht gegen die libcapi20_remote.so linken, falls das überhaupt geht?! Bin da jetzt nicht sicher. Mit 'ldd CapiSpFax' kannst du das erkennen.

Also vielleicht nochmal kurz erklärt:
Die libcapi20.so läuft mit dem capiotcp-Server von AVM. Nicht mit dem rcapid. Diesen braucht man dafür auch nicht auf der FB installiert haben. Es ist auch nicht nötig auf Linux-Seite die Module, wie capidrv.ko, etc. zu laden, wenn man keine ISDN-Karte installiert hat.

EDIT:
In der capi20.h scheint wohl der #include auf die stdlib.h zu fehlen. Alles andere ist ähnlich. Bei mir hat er deswegen aber nicht gemeckert. Werde es trotzdem übernehmen. Das Makefile installiert die *.h Files falsch, was Linux-User aber nicht abschrecken sollte ;) - danke für die Patches :)
 
Zuletzt bearbeitet:
Hi,

aber libcapi20.so will unbedingt /dev/rcapi20. Die Libraries und CapiSpFax ist ordnungsgemäß kompiliert und es sieht gut aus mit "ldd". Auch läuft der Capi-over-TCP-Server auf Port 5031, die IP hab ich im Source geändert.

Code:
whoopie@notebook:~$ sudo strace ./CapiSpFax -d 1234567
execve("./CapiSpFax", ["./CapiSpFax", "-d", "1234567", "-t", "fax.tif"], [/* 16 vars */]) = 0
brk(0)                                  = 0x8050000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb806e000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=78320, ...}) = 0
mmap2(NULL, 78320, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb805a000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libcapi20.so.3", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\23\0\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=23148, ...}) = 0
mmap2(NULL, 34368, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb8051000
mmap2(0xb8056000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5) = 0xb8056000
mmap2(0xb8057000, 9792, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb8057000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libtiff.so.4", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20J\0\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=335512, ...}) = 0
mmap2(NULL, 339456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7ffe000
mmap2(0xb804f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x50) = 0xb804f000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libspandsp.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\276"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=594184, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ffd000
mmap2(NULL, 600564, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f6a000
mmap2(0xb7ff9000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8e) = 0xb7ff9000
mmap2(0xb7ffc000, 2548, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7ffc000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libstdc++.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`*\4\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=970680, ...}) = 0
mmap2(NULL, 993036, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e77000
mmap2(0xb7f5f000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe8) = 0xb7f5f000
mmap2(0xb7f64000, 22284, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f64000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@4\0\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=149328, ...}) = 0
mmap2(NULL, 147584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e52000
mmap2(0xb7e75000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23) = 0xb7e75000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\31\0\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=42700, ...}) = 0
mmap2(NULL, 41700, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e47000
mmap2(0xb7e51000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa) = 0xb7e51000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260e\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1364388, ...}) = 0
mmap2(NULL, 1369712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7cf8000
mmap2(0xb7e41000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x149) = 0xb7e41000
mmap2(0xb7e44000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7e44000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libjpeg.so.62", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260&\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=125316, ...}) = 0
mmap2(NULL, 128152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7cd8000
mmap2(0xb7cf7000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e) = 0xb7cf7000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libz.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\31\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=81240, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7cd7000
mmap2(NULL, 83968, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7cc2000
mmap2(0xb7cd6000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13) = 0xb7cd6000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7cc1000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7cc16c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb7e41000, 4096, PROT_READ)   = 0
mprotect(0xb7f5f000, 12288, PROT_READ)  = 0
munmap(0xb805a000, 78320)               = 0
setpriority(PRIO_PROCESS, 0, -10)       = 0
open("/dev/rcapi20", O_RDWR)            = -1 ENOENT (No such file or directory)
write(2, "CAPI not installed!\n", 20CAPI not installed!
)   = 20
exit_group(1)                           = ?
Process 29190 detached

Beste Grüße,
Whoopie
 
Hi,
Ahh.. ich guck nicht richtig hin ;)
Code:
ll /usr/lib/libcapi*
lrwxrwxrwx 1 root root 25 2008-04-29 09:45 /usr/lib/libcapi20_remote.so.3 -> libcapi20_remote.so.3.0.4
-rw-r--r-- 1 root root 23148 2008-04-29 09:47 /usr/lib/libcapi20_remote.so.3.0.4
[COLOR="Red"]lrwxrwxrwx 1 root root 25 2008-04-29 14:18 /usr/lib/libcapi20.so.3 -> libcapi20_remote.so.3.0.4[/COLOR]
-rw-r--r-- 1 root root 31184 2008-04-04 23:07 /usr/lib/libcapi20.so.3.0.4
da sollte der Fehler liegen. Der Link müsste auf die /usr/lib/libcapi20.so.3.0.4 zeigen.
 
Aha, geht doch. ;) Super, werde meine Erfolge dann hier mitteilen.

Danke nochmal,
Whoopie

EDIT: Zu früh gefreut. capiinfo funktioniert 1x und dann stürzt capiotcp mit EPIPE ab. Ich häng mal den strace an.
EDIT 2: aber CapiSpFax bringt capiotcp nicht zum Abstürzen.
 

Anhänge

  • capiotcp-strace.txt
    20 KB · Aufrufe: 12
Zuletzt bearbeitet:
Ich glaube, das es an den verschiedenen Versionen von capiinfo liegt. Ich kann mit bestimmten CAPI-Commands den Server auch zum Absturz bringen. Das sollte mit der Lib wenig zu tun haben. Ein capi_get_profile liefert das Profil ordentlich zurück.
 
Welche capiinfo nutzt du? Ich hab die von ftp.melware.net/capi-utils genommen.

Grad nochmal getestet: auch die capiinfo aus dem isdn4linux-Paket bringt es zum Abstürz.
 
Zuletzt bearbeitet:
Hi Whoopie,

ich hatte es mit einer leicht modifizierten Version von spblinux getestet (auf der FB). Wenn man das isdn4linux-Paket verwendet, muss die Message-Sequenz ab FACILITY_REQ auskommentieren werden, dann läuft es. Das funktioniert anscheinend nicht über Remote-CAPI. Also alles von FACILITY_REQ_HEADER(&cmsg, ApplId, MsgId++, i); bis printf("\n"); auskommentieren. Wenn du möchtest, poste ich den Code.
 
Super, das geht jetzt prima.

Hab capiinfo-cm genutzt. Patch häng ich mal an, falls es jemand braucht.
 

Anhänge

  • capiinfo-cm.patch.txt
    3.1 KB · Aufrufe: 16
Super, geht doch :)

Ich schaue mal, dass ich die Sachen alle zusammentrage. libcapi20.so kann ja auf Mipsel und i386 laufen. Eine capi2032.dll wird wohl nicht nötig sein.
 
fax frust

Hallo,
ich warte bis die neue Firmware mit Faxfunktion spruchreif ist. Ich hoffe, daß irgendjemand bis dahin eine funktionierende Faxlösung für Linux gefunden hat, ohne irgendwas an der Fritzbox selbst zu machen. (Wird produktiv eingesetzt). habe gestern eine Email an AVM geschickt, ob die selber oder von einem Dritthersteller etwas wissen. Habe einen Hylafax-Server 24 Std am laufen und möchte eigentlich darauf verzichten. Ich finds irgendwie blamabel, daß es für MAC eine vermutlich stabile Lösung gibt. MAC ist von Linux nun auch nicht soweit entfernt.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.