vISDN und *

tomster

Mitglied
Mitglied seit
6 Dez 2004
Beiträge
238
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen!
Ich bin gerade dabei einen (meinen ersten) Asterisk aufzusetzen und möchte dabei vISDN benutzen. Die erste Frage gleich vorweg: Gibt es begründete Ressentiments hier im Forum gegen vISDN? Es gibt nämlich kaum Threads zu diesem Thema...

Ich hab zwar mein Problem schon woanders geschildert, aber irgendwie steht es da im falschen Thread. Drum, man möge es mir nachsehen, hab ich hier einfach einen Neuen eröffnet.

Weiter aber im Kontext.
vISDN ist bei mir zunächst mal auf der Maschine. Nun geht's an die Einbindung in Asterisk. Wenn ich das INSTALL-ReadMe richtig verstehe, dann soll die Einbindung relativ einfach von der Hand gehen, wenn man das Script "visdn_configurator" ausführt, die Datei visdn.conf anlegt und entsprechende Einträge in der extensions.conf vornimmt. Klingt verdammt einfach, wie ich finde.

Doch leider scheint der Teufel wieder im Detail zu stecken...
Anscheinend läuft (zumindest bei mir) das Script nicht sauber durch. Es produziert zwar die erwartete Ausgabe in der shell, aber ich hatte die Beschreibung dahingehend verstanden, dass auch sämtliche Module, bzw. Channels selbstständig eingetragen werden: "...If you correctly configured everything, including udev, running 'visdn_configurator' will load the modules, configure the cards and connect the channels..."
Nun hatte ich das Problem, dass zunächst GAR kein visdn-Modul von Asterisk erkannt wurde; es konnte also gar nicht funktionieren. Also habe ich chan_visdn.so in das Modul-Verzeichnis von * kopiert. Und siehe da: Das Modul wird gefunden, an Hand der visdn.conf konfiguriert und * mosert nicht einmal. Zumindest nicht ohne das Verbose-Level heraufzusetzen.
Dann wird amtlich gemeckert...

Jan 31 17:08:07 ERROR[10954]: libq931:0 : visdn1.0: setsockopt(SO_BINDTODEVICE): Bad file descriptor
Jan 31 17:08:07 WARNING[10954]: chan_visdn.c:1220 visdn_open_interface: Cannot open interface visdn1.0, skipping
Jan 31 17:08:07 ERROR[10954]: libq931:0 : visdn1.1: setsockopt(SO_BINDTODEVICE): Bad file descriptor
Jan 31 17:08:07 WARNING[10954]: chan_visdn.c:1220 visdn_open_interface: Cannot open interface visdn1.1, skipping
Jan 31 17:08:07 ERROR[10954]: libq931:0 : visdn1.2: setsockopt(SO_BINDTODEVICE): Bad file descriptor
Jan 31 17:08:07 WARNING[10954]: chan_visdn.c:1220 visdn_open_interface: Cannot open interface visdn1.2, skipping
Jan 31 17:08:07 ERROR[10954]: libq931:0 : visdn1.3: setsockopt(SO_BINDTODEVICE): Bad file descriptor
Jan 31 17:08:07 WARNING[10954]: chan_visdn.c:1220 visdn_open_interface: Cannot open interface visdn1.3, skipping

Wie man erkennen kann, versuche ich eine BeroNet QuadPort-Karte einzubinden.

Nachdem ich davon ausgehe, dass es mit der einen (derzeit hineinkopierten) Datei nicht getan sein wird, stelle ich Mal die Frage in die Runde: Weiß jemand welche Dateien das Script wohin kopiert? Dann könnte ich zumindest versuchen die Dateien manuell zu kopieren...
Danke schon Mal im Vorfeld.
So long
TOM
 

Karl23

Neuer User
Mitglied seit
8 Nov 2004
Beiträge
108
Punkte für Reaktionen
0
Punkte
0
Es wäre hilfreich, wenn du angeben würdest, welche Version von
visdn du benutzt. Visdn entwickelt sich sehr schnell und damit
ebenso wohin die hfc-treiber kopiert werden. Bei mir im Kernel modul
Verzeichnis:

/lib/modules/2.6.15-20060106212042-K6/extra:
drwxr-xr-x 2 root root 26 2006-01-31 17:26 core
drwxr-xr-x 2 root root 24 2006-01-31 17:26 ec
drwxr-xr-x 2 root root 28 2006-01-31 17:26 hfc-4s
drwxr-xr-x 2 root root 29 2006-01-31 17:26 hfc-pci
drwxr-xr-x 2 root root 29 2006-01-31 17:26 hfc-usb
drwxr-xr-x 2 root root 21 2006-01-31 17:26 kfifo
drwxr-xr-x 2 root root 20 2006-01-31 17:26 lapd
drwxr-xr-x 2 root root 28 2006-01-31 17:26 netdev
drwxr-xr-x 2 root root 25 2006-01-31 17:26 ppp
drwxr-xr-x 2 root root 29 2006-01-31 17:26 softcxc
drwxr-xr-x 2 root root 32 2006-01-31 17:26 streamport
drwxr-xr-x 2 root root 34 2006-01-31 17:26 timer-system
drwxr-xr-x 2 root root 26 2006-01-31 17:26 vgsm


Version : tls isdn-visdn-0.0.1 patchlevel 503

Im /etc/visdn Verzeichniss muss die device-pci datei erstellt werden.
Auch das ./configure script hat Einfluss auf die Pfade.

das chan_visdn.so natürlich im entsprechenden
Asterisk Verzeichniss.

was sagt ifconfig? bei mir:
visdn0 Protokoll:UNSPEC Hardware Adresse 00-00-FF-00-00-00-00-00-00-00-00-00-00-00-00-00
UP RUNNING MTU:512 Metric:1
RX packets:14246 errors:0 dropped:0 overruns:0 frame:0
TX packets:108 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 Sendewarteschlangenlänge:10
RX bytes:56147 (54.8 Kb) TX bytes:916 (916.0 b)

visdn1 Protokoll:UNSPEC Hardware Adresse 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP RUNNING ALLMULTI MTU:512 Metric:1
RX packets:206 errors:0 dropped:0 overruns:0 frame:0
TX packets:211 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 Sendewarteschlangenlänge:10
RX bytes:1158 (1.1 Kb) TX bytes:1813 (1.7 Kb)

was sagt der syslog wenn du das kernel modul lädst: bei mir
Jan 31 22:17:04 asterisk2 klogd: visdn: loading
Jan 31 22:17:04 asterisk2 klogd: visdn-netdev: Netdevice gateway loading
Jan 31 22:17:04 asterisk2 klogd: visdn-streamport: vISDN streamport module loading
Jan 31 22:17:04 asterisk2 klogd: vts_timer_open()
Jan 31 22:17:04 asterisk2 klogd: visdn-ec-kb: echo canceller module for vISDN loading
Jan 31 22:17:04 asterisk2 klogd: hfc-pci: HFC-S PCI A Driver loading
Jan 31 22:17:04 asterisk2 klogd: PCI: Enabling device 0000:00:0a.0 (0000 -> 0003)
Jan 31 22:17:04 asterisk2 klogd: PCI: Found IRQ 12 for device 0000:00:0a.0
Jan 31 22:17:04 asterisk2 klogd: hfc-pci: pci-0000:00:0a.0: resetting
Jan 31 22:17:04 asterisk2 klogd: hfc-pci: pci-0000:00:0a.0: configured at mem 0xdf800000 (0xc886c000) IRQ 12
Jan 31 22:17:04 asterisk2 klogd: PCI: Enabling device 0000:00:0b.0 (0000 -> 0003)
Jan 31 22:17:04 asterisk2 klogd: PCI: Found IRQ 10 for device 0000:00:0b.0
Jan 31 22:17:04 asterisk2 klogd: hfc-pci: pci-0000:00:0b.0: resetting
Jan 31 22:17:04 asterisk2 klogd: hfc-pci: pci-0000:00:0b.0: configured at mem 0xdf000000 (0xc886e000) IRQ 10
Jan 31 22:17:04 asterisk2 klogd: NET: Registered protocol family 30
Jan 31 22:17:05 asterisk2 klogd: Connecting '000001' to '000011' mode=1
Jan 31 22:17:05 asterisk2 klogd:
Jan 31 22:17:05 asterisk2 klogd: visnd_chan_enable(000011)
Jan 31 22:17:05 asterisk2 klogd: visnd_chan_enable(000001)
Jan 31 22:17:05 asterisk2 klogd: hfc-pci: pci-0000:00:0a.0:st:chan[D] channel opened.
Jan 31 22:17:05 asterisk2 klogd: visnd_chan_disable(000012)
Jan 31 22:17:05 asterisk2 klogd: lapd: NETDEV_UP visdn0
Jan 31 22:17:05 asterisk2 klogd: visnd_chan_disable(000012)
Jan 31 22:17:05 asterisk2 ifup: visdn0
Jan 31 22:17:05 asterisk2 ifup: No configuration found for visdn0
Jan 31 22:17:05 asterisk2 klogd: Connecting '000004' to '000012' mode=1
Jan 31 22:17:05 asterisk2 klogd:
Jan 31 22:17:06 asterisk2 klogd: Connecting '000006' to '000013' mode=1
Jan 31 22:17:06 asterisk2 klogd:
Jan 31 22:17:06 asterisk2 klogd: visnd_chan_enable(000013)
Jan 31 22:17:06 asterisk2 klogd: visnd_chan_enable(000006)
Jan 31 22:17:06 asterisk2 klogd: hfc-pci: pci-0000:00:0b.0:st:chan[D] channel opened.
Jan 31 22:17:06 asterisk2 klogd: visnd_chan_disable(000014)
Jan 31 22:17:06 asterisk2 klogd: lapd: NETDEV_UP visdn1
Jan 31 22:17:06 asterisk2 klogd: visnd_chan_disable(000014)
Jan 31 22:17:06 asterisk2 ifup: visdn1
Jan 31 22:17:06 asterisk2 ifup: No configuration found for visdn1
Jan 31 22:17:06 asterisk2 klogd: Connecting '000009' to '000014' mode=1
Jan 31 22:17:06 asterisk2 klogd:
Jan 31 22:17:58 asterisk2 klogd: Connecting '000015' to '000007' mode=1
Jan 31 22:17:58 asterisk2 klogd:
Jan 31 22:17:58 asterisk2 klogd: visnd_chan_enable(000015)
Jan 31 22:17:58 asterisk2 klogd: visnd_chan_enable(000007)
Jan 31 22:17:58 asterisk2 klogd: hfc-pci: pci-0000:00:0b.0:st:chan[B1] channel opened.

bye
 
Zuletzt bearbeitet:

tomster

Mitglied
Mitglied seit
6 Dez 2004
Beiträge
238
Punkte für Reaktionen
0
Punkte
0
Servus Karl23,

stimmt! Die Version hab ich vergessen anzugeben. Ich habe die
visdn-devel-20060128.tar.bz2 genommen.

1. Kernel-Module:

-rw-r--r-- 1 root root 40617 29. Jan 13:17 kfifo.ko
-rw-r--r-- 1 root root 1394717 29. Jan 13:17 lapd.ko
drwxr-xr-x 3 root root 4096 29. Jan 11:48 usr
-rw-r--r-- 1 root root 963806 29. Jan 13:17 visdn-core.ko
-rw-r--r-- 1 root root 1539527 29. Jan 13:17 visdn-hfc-4s.ko
-rw-r--r-- 1 root root 799840 29. Jan 13:17 visdn-hfc-pci.ko
-rw-r--r-- 1 root root 689179 29. Jan 13:17 visdn-hfc-usb.ko
-rw-r--r-- 1 root root 238928 29. Jan 13:17 visdn-netdev.ko
-rw-r--r-- 1 root root 191738 29. Jan 13:17 visdn-ppp.ko
-rw-r--r-- 1 root root 159041 29. Jan 13:17 visdn-softcxc.ko
-rw-r--r-- 1 root root 188627 29. Jan 13:17 visdn-streamport.ko
-rw-r--r-- 1 root root 95080 29. Jan 13:17 visdn-timer-system.ko

2. /etc/visdn
Die device-pci ist drin.
Ob, bzw. wie .configure'd worden ist, weiss ich leider nicht, da den Install jemand anderes gemacht hat. Ich denke aber Mal, dass dieser alles soweit richtig gemacht hat.
Kopiert hierbei .configure die Dateien in die entsprechenden Verzeichnisse oder macht das nicht visdn_configurator?

3. chan_visdn

Eben das war zunächst das Problem. Es war NICHT in /usr/lib64/asterisk-1.2.3/channels/ Daher hat der * auch gemosert vISDN zu starten. Ich habe die chan_visdn.so daher testweise manuell reinkopiert, und damit konnte * den Channel mittels visdn.conf auch einhängen.

4. ifconfig

visdn1.0 Link encap:UNSPEC Hardware Adresse ...-00-00-00-00-00-00-00-00
UP RUNNING MTU:384 Metric:1
RX packets:0 errors:828 dropped:0 overruns:0 frame:293
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:535 Sendewarteschlangenlänge:10
RX bytes:0 (0.0 b) TX bytes:120 (120.0 b)

visdn1.1 Link encap:UNSPEC Hardware Adresse ...-00-00-00-00-00-00-00-00
UP RUNNING MTU:384 Metric:1
RX packets:0 errors:601 dropped:0 overruns:0 frame:162
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:439 Sendewarteschlangenlänge:10
RX bytes:0 (0.0 b) TX bytes:150 (150.0 b)

visdn1.2 Link encap:UNSPEC Hardware Adresse ...-00-00-00-00-00-00-00-00
UP RUNNING MTU:384 Metric:1
RX packets:0 errors:563 dropped:0 overruns:0 frame:137
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:426 Sendewarteschlangenlänge:10
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

visdn1.3 Link encap:UNSPEC Hardware Adresse ...-00-00-00-00-00-00-00-00
UP RUNNING MTU:384 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:10
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

Syslog reich ich nach. Ich komm grad nicht dazu, aber ich denke dass die oben stehenden Angaben nix großartig Falsches erkennen lassen, oder? Auch wenn mich schon etwas stutzig macht, dass nicht einmal chan_visdn.so in das Modul-Verzeichnis von * kopiert war...
 

tomster

Mitglied
Mitglied seit
6 Dez 2004
Beiträge
238
Punkte für Reaktionen
0
Punkte
0
OK, ein Re-Install mit einem neueren Snapshot hat oben stehende Probleme eliminiert. Asterisk läuft nun ohne Fehlermeldung.
Allerdings habe ich nun immer noch ein Problem mit dem Aufbau einer Verbindung via ISDN.

Zunächst fügt Asterisk einfach eine vorausgehende "0" vor die eigentlich gewählte Nummer. Aber das ist wohl zunächst egal, weil ein q931 debug folgende Ausgabe produziert:

-- Calling visdn1.0 on VISDN/null
-- Calling on interface 'visdn1.0'
q931 visdn1.0:CALL[90.O]: SETUP-REQ
q931 visdn1.0:CALL[90.O]: Sending message:
q931 -> message type: SETUP (5)
q931 -> VL IE 0 ===> 4 (Bearer Capability) -- length 3
q931 -> Coding Standard = CCITT (0)
q931 -> Information Transfer Capability = Speech (0)
q931 -> Transfer mode = Circuit (0)
q931 -> Information Transfer Rate = 64 kbps (16)
q931 -> User information layer 1 protocol = g.711 a-law (3)
q931 -> VL IE 1 ===> 108 (Calling Party Number) -- length 4
q931 -> Type of number = Unknown (0)
q931 -> Numbering plan = ISDN Telephony (1)
q931 -> Presentation indicator = Presentation allowed (0)
q931 -> Screening indicator = User provided, not screened (0)
q931 -> Number = 11
q931 -> VL IE 2 ===> 112 (Called Party Number) -- length 9
q931 -> Type of number = Unknown (0)
q931 -> Numbering plan = ISDN Telephony (1)
q931 -> Number = 0859xxxx
q931
q931 visdn1.0:TEI[0]: DLC is disconnected, requesting connection
q931 visdn1.0:TEI[0]: DLC is awaiting connection: message queued
q931 visdn1.0:CALL[90.O]: call.c:1895 Timer T303 started
q931 visdn1.0:CALL[90.O]: U0_NULL_STATE ==to==> U1_CALL_INITIATED
-- poll timeout = 4000
q931 visdn1.0:CALL[90.O]: T303 fired
q931 visdn1.0:CALL[90.O]: Sending message:
q931 -> message type: SETUP (5)
q931 -> VL IE 0 ===> 4 (Bearer Capability) -- length 3
q931 -> Coding Standard = CCITT (0)
q931 -> Information Transfer Capability = Speech (0)
q931 -> Transfer mode = Circuit (0)
q931 -> Information Transfer Rate = 64 kbps (16)
q931 -> User information layer 1 protocol = g.711 a-law (3)
q931 -> VL IE 1 ===> 108 (Calling Party Number) -- length 4
q931 -> Type of number = Unknown (0)
q931 -> Numbering plan = ISDN Telephony (1)
q931 -> Presentation indicator = Presentation allowed (0)
q931 -> Screening indicator = User provided, not screened (0)
q931 -> Number = 11
q931 -> VL IE 2 ===> 112 (Called Party Number) -- length 9
q931 -> Type of number = Unknown (0)
q931 -> Numbering plan = ISDN Telephony (1)
q931 -> Number = 0859xxxx
q931
q931 visdn1.0:TEI[0]: DLC is awaiting connection: message queued
q931 visdn1.0:CALL[90.O]: call.c:2743 Timer T303 started
-- poll timeout = 4001
q931 visdn1.0:TEI[0]: DL-RELEASE-INDICATION
q931 visdn1.0:CALL[90.O]: call.c:423 Timer T301 stopped
q931 visdn1.0:CALL[90.O]: call.c:424 Timer T302 stopped
q931 visdn1.0:CALL[90.O]: call.c:425 Timer T303 stopped
q931 visdn1.0:CALL[90.O]: call.c:426 Timer T304 stopped
q931 visdn1.0:CALL[90.O]: call.c:427 Timer T305 stopped
q931 visdn1.0:CALL[90.O]: call.c:428 Timer T306 stopped
q931 visdn1.0:CALL[90.O]: call.c:429 Timer T308 stopped
q931 visdn1.0:CALL[90.O]: call.c:430 Timer T309 stopped
q931 visdn1.0:CALL[90.O]: call.c:431 Timer T310 stopped
q931 visdn1.0:CALL[90.O]: call.c:432 Timer T312 stopped
q931 visdn1.0:CALL[90.O]: call.c:433 Timer T313 stopped
q931 visdn1.0:CALL[90.O]: call.c:434 Timer T314 stopped
q931 visdn1.0:CALL[90.O]: call.c:435 Timer T316 stopped
q931 visdn1.0:CALL[90.O]: call.c:436 Timer T318 stopped
q931 visdn1.0:CALL[90.O]: call.c:437 Timer T319 stopped
q931 visdn1.0:CALL[90.O]: call.c:438 Timer T320 stopped
q931 visdn1.0:CALL[90.O]: call.c:439 Timer T321 stopped
q931 visdn1.0:CALL[90.O]: call.c:440 Timer T322 stopped
q931 visdn1.0:CALL[90.O]: U1_CALL_INITIATED ==to==> U0_NULL_STATE
q931 Releasing message
-- poll timeout = -1
-- visdn_q931_release_indication
-- poll timeout = -1
-- visdn_hangup VISDN/visdn1.0/90.O
q931 visdn1.0:CALL[90.O]: Freeing call
-- visdn_hangup VISDN/visdn1.0/90.O DONE
-- Calling visdn1.1 on VISDN/null
-- Calling on interface 'visdn1.1'
...

Aufgefallen ist mir dabei auch, dass die LEDs an der Quad-Karte an den angeschlossenen Ports selbst rot leuchten. Rein gefühlsmäßig würde mir das sagen, dass etwas nicht stimmt...