mISDN stands for modular ISDN and Is the future ISDN layer for Linux.
Its a bunch of kernel patches / modules developed by Karsten Keil <kkeil@suse.de> from SUSE and independent developers such as Andreas Eversberg. (www.jolly.de)
mISDN currently supports some passive ISDN cards under Linux 2.6, such as :
The current version of your kernel can be found by typing uname -a at the console.
e.g.: uname -a
Linux cleopatra 2.4.19 #2 SMP Thu Apr 8 16:30:54 CEST 2004 i686 unknown
A list of available kernel sources could be found with the command:
apt-cache search kernel-source
e.g.:
root@cleopatra:/etc/asterisk# apt-cache search kernel-source
kernel-source-2.2.10 - Linux kernel source.
kernel-source-2.2.19 - Linux kernel source for version 2.2.19
kernel-source-2.2.20 - Linux kernel source for version 2.2.20
kernel-source-2.2.22 - Linux kernel source for version 2.2.22
kernel-source-2.4.10 - Linux kernel source for version 2.4.10
kernel-source-2.4.14 - Linux kernel source for version 2.4.14
kernel-source-2.4.16 - Linux kernel source for version 2.4.16
kernel-source-2.4.17 - Linux kernel source for version 2.4.17
kernel-source-2.4.17-hppa - Linux kernel source for version 2.4.17 on HPPA
kernel-source-2.4.17-ia64 - Linux kernel source for version 2.4.17 on IA-64
kernel-source-2.4.18 - Linux kernel source for version 2.4.18
kernel-source-2.4.18-hppa - Linux kernel source for version 2.4.18 on HPPA
kernel-source-2.4.19 - Linux kernel source for version 2.4.19
Once you did the apt-get install, apt will save the file in the /usr/src directory,
e.g.:
/usr/src/kernel-source-2.4.9.tar.bz
Unpack the file:
tar -vxjz kernel-source-2.4.9.tar.bz
Afterwards your kernel sources will be in the directory:
/usr/src/kernel-source-<yourkernelversion>
2.1.2. Distro independent way of obtaining kernel sources.
Download the right file from:
http://www.kernel.org/pub/linux/kernel/
and save it in
/usr/src/
then tar -vxjw this file
Afterwards your kernel sources will be in the directory:
/usr/src/kernel-source-<yourkernelversion>
2.2. Symlinking to the kernel sources directory
Now that you installed the kernel sources, you will need to create a symlink to this directory, in /usr/src/linux and /usr/src/linux-2.6
You will now be prompted for a password, type "readonly"
then do:
cvs co mISDN mISDNuser
2.4. Patching the kernel sources
If the previous steps went well, you should now find two new directories in /usr/src
/usr/src/mISDN
and
/usr/src/mISDNuser
Go to the /usr/src/mISDN directory
Type the following command:
./std2kern
This should patch your kernel sources. It is something similar to following screen:
2.5. Configuring the kernel
We now need to configure the kernel, if you are using a linux kernel that comes with your distribution, you might find your previous kernel config file in the /boot directory.
Copy it into /usr/src/linux
then go back to /usr/src/linux
and type:
make menuconfig
This will start a GUI for kernel configuration, look for ISDN subsystem and activate the ISDN support (M) and CAPI (M) and Modular ISDN driver (M).
Once you enabled the Modular ISDN Driver, more configuration options will appear.
Configure everything like on the image below.
You can find this options in Device Drivers ---> ISDN subsystem
and Device Drivers ---> ISDN subsystem ---> Modular ISDN driver
Here you need to select the driver for your specific card:
for beronet cards: HFC multiport cards.
for junghanns cards: HFC multiport cards.
for AVM fritz! cards: AVM fritz!
for active AVM cards (b1, c2, c4), you don't need to select the modular ISDN driver, but select the active AVM driver.
for active EIKON bri cards, you don't need to select the modular ISDN driver, but select the active eikon driver.
Now hit the exit button and save the configuration when asked.
2.6. Compilation of the kernel modules
The kernel is now configured to support mISDN but still needs to be compiled.
go to the directory /usr/src/linux and type :
make dep; make bzImage; make modules; make modules_install
This might take a while depending on your CPU.
Now go back to the directory /usr/src/mISDNuser and type:
make
make install
If everything went well, you should now have a bunch of kernel modules and new kernel.
Reboot your computer with the new kernel and mISDN support.
It now depends on what type of card you want to use how to go on.
If you have a hfc based card, you will need to modprobe the hfcmulti module.
Before attempting to load any mISDN kernel modules, make sure there are no other modules loaded such as CAPI or HISAX.
No other drivers for this kind of chipset on the card should be loaded, as well as no other drivers that access mISDN.
Lets show how to load the modules:
Depending on the brand and model of the card, you might have set some jumpers on the card.
When loading the kernel module, we will have to pass some parameters such as operating mode, number of ports and protocol used. Even if you set some jumpers on the card, the driver cannot auto detect this and you will have to provide them here again.
Lets have a look at the possible options:
layermask: to set the operating mode of the card
Possible values:
0x3: for NT mode 0xf: for TE mode
protocol: to set the card to point to multipoint or point to point Possible values:
0x2: for point to multipoint (PmP) with a TE port 0x22: for point to point (PP) with a TE port 0x12: for point to multi point with an NT porttype 0x32: for point to point with an NT porttype
type: to set the number of ports for the card. Possible values:
0x01: 1 port card 0x02: 2 port card 0x04: 4 port card 0x08: 8 port card
these options have to be passed as parameters to modprobe when loading the drivers,
When you have multiple ports, you will have to supply multiple values for the layermask and protocol parameters as shown below.
Would load the module for a 2 port card, where the first port is configured as a 0x3 (NT) using point to multipoint (0x12) and the second port is configured as a 0xf (TE) using point to point (0x22).
After loading the module for the card, you should still load the mISDN_dsp module by typing:
modprobe mISDN_dsp
2.7. chan_mISDN download and compilation
First make sure you downloaded asterisk into /usr/src/asterisk
Now goto the chan_misdn homepage and download the chan_misdn tar.gzip
At the moment of writing this tutorial, the latest version was:
chan_misdn-beta-0.1.0.tgz
Unpack this file into the directory /usr/src, this should create a new directory, called chan_misdn.
Enter this directory and open the Makefile, if you are using a version of asterisk that is more recent that version 1.0.2 or you are using CVS head, you will need to comment out the line with:
The configuration for chan_misdn is done with an extra configuration file in /etc/asterisk called misdn.conf
there are different sections in the configuration file, the first being the general section. Sections are put inside square brackets [] and the first section has to be called [general], this is similar to the layout of extensions.conf
All other (non general sections) can be seen as groups of one or more ports.
A port can be in one or multiple groups, with for example different msns. (See later)
The general section is for general configuration options, all other sections are so called channelgroups, in a channelgroup you first define the ports for this channelgroup and then the options for this channelgroup (if different from the general options).
The following options can be set:
context=
possible values: any string, that is also a valid context in extensions.conf
This is used to determine what context incoming calls on the BRI will be sent to.
e.g.: context=bri-incoming
language=
This is used to set the language for incoming calls on this port or group of ports.
The language option can be used to for example play prompts in a specific language.
e.g.: language=en
immediate=
When set to yes, this option will make sure the call jumps immediately into a context without waiting for a number to be dialed.
This is for example for when a telephone is connected to this port and when picking up the horn, you don't want to have a dial tone, but you want to go directly to dialing a specific person, or playing a specific message or... or ...
e.g.: immediate=no
debug=
The parameter to this option is a numeric value and will set how much debugging output you will get when something happens on the misdn channel, set it to 0 to disable debugging.
possible options:
1 - mISDN Messages and * - Messages, and * - Status changes
2 - mISDN Messages with specific Information (i.e. bearer capability)
3 very communicative, as Level 2 + many additional Driver information
4 even more communicative than Level 3
e.g.: debug=0
msns=
When you read the previous tutorial, you will know what an msn is, this option is to set to what msns this section will react. (or better to call with which msns this section will react).
It takes either numbers or an asterisk (*) as a parameter. An asterisk would mean that it would respond to any msn sent on the channel.
If you want it to react to multiple msns, you need to separate them by a comma.
e.g.: msns=* or
msns=12312312,12312313,12312314
ports=
The ports this section (group) applies to, if you want to put multiple ports here, you need to separate them by a comma.
If you want to use an NT port as a PTP connection (see the previous tutorial for what PTP or point to point or NT is), you need to add the suffix PTP to the port number.
e.g.: port=1,2,4 or
port=1ptp,2,3ptp
hold_allowed=
It defines whether it is possible to put a call on hold, on this port, or this group of ports.
I suspect this to be only valid for BRI end of the call, meaning that if a BRI user calls to an iax2 user, then the iax2 user will still be able to put the call on hold, but the BRI user can't.
e.g.: hold_allowed=yes
stop_tone_after_first_digit=
It determines if the dial tone (LA) will stop after the first digit, or will only stop after an extension is matched in the dialplan for this context.
This is only for calls incoming on BRI, e.g. an ISDN telephone connected to this BRI. The default setting is yes.
e.g.: stop_tone_after_first_digit=yes
append_digits2exten=
If it is set to yes, this will add an extra dialed digit to the dialplan variable ${EXTEN}.
I'm unsure what this does exactly, but i suppose that when you have an ISDN phone connected to this BRI, and you have an extension e.g.: 123, and you dial 1234, it would go to the extension 123, but the variable ${EXTEN} would not contain 123 but 1234. If you know more about this option, please let us know and submit a comment on the bottom of this page.
e.g.: append_digits2exten=yes
tracefile=
This is the absolute path to a log file where call traces will be sent to for debugging.
e.g.: tracefile=/tmp/bricalltrace.log
4. Dialplan usage:
In extensions.conf, a BRI channel can be used with:
e.g.: exten =>123,dial(mISDN/g:group1/123123);
would dial number 123123 on the first line availble in the group called group1. (= the section called [group1] in misdn.conf).
or with Dial(mISDN/<portnumber>/<numbertodial>); e.g.: exten =>123,dial(mISDN/1/123123);
5. related CLI applications:
When the chan_misdn module is loaded into asterisk, some new CLI commands become available:
- misdn show config
Shows the present configuration for all misdn ports/channels
- misdn reload
Command, for reconfiguration of the chan_misdn module. This will be executed with a global reload of the Asterisk.
- misdn show channels
Shows a list of all active mISDN channles.
- misdn show fullstacks
Shows the status of the ports and the channelstatus.
- misdn show stacks
Shows only the status of the ports.
- misdn set debug <debuglevel>
Determines the precision of the debug-output. The following values are possible:
0 - no Debug
1 - mISDN Messages and * - Messages, and * - Statuschanges
2 - mISDN Messages with specific Information (i.e. bearer capability)
3 very communicative, as Level 2 + many additional Driverinformation
4 even more communicative than Level 3
misdn send display <channel> <msg>
It sends a so called display message to the prescribed channel. If the connected terminal device is capable of displaying the message then the message will appear on the screen of the device.
hydroxychloroquine cost uk (dianne dot fitzsimons at welcore dot ml) 12 August 2020 20:14:25 hydroxychloroquine cost uk https://webbfenix.com/
viagra cheap (josegivenstqaskwj at lobumisan dot gq) 22 July 2020 19:08:00 viagra cheap http://viacheapusa.com/
viagra online without prescription (kesukexadobab at caramail dot com) 28 June 2020 21:47:05 viagra online without prescription http://viacheapusa.com/
Ognyan Nikolov (ognian dot nikolov at gmail dot com) 15 April 2007 12:45:56 Hi there,
I have purchased one BRI ISDN card from a Bulgarian reseller, assuring me that the card is from beronet. The card is one BRI port. I am running Asterisk on CentOS and I am very new, but I was attracted that with trixbox and asterisk I'll have a PBX very easy. Unfortunately it is not so easy I expected :-(
Can somebody help me how to setup the card and to have an working configuration. I have read tutorials, but it is so confusing and messy for me and I would prefer if there is somebody who would like to help me, to ask me a couplke of questions and after answering the questions to get a running configuration of asterisk. :-)
Best regards,
Ognyan
MiroslaV (vmiro at usa dot com) 03 March 2007 16:16:21 Hi,
I did everything like in this howto, I can compile and load chan_misdn, but ports are always down, when I type: "misdn show stacks" in asterisk CLI. What could be wrong?
I'm struggling with this problem for several days. :(
Thanks!
aiks (juris dot breicis at gmail dot com) 29 November 2006 09:54:30 I believe this should be added to tutorial:
Please be warned that using different kernel timing than default (250) will most likely lead to problems. Poll parameter in /etc/misdn_init.conf will have to have different value than given in configuration file comments. Also different poll variable value than ones presented in those comments might lead to slipping frames and asterisk not being able to load chan_misdn.so (if a refernce to configuration file is given in misdn.conf)
Hashim (hashrk at yahoo dot com) 15 October 2006 18:56:57 I solved it. It's SElinux problem. Just disable it. It works. But I still couldnt complete the configuration of b410p. Is there anyone really configured this card. I wanna salute him ...
Cheeeeers,
Hashim
hash (hashrk at yahoo dot com) 14 October 2006 17:48:58 Hi Guyz ..
I am new to mISDN. I have completed almost but I can't load chan_misdn.so.. while loading I am getting an error ... Like
Jo (amsterdam at laposte dot net) 14 April 2006 16:29:44 Hi,
I've just installed chan_misdn
asterisk loading modules is perfect but when I stop asterisk,
I can see MISDN free_device: entitylist not empty
I've seen that TE port is down and I can't up it
Have you got idea ?
Thanks,
Jo
Yahel (Asteriskguru at 1net dot in) 27 February 2006 10:00:35 kernel: mISDN: INTERNAL ERROR in drivers/isdn/hardware/mISDN/stack.c:465 register duplicate 50300101 c211ccc0 c211ccc0
I get this when trying to dialout.
Using HFCPCI card and chan_capi-cm..
Asterisk 1.2
Kernel 2.6.15
Rick (rome at acs dot net dot nz) 06 December 2005 21:44:58 Hi, after struggling with this for a while Id like to share my comments on getting my winbond w9962 card working:
NB:Before attempting to load any mISDN kernel modules, make sure there are no other modules loaded such as CAPI or HISAX.
Also I would advise checking for other notes etc as they all help.
Using a fresh Debian 2.6.8-2-686 kernel (from Sarge r0a) and installing mISDN via install-misdn using make update , creating the /dev/mISDN device, recompiling and rebooting etc, (whew..) /etc/init.d/misdn-init scan returnd no cards, and dmesg output included the following:
By trial and error the resolutions was to let /etc/init.d/misdn-init config create the basic /etc/misdn-init.conf file and manually add the following line into /etc/misdn-init.conf:
card=1, w6692pci, dtmf
I use a Dynalink TAS106hc winbond card with one port, connected to an NT so the total file looks like:
te_ptmp=
poll=64
debug=0
card=1, w6692pci, dtmf
Then running /etc/init.d/misdn-init stop and misdn-init start gave me the following dmesg output:
YIPEEEE!!! On to the next step..
Good luck everyone!
Michael Glauche (mg at connection-net dot de) 21 October 2005 16:34:12 >Before attemplting to load any mISDN kernel modules, make sure there are no other modules loaded such as CAPI or HISAX.
I can't load the driver without loading the CAPI module :( if i don't load it, mISDN gives an error durign the module init phase:
mISDN: HFC-PCI card manufacturer: CCD/Billion/Asuscom card name: 2BD0
HFC-PCI: defined at mem 0xe08ae000 fifo 0xde668000(0x1e668000) IRQ 209 HZ 1000
spin_lock_adr=dd1f8864 now(e08dbc65)
busy_lock_adr=dd1f8868 now(e08dbc65)
reset_hfcpci: entered
HFC_PCI: resetting HFC ChipId(30)
HFC-PCI status(4) before reset
HFC-PCI status(2) after reset
HFC-PCI status(4) after 5us
init_card: entered
inithfcpci: entered
dsp_manager: data:00000000 prim:fe380 arg:de401f8c
mISDN: INTERNAL ERROR in /usr/src/install-misdn/mISDN/drivers/isdn/hardware/mISDN/stack.c:595
release_l1 id 1
release_udss1 refcnt 1 l3(dffd6a00) inst(dffd6a78)
mISDNd: addr(f0000) prim(f1980) failed err(ffffffa4)
HFC PCI: IRQ 209 count 2
HFC card dedff000 dch dedff088 bch1 dedff208 bch2 dedff394
mISDN: HFC-PCI driver Rev. 1.38
HFC-PCI: No more PCI cards found
HFC 1 cards installed
If i load the mISDN_capi module before, it works ..
But in both cases asterisk with chan_misdn does not work. Any ideas on this ?
lubomier (lm at sunteq dot sk) 17 October 2005 13:32:27 Hi, i made almost everything from this article but i can't:
1. compile chan_misdn from sources, i obtain this error message
isdn_msg_parser.c: In function `parse_proceeding':
isdn_msg_parser.c:21: error: `mISDNuser_head_t' undeclared (first use in this function)
...
...
isdn_msg_parser.c:1363: error: parse error before ')' token
make[1]: *** [isdn_msg_parser.o] Error 1
make[1]: Leaving directory `/usr/src/chan_misdn-2005_10_10/misdn'
make: *** [misdn/chan_misdn_lib.a] Error 2
i configuret CFLAGS variable
perhaps its possible that i have'nt compiles mISDNuser, he shows following erros http://lubomier.adrik.net/compile.log
2. when i used the chan_misdn.so binary from GNU Debian/testing asterisk fails here
[chan_misdn.so]Oct 17 13:34:05 WARNING[6214]: loader.c:258 ast_load_resource: /usr/lib/asterisk/modules/chan_misdn.so: undefined symbol: clear_bit
Oct 17 13:34:05 WARNING[6214]: loader.c:440 load_modules: Loading module chan_misdn.so failed!
thanks for any info
zoa (support at asteriskguru dot com) 16 October 2005 03:36:39
Forget that OBSOLATE to OBSOLETE change, that doesnt seem to work, its still broken.
Any suggestions anyone ?
zoa (support at asteriskguru dot com) 16 October 2005 03:17:40 If you get these errors:
chan_misdn.c:715: error: `IF_CONTRMASK' undeclared (first use in this function)
chan_misdn.c:715: error: (Each undeclared identifier is reported only once
chan_misdn.c:715: error: for each function it appears in.)
chan_misdn.c: In function `misdn_show_stacks':
chan_misdn.c:734: error: `IF_CONTRMASK' undeclared (first use in this function)
chan_misdn.c: In function `misdn_show_port':
chan_misdn.c:758: error: `IF_CONTRMASK' undeclared (first use in this function)
make: *** [chan_misdn.o] Error 1
then go edit:
/usr/src/mISDNuser/include/mISDNif.h
search for the string OBSOLATE and change it with OBSOLETE (You will find this 2 times)
The programmers made a slight typo there.
Try compiling again, and all should be fine
zoa (support at asteriskguru dot com) 16 October 2005 03:10:38 If you get this error:
Please edit /usr/src/chan_misdn/misdn/Makefile and update the mISDNuser path.
Then you should edit:
/usr/src/chan_misdn/misdn/Makefile
and change
ifndef MISDNUSER
MISDNUSER=/usr/src/install-misdn/mISDNuser
Then you should edit some other file (dont remember, just search for the string /usr/src/echo-cancel/ and change the MISDNUSER string there again with the same value as the previous one.
rg (asteriskguruweb at ukeer dot de) 14 October 2005 13:49:51 Please note, that you have to set l1_info_ok in misdn.conf to 1 if you defined MISDNUSER_JOLLY whilst compiling.
Not doing so will result that calls over a port-group are not possible (Asterisk will complain about never getting a free channel)
DrFrancky (drfrancky at securax dot org) 31 August 2005 22:30:58 if you get this error when compiling kernel
*** Warning: "pci_find_subsys" [drivers/isdn/hardware/mISDN/hfcmulti.ko] undefined!
The solution is:
open drivers/isdn/hardware/mISDN/hfcmulti.c and replace everywhere pci_find_subsys with pci_get_subsys
according to Documents/pci.txt :
8. Obsolete functions
~~~~~~~~~~~~~~~~~~~~~
There are several functions which you might come across when trying to
port an old driver to the new PCI interface. They are no longer present
in the kernel as they aren't compatible with hotplug or PCI domains or
having sane locking.
[snip]
pci_find_subsys() Superseded by pci_get_subsys()