FAX-programm auf 7170?

Status
Für weitere Antworten geschlossen.
hääää? ich checks net... Olli, welche libcapi von avm hast du genommen????????????????????????

mit der capiutil.h bekomme ich immer noch (nach deinem patch)


Das würde mich auch brennend interessieren.....


Ich bekomme immer nur:

Code:
/home/knoppix/ds-0.2.2/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/mipsel-linux-uclibc/bin/../lib/libcapi20.a when searching for -lcapi20
/home/knoppix/ds-0.2.2/toolchain/build/gcc-4.1.0-uClibc-0.9.26/mipsel-linux-uclibc/lib/gcc/mipsel-linux-uclibc/4.1.0/../../../../mipsel-linux-uclibc/bin/ld: skipping incompatible

usw....


Gruß
mastertester
 
Also ich habe jetzt versucht mit isdn4k-utils zu erstellen, aber meine capi.h spielt da nicht mit.

Welche isdn4k-utils Version hast Du genommen??? Ich habe es jetzt mit den Versionen 3.1 p1 und 3.2 p2 probiert, aber er meldet folgedes:

Code:
libtool: ltconfig version `' does not match ltmain.sh version `1.3.3'

Und beim make:
Code:
 -I.     -g -O2 -c `test -f 'capidyn.c' || echo './'`capidyn.c
In file included from capidyn.c:11:
/usr/include/linux/capi.h:80: error: variable or field '__user' declared void
/usr/include/linux/capi.h:80: error: syntax error before '*' token
/usr/include/linux/capi.h:115: error: syntax error before 'capi_manufacturer_cmd'
/usr/include/linux/capi.h:117: error: syntax error before '}' token
capidyn.c: In function 'capi20_get_manufacturer':
capidyn.c:88: warning: pointer targets in return differ in signedness
capidyn.c: In function 'capi20_get_version':
capidyn.c:100: warning: pointer targets in return differ in signedness
capidyn.c: In function 'capi20_get_serial_number':
capidyn.c:112: warning: pointer targets in return differ in signedness
capidyn.c: In function 'loadlib':
capidyn.c:361: warning: incompatible implicit declaration of built-in function 'strlen'
capidyn.c:395:18: warning: extra tokens at end of #undef directive
make: *** [capidyn.o] Fehler 1


Und jetzt???


Könnte mir bitte jemand die libcapi20.so.3 und capi.c posten??? Oder wie macht man das jetzt am einfachsten?

Ich kann nirgends das ISDN4Linux Packet zum downloaden finden...... :-(


Gruß
mastertester
 
Zuletzt bearbeitet:
die libcapi20.so.3 ist auf deiner box im /lib Verzeichnis. Die nutzt dir aber zum static linking nichts, ausser du bekommst es dynamic hin, was sowieso sicherlich besser ist.

Ich hab das zeugs von : http://capi4linux.thepenguin.de/download.shtml
 
Wenn ich von AVM-GPL-Sourcen rede, dann meine ich die hier. ;-)
Ich konnte aber nicht wirklich einen Unterschied zu den capi4kutils erkennen. Und das make install hat auch nicht funktioniert...

@florixyz
Wenn du das buildroot von openembedded benutzt, dann hast du wahrscheinlich eine andere uClibc-Version!

MfG Oliver
 

Anhänge

  • avm-capi-lib.tar.bz2
    22.4 KB · Aufrufe: 21
das stimmt.... deswegen gings auch nur mit static binaries.. welches buildroot verwendest du denn?
 
Ich verwende die toolchain aus dem dsmod.

MfG Oliver
 
@florixyz

Du hattest folgendes geschrieben:
Der Empfänger rechnet ca. 10-20ms pro 240 Samples, maximal 30ms wären zulässig, das ist die Dauer von 240 Samples bei 8Khz (ISDN Samplerate), also bisschen Spielraum ist noch da.

An welcher Stelle in welcher Datei finde ich das?

Dann könnte ich mal einige Einstellungen durchprobieren..... Vor allem werde ich die nächsten Tage an der 7050 und an der 7170 parallel testen können…. (Die 7170 muss heute oder Morgen kommen, und bis die 7050 verkauft ist kann ich ja noch testen…)

Oder wo meinst Du sollte man mal dran drehen?

Ich muss mich heute erstmal in die spandsp Konfiguration einlesen, bin aber für jede Starthilfe dankbar…..

Was muss ich angeben, damit er das Binary stript? Meins ist nämlich z.Z. 1,7 MB Groß….?


@olistudent

wohin gehört denn dieser Float-Wrapper Code?



Gruß,

mastertester
 
mastertester schrieb:
@florixyz


An welcher Stelle in welcher Datei finde ich das?


Oder wo meinst Du sollte man mal dran drehen?

Hm, am meisten findest du in der ivcall.c , da ist die fax_loop_capi funktion, die so aufgebaut ist (schematisch):
vom capi lesen, mit fax_rx spandsp verarbeitung dann fax_tx spandsp verarbeitung, und dann wieder ans capi senden.
zwischendrin muss noch irgendwo ein handle_messages stehen, weil sonst vom capi nix mehr verarbeitet werden kann. Und genau hierdran kann man drehen, also einmal wo der steht und dann wie lang die block time ist (letzter paramter). Das ganze endet in einem select aufruf, der entweder nur einmal ausgeführt wird, und dann blocktime lang blockt, oder solange bis nix mehr zu handeln ist, und dann beim letzten mal nicht blockt.
Im Prinzip ist es nicht falsch, dass er blockt, nur sollte es vielleicht nach der fax_rx , fax_tx verarbeitung sein, da sonst beim blocken rechenzeit verloren geht. ausserdem sieht man die incoming capi buffer overflows scheinbar nur, wenn handle_messages zweimal im loop aufgerufen wird.

Manche capi funktionen in capi.c rufen auch ein internes handle_messages auf, wo in der alten version ein timeout von 1 angegeben war, ich in der neuen ihn aber auf 0 gesetzt habe. ist aber irgendwie völlig egal, scheinbar.
Wenn du überall 0 timeout machst, dann scheints gar nicht mehr zu klappen, kA. warum, vielleicht kommt ja dann der kernel oder der telefond nicht mehr mit der Verarbeitung nach.

Ausserdem findet sich in der void go() (in ivcall.c) noch ein setpriority aufruf, den die box auch zu unterstützen scheint, weil bei -20 alle anderen Prozesse schon irgendwie fast nix mehr melden.

Einfluss haben könnten auch noch die Debug ausgaben, also eigentlich alles was kernel aufrufe sind, die irgendwie bisschen blocken könnten, oder zu nem Taskwechsel führen könnten, der nicht durch nen timer hervorgerufen wird. Also printf, write, read, und natürlich die capidev_read / send aufrufe.

Dann wäre da auch noch das put_bit zeugs in spandsp, dass dann irgendwie mal das tiff speichert, zu finden ist das alles in t4.c und spandsp/t4.h
naja, und natürlich auch in LibTiff, nur soweit bin ich bis jetzt noch nicht vorgedrungen.
Interessant wäre es vielleicht ob da noch irgendwo floating point code ist, oder irgendwelche stellen, die von der faxauflösung und inhalt abhängen, lzw, oder ähnlich.

Beim Profiling, also Zeitmessen mit gettimeofday (was eine gute möglichkeit darstellt um langsame Stellen zu finden), ist die Fbox allerdings etwas dumm, weil die uSec auflöung nicht bei 1us liegt sondern leider nur bei 10000us, also 10ms oder 0.01s, und ich vermute, dass das gleiche für die blocktime bei den handle_messages oder select aufrufen gilt, also auch wenn man da ne 1 angibt, blockt er max. 0.01s , was dann bei nem Fenster von 0.03 s schon knapp werden kann.
Also..... bessere timer auf der fbox finden. Die CPU hat laut /proc/cpuinfo sogar Microsecond timers.

Du kannst auch noch #define NSAMPLES (in ivcall.c) ändern, aber ich glaube das ist schon ein guter Wert mit 240, das ist auf jeden Fall die größe eines Verarbeitungsfensters.

Dann is noch ne CAPI geschichte. Ich weiss nicht ob Fax irgendwie Delay empfindlich ist. In der capi.c (capi.h) gibts den define MAX_ASBS, der die ANzahl der CAPI-internen Pufferblöcke angibt, maximal sind 8 möglich, weniger wären für Fax vielleicht von Vorteil, jedoch wenn ich den define einfach auf 4 setzte, dann klappts nimmer mitm senden, dann fehlt vom audio irgendwie was... muss also noch an ner anderen Stelle vorkommen.
Sowas aber erstmal immer mit nem audio .raw file und nem telefon testen, das ist viel aufschlussreicher und meistens einfacher als ein ganzes fax senden, wo man vom audio eh nicht viel hört.

mastertester schrieb:
Was muss ich angeben, damit er das Binary stript? Meins ist nämlich z.Z. 1,7 MB Groß….?

Keine Ahnung, meines war immer 1,3MB groß, aber vielleicht hast du ne andere -lm oder zlib oder uclibc die größer ist. wenn du das buildroot aus dem danisahne mod verwendest, dann probier doch mal alles dynamisch zu linken, bis auf tiff und spandsp: die linkst du so static: (LDFLAGS): -W,-Bstatic -lspandsp -W,-Bstatic -ltiff (evtl. auch zlib noch so linken, k.A. ob sie beim danisahne mod dabei ist.

Den Float-Wrapper müsstest du überall hintun können, aber nur wenn du undefined references to powf und lrintf bekommst, wenn du linkst.

WICHTIG: Bitte bei spandsp überprüfen ob in der config.h der eintrag
"#define PURE_INTEGER_DSP 1" steht!
 
Zuletzt bearbeitet:
WICHTIG: Bitte bei spandsp überprüfen ob in der config.h der eintrag

Code:
"#define HAVE_PURE_INTEGER_DSP 1" steht!


Bei spandsp gibt es nur eine config-h.in, in der steht folgendes:

Code:
"#define PURE_INTEGER_DSP 1


Soll ich das ändern?


PS: Wofür sind eigentlich malloc und realloc?
 
nein, das stimmt schon so, hab mich vertippt. es ist auch PURE_INTEGER_DSP. und die config.h gibt es nach dem configure im src Verzeichnis, und da muss das drinstehen, so wie es in der config-h.in steht.

malloc reserviert speicher, siehe man malloc
und realloc auch, nur wenn er halt schonmal reserviert war.
 
malloc reserviert speicher, siehe man malloc
und realloc auch, nur wenn er halt schonmal reserviert war.

Also beim compilieren von spandsp hat er bei mir keines dieser beiden Module passend gefunden. Und bei ivcall habe ich sie auch raus genommen....

liegt hier eventuell unser problem?

In welcher lib ist denn realloc/malloc enthalten??


Gruß
mastertester
 
hast du den configure patch von olli angewendet??

du musst in der config.h von spandsp und ivcall nach rpl_malloc suchen und die defines dafür auskommentieren.

normalerweise beides sehr elementare funktionen, deshalb in der libc bzw. uclibc
 
Ich habe es im configure einfach auf yes gesetzt.....

Sollte man eventuell mal versuchen ivcall mit realloc/malloc zu compilen, oder macht das keinen Sinn?

Gruß
mastertester
 
Sorry, hatte sich erledigt.....
 
Zuletzt bearbeitet:
Also ich muss sagen die toolchain aus dem dsmod ist scheisse.... sorry, aber damit lässt sich nichtmal libtiff installieren.. mit dem openembedded buildroot null problem.. naja, werds mal noch probieren


naja.. is klar warum... da is kein mipsel-linux-g++ dabei!!!!!!!!!!!!!!!!!!!!!!!!!!!

is echt dumm diese toolchain... voll alt, gcc-3.3.2 statt gcc-3.4.3 .. kein c++ compiler ... was soll man dann damit anfangen können? warum verwendet danisahne nicht die von openembedded.org, da kann man die uclibc version sogar auswählen.
welche verwendet denn die fbox? 0.9.26 ?


also noch ein EDIT: c++ mit libstdc++ ist zu groß, danisahne arbeitet an uclibc++ .. bin gespannt dadrauf.
ansonsten hilft nur libtiff ohne die c++ libs zu compilieren, falls das geht.
 
Zuletzt bearbeitet:
ja ... und genau die configure option --disable-cxx macht alles was wir brauchen für libtiff :)
 
die frage is jetz, ob wir zum fax speichern irgendwo zlib brauchen.. die soll ja nicht die schnellste sein, und wenn ja ob es eine schnellere ersatzlib gibt, die damit kompatibel ist
 
zlib wird jetzt irgendwie gar nicht mehr benötigt.. kompiliert auch ohne -lz .. naja.. !

ABER, das mit der AVM Capi lib geht nicht. SIGSEGV........

@Olistudent:
hab aus den avm_gpl sources mir die headers capiutil.h capicmd.h genommen, capi20.h gibts da ja nicht, da hab ich die aus dem capi4linux projekt. dein patch für capiconn.c braucht man für die capiutil.h von avm nicht (?).
was brauch ich dazu? ich denke mal dass es an der capi20.h liegt.. die definieren ihre capi_register scheinbar doch ein bisschen anders. aber kA wie.....!? HILFE!
 
g++ wird nicht mitgebaut, richtig. Aber es geht ja auch ohne, wie du festgestellt hast.
Hast du eigentlich gesehen, dass der dsmod 2 Compiler baut. Einen "alten" für den Kernel und einen "neueren" für den Rest.
AVM bentutzt den gcc-3.3.2 für seine Binaries.

Ich hab doch vorgestern die AVM Capi-Lib gepostet. Bei mir ist da eine capi20.h drin. Wo hast du die Dateien her?

MfG Oliver
 
Status
Für weitere Antworten geschlossen.
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.