HFC Karten reagieren nicht

pette

Neuer User
Mitglied seit
28 Nov 2005
Beiträge
67
Punkte für Reaktionen
0
Punkte
0
Hallo.

Ich habe arge Probleme meine beiden HFC-PCI Karten mit misdn zum laufen zu bringen.
Hier die Eckdaten:

- Debian Etch unter Xen-3.1 mit 2.6.18er Kernel
- Asterisk 1.2.24
- mISDN-1.1.5

Die HFC-Karten werden ordnungsgemäß durchgereicht, was ein lspci -v auf der asterisk maschine bestätigt:
Code:
asterisk:~# lspci -v
01:07.0 Network controller: Cologne Chip Designs GmbH ISDN network controller [HFC-PCI] (rev 02)
        Subsystem: Cologne Chip Designs GmbH ISDN Board
        Flags: bus master, medium devsel, latency 16, IRQ 19
        I/O ports at a400 [disabled] [size=8]
        Memory at f4004000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [40] Power Management version 1

01:08.0 Network controller: Cologne Chip Designs GmbH ISDN network controller [HFC-PCI] (rev 02)
        Subsystem: Cologne Chip Designs GmbH ISDN Board
        Flags: bus master, medium devsel, latency 16, IRQ 18
        I/O ports at a800 [disabled] [size=8]
        Memory at f4005000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [40] Power Management version 1

Hier meine mISDN.conf
Code:
<mISDNconf>
        <module poll="64" debug="0" timer="no">hfcmulti</module>
        <module debug="0" options="0">mISDN_dsp</module>
        <devnode user="asterisk" group="asterisk" mode="644">mISDN</devnode>
        <card type="hfcpci">
                <port mode="te" link="ptmp" master-clock="yes">1</port>
        </card>
        <card type="hfcpci">
                <port mode="nt" link="ptmp" master-clock="no">1</port>
        </card>
</mISDNconf>
...und meine misdn.conf
Code:
[general]
bridging=yes
;method=standard
append_digits2exten=yes
stop_tone_after_first_digit=yes
;jitterbuffer=0
;jitterbuffer_upper_threshold=0
debug=256
tracefile=/var/log/misdn.log

[default]
context=default
language=de
senddtmf=yes
nationalprefix=0
internationalprefix=049
rxgain=0
txgain=0
dialplan=0
callgroup=1
pickupgroup=1

[ISDN-TE]
context=isdn_incoming
ports=1
msns= [MSN] 

[ISDN-NT]
context=default
hold_allowed=yes
ports=2

Ein /etc/init.d/mISDN start lädt erfolgreich alle module:
Code:
asterisk:~# /etc/init.d/mISDN start
-- Loading mISDN modules --
>> /sbin/modprobe --ignore-install capi
>> /sbin/modprobe --ignore-install mISDN_core debug=0
>> /sbin/modprobe --ignore-install mISDN_l1 debug=0
>> /sbin/modprobe --ignore-install mISDN_l2 debug=0
>> /sbin/modprobe --ignore-install l3udss1 debug=0
>> /sbin/modprobe --ignore-install mISDN_capi
>> /sbin/modprobe --ignore-install hfcpci protocol=0x2,0x12 layermask=0xf,0x3
>> /sbin/modprobe --ignore-install mISDN_dsp debug=0 options=0
und ein misdn show stacks in der Asterisk CLI zeigt auch nichts Auffälliges:
Code:
*CLI> misdn show stacks
BEGIN STACK_LIST:
  * Port 1 Type TE Prot. PMP L2Link DOWN L1Link:UP Blocked:0  Debug:0
  * Port 2 Type NT Prot. PMP L2Link DOWN L1Link:UP Blocked:0  Debug:0

Das Problem ist nun, dass sich garnix tut. Weder am TE Anschluss, noch am NT. Sprich, ich bekomme am internen ISDN Telefon kein Freizeichen, und wenn ich von aussen meine MSN anrufen, tut sich in der Asterisk CLI trotz debug und verbose rein garnix.

Ich habe nun mal getestet von einem SIP client aufs Handy anzurufen. Hier der CLI-Output (mit "misdn set debug 4"):
Code:
    -- Registered SIP '21' at 192.168.10.77 port 5061 expires 3600
    -- Saved useragent "Ekiga/2.0.2" for peer 21
    -- Unregistered SIP '21'
    -- Registered SIP '21' at 192.168.10.77 port 5063 expires 3600
    -- Saved useragent "Ekiga/2.0.2" for peer 21
Sep 17 17:40:17 WARNING[11485]: chan_sip.c:3659 process_sdp: Unknown SDP media type in offer: video 5006 RTP/AVP 31
    -- Executing Set("SIP/21-006ccb00", "CALLERID(num)=44XXXXX") in new stack
    -- Executing waitfordigits("SIP/21-006ccb00", "1500") in new stack
You passed timeout:1500 maxnum:20 addexten:0 control:0
Not Overwriting extension:017XXXXXXXXX with new Number: 017XXXXXXXXX
Not Sending any control to Channel 017XXXXXXXXX state is 4
    -- Executing Dial("SIP/21-006ccb00", "mISDN/g:ISDN-TE/017XXXXXXXXX") in new stack
P[ 0]  --> Group Call group: ISDN-TE
P[ 1] Group [ISDN-TE] Port [1]
P[ 1] portup:1
P[ 0]  --> * NEW CHANNEL dad:017XXXXXXXXX oad:(null)
P[ 1] * Queuing chan 0x6d2330
P[ 1]  --> TON: Unknown
P[ 1]  --> LTON: Unknown
P[ 1]  --> CTON: Unknown
P[ 1] * CALL: g:ISDN-TE/017XXXXXXXXX
P[ 1]  --> * dad:017XXXXXXXXX tech:mISDN/1-u0 ctx:isdn_incoming
P[ 1]  --> * adding2newbc ext 017XXXXXXXXX
P[ 1]  --> * adding2newbc callerid 44XXXXX
P[ 1]  --> pres: -1 screen: -1
P[ 1]  --> pres: 0
P[ 1]  --> PRES: Allowed (0x0)
P[ 1]  --> SCREEN: Unscreened (0x0)
P[ 1] NO OPTS GIVEN
P[ 1] I SEND:SETUP oad:44XXXXX dad:017XXXXXXXXX pid:2
P[ 1]  --> bc_state:BCHAN_CLEANED
P[ 1]  --> channel:0 mode:TE cause:16 ocause:16 rad: cad:
P[ 1]  --> info_dad: onumplan:0 dnumplan:0 rnumplan:0 cpnnumplan:0
P[ 1]  --> caps:Speech pi:0 keypad: sending_complete:0
P[ 1]  --> screen:0 --> pres:0
P[ 1]  --> addr:0 l3id:0 b_stid:0 layer_id:0
P[ 1]  --> facility:FAC_NONE out_facility:FAC_NONE
P[ 1] --> new_l3id 30001
P[ 1]  --> * SEND: State Dialing pid:2
    -- Called g:ISDN-TE/017XXXXXXXXX
P[ 1] Sending msg, prim:30580 addr:41000104 dinfo:30001
P[ 1] handle_frm: frm->addr:42000103 frm->prim:3f182
P[ 1]  --> lib: RELEASE_CR Ind with l3id:30001
P[ 1]  --> lib: CLEANING UP l3id: 30001
P[ 1]  --> queue_hangup
P[ 1] * RELEASING CHANNEL pid:2 ctx:isdn_incoming dad:017XXXXXXXXX
oad:017XXXXXXXXX state: CALLING
P[ 1]  --> * State Down
P[ 1]  --> Setting AST State to down
P[ 1] $$$ CLEANUP CALLED pid:2
P[ 1] empty_chan_in_stack: cannot empty channel 255
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing Hangup("SIP/21-006ccb00", "") in new stack
  == Spawn extension (default, 017XXXXXXXXX, 4) exited non-zero on 'SIP/21-006ccb00'

Und wenn man vom SIP Client (21) auf dem internen ISDN Telefon (31) am NT anruft kommt folgender output:
Code:
    -- Executing Macro("SIP/21-006c9c50", "localisdn|31") in new stack
    -- Executing Set("SIP/21-006c9c50", "LANGUAGE()=de") in new stack
    -- Executing Dial("SIP/21-006c9c50", "mISDN/2/31|20|tT") in new stack
P[ 0]  --> * NEW CHANNEL dad:31 oad:(null)
P[ 2] * Queuing chan 0x6cfbb0
P[ 2]  --> TON: Unknown
P[ 2]  --> LTON: Unknown
P[ 2]  --> CTON: Unknown
P[ 2] * CALL: 2/31
P[ 2]  --> * dad:31 tech:mISDN/2-u1 ctx:default
P[ 2]  --> * adding2newbc ext 31
P[ 2]  --> * adding2newbc callerid 21
P[ 2]  --> pres: -1 screen: -1
P[ 2]  --> pres: 0
P[ 2]  --> PRES: Allowed (0x0)
P[ 2]  --> SCREEN: Unscreened (0x0)
P[ 2] NO OPTS GIVEN
P[ 2] I SEND:SETUP oad:21 dad:31 pid:3
P[ 2]  --> bc_state:BCHAN_CLEANED
P[ 2]  --> channel:0 mode:NT cause:16 ocause:16 rad: cad:
P[ 2]  --> info_dad: onumplan:0 dnumplan:0 rnumplan:0 cpnnumplan:0
P[ 2]  --> caps:Speech pi:0 keypad: sending_complete:0
P[ 2]  --> screen:0 --> pres:0
P[ 2]  --> addr:0 l3id:0 b_stid:0 layer_id:0
P[ 2]  --> facility:FAC_NONE out_facility:FAC_NONE
P[ 2]  --> found chan: 1
P[ 2] set_chan_in_stack: 1
P[ 2]  -->  found channel: 1
P[ 2]  --> new_l3id ff00
P[ 2]  --> * SEND: State Dialing pid:3
    -- Called 2/31
P[ 2]  --> lib: Event_ind:SETUP CONFIRM [NT] : new L3ID  is 8001ff00
P[ 2] I IND :CC_SETUP|CONFIRM: old l3id:ff00 new l3id:8001ff00
P[ 2] I IND :NEW_L3ID oad:21 dad:31 pid:3 state:CALLING
P[ 2]  --> channel:1 mode:NT cause:16 ocause:16 rad: cad:
P[ 2]  --> info_dad: onumplan:0 dnumplan:0 rnumplan:0 cpnnumplan:0
P[ 2]  --> caps:Speech pi:0 keypad: sending_complete:0
P[ 2]  --> screen:0 --> pres:0
P[ 2]  --> addr:0 l3id:8001ff00 b_stid:0 layer_id:0
P[ 2]  --> facility:FAC_NONE out_facility:FAC_NONE
P[ 2]  --> bc_state:BCHAN_CLEANED
    -- Nobody picked up in 20000 ms
P[ 2] * IND : HANGUP    pid:3 ctx:default dad:31 oad:31 State:CALLING
P[ 2]  --> l3id:8001ff00
P[ 2]  --> cause:16
P[ 2]  --> out_cause:16
P[ 2]  --> state:CALLING
Sep 17 17:47:31 NOTICE[11500]: chan_misdn.c:2313 misdn_hangup: release channel, in CALLING/INCOMING_SETUP state.. no other events happenedP[ 2] I SEND:RELEASE_COMPLETE oad:21 dad:31 pid:3
P[ 2]  --> bc_state:BCHAN_CLEANED
P[ 2]  --> channel:1 mode:NT cause:16 ocause:16 rad: cad:
P[ 2]  --> info_dad: onumplan:0 dnumplan:0 rnumplan:0 cpnnumplan:0
P[ 2]  --> caps:Speech pi:0 keypad: sending_complete:0
P[ 2]  --> screen:0 --> pres:0
P[ 2]  --> addr:0 l3id:8001ff00 b_stid:0 layer_id:0
P[ 2]  --> facility:FAC_NONE out_facility:FAC_NONE
P[ 2]  --> Channel: mISDN/2-u1 hanguped new state:CLEANING

Ich bin mit meinem Latin leider am Ende. Weiss jemand von euch Rat?

Gruß,
Pette
 
Hi Pette,

ich bastle gerade an einem HowTo für ein ähnliches Setup. Folgendes hilft evtl.:

XEN erlaubt standardmäßig nur den Zugriff auf bestimmte Adressbereiche der PCI Karten. Damit die ISDN Karten von mISDN initialisiert werden können, benötigen sie jedoch vollen Zugriff. Hierfür tragen wir den Karten Typ in /etc/xen/xend-pci-permissive.sxp ein.

Code:
dom0:# lspci -nn | grep HFC
01:06.0 Network controller [0280]: Cologne Chip Designs GmbH ISDN network controller [HFC-PCI] [1397:2bd0] (rev 02)
Der Wert in den letzten [] interessiert uns. Diesen tragen wir mit nano in /etc/xen/xend-pci-permissive.sxp ein.

Der File sollte dann folgenden Aufbau haben:
Code:
(unconstrained_dev_ids
  ('1397:2bd0')
)

Viele Grüße
Johannes
 
Hi Johannes.

Vieeeeelen Dank für den Tip. Hat wunderbar funktioniert.

Nun hab ich nurnoch das Problem, dass die HFC Karten nicht initialisiert werden können, sobald mehr als 2 DomUs oben sind. Ganz konkret sieht der Fehler dann so aus:
Code:
-- Loading mISDN modules --
>> /sbin/modprobe --ignore-install capi
CAPI Subsystem Rev 1.1.2.8
capifs: Rev 1.1.2.3
capi20: Rev 1.1.2.7: started up with major 68 (middleware+capifs)
>> /sbin/modprobe --ignore-install mISDN_core debug=0
Modular ISDN Stack core version (1_1_5) revision ($Revision: 1.40 $)
>> /sbin/modprobe --ignore-install mISDN_l1 debug=0
ISDN L1 driver version 1.20
>> /sbin/modprobe --ignore-install mISDN_l2 debug=0
ISDN L2 driver version 1.32
>> /sbin/modprobe --ignore-install l3udss1 debug=0
mISDN: DSS1 Rev. 1.47
>> /sbin/modprobe --ignore-install mISDN_capi
mISDN Capi 2.0 driver file version 1.21
>> /sbin/modprobe --ignore-install hfcpci protocol=0x2,0x12 layermask=0xf,0x3
mISDN: HFC-PCI driver Rev. 1.49
PCI: Enabling device 0000:01:07.0 (0000 -> 0003)
mISDN: HFC-PCI card manufacturer: CCD/Billion/Asuscom card name: 2BD0
[b]HFC-PCI: Error allocating memory for FIFO!
FATAL: Error inserting hfcpci (/lib/modules/2.6.18-xenU/extra/hfcpci.ko): No such device[/b]
>> /sbin/modprobe --ignore-install mISDN_dsp debug=0 options=0
mISDN_dsp: Audio DSP  Rev. 1.29 (debug=0x0) EchoCancellor MG2 dtmfthreshold(100)
mISDN_dsp: DSP clocks every 64 samples. This equals 2 jiffies.
creating device node: /dev/mISDN
Wenn man in den mISDN sourcen nachschaut, findet man folgende Stelle in /drivers/isdn/hardware/mISDN/hfc_pci.c
Code:
        /* Allocate memory for FIFOS */
        /* the memory needs to be on a 32k boundary within the first 4G */
        pci_set_dma_mask(dev_hfcpci, 0xFFFF8000);
        buffer = pci_alloc_consistent(dev_hfcpci, 0x8000, &hc->hw.dmahandle);
        /* We silently assume the address is okay if nonzero */
        if(!buffer) {
                printk(KERN_WARNING "HFC-PCI: Error allocating memory for FIFO!\n");
                return 1;
        }
Leider bin ich kein kernel Experte und kann daher wenig damit anfangen.

Interessant ist sicherlich auch ein Vergleich der lspci -vv Ausgaben im Falle, dass das Modul geladen wird, sowie wenn es nicht geladen wird:

Wenn nur 2 DomUs oben sind, startet die asterisk DomU normal und lädt auch das hfc modul:
Code:
asterisk:~# lspci -vv
01:07.0 Network controller: Cologne Chip Designs GmbH ISDN network controller [HFC-PCI] (rev 02)
        Subsystem: Cologne Chip Designs GmbH ISDN Board
        Control: [b]I/O-[/b] Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 16 (4000ns max)
        Interrupt: pin A routed to IRQ 19
        Region 0: I/O ports at a400 [b][disabled][/b] [size=8]
        Region 1: Memory at f4004000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [40] Power Management version 1
                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME+

01:08.0 Network controller: Cologne Chip Designs GmbH ISDN network controller [HFC-PCI] (rev 02)
        Subsystem: Cologne Chip Designs GmbH ISDN Board
        Control: I/O- [b]Mem+[/b] [b]BusMaster+[/b] SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        [b]Latency: 16 (4000ns max)[/b]
        Interrupt: pin A routed to IRQ 18
        Region 0: I/O ports at a800 [disabled] [size=8]
        Region 1: Memory at f4005000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [40] Power Management version 1
                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME+

Wenn mehr als 2 DomUs oben sind, und man dann die asterisk DomU startet wird das Modul auf Grund des obigen Fehlers nicht geladen und die Ausgabe sieht wie folgt aus:
Code:
asterisk:~# lspci -vv
01:07.0 Network controller: Cologne Chip Designs GmbH ISDN network controller [HFC-PCI] (rev 02)
        Subsystem: Cologne Chip Designs GmbH ISDN Board
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 16 (4000ns max)
        Interrupt: pin A routed to IRQ 19
        Region 0: I/O ports at a400 [size=8]
        Region 1: Memory at f4004000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [40] Power Management version 1
                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME+

01:08.0 Network controller: Cologne Chip Designs GmbH ISDN network controller [HFC-PCI] (rev 02)
        Subsystem: Cologne Chip Designs GmbH ISDN Board
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Interrupt: pin A routed to IRQ 18
        Region 0: I/O ports at a800 [disabled] [size=8]
        Region 1: Memory at f4005000 (32-bit, non-prefetchable) [disabled] [size=256]
        Capabilities: [40] Power Management version 1
                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME+
Die Unterschiede hab ich fett markiert.

Weiss jemand, woran das liegen könnte?

Gruss,
Pette
 
Weiss wirklich niemand Rat? Vielleicht irgendeine Idee oder nen Tip der mir auf die Sprünge helfen könnte?

Danke!

Gruss,
Pette
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,183
Beiträge
2,247,565
Mitglieder
373,730
Neuestes Mitglied
Repeter
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.