.titleBar { margin-bottom: 5px!important; }

Probleme beim kompilieren von LCR

Dieses Thema im Forum "Asterisk ISDN mit mISDN" wurde erstellt von robi1a, 6 Dez. 2011.

  1. robi1a

    robi1a Neuer User

    Registriert seit:
    29 Dez. 2008
    Beiträge:
    74
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo
    Ich kämpfe schon sein längerem mit dem Kompilieren von LCR und komme jetzt nicht mehr weiter.
    Als Betriebssystem verwende ich OpenSuse 11.3. Kernel 2.6.34.10-0.4-default.
    Ich habe Asterisk 1.8.8 installiert und verwende mISDN v2 aus dem Kernel (geht ja auch nicht mehr anders). mISDNuser habe ich runtergeladen, umgewandelt und läuft.
    Nur LCR ist hartnäckig. Meine Versuche mache ich mit LCR 1.7 und LCR 1.10. Beide bringen aber unterschiedliche Fehler.

    Log von LCR 1.7:
    Code:
    asterisk:/usr/src/lcr # make
    make  all-am
    make[1]: Entering directory `/usr/src/lcr'
    gcc      -Wall -DCONFIG_DATA="\"/usr/local/lcr\"" -DSHARE_DATA="\"/usr/local/lcr\"" -DLOG_DIR="\"/usr/local/lcr\"" -DEXTENSION_DATA="\"/usr/local/lcr/extensions\"" -D_GNU_SOURCE -fPIC -c chan_lcr.c -o chan_lcr.po
    chan_lcr.c: In function ‘send_setup_to_lcr’:
    chan_lcr.c:644:12: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:655:12: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c: In function ‘lcr_in_setup’:
    chan_lcr.c:858:2: warning: passing argument 9 of ‘__ast_channel_alloc’ makes integer from pointer without a cast
    /usr/include/asterisk/channel.h:1112:2: note: expected ‘int’ but argument is of type ‘char *’
    chan_lcr.c:883:6: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:885:6: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:887:6: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:890:7: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:893:7: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:896:7: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:900:7: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:903:7: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:906:7: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:909:7: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c: In function ‘handle_queue’:
    chan_lcr.c:1707:18: error: incompatible types when assigning to type ‘union ast_frame_subclass’ from type ‘char’
    chan_lcr.c: In function ‘lcr_request’:
    chan_lcr.c:1820:2: warning: passing argument 9 of ‘__ast_channel_alloc’ makes integer from pointer without a cast
    /usr/include/asterisk/channel.h:1112:2: note: expected ‘int’ but argument is of type ‘char *’
    chan_lcr.c: In function ‘lcr_call’:
    chan_lcr.c:1927:9: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:1927:31: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:1928:29: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:1931:9: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:1931:32: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:1932:30: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:1934:9: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:1934:33: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c:1935:31: error: ‘struct ast_channel’ has no member named ‘cid’
    chan_lcr.c: In function ‘lcr_write’:
    chan_lcr.c:2164:6: error: wrong type argument to unary exclamation mark
    chan_lcr.c:2166:20: error: invalid operands to binary & (have ‘union ast_frame_subclass’ and ‘format_t’)
    chan_lcr.c: In function ‘lcr_read’:
    chan_lcr.c:2229:25: error: incompatible types when assigning to type ‘union ast_frame_subclass’ from type ‘format_t’
    chan_lcr.c: In function ‘lcr_indicate’:
    chan_lcr.c:2274:8: warning: assignment from incompatible pointer type
    chan_lcr.c:2289:8: warning: assignment from incompatible pointer type
    chan_lcr.c:2316:8: warning: assignment from incompatible pointer type
    chan_lcr.c:2381:14: error: dereferencing pointer to incomplete type
    chan_lcr.c:2382:33: error: dereferencing pointer to incomplete type
    chan_lcr.c: At top level:
    chan_lcr.c:2602:2: warning: initialization from incompatible pointer type
    chan_lcr.c: In function ‘load_module’:
    chan_lcr.c:2818:2: warning: passing argument 2 of ‘ast_register_application2’ from incompatible pointer type
    /usr/include/asterisk/module.h:449:5: note: expected ‘int (*)(struct ast_channel *, const char *)’ but argument is of type ‘int (*)(struct ast_channel *, void *)’
    make[1]: *** [chan_lcr.po] Error 1
    make[1]: Leaving directory `/usr/src/lcr'
    make: *** [all] Error 2
    
    Log von LCR 1.10:
    Code:
    asterisk:/usr/src/lcr-1.10 # make
    make  all-am
    make[1]: Entering directory `/usr/src/lcr-1.10'
    g++ -DHAVE_CONFIG_H -I.      -Wall -DCONFIG_DATA="\"/usr/local/lcr\"" -DSHARE_DATA="\"/usr/local/lcr\"" -DLOG_DIR="\"/usr/local/lcr\"" -DEXTENSION_DATA="\"/usr/local/lcr/extensions\""    -g -O2 -MT mISDN.o -MD -MP -MF .deps/mISDN.Tpo -c -o mISDN.o mISDN.cpp
    mISDN.cpp: In function ‘int mISDN_initialize()’:
    mISDN.cpp:65:15: error: too few arguments to function ‘unsigned int init_layer3(int, mi_ext_fn_s*)’
    /usr/local/include/mISDN/mlayer3.h:210:21: note: declared here
    mISDN.cpp:75:60: error: ‘mISDN_debug_init’ was not declared in this scope
    mISDN.cpp:77:39: error: ‘mISDN_debug_init’ was not declared in this scope
    mISDN.cpp: In function ‘void mISDN_deinitialize()’:
    mISDN.cpp:92:20: error: ‘mISDN_debug_close’ was not declared in this scope
    make[1]: *** [mISDN.o] Error 1
    make[1]: Leaving directory `/usr/src/lcr-1.10'
    make: *** [all] Error 2
    
    Ich habe das ganze mit Asterisk 10 probiert -> gleiche Fehler.
    Auch mit Asterisk 1.6 habe ich es probiert -> bei LCR 1.10 kommt der selbe Fehler. Bei LCR 1.7 kommen andere Fehler aber das Kompilieren geht auch nicht durch.

    Ich hoffe mir kann da wer weiterhelfen damit ich den LCR kompiliert bekomme.
     
  2. sparkie

    sparkie Aktives Mitglied

    Registriert seit:
    13 Nov. 2005
    Beiträge:
    1,509
    Zustimmungen:
    11
    Punkte für Erfolge:
    38
    Beruf:
    Rentner
    warum geht es nicht anders? Ich wuerde, wenn ich jetzt ein neues System mit chan_lcr aufsetzen muesste, alles von hier nehmen:

    misdn.eu Git

    Dann passt es wenigstens zusammen. Falls es damit einzelne Probleme geben sollte, sind diese meist in

    The isdn4linux Archives

    bereits behandelt worden.

    - sparkie
     
  3. robi1a

    robi1a Neuer User

    Registriert seit:
    29 Dez. 2008
    Beiträge:
    74
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Habe es jetzt mit git probiert und scheitere da schon bei mISDN.

    Code:
    make[3]: Entering directory `/usr/src/linux-2.6.34-12-obj/x86_64/default'
    make -C ../../../linux-2.6.34-12 O=/usr/src/linux-2.6.34-12-obj/x86_64/default/. modules
      CC [M]  /usr/src/mISDN/standalone/drivers/isdn/mISDN/l1oip_core.o
      CC [M]  /usr/src/mISDN/standalone/drivers/isdn/mISDN/l1oip_codec.o
      CC [M]  /usr/src/mISDN/standalone/drivers/isdn/mISDN/core.o
      CC [M]  /usr/src/mISDN/standalone/drivers/isdn/mISDN/fsm.o
      CC [M]  /usr/src/mISDN/standalone/drivers/isdn/mISDN/socket.o
      CC [M]  /usr/src/mISDN/standalone/drivers/isdn/mISDN/clock.o
      CC [M]  /usr/src/mISDN/standalone/drivers/isdn/mISDN/hwchannel.o
    /usr/src/mISDN/standalone/drivers/isdn/mISDN/hwchannel.c: In function ‘mISDN_freedchannel’:
    /usr/src/mISDN/standalone/drivers/isdn/mISDN/hwchannel.c:113:2: error: implicit declaration of function ‘flush_work_sync’
    make[6]: *** [/usr/src/mISDN/standalone/drivers/isdn/mISDN/hwchannel.o] Error 1
    make[5]: *** [_module_/usr/src/mISDN/standalone/drivers/isdn/mISDN] Error 2
    make[4]: *** [sub-make] Error 2
    make[3]: *** [all] Error 2
    make[3]: Leaving directory `/usr/src/linux-2.6.34-12-obj/x86_64/default'
    make[2]: *** [modules_] Error 2
    make[2]: Leaving directory `/usr/src/mISDN/standalone'
    make[1]: *** [modules] Error 2
    make[1]: Leaving directory `/usr/src/mISDN/standalone'
    make: *** [modules] Error 2
    
    In den isdn4linux Archives wurde ich nicht fündig.

    Vielleicht hat noch jemand Tipps für mich.
    Danke
     
  4. sparkie

    sparkie Aktives Mitglied

    Registriert seit:
    13 Nov. 2005
    Beiträge:
    1,509
    Zustimmungen:
    11
    Punkte für Erfolge:
    38
    Beruf:
    Rentner
    [...]
    sehr merkwuerdig :D

    genau dieses Problem wurde hier in den isdn4linux Archives besprochen:
    misdn/lcr 1.10 fehlermeldungen

    - sparkie
     
  5. gerdshi

    gerdshi Aktives Mitglied

    Registriert seit:
    8 Mai 2005
    Beiträge:
    865
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Darf ich das Thema aufwärmen und Fragen ob es eine Lösung gab?

    Gruss
     
  6. robi1a

    robi1a Neuer User

    Registriert seit:
    29 Dez. 2008
    Beiträge:
    74
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Nein, es gab leider keine Lösung. Bin auf CAPI umgestiegen.
     
  7. gerdshi

    gerdshi Aktives Mitglied

    Registriert seit:
    8 Mai 2005
    Beiträge:
    865
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hi!

    Also ich habe ein weg gefunden lcr zu kompielieren. mISDN habe ich aufgegeben, da es eigentlich überflüssig ist zu kompielieren, da es in Debian 6 schon komplett in Version 2 drinn ist.

    Wie ich lcr kompiliert habe?
    Nun ich habe per
    Code:
     git branch -a 
    nageschaut welche Branches es noch gibt und habe gesehen, dass man auf Version 1.11 umschalten kann. Nach dem ich 1.11 per
    Code:
    git checkout -b ....
    runttergeladen habe funktionierte die kompilierung tadellos. (Anstelle der Punkte muss man den Pfad für Version 1.11 eintragen den man von git branch -a aufgelistet bekommen hat.) :)

    Gruss
     
  8. robi1a

    robi1a Neuer User

    Registriert seit:
    29 Dez. 2008
    Beiträge:
    74
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    OK. LCR 1.11 habe nicht probiert, gab es damals noch nicht. Was meinst Du mit mISDN? Meinst Du mISDNv2? ja, das ist im Kernel bereits enthalten. Aber nicht mISDNuser. Das musste ich dazu kompilieren. Ist mISDNuser noch erforderlich mit LCR 1.11?
     
  9. gerdshi

    gerdshi Aktives Mitglied

    Registriert seit:
    8 Mai 2005
    Beiträge:
    865
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hallo

    Ja, mISDNv2.
    Bei mISDN_user dagegen hatte ich keine Probleme.

    Allerdings stellte ich gestern fest, dass auch 1.11 nicht immer funktioniert. Dabei ging ich soweit ich weiss immer gleich vor. ISDN unter Linux ist ein Albtraum... mal klappt es, mal... hat mal die falsche Version Lib's oder Compiler erwischt mal was anderes.
    (Hintergrund: Ich versuche die ISDN-Karte(n) mit Gemsinschaft 3.1 zur zusammen Arbeit zu bewegen.)
     
  10. robi1a

    robi1a Neuer User

    Registriert seit:
    29 Dez. 2008
    Beiträge:
    74
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Seit Monaten kämpfe ich jetzt schon mit ISDN unter Linux. Sowohl mit mISDNv2 als auch mit CAPI. Mit mISDN (v1) hatte ich niemals Probleme (alte Server läuft seit Jahren problemlos mit ISDN und mISDN (v1) ).
    Hat jemand eine AVM Fritz ISDN Karte mit Asterisk am laufen. Mich würde interessieren welche Distribution, welche Variante (mISDNv2 oder CAPI), welche Asterisk Version und ev. auch eine Anleitung dazu.
     
  11. gerdshi

    gerdshi Aktives Mitglied

    Registriert seit:
    8 Mai 2005
    Beiträge:
    865
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hallo!

    Nach dem ich mit DAHDI und mISDNv2 auf die Schnauze gefallen bin, habe ich jetzt zu CAPI umgeschwenkt.
    Aber kurz meine Probleme mit mISDN und DAHDI in Zusammenhang mit HFC-s Karten: Sobald ein zweites eingehendes Gesrpäch parallel zu einem bereits geführten reinkommt und kurz darauf beendet wird, wird die Tonübertragung (in der Senderichtung) für 1-2 sec, unterbrochen.
    Benutzt habe ich Debian 6.0.5, mISDN v1.11 und auch 1.10, DAHDI was bei Gemeinschaft 3.1 dabei ist. Ich glaube v2.3.0.4.

    Nun bin ich zu AVM C2 und B1 Karten umgestiegen und es funktioniert (anscheind) gut. Ohne die besagten Probleme.
    Immer noch mit Debian 6.0.5 und die Debian eigenen asterisk-chan-capi Packet und Gemeinschaft 3.1 (wleches auch das Debian-Packet von Asterisk einsetzt)
    Als Hardware werden AMD-CPU und Mainboards mit VIA bzw. ATI-Chipsatz eingesetzt.

    Ich hoffe das hilft weiter?
    Gruss!
     
  12. robi1a

    robi1a Neuer User

    Registriert seit:
    29 Dez. 2008
    Beiträge:
    74
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Mein Problem mit CAPI sieht so aus, dass irgendwie keine Kommunikation zwischen dem AVM Treiber und Asterisk zustande kommt. Der Treiber initialisiert und findet die ISDN Karte. capiinfo zeigt mir auch an, dass eine Karte mit 2 Kanälen vorhanden ist. Asterisk initialsiert auch CAPI. Ein eingehendes Gespräch wird aber nicht erkannt. Der AVM-Trace (avmcapictrl trace) zeigt, dass ein Gespräch rein kommt aber Asterisk ragiert nicht darauf. Vom Amt kommt nur, dass die Nummer nicht verfügbar ist. Gleiches bei einem ausgehenden Gespäch. Asterisk wählt aber keine Reaktion auf der Karte.

    Was mir noch nicht ganz klar ist, das mir über udev ein /dev/capi20 Device angelegt wird, das Verzeichnis /dev/capi aber leer ist. Ich habe aber nirgends eine Referenz auf /dev/capi20. Könnte hier der Grund liegen? Was hast Du in den udev Rules bzw. im /dev Verzeichnis?


    capiinfo
    Code:
    Number of Controllers : 1
    Controller 1:
    Manufacturer: AVM GmbH
    CAPI Version: 2.0
    Manufacturer Version: 3.11-07  (49.23)
    Serial Number: 1000001
    BChannels: 2
    Global Options: 0x00000039
       internal controller supported
       DTMF supported
       Supplementary Services supported
       channel allocation supported (leased lines)
    B1 protocols support: 0x4000011f
       64 kbit/s with HDLC framing
       64 kbit/s bit-transparent operation
       V.110 asynconous operation with start/stop byte framing
       V.110 synconous operation with HDLC framing
       T.30 modem for fax group 3
       Modem asyncronous operation with start/stop byte framing
    B2 protocols support: 0x00000b1b
       ISO 7776 (X.75 SLP)
       Transparent
       LAPD with Q.921 for D channel X.25 (SAPI 16)
       T.30 for fax group 3
       ISO 7776 (X.75 SLP) with V.42bis compression
       V.120 asyncronous mode
       V.120 bit-transparent mode
    B3 protocols support: 0x800000bf
       Transparent
       T.90NL, T.70NL, T.90
       ISO 8208 (X.25 DTE-DTE)
       X.25 DCE
       T.30 for fax group 3
       T.30 for fax group 3 with extensions
       Modem
    
      0100
      0200
      39000000
      1f010040
      1b0b0000
      bf000080
      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
    
    Asterisk
    Code:
    asterisk*CLI> capi info 
    Common ISDN API Driver ($Revision: 946 $) www.chan-capi.org
    Contr1: 2 B channels total, 2 B channels free.
    
    asterisk*CLI> capi show channels 
    CAPI B-channel information:
    Line-Name       NTmode state i/o bproto isdnstate   ton  number
    ----------------------------------------------------------------
    ISDN0#02         no    -----  -  trans              0x00 ''->''
    ISDN0#01         no    -----  -  trans              0x00 ''->''
    
    CAPI Device:
    Code:
    ls -lR /dev/ca*
    crw-rw---- 1 root dialout 68, 0 Jun 10 13:01 /dev/capi20
    
    /dev/capi:
    total 0
    
    udev Rule für CAPI:
    Code:
    # CAPI devices
    SUBSYSTEM=="capi", KERNEL=="capi", NAME="capi20", GROUP="dialout"
    SUBSYSTEM=="tty", KERNEL=="capi[0-9]*", NAME="capi/%n"
    
     
  13. gerdshi

    gerdshi Aktives Mitglied

    Registriert seit:
    8 Mai 2005
    Beiträge:
    865
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    #13 gerdshi, 11 Juni 2012
    Zuletzt bearbeitet: 12 Juni 2012
    Hi!

    Also bei mir am Anfang war da genauso Funkstille in Asterisk. Aber es lag (natürlich) daran, dass ich noch nicht die capi.conf im /etc/asterisk Verzeichnis angepasst hatte. Prüf bitte ebenso, ob in Asterisk verbose auf höher als 0 eingestellt ist, da du sonst nicht ein mal die Nachrichten siehst wenn du ein falschen Context in capi.conf eingetragen hast. Bei höheren Verbosity-Level siehst du dann das ein Gespräch reinkiommt und die Meldung dazu, dass er den (falschen) Context nicht findet. Wenn es daran liegt. Allerdings gibt es mehrere Parameter in der capi.conf ohne die nicht ein mal Meldungen in Asterisk aufkommt!

    Wenn du wie ich Gemeinschaft 3.1 einsetzst, dann ist die capi.conf natürlich nicht in /etc/asterisk sondern in /opt/gemeinschaft/etc/asterisk. ;-)

    Was die Devices betrifft - muss ich passen. Ich habe da nichts angefasst. Nicht einmal nachgeschaut... Ich schau mal nach und berichte welche DEV-Dateien es bei mir gibt.

    Gruss

    P.S. Bei mir ist auch der CAPI-Ordner leer und ebenso wurde eine capi20-Datei im /etc Ordner angelegt.
    Ich habe nun mehr oder weniger herausgefunden wieso es bei einem zweiten eingehendes Gespräch beim auflegen zu tonaussetzer kommt - der Fehler tritt nur mit dem AMD prozessor und VIA bzw. ATI RS400-Chipsatz auf. In einem Intel P4 mit SIS900-Chipsatz tritt der Fehler nicht auf. :-( Egal ob man DAHDI, mISDN oder CAPI nutzt. :confused: