Capio auf der FritzBox

Stimmt. Dies hier ist natürlich keine Lösung für Linux über Remote CAPI :gruebel:
Ich weiß allerdings nicht, was du uns wirklich sagen wolltest.

EDIT:
man sollte hier nie vergessen, dass in der FB nur eine passive ISDN Karte steckt. Das Faxsignal muss also per Software berechnet werden. Aus irgendeinem Grund läuft das auf der FB aber nicht so flüssig, wie unter Windows oder Linux.
 
Zuletzt bearbeitet:
..., daß es für MAC eine vermutlich stabile Lösung gibt. MAC ist von Linux nun auch nicht soweit entfernt.
Hallo, habe ich da etwas verpasst?
Ich suche nach einer Lösung für mein Apple Macbook (OS X 10.4.11). Danke!
 
Nun, wenn dies für den Mac geschafft haben, eine einfach zu installierende Software zu programmieren ohne in die Fritzbox einzugreifen,-- und ich, und andere auch, Linux-Fans sind, sollte jemand aus der Linuxgemeinde das auch fertig bekommen, sonst wärs für Linux blamabel.

Unter www.meilenstein.de gibts eine MAC Lösung für 15,--EUR
 
@schwable:
du hast dir diesen Thread anscheinend nicht richtig durchgelesen, ansonsten wüsstest du, dass es ohne Eingriffe unter Linux bereits funktioniert.

@ao:
Ich kenne mich leider mit MacOS überhaupt nicht aus. Die Sourcen zu libcapi20 findest du ja in diesem Thread. Das Schwierige wird wohl sein, spandsp für den MAC zu kompilieren (vielleicht aber auch nicht). Ausprobieren und 15¤ sparen, wenn es geht ;) - andere werden bestimmt dankbar dafür sein.
 
@schwable:
[offtopic]
Blamabel ist es wenn überhaupt für AVM, aber auch in dem Zusammenhang fände ich die Aussage nicht zutreffend. Ich wünsche mir von vielen Herstellern ein größeres Engagement im Linuxbereich, hier gibt es nicht nur bei AVM Versäumnisse. Aber angesichts dieser Tatsache freue ich mich um so mehr über die Leute die aktiv daran arbeiten diese Lücken in ihrer Freizeit zu schließen. An all diejenigen hier im Forum daher erstmal ein Danke.
[/offtopic]
 
@ao:
Ich kenne mich leider mit MacOS überhaupt nicht aus. Die Sourcen zu libcapi20 findest du ja in diesem Thread. Das Schwierige wird wohl sein, spandsp für den MAC zu kompilieren (vielleicht aber auch nicht). Ausprobieren und 15¤ sparen, wenn es geht ;) - andere werden bestimmt dankbar dafür sein.
Sehr gerne, wenn mir mal jemand von den OS X-Kennern einen Wink in die richtige Richtung geben könnte.
Die XCode-Tools habe ich installiert, aber wir es weitergeht, ist mir noch unklar. Ist das hier zu sehr OT? (sorry)
 
capifax v0.6 und libcapi20_fb v0.6

Schau mal hier.
Dort wird zumindest erklärt, wie man Unix/Linux Applikationen auf MacOS portiert. Ich denke, dass es dem Linux sehr ähnlich ist (da es ja auch darauf basiert).

Grundvoraussetzungen:
libcapi-2.0_fb-0.6.tar.gz
... v0.4:
- Patches von Whoopie eingebunden
- Beinhaltet Binaries für die Fritz!Box (/lib_mipsel) und für Linux (/lib_i386)
- Debug-Ausgabe (FB_REMOTE_CAPI_DEBUG=X. X=0-3)
- Remote-CAPI oder Device-CAPI kann abgeschaltet werden (FB_REMOTE_CAPI_TCP, FB_REMOTE_CAPI_DEV)
- Fix: ApplID war inkorrekt
- Fix: Verbindung nicht trennen bei capi20_release()
- Inkl. Source

v0.5:
- Projektmappe und Sourcen für Visual Studio C++ 2005 hinzugefügt.
- Standard-IP '192.168.178.1' auf Hostnamen 'fritz.box' geändert
- Fix: DISCONNECT nach Sende-Vorgang durchführen

v0.6:
- Fix: Local/Remote CAPI parallel
- Fix: Socket schließen bei CAPI_RELEASE
- 64-bit AMD Patch von buzz eingebunden
- MSG_PEEK Schleife rausgenommen

Faxen über Remote-CAPI:
capifax-0.6.tar.gz
... v0.5:
- Patches von zoolook eingebunden
- Projektmappen für Visual Studio C++ 2005 hinzugefügt.
- libcapifax: Progress-Event und Status-Event
- libcapifax: Parameter werden als Struct übergeben
- libcapifax: Anonymer Faxversand
- libcapifax: capifax_loop() kann im Thread ausgeführt werden, um mehrere Accounts zu registrieren (paralleles Empfangen/Senden)
- libcapifax: Manuelles Akzeptieren/Abbrechen/Abweisen (capifax_accept(), capifax_reject(), capifax_terminate())
- capifax.pc eingebunden
- Patches von Whoopie eingebunden
- Fix: stddef.h
- Fix: Disconnect absetzen, nach Faxversand

v0.6:
- capifax: Error-Code zurückliefern nach Faxversand
- libcapifax: Globaler Logging-Callback und div. Meldungen geändert
- libcapifax: Verbindung schließen bei capi_close()
- libcapifax: DATA_B3 abfangen nach DISCONNECT_REQ

Sonstiges:
dtmfbox-0.4.1_rc5-i386.tar.gz
- Telefonieren per Headset unter Linux.
- Vorkonfiguriert
- Binary & Source

z.B.:
Code:
[I]# Im Hintergrund starten[/I]
./dtmfbox -daemon
[I]# Anruf durchführen (MSN: 12345, Zielnummer: 33333333, Ctrl. 1). 0 ist die Soundkarte:[/I]
./dtmfbox 0 -call 12345 33333333 1
[I]# Beenden[/I]
./dtmfbox -stop daemon

chan_capi-1.1.1_mod2.tar.gz
- Modifizierte chan_capi für Asterisk. Momentan noch in der Testphase. Siehe ab hier.

--> Ein Wiki Eintrag.


http://capifax.v3v.de


Download:
 

Anhänge

  • dtmfbox-0.4.1_rc5-i386.tar.gz
    476.4 KB · Aufrufe: 78
  • chan_capi-1.1.1_mod2.tar.gz
    157 KB · Aufrufe: 119
Zuletzt bearbeitet:
Auch wenn ich mich wiederhole: Danke, danke, und nochmals danke!

Was ich bei meinem Ubuntu-System festgestellt habe: nach jeder Paket-Installation wird ldconfig ausgeführt, und das ändert immer den symbolischen Link von /usr/lib/libcapi20.so.3 auf /usr/lib/libcapi20_remote.so.3.0.4.
Da Du ja gesagt hast, dass man diese Dateien nicht braucht, hab ich sie einfach gelöscht und jetzt läuft's.

Anbei noch ein Patch, da ich einige Werte geändert hatte, und zu faul war, die an 2 Stellen zu ändern. Somit werden in der Hilfe-Ausgabe immer die aktuellen Werte ausgegeben.
Und ich hab verbose auf 1 gesetzt, damit ich wenigstens ein bisschen sehen, was CapiSpFax macht.

Beste Grüße,
Whoopie
 

Anhänge

  • CapiSpFax.patch.txt
    2.6 KB · Aufrufe: 31
Muss mich auch für deine Hilfe bedanken. Nicht selbstverständlich sowas.
Verboose kannst du beeinflussen mit -v, -vv und -vvv. libcapi20_remote lass ich beim nächsten mal weg, wenn das Probleme macht.

@ao:
Fehlt nur noch eine MacOS Version :) - bist du da schon irgendwie weitergekommen?
 
Äh, nein, ich baue gerade so "nebenher" noch ein Haus... ;)
Aber ich werde die Sache nicht vergessen!
 
Hallo,

ich hoffe ich darf mich hier mal anhängen und ein paar Fragen stellen. Ich suche schon seit einer Ewigkeit nach einer Möglichkeit unter Ubuntu Faxe via Fritz!Fon zu senden. Für den Empfang wurde ja mittlerweile die analoge Faxweiche implementiert. Fax4box ist tatsächlich das einzige Programm, für welches ich noch Windows benötige und das nervt.

Vielleicht könnte mir jemand kurz und möglichst verständlich erklären, ob ich das mit den von euch geschilderten Ausführungen hinbekomme und welche sonstigen Pakete ich dafür brauche.

Ich habe mir bereits den Wiki-Eintrag angesehen und auch schon mal probiert. Ich habe also folgendes gemacht:
Code:
Das modifizierte libcapi20 Paket downloaden und entpacken.
cd libcapi-2.0_fb/src
make
make install
:~/Desktop/capi/src$ ls -la /usr/lib/libcapi20*
-rw-r--r-- 1 root root 72706 2008-05-26 14:18 /usr/lib/libcapi20.a
lrwxrwxrwx 1 root root    25 2008-05-26 14:18 /usr/lib/libcapi20_remote.so -> libcapi20_remote.so.3.0.4
lrwxrwxrwx 1 root root    25 2008-05-26 14:18 /usr/lib/libcapi20_remote.so.3 -> libcapi20_remote.so.3.0.4
-rwxr-xr-x 1 root root 29325 2008-05-26 14:18 /usr/lib/libcapi20_remote.so.3.0.4
lrwxrwxrwx 1 root root    18 2008-05-26 14:18 /usr/lib/libcapi20.so -> libcapi20.so.3.0.4
lrwxrwxrwx 1 root root    18 2008-05-26 14:18 /usr/lib/libcapi20.so.3 -> libcapi20.so.3.0.4
-rw-r--r-- 1 root root 38742 2008-05-26 14:18 /usr/lib/libcapi20.so.3.0.4
:~/Desktop/capi/src$ export FB_REMOTE_CAPI_IP=192.168.178.1
:~/Desktop/capi/src$ export FB_REMOTE_CAPI_PORT=5031
:~/Desktop/capi/src$ capiinfo
Number of Controllers : 5
Controller 1:
Manufacturer: AVM Berlin
CAPI Version: 2.0
Manufacturer Version: 0.0-03  (0.3)
Serial Number: 0004711
BChannels: 2 (...)
Einmal kam eine Ausgabe bei capiinfo, jetzt nicht mehr? Wie kommt das?

Womit faxt ihr dann? Ich würde das gerne mit irgendeinem Programm mit 'ner Oberfläche und nicht im Terminal machen.

edit: Vielleicht check ich hier auch irgendwie gar nichts. Wofür sind denn die drei weiteren Dateien (CapiSpFax-i386_mod2.tar.gz, capiinfo.tar.gz, dtmfbox-0.4.1_rc5-i386.tar.gz). Muss ich auf der FritzBox auch was modifizieren?

Danke schon mal.
 
Zuletzt bearbeitet:
@Stevi
Die libcapi stellt die Capi-Schnittstelle zur Verfügung, über die dann CapiSpFax ein Fax senden/empfangen kann. (CapiSpFax wird hier näher erläutert). Capiinfo ist, wie der Name vermuten lässt, ein Werkzeug zum Anzeigen von Informationen über die Capi-Schnittstelle. Zur DTMFBox liest du am besten mal hier.

@all
Beim Ausführen von CapiSpFax bekomme ich immer einen SegFault. Mein System ist ein Kubuntu 8.04 x64 mit libtiff-3.8.2-7 und libspandsp-0.0.4pre16-1. CapiSpFax wurde auf diesem System kompiliert. Hat dazu evtl jemand eine Idee?

Viele Grüße, Jan Gerrit
 
stevi schrieb:
Ich habe mir bereits den Wiki-Eintrag angesehen und auch schon mal probiert.
...
Muss ich auf der FritzBox auch was modifizieren?
Bitte auch lesen, nicht nur ansehen ;) ...

stevi schrieb:
Einmal kam eine Ausgabe bei capiinfo, jetzt nicht mehr? Wie kommt das?
Was kam denn für ein Fehler? Hast du mal den capiotcp Dienst neu gestartet mit #96*2* #96*3* ?

@JanGerrit:
Da habe ich leider keine Ahnung. Obs am 64 Bit liegt oder vielleicht an der libtiff?? Kannst du ein strace posten und ein 'ldd CapiSpFax' machen? Läuft capiinfo?
 
Ja, capiinfo läuft problemlos. Ich habe die Ausgaben von ldd und strace (einmal als root und einmal als Benutzer) angehängt.

Viele Grüße, Jan Gerrit
 

Anhänge

  • strace.txt
    5.1 KB · Aufrufe: 17
  • straceAsUser.txt
    5.1 KB · Aufrufe: 6
  • ldd.txt
    432 Bytes · Aufrufe: 7
Hallo Jan,

es könnte an setpriority liegen. Das müsste so aussehen:
setpriority(PRIO_PROCESS, 0, -10) = 0

Könnte ein signed/unsigned Problem sein (warum auch immer).

Probiere mal aus, ob es ohne setpriority und boost_priority klappt (im Source die Stellen auskommentieren). Vielleicht kann man boost_priority auch lassen.
 
Hallo Bodega,

erstmal vielen Dank für deine Hilfe. Nachdem ich setpriority(PRIO_PROCESS, 0, -10) aus der capi.ccp auskommentiert habe, bekomme ich "Error in capi20_register" als Fehler. Dabei ist es auch egal, ob ich zusätzlich boost_priority auskommentiere.
Nun ist mir aufgefallen das der Link /usr/lib/libcapi20.so.3 auf die libcapi_remote zeigte. Nachdem ich diesen auf libcapi20.so.3.0.4 geändert habe erhalte ich beim strace folgendes:
Code:
...
mprotect(0x7f09b6d9e000, 2093056, PROT_NONE) = 0
mmap(0x7f09b6f9d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7f000) = 0x7f09b6f9d000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f09b7d9d000
arch_prctl(ARCH_SET_FS, 0x7f09b7d9d740) = 0
mprotect(0x7f09b7731000, 12288, PROT_READ) = 0
munmap(0x7f09b7da0000, 106546)          = 0
uname({sys="Linux", node="icarus", ...}) = 0
brk(0)                                  = 0x712000
brk(0x712f20)                           = 0x712f20
arch_prctl(ARCH_SET_FS, 0x712860)       = 0
brk(0x733f20)                           = 0x733f20
brk(0x734000)                           = 0x734000
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Process 14093 detached

Viele Grüße, Jan Gerrit
 
Ok. Dann war es doch nicht das setpriority. Zumindest kann man dadurch das Problem schon etwas eingrenzen. Mich wundert nur, dass capiinfo funktioniert. Meine Vermutung geht nun auf die Funktion capi20_fb_tcp_isinstalled (void) zurück:

libcapi20 --> capi20_fb_tcp.c
Code:
...
	//printf("Initialize socket...\n");
	sock = socket(AF_INET, SOCK_STREAM, 0);		

// <-- socket wird zwar erstellt, aber ab hier gibt es irgendwo einen Fehler -->

	if(sock > 0)
	{
    	    int size = 1;
	    int tcpdelay = 1;
	    int ret;
				
	    // get IP + Port from environment
	    memset(rem_ip, 0, sizeof(rem_ip));			
	    snprintf(rem_ip, sizeof(rem_ip), "%s", CAPI20_FB_TCP_DEFAULT_IP);			
[COLOR="Red"]	    remote_ip = getenv("FB_REMOTE_CAPI_IP");
	    remote_port = getenv("FB_REMOTE_CAPI_PORT");
[/COLOR]	    if(remote_ip) snprintf(rem_ip, sizeof(rem_ip), "%s", remote_ip);
[COLOR="Blue"]	    if(remote_port) port = atoi(remote_port);[/COLOR]
				
[COLOR="Green"]	    sock_addr.sin_family = AF_INET;
	    sock_addr.sin_port = htons(port);
	    sock_addr.sin_addr.s_addr = inet_addr(rem_ip);
	    if(connect(sock, (struct sockaddr*)&sock_addr, sizeof(struct sockaddr)) == -1)
[/COLOR]	    {
	    	capi20_fb_tcp_close_socket();
		return CapiRegOSResourceErr;
	    }											
	}
...

Funktioniert getenv() nicht?
Steht in $FB_REMOTE_CAPI_PORT zufällig ein String? Das könnte auch einen SIGSEGV verursachen (das hätte ich wohl abfangen sollen ;)).
Kommt erst garnicht zustande (connect()). Falscher Aufruf?

Ich kann da nur raten. Man könnte aber mit printf("...") debuggen...
 
Aus irgend einem Grund schlägt "sock_addr.sin_addr.s_addr = inet_addr(rem_ip);" fehl, beziehungsweise bereits inet_addr(rem_ip). Ich werde morgen weiter schauen wie das zu lösen ist.

EDIT:
Warum inet_addr(ip) fehlschlägt habe ich noch nicht herausgefunden, ich habe jetzt einfach direkt die IP als Int angegeben. Jetzt läuft das Programm weiter, aber sobald die Gegenstelle abnimmt bekomme ich wieder ein SIGSEGV.
Code:
select(6, [5], NULL, NULL, {0, 1})      = 0 (Timeout)
select(6, [5], NULL, NULL, {0, 0})      = 0 (Timeout)
select(6, [5], NULL, NULL, {0, 1})      = 0 (Timeout)
select(6, [5], NULL, NULL, {0, 0})      = 0 (Timeout)
select(6, [5], NULL, NULL, {0, 1})      = 1 (in [5], left {0, 0})
select(6, [5], NULL, NULL, {0, 0})      = 1 (in [5], left {0, 0})
recvfrom(5, "\200\26\4", 3, 0, NULL, NULL) = 3
recvfrom(5, "\26\0\t\0\206\202\20\365\4\6\1\0\22j\307*\0\4\7\0\0\0b"..., 1046, MSG_PEEK, NULL, NULL) = 1046
recvfrom(5, "\26\0\t\0\206\202\20\365\4\6\1\0\22j\307*\0\4\7\0\0\0b"..., 1046, 0, NULL, NULL) = 1046
write(2, "get_cmsg \'\'\n", 12get_cmsg ''
)         = 12
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Kann es evtl sein, dass ich einen Fehler im Programmaufruf oder im tiff habe?
"./CapiSpFax -vvv -m0 -d 0123534561 -t /home/user/Testseite.g3 -c4"

Viele Grüße, Jan Gerrit
 
Zuletzt bearbeitet:
Da habe ich auch keine Ahnung mehr, woran das liegen könnte. Die Segfaults scheinen irgendwie nicht logisch. Ein Library-Problem möchte ich nicht ausschließen. Den Empfang hattest du auch schon getestet, oder? Die Programmaufrufe sind ja schnell eingegeben und sind auch ok. Analog kann ich leider nicht testen. Nur ISDN.
 
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.