mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-16 14:58:25 +00:00
add experimental mISDN channel driver (issue #4077)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6910 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -69,6 +69,10 @@ ifneq ($(wildcard h323/libchanh323.a),)
|
|||||||
CHANNEL_LIBS+=chan_h323.so
|
CHANNEL_LIBS+=chan_h323.so
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq ($(wildcard misdn/chan_misdn_lib.a),)
|
||||||
|
CHANNEL_LIBS+=chan_misdn.so
|
||||||
|
endif
|
||||||
|
|
||||||
CFLAGS+=-Wno-missing-prototypes -Wno-missing-declarations
|
CFLAGS+=-Wno-missing-prototypes -Wno-missing-declarations
|
||||||
|
|
||||||
ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/alsa/asoundlib.h),)
|
ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/alsa/asoundlib.h),)
|
||||||
@@ -146,6 +150,10 @@ ifneq ($(wildcard h323/Makefile.ast),)
|
|||||||
include h323/Makefile.ast
|
include h323/Makefile.ast
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq ($(wildcard misdn/Makefile.ast),)
|
||||||
|
include misdn/Makefile.ast
|
||||||
|
endif
|
||||||
|
|
||||||
gentone: gentone.c
|
gentone: gentone.c
|
||||||
$(HOST_CC) -o gentone gentone.c -lm
|
$(HOST_CC) -o gentone gentone.c -lm
|
||||||
|
|
||||||
@@ -205,6 +213,12 @@ chan_h323.so: chan_h323.o h323/libchanh323.a
|
|||||||
$(CC) $(SOLINK) -o $@ $< h323/libchanh323.a $(CHANH323LIB) -L$(PWLIBDIR)/lib $(PTLIB) -L$(OPENH323DIR)/lib $(H323LIB) -L/usr/lib -lcrypto -lssl -lexpat
|
$(CC) $(SOLINK) -o $@ $< h323/libchanh323.a $(CHANH323LIB) -L$(PWLIBDIR)/lib $(PTLIB) -L$(OPENH323DIR)/lib $(H323LIB) -L/usr/lib -lcrypto -lssl -lexpat
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
chan_misdn.so: chan_misdn.o chan_misdn_config.o misdn/chan_misdn_lib.a
|
||||||
|
$(CC) -shared -Xlinker -x -o $@ $^ $(MISDNUSER)/i4lnet/libisdnnet.a $(MISDNUSER)/lib/libmISDN.a
|
||||||
|
|
||||||
|
chan_misdn_config.o: chan_misdn_config.c
|
||||||
|
$(CC) $(CFLAGS) -c chan_misdn_config.c
|
||||||
|
|
||||||
|
|
||||||
#chan_modem.so : chan_modem.o
|
#chan_modem.so : chan_modem.o
|
||||||
# $(CC) -rdynamic -shared -Xlinker -x -o $@ $<
|
# $(CC) -rdynamic -shared -Xlinker -x -o $@ $<
|
||||||
|
|||||||
3700
channels/chan_misdn.c
Executable file
3700
channels/chan_misdn.c
Executable file
File diff suppressed because it is too large
Load Diff
1057
channels/chan_misdn_config.c
Executable file
1057
channels/chan_misdn_config.c
Executable file
File diff suppressed because it is too large
Load Diff
267
configs/misdn.conf.sample
Executable file
267
configs/misdn.conf.sample
Executable file
@@ -0,0 +1,267 @@
|
|||||||
|
;
|
||||||
|
; chan_misdn sample config
|
||||||
|
;
|
||||||
|
|
||||||
|
; general section:
|
||||||
|
;
|
||||||
|
; for debugging and general setup, things that are not bound to port groups
|
||||||
|
;
|
||||||
|
|
||||||
|
[general]
|
||||||
|
|
||||||
|
; set debugging flag:
|
||||||
|
; 0 - No Debug
|
||||||
|
; 1 - mISDN Messages and * - Messages, and * - State changes
|
||||||
|
; 2 - Messages + Message specific Informations (e.g. bearer capability)
|
||||||
|
; 3 - very Verbose, the above + lots of Driver specific infos
|
||||||
|
; 4 - even more Verbose than 3
|
||||||
|
;
|
||||||
|
; default value: 0
|
||||||
|
;
|
||||||
|
debug=0
|
||||||
|
|
||||||
|
; the big trace
|
||||||
|
;
|
||||||
|
; default value: [not set]
|
||||||
|
;
|
||||||
|
;tracefile=/var/log/misdn.trace
|
||||||
|
|
||||||
|
; single call trace files
|
||||||
|
; set to true if you want to have them
|
||||||
|
; they depend on debug level
|
||||||
|
;
|
||||||
|
; default values: trace_calls : false
|
||||||
|
; trace_dir : /var/log/
|
||||||
|
;
|
||||||
|
trace_calls=false
|
||||||
|
trace_dir=/var/log/
|
||||||
|
|
||||||
|
; set to yes if you want mISDN_dsp to bridge the calls in HW
|
||||||
|
;
|
||||||
|
; default value: yes
|
||||||
|
;
|
||||||
|
bridging=yes
|
||||||
|
|
||||||
|
; stops dialtone after getting first digit on nt Port
|
||||||
|
;
|
||||||
|
; default value: yes
|
||||||
|
;
|
||||||
|
stop_tone_after_first_digit=yes
|
||||||
|
|
||||||
|
; wether to append overlapdialed Digits to Extension or not
|
||||||
|
;
|
||||||
|
; default value: yes
|
||||||
|
;
|
||||||
|
append_digits2exten=yes
|
||||||
|
|
||||||
|
; set this to yes if you have jollys mISDN which sends correct L1 Infos
|
||||||
|
;
|
||||||
|
; default value: yes
|
||||||
|
;
|
||||||
|
l1_info_ok=yes
|
||||||
|
|
||||||
|
; set this to yes if you want to clear the l3 in case the l2 deactivates
|
||||||
|
; some environments have a flickering l2 which causes this option to
|
||||||
|
; damage active calls .. highly experimental
|
||||||
|
;
|
||||||
|
; default value: no
|
||||||
|
;
|
||||||
|
clear_l3=no
|
||||||
|
|
||||||
|
; set the method to use for channel selection:
|
||||||
|
; standard - always choose the first free channel with the lowest number
|
||||||
|
; round_robin - use the round robin algorithm to select a channel. use this
|
||||||
|
; if you want to balance your load.
|
||||||
|
;
|
||||||
|
; default value: standard
|
||||||
|
;
|
||||||
|
method=standard
|
||||||
|
|
||||||
|
;;; CRYPTION STUFF
|
||||||
|
|
||||||
|
; Wether to look for dynamic crypting attempt
|
||||||
|
;
|
||||||
|
; default value: no
|
||||||
|
;
|
||||||
|
dynamic_crypt=no
|
||||||
|
|
||||||
|
; crypt_prefix, what is used for crypting Protocol
|
||||||
|
;
|
||||||
|
; default value: [not set]
|
||||||
|
;
|
||||||
|
crypt_prefix=**
|
||||||
|
|
||||||
|
; Keys for cryption, you reference them in the dialplan
|
||||||
|
; later also in dynamic encr.
|
||||||
|
;
|
||||||
|
; default value: [not set]
|
||||||
|
;
|
||||||
|
crypt_keys=test,muh
|
||||||
|
|
||||||
|
; users sections:
|
||||||
|
;
|
||||||
|
; name your sections as you which but not "general" !
|
||||||
|
; the secions are Groups, you can dial out in extensions.conf
|
||||||
|
; with Dial(mISDN/g:extern/101) where extern is a section name,
|
||||||
|
; chan_misdn tries every port in this section to find a
|
||||||
|
; new free channel
|
||||||
|
;
|
||||||
|
|
||||||
|
; The default section is not a group section, it just contains config elements
|
||||||
|
; which are inherited by group sections.
|
||||||
|
;
|
||||||
|
|
||||||
|
[default]
|
||||||
|
|
||||||
|
; define your default context here
|
||||||
|
;
|
||||||
|
; default value: default
|
||||||
|
;
|
||||||
|
context=misdn
|
||||||
|
|
||||||
|
; language
|
||||||
|
;
|
||||||
|
; default value: en
|
||||||
|
;
|
||||||
|
language=en
|
||||||
|
|
||||||
|
; Prefixes for national and international, those are put before the
|
||||||
|
; oad if an according dialplan is set by the other end.
|
||||||
|
;
|
||||||
|
; default values: nationalprefix : 0
|
||||||
|
; internationalprefix : 00
|
||||||
|
;
|
||||||
|
nationalprefix=0
|
||||||
|
internationalprefix=00
|
||||||
|
|
||||||
|
; set rx/tx gains between -8 and 8 to change the RX/TX Gain
|
||||||
|
;
|
||||||
|
; default values: rxgain: 0
|
||||||
|
; txgain: 0
|
||||||
|
;
|
||||||
|
rxgain=0
|
||||||
|
txgain=0
|
||||||
|
|
||||||
|
; some telcos espacially in NL seem to need this set to yes, also in
|
||||||
|
; switzerland this seems to be important
|
||||||
|
;
|
||||||
|
; default value: no
|
||||||
|
;
|
||||||
|
te_choose_channel=no
|
||||||
|
|
||||||
|
; dialplan options:
|
||||||
|
;
|
||||||
|
; 0 - unknown
|
||||||
|
; 1 - National
|
||||||
|
; 2 - International
|
||||||
|
; 4 - Subscriber
|
||||||
|
;
|
||||||
|
; This setting is used for outgoing calls
|
||||||
|
;
|
||||||
|
; default value: 0
|
||||||
|
;
|
||||||
|
dialplan=0
|
||||||
|
|
||||||
|
; This is only for asterisk head and will result in only considering
|
||||||
|
; misdn.confs and misdn_set_opts callingpresentation informations if set to no.
|
||||||
|
; Otherwise asterisks callingpresentation overwrites misdn.confs settings.
|
||||||
|
;
|
||||||
|
; default value: yes
|
||||||
|
;
|
||||||
|
use_callingpres=yes
|
||||||
|
|
||||||
|
; uncomment the following to get into s extension at extension conf
|
||||||
|
; there you can use DigitTimeout if you can't or don't want to use
|
||||||
|
; isdn overlap dial.
|
||||||
|
; note: This will jump into the s exten for every exten!
|
||||||
|
;
|
||||||
|
; default value: no
|
||||||
|
;
|
||||||
|
;always_immediate=no
|
||||||
|
|
||||||
|
; uncomment the following if you want callers which called exactly the
|
||||||
|
; base number (so no extension is set) jump to the s extension.
|
||||||
|
; if the user dials something more it jumps to the correct extension
|
||||||
|
; instead
|
||||||
|
;
|
||||||
|
; default value: no
|
||||||
|
;
|
||||||
|
;immediate=no
|
||||||
|
|
||||||
|
; uncomment the following to have hold and retrieve support
|
||||||
|
;
|
||||||
|
; default value: no
|
||||||
|
;
|
||||||
|
;hold_allowed=yes
|
||||||
|
|
||||||
|
; Pickup and Callgroup
|
||||||
|
;
|
||||||
|
; deafult values: not set = 0
|
||||||
|
;
|
||||||
|
;callgroup=1
|
||||||
|
;pickupgroup=1
|
||||||
|
|
||||||
|
; Allows/Screens Callerid
|
||||||
|
;
|
||||||
|
; possible values: allowed,not_screened
|
||||||
|
;
|
||||||
|
; be aware, if you set to allowed you need to set a correct
|
||||||
|
; callerid in the dialplan or set it here in the misdn.conf
|
||||||
|
; Some Telcos don't care about wrong callerids, others do !
|
||||||
|
;
|
||||||
|
; default value: allowed
|
||||||
|
;
|
||||||
|
;presentation=not_screened
|
||||||
|
|
||||||
|
; this enables echocancellation, with the given number of taps
|
||||||
|
; be aware, move this setting only to outgoing portgroups!
|
||||||
|
; A value of zero turns echocancellation off.
|
||||||
|
;
|
||||||
|
; possible values are: 0,32,64,128.256,yes(=128),no(=0)
|
||||||
|
;
|
||||||
|
; default value: no
|
||||||
|
;
|
||||||
|
;echocancel=no
|
||||||
|
|
||||||
|
; this disables echocancellation when the call is bridged between
|
||||||
|
; mISDN channels
|
||||||
|
;
|
||||||
|
; default value: no
|
||||||
|
;
|
||||||
|
echocancelwhenbridged=no
|
||||||
|
|
||||||
|
; Set this to no to disable echotraining
|
||||||
|
;
|
||||||
|
; default value: yes
|
||||||
|
;
|
||||||
|
echotraining=yes
|
||||||
|
|
||||||
|
[intern]
|
||||||
|
; define your ports, e.g. 1,2 (depends on mISDN-driver loading order)
|
||||||
|
ports=1,2
|
||||||
|
; context where to go to when incoming Call on one of the above ports
|
||||||
|
context=Intern
|
||||||
|
|
||||||
|
[internPP]
|
||||||
|
; if you want to have pp Protocol on one nt Port, you need
|
||||||
|
; to add a ptp directly after the portnumber, you can still add
|
||||||
|
; more ports and multiple ptp adds in your config.
|
||||||
|
ports=3ptp
|
||||||
|
|
||||||
|
[first_extern]
|
||||||
|
; again port defs
|
||||||
|
ports=4
|
||||||
|
; again a context for incomming calls
|
||||||
|
context=Extern1
|
||||||
|
; msns for te ports, listen on those numbers on the above ports, and
|
||||||
|
; indicate the incoming calls to asterisk
|
||||||
|
; here you can give a comma seperated list or simply an '*' for
|
||||||
|
; any msn.
|
||||||
|
msns=*
|
||||||
|
|
||||||
|
; here an example with given msns
|
||||||
|
[second_extern]
|
||||||
|
ports=5
|
||||||
|
context=Extern2
|
||||||
|
callerid=15
|
||||||
|
msns=102,144,101,104
|
||||||
363
doc/README.misdn
Executable file
363
doc/README.misdn
Executable file
@@ -0,0 +1,363 @@
|
|||||||
|
mISDN Channel Driver for Asterisk PBX
|
||||||
|
======================================
|
||||||
|
|
||||||
|
|
||||||
|
This package contains the mISDN Channel Driver for the Asterisk PBX. It
|
||||||
|
supports every mISDN Hardware and provides an interface for asterisk.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
* NT and TE mode
|
||||||
|
* PP and PMP mode
|
||||||
|
* BRI and PRI (with BNE1 and BN2E1 Cards)
|
||||||
|
* DTMF Detection in HW+mISDNdsp (much better than asterisks internal!)
|
||||||
|
* Display Messages to Phones (which support display msg)
|
||||||
|
* HOLD/RETRIEVE/TRANSFER on ISDN Phones : )
|
||||||
|
* Screen/ Not Screen User Number
|
||||||
|
* Basic EchoCancellation
|
||||||
|
* Volume Control
|
||||||
|
* Crypting with mISDNdsp (Blowfish)
|
||||||
|
* Data (HDLC) callthrough
|
||||||
|
* Data Callin (with app_ptyfork +pppd)
|
||||||
|
* echo cancellation
|
||||||
|
* some other
|
||||||
|
|
||||||
|
Supported Hardware:
|
||||||
|
|
||||||
|
chan_misdn supports any mISDN compatible Hardware. Especially the 1-8 Port
|
||||||
|
BRI Cards available from http://shop.beronet.com
|
||||||
|
|
||||||
|
Overview
|
||||||
|
--------
|
||||||
|
|
||||||
|
- Fast Installation Guide
|
||||||
|
- Pre-Requisites
|
||||||
|
- Compilation
|
||||||
|
- Installation
|
||||||
|
- Configuration
|
||||||
|
- Dial and Options String
|
||||||
|
- misdn cli commands
|
||||||
|
- Debugging and sending Bugreports
|
||||||
|
- Examples
|
||||||
|
- Known working Configurations
|
||||||
|
- Known Problems
|
||||||
|
- Changes
|
||||||
|
|
||||||
|
|
||||||
|
Fast Installation Guide
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
You have two options on how to install chan_misdn.
|
||||||
|
|
||||||
|
(1) Requirements:
|
||||||
|
- mISDN and mISDNuser from jolly (see Pre-Requisites below)
|
||||||
|
Installation:
|
||||||
|
- cd <asterisk-src-dir>/channels/misdn
|
||||||
|
- edit Makefile so that MISDNUSER points to your mISDNuser directory
|
||||||
|
- run 'make'
|
||||||
|
- cd <asterisk-src-dir>
|
||||||
|
- compile and install asterisk via 'make install'
|
||||||
|
|
||||||
|
(2) Requirements:
|
||||||
|
- Asterisk headers and Kernel headers
|
||||||
|
Description:
|
||||||
|
The Makefile gets the newest mISDN and mISDNuser Sources from
|
||||||
|
jollys webpage and the newest release of chan_misdn from beronets
|
||||||
|
Servers. After that it compiles and installs everything (hopefully).
|
||||||
|
Installation:
|
||||||
|
- cd /usr/src
|
||||||
|
- wget http://www.beronet.com/downloads/install-misdn.tar.gz
|
||||||
|
- tar zxf install-misdn.tar.gz
|
||||||
|
- cd install-misdn
|
||||||
|
- make install
|
||||||
|
|
||||||
|
|
||||||
|
Pre-Requisites
|
||||||
|
--------------
|
||||||
|
|
||||||
|
To compile and install this driver, you'll need at least one mISDN Driver, the
|
||||||
|
mISDNuser package and the asterisk includes (which will be inside of the
|
||||||
|
sources). Chan_misdn works with both, the current stable release and the cvs-head version of Asterisk.
|
||||||
|
|
||||||
|
To get the mISDN stuff please follow the instructions at
|
||||||
|
http://www.isdn4linux.de. Please Note that mISDN works good for the
|
||||||
|
linux-2.6.x kernels. Some of the mISDN drivers do not compile against the
|
||||||
|
2.4.x or older kernels, you can patch them, but than you'll get myterius
|
||||||
|
errors.
|
||||||
|
|
||||||
|
I use Kernels > 2.6.9 and it works perfect. with kernels >= 2.6.10 there is a
|
||||||
|
very litle bug in hfc_multi.c which causes the module not to compile, it can
|
||||||
|
be easyly fixed by changenging pci_findsubsys to pci_getsubsys in code.
|
||||||
|
|
||||||
|
Ok so far so good, now follow the compilation instructions.
|
||||||
|
|
||||||
|
!! Dont forget to create the /dev/mISDN device node.
|
||||||
|
|
||||||
|
Compilation
|
||||||
|
-----------
|
||||||
|
|
||||||
|
!! Be aware, in the actual mISDNuser package theres a bug in the Makefile
|
||||||
|
!! the compilation stops near iapplication.h, this isn't very important
|
||||||
|
!! at this step you are ready.
|
||||||
|
|
||||||
|
After you've successfully installed mISDN, mISDNuser and asterisk, you should
|
||||||
|
modify the Makefile in the chan_misdn source path. There you can tell the
|
||||||
|
Makefile where to install the driver, sample-conf, and most important where it
|
||||||
|
can find the linux kernel includes, the mISDNuser package and the asterisk
|
||||||
|
includes. If you use the Head-Revision of Asterisk (or at least a newer
|
||||||
|
version than stable) uncomment the CCFLAGS+=-DASTERISK_STABLE, the stable
|
||||||
|
version of asterisk is at the moment v1-0-X as cvs tag.
|
||||||
|
|
||||||
|
Now you can type in:
|
||||||
|
|
||||||
|
make
|
||||||
|
|
||||||
|
This should compile chan_misdn.so, if theres an error check the paths in the
|
||||||
|
Makefile again.
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
After successful compilation of chan_misdn, you should simply type in:
|
||||||
|
|
||||||
|
make install
|
||||||
|
|
||||||
|
as privileged user to put chan_misdn.so in the asterisk modules
|
||||||
|
directory.
|
||||||
|
|
||||||
|
You should see a Msg like: "Successfully installed chan_misdn".
|
||||||
|
Congratulations.
|
||||||
|
|
||||||
|
Theres a sample init.d script for loading the mISDN modules (mISDN.sample),
|
||||||
|
simply copy it to /etc/init.d/ and modify it, there you can enter your cards.
|
||||||
|
|
||||||
|
!! Forget to use capi together with chan_misdn.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
-------------
|
||||||
|
|
||||||
|
First of all you must configure the mISDN drivers. Each driver module has got
|
||||||
|
an options and layermask option, which tells the driver wether to start in
|
||||||
|
TE,NT, PP or PMP mode (there are lots more please read docs in misdn for
|
||||||
|
that).
|
||||||
|
|
||||||
|
After thinking about the above you'll probably want to configure the
|
||||||
|
misdn.conf file which resides in the asterisk-config directory.
|
||||||
|
|
||||||
|
The misdn.conf file contains a "general" Section, and user sections which
|
||||||
|
contain misdn port settings and different asterisk contexts.
|
||||||
|
|
||||||
|
The general section contains especially a variable named context with which
|
||||||
|
the default context is set. There is also the very important debug variable
|
||||||
|
which you can set from the asterisk cli (command line interface) or in this
|
||||||
|
configfile, bigger numbers will lead to more debug output. Theres also a
|
||||||
|
tracefile options, which takes a path+filename where debug output is written
|
||||||
|
to.
|
||||||
|
|
||||||
|
The user Sections have names which are unequal to "general". Those sections
|
||||||
|
contain the ports variable which mean the mISDN Ports. Here you can add
|
||||||
|
comma-sepperated multiple ports.
|
||||||
|
|
||||||
|
Espacially for TE-Mode Ports there is a msns variable. This variable tells the
|
||||||
|
chan_misdn driver to listen for incomming calls with the given msns, you can
|
||||||
|
insert a '*' as single msn, which leads in getting every incomming call (if
|
||||||
|
you want to share on PMP TE S0 with a asterisk and a phone or isdn card you
|
||||||
|
should insert here the msns which you'll like to give the asterisk). Finally
|
||||||
|
a context variable resides in the user sections, which tells chan_misdn where
|
||||||
|
to send incomming calls to (extension.conf).
|
||||||
|
|
||||||
|
In NT-Mode Ports there is a new option, directly after the port number you can
|
||||||
|
write ptp, this enables PP Mode for this port, please look at misdn.conf for
|
||||||
|
an example.
|
||||||
|
|
||||||
|
When everything worked you should get the asterisk running.
|
||||||
|
|
||||||
|
|
||||||
|
Dial and Options String
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
The Dialstring of chan_misdn got more complex, because we added more features,
|
||||||
|
so the generic dialstring looks like:
|
||||||
|
|
||||||
|
mISDN/<port>|g:<group>/<extension>[/<OPTIONSSTRING>]
|
||||||
|
|
||||||
|
The Optionsstring looks Like:
|
||||||
|
:<optchar1><OptParam1>:<optchar2><OptParam2>
|
||||||
|
|
||||||
|
the ":" character is the delimeter.
|
||||||
|
|
||||||
|
The available Optchars are:
|
||||||
|
d - Send display text on called phone, text is the optparam
|
||||||
|
n - don't detect dtmf tones on called channel
|
||||||
|
h - make digital outgoing call
|
||||||
|
c - make crypted outgoing call, param is keyindex
|
||||||
|
e - perform echo cancelation on this channel, takes taps as
|
||||||
|
arguments (32,64,128,256)
|
||||||
|
s - send Non Inband DTMF as inband
|
||||||
|
vr - rxgain control
|
||||||
|
vt - txgain control
|
||||||
|
|
||||||
|
|
||||||
|
chan_misdn registers a new application "misdn_set_opt" when loaded. This
|
||||||
|
application takes the Optionsstring as argument. The Syntax is:
|
||||||
|
|
||||||
|
misdn_set_opt(<OPTIONSSTRING>)
|
||||||
|
|
||||||
|
|
||||||
|
When you set options in the dialstring, the options are set in the external
|
||||||
|
channel. When you set options with misdn_set_opt, they are set in the current
|
||||||
|
incoming channel. So if you like to use static encryption, the scenario looks
|
||||||
|
as follows:
|
||||||
|
|
||||||
|
Phone1 --> * Box 1 --> PSTN_TE
|
||||||
|
PSTN_TE --> * Box 2 --> Phone2
|
||||||
|
|
||||||
|
The Encryption must be done on the PSTN sides, so the dialplan on the boxes
|
||||||
|
are:
|
||||||
|
|
||||||
|
* Box 1:
|
||||||
|
exten => _${CRYPT_PREFIX}X.,1,Dial(mISDN/g:outbound/:c1)
|
||||||
|
|
||||||
|
* Box 2:
|
||||||
|
exten => ${CRYPT_MSN},1,misdn_set_opt(:c1)
|
||||||
|
exten => ${CRYPT_MSN},2,dial(${PHONE2})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
misdn cli commands
|
||||||
|
------------------
|
||||||
|
|
||||||
|
At the asterisk cli you can try to type in:
|
||||||
|
|
||||||
|
misdn <tab> <tab>
|
||||||
|
|
||||||
|
Now you should see the misdn cli commands:
|
||||||
|
|
||||||
|
- clean
|
||||||
|
-> pid (cleans a broken call, use with care, leads often
|
||||||
|
to a segmentation fault)
|
||||||
|
- send
|
||||||
|
-> display (sends a Text Message to a asterisk channel,
|
||||||
|
this channel must be an misdn channel)
|
||||||
|
- set
|
||||||
|
-> debug (sets debug level)
|
||||||
|
- show
|
||||||
|
-> config (shows the configuration options)
|
||||||
|
-> channels (shows the current active misdn channels)
|
||||||
|
-> channel (shows details about the given misdn channels)
|
||||||
|
-> stacks (shows the currend ports, there protocols and states)
|
||||||
|
-> fullstacks (shows the current active and inactive misdn channels)
|
||||||
|
|
||||||
|
- restart
|
||||||
|
-> port (restarts given port (L2 Restart) )
|
||||||
|
|
||||||
|
- reload (reloads misdn.conf)
|
||||||
|
|
||||||
|
You can only use "misdn send display" when a asterisk channel is created and
|
||||||
|
isdn is in the corect state, correct state means that you have established a
|
||||||
|
call to another phone (mustnt be isdn though).
|
||||||
|
|
||||||
|
Then you use it like this:
|
||||||
|
|
||||||
|
misdn send display mISDN/1/101 "Hello World!"
|
||||||
|
|
||||||
|
where 1 is the Port of the Card where the phone is plugged in, and 101 is the
|
||||||
|
msn (callerid) of the Phone to send the text to.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Debugging and sending Bug-Reports
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
If you encounter problems, you should set up the debugging flag, usually debug=1 should be enough. the Messages are divided in asterisk and misdn parts. Misdn Debug messages begin with an 'I', asterisk messages begin with an '*', the rest is clear I think.
|
||||||
|
|
||||||
|
Please take a trace of the problem and send this trace via mail to bugs@beronet.com
|
||||||
|
|
||||||
|
|
||||||
|
Examples
|
||||||
|
--------
|
||||||
|
|
||||||
|
here some examples of how to use chan_misdn in the dialplan (extensions.conf):
|
||||||
|
|
||||||
|
|
||||||
|
[globals]
|
||||||
|
OUT_PORT=1 ; The physical Port of the Card
|
||||||
|
OUT_GROUP=ExternE1 ; The Group of Ports defined in misdn.conf
|
||||||
|
|
||||||
|
[misdnIn]
|
||||||
|
exten => _X.,1,Dial(mISDN/${OUT_PORT}/${EXTEN})
|
||||||
|
exten => _0X.,1,Dial(mISDN/g:${OUT_GROUP}/${EXTEN:1})
|
||||||
|
exten => _1X.,1,Dial(mISDN/g:${OUT_GROUP}/${EXTEN:1}/:dHello)
|
||||||
|
exten => _1X.,1,Dial(mISDN/g:${OUT_GROUP}/${EXTEN:1}/:dHello Test:n)
|
||||||
|
|
||||||
|
In the last line you will notice the last argument (Hello), this is sended
|
||||||
|
as Display Message to the Phone.
|
||||||
|
|
||||||
|
|
||||||
|
Known working Configurations
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
In this Section I'll put working configurations for chan_misdn. Beware It
|
||||||
|
seems that between Kernel 2.6.3 and Kernel 2.6.8 there were lots of mISDN
|
||||||
|
Bugs. I use Kernel 2.6.9 now, it works quite ok, Kernel 2.6.10+ has changed
|
||||||
|
the pci_find_subgsys funktion, so hfc_multi from mISDN doesn't compile against
|
||||||
|
it, you can just change pci_find_subsys to pci_get_subsys, this works.
|
||||||
|
|
||||||
|
|
||||||
|
- chan_misdn-0.0.3-rc1:
|
||||||
|
* linux-kernel >= 2.6.3 (but at least 2.6)
|
||||||
|
* asterisk >= v1-0
|
||||||
|
* mISDN/mISDNuser since September/04
|
||||||
|
|
||||||
|
- chan_misdn-0.0.3-rc3:
|
||||||
|
* linux-kernel >= 2.6.3 (but at least 2.6)
|
||||||
|
* asterisk >= v1-0.2
|
||||||
|
* mISDN/mISDNuser since December/04
|
||||||
|
|
||||||
|
- chan_misdn-0.0.3-rc4:
|
||||||
|
* linux-kernel >= 2.6.8 (but at least 2.6)
|
||||||
|
* asterisk >= v1-0.2
|
||||||
|
* mISDN/mISDNuser head on cvs.isdn4linux.de
|
||||||
|
|
||||||
|
- chan_misdn-0.0.3-rc6:
|
||||||
|
* linux-kernel >= 2.6.8 (but at least 2.6)
|
||||||
|
* asterisk >= v1-0.2
|
||||||
|
* mISDN/mISDNuser head on cvs.isdn4linux.de
|
||||||
|
|
||||||
|
- chan_misdn-0.1.0
|
||||||
|
* linux-kernel >= 2.6.8 (but at least 2.6)
|
||||||
|
* asterisk >= v1-0.2 , also CVS Head
|
||||||
|
* mISDN/mISDNuser (3.0-beta) from isdn.jolly.de
|
||||||
|
|
||||||
|
|
||||||
|
Known Problems
|
||||||
|
--------------
|
||||||
|
|
||||||
|
* When I use mISDN->IAX I cannot make Trunk calls
|
||||||
|
|
||||||
|
-> You need to use ztdummy as dummy zaptel interface for the iax timing in
|
||||||
|
trunking mode, simply grab libpri, zaptel and compile them (i think you need
|
||||||
|
to modify the makefile in zaptel to add ztdummy to the defaultly compiled
|
||||||
|
modules) then modprobe ztdummy, this resolves the problem.
|
||||||
|
|
||||||
|
|
||||||
|
* I cannot hear any tone after succesfull CONNECT to other end
|
||||||
|
|
||||||
|
-> you forgot to load mISDNdsp, which is now needed by chan_misdn for switching
|
||||||
|
and dtmf tone detection
|
||||||
|
|
||||||
|
* I have strange ISDN behavior: sometimes I hear the other end, sometimes
|
||||||
|
not. also i get STATUS Events with cause 100, with misdn debugging
|
||||||
|
|
||||||
|
-> Please update to newest version of chan_misdn and set the te_choose_channel
|
||||||
|
option in misdn.conf to yes
|
||||||
|
|
||||||
|
Changes
|
||||||
|
-------
|
||||||
|
|
||||||
|
in the Changes File
|
||||||
|
|
||||||
Reference in New Issue
Block a user