Scenario: Two ISDN phones (a wireless DECT one and a comfortable one with cable) are to be connected to my Asterisk server which calls out via IAX2, SIP and ISDN.
As my mini case (which contains a VIA embedded board) does only have one PCI slot (via riser card), I chose the BN2S0 from BeroNet (Berlin).
It features a Cologne Chipset Design HFC chipset with 2 S0 (ISDN S/T) interfaces (click to enlarge):
Each port has to be configured for NT (acting as a phone line) or TE (acting as a client/phone device) mode.
As my mini case (which contains a VIA embedded board) does only have one PCI slot (via riser card), I chose the BN2S0 from BeroNet (Berlin).
It features a Cologne Chipset Design HFC chipset with 2 S0 (ISDN S/T) interfaces (click to enlarge):
The following photo illustrates the location of the important jumpers (click to enlarge):

For our setup we need an NT port (to connect the ISDN phones) and a TE port (for the ISDN line). Port 2 will be our NT port so I changed the jumper setting to NT mode (it is the upper jumper block). The jumper on the right is for the voltage of the PCI bus. My board has a 3,3V PCI bus, so the jumper is by default on the right setting.
At the end, the little installation looks like this:

The next step was to configure the card.
You will need:
To configure the card, just boot and try:
You will notice the "ISDN controller". If it does not show up there's a problem with your BIOS settings or with the riser card not sitting properly. I got that problem with my VIA setup, I had to delete ECSD data (accessible with a BIOS function).
Next step:
Perfect. The card is recognized.
You may type now:
You have to change now the misdn setting for port 2 to NT mode (the jumper above changed the hardware setting, and mISDN does not recognize automatically the port type):
Just change
to:
The second port is now defined as NT.
To start the mISDN subsystem, enter:
As last step, use this command:
That's it. Ready to run!
Declare your new ports to Asterisk by putting them in your /etc/asterisk/misdn.conf (or wherever the configuration in your setup is located):
In this example, incoming calls on Port 2 will get the default context in Asterisk. And as I speak french fluently and I like the language, I want french error codes.
To access the NT line in your extensions.conf, just use the port number "2". Example:
Dial(mISDN/2/4242)
In this example you have to make sure that there is a connected phone on this ISDN line reacting on MSN 4242.
Hint:
To set up a point-to-point ("Anlagenanschluss") connection on your NT port (because you want to connect an ISDN PBX), use:
Use extension numbers as dial numbers:
Dial(mISDN/2/30)
for ext 30 of your ISDN PBX connected to the NT port.
Update:
When calling from the internal ISDN phone to a number reachable by the outgoing ISDN line, it will do native bridging:
For our setup we need an NT port (to connect the ISDN phones) and a TE port (for the ISDN line). Port 2 will be our NT port so I changed the jumper setting to NT mode (it is the upper jumper block). The jumper on the right is for the voltage of the PCI bus. My board has a 3,3V PCI bus, so the jumper is by default on the right setting.
At the end, the little installation looks like this:
The next step was to configure the card.
You will need:
- A linux operating system
- misdn kernel drivers (misdn.org Homepage)
- Asterisk with chan_misdn
To configure the card, just boot and try:
# lspci
00:00.0 Host bridge: VIA Technologies, Inc. VT8623 [Apollo CLE266]
00:01.0 PCI bridge: VIA Technologies, Inc. VT8633 [Apollo Pro266 AGP]
00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80)
00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80)
00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80)
00:10.3 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 82)
00:11.0 ISA bridge: VIA Technologies, Inc. VT8235 ISA Bridge
00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74)
00:14.0 ISDN controller: Cologne Chip Designs GmbH ISDN network Controller [HFC-4S] (rev 01)
01:00.0 VGA compatible controller: VIA Technologies, Inc. VT8623 [Apollo CLE266] integrated CastleRock graphics (rev 03)You will notice the "ISDN controller". If it does not show up there's a problem with your BIOS settings or with the riser card not sitting properly. I got that problem with my VIA setup, I had to delete ECSD data (accessible with a BIOS function).
Next step:
# mISDN scan
1 mISDN compatible device(s) found:
>> BN2S0Perfect. The card is recognized.
You may type now:
# mISDN config
Writing /etc/mISDN.conf for 1 mISDN compatible device(s):
>> BN2S0You have to change now the misdn setting for port 2 to NT mode (the jumper above changed the hardware setting, and mISDN does not recognize automatically the port type):
Just change
<card type="BN2S0">
<port mode="te" link="ptmp">1</port>
<port mode="te" link="ptmp">2</port>
</card>to:
<card type="BN2S0">
<port mode="te" link="ptmp">1</port>
<port mode="nt" link="ptmp">2</port>
</card>The second port is now defined as NT.
To start the mISDN subsystem, enter:
# mISDN startAs last step, use this command:
# misdnportinfo
Port 1: TE-mode BRI S/T interface line (for phone lines)
-> Protocol: DSS1 (Euro ISDN)
-> childcnt: 2
--------
Port 2: NT-mode BRI S/T interface port (for phones)
-> Interface can be Poin-To-Point/Multipoint.
--------
mISDN_close: fid(3) isize(131072) inbuf(0x804d060) irp(0x804d060) iend(0x804d060)That's it. Ready to run!
Declare your new ports to Asterisk by putting them in your /etc/asterisk/misdn.conf (or wherever the configuration in your setup is located):
# ISDN provider line
[TEports]
context=from-isdn
senddtmf=yes
ports=1
msns=<insert the MSNs given to you by your ISDN providers here, use * when it should react on every MSN>
hold_allowed=yes
overlapdial=no
# Use port 2 as NT device:
[NTports]
context=default
ports=2
hold_allowed=yes
language=frIn this example, incoming calls on Port 2 will get the default context in Asterisk. And as I speak french fluently and I like the language, I want french error codes.
To access the NT line in your extensions.conf, just use the port number "2". Example:
Dial(mISDN/2/4242)
In this example you have to make sure that there is a connected phone on this ISDN line reacting on MSN 4242.
Hint:
To set up a point-to-point ("Anlagenanschluss") connection on your NT port (because you want to connect an ISDN PBX), use:
[NTPorts]
ports = 2ptpUse extension numbers as dial numbers:
Dial(mISDN/2/30)
for ext 30 of your ISDN PBX connected to the NT port.
Update:
When calling from the internal ISDN phone to a number reachable by the outgoing ISDN line, it will do native bridging:
P[ 2] * Making Native Bridge between XXXXXXXX and XXXXXXXX
sassandra*CLI> misdn show channels
Chan List: 0x823d460
* Pid:26 Prt:2 Ch:1 Mode:NT Org:I dad:XXXXXXXX oad:XXXXXXXX rad: ctx:default state:CONNECTED
--> astname: mISDN/3-u41
--> ch_l3id: 10040
--> ch_addr: 0
--> bc_addr: 50010202
--> bc_l3id: 10040
--> display:
--> activated: 0
--> state: BCHAN_BRIDGED
--> capability: Speech
--> echo_cancel: 0
--> notone : rx 0 tx:0
--> bc_hold: 0
* Pid:27 Prt:1 Ch:1 Mode:TE Org:* dad: oad:XXXXXXXX rad: ctx:from-isdn state:CONNECTED
--> astname: mISDN/1-u45
--> ch_l3id: 30007
--> ch_addr: 50010102
--> bc_addr: 50010102
--> bc_l3id: 30007
--> display:
--> activated: 0
--> state: BCHAN_BRIDGED
--> capability: Speech
--> echo_cancel: 0
--> notone : rx 0 tx:0
--> bc_hold: 0
Leave a comment