# VOIP > Software Reviews >  Asterisk/Bristuff/mISDN for Slackware 10.2

## spirosco

Οδηγος εγκαταστασης Asterisk/Bristuff απο το wireless repository με το swaret

Ο Asterisk αποτελει ενα ευελικτο software τηλεφωνικο κεντρο. 
Η σχεδιαση του επιτρεπει την προσθηκη νεων δυνατοτητων οπως π.χ νεα πρωτοκολλα επικοινωνιας και codecs υπο την μορφη modules.

Το πακετο bristuff περιεχει drivers & libraries για FXO,FXS καρτες (ISDN).
Περιεχει εκτος των αλλων, τον zaphfc driver ο οποιος υποστηριζει φθηνα ISDN PCI modems.
Το bristuff επισης χρησιμευει στη δημιουργια conference room, κι αυτο επειδη παρεχει το timming που απαιτειται για να λειτουργησει το meetme application μεσω του ztdummy driver.

Για την διασυνδεση του Asterisk με την ISDN μας, προτεινεται να χρησιμοποιησουμε το mISDN το οποιο περα απο ακριβες καρτες υποστηριζει και πιο φτηνες υλοποιησεις, οπως εξωτερικα ISDN USB modems που δεν ξεπερνουν τα 40 ευρω.

Επειτα απο αρκετη ενασχοληση με τον zaphfc και το mISDN, προτεινω ανεπιφυλακτα το mISDN για λογους σταθεροτητας και ανεξαρτησιας ως προς το IRQ timming του server.

Οι παρακατω οδηγιες απευθυνονται σε οσους εχουν εγκατεστημενο το Slackware 10.2 και θελουν να στησουν ενα τηλεφωνικο κεντρο ή/και ενα VOIP to ISDN gateway (και το αντιστροφο) .
Αν δεν σας λενε τιποτα τα παραπανω, τοτε αυτος ο οδηγος δεν ειναι για εσας ή θα χρειαστειτε τουλαχιστον αρκετο διαβασμα.
Στο τελος του οδηγου υπαρχουν αρκετα links σε πολυ καλο documentation. Διαβαστε τα  ::  

Tα πακετα που εγκαθιστουμε ειναι τα εξης :

Asterisk 1.2.11
Bristuff 0.3.0.PRE1s
mISDN 0.3.0
mISDNuser 0.3.0


Απαιτησεις: 
Slackware 10.2 ==> http://www.slackware.awmn/Slackware-10.2-iso 
swaret ==> http://www.slackware.awmn/Repository/10 ... arch-1.tgz

Οι εκδοσεις των πακετων που αναφερονται σε αυτο τον οδηγο ειναι αυστηρα συνδεδεμενες με τον πυρηνα 2.6.17.9, ο οποιος βρισκεται επισης διαθεσιμος στο repository.
Προς διευκολυνση εχω συμπεριλαβει και τις εντολες εγκαταστασης του πυρηνα. Αν τον εχετε ηδη εγκαταστησει, τοτε απλα αγνοηστε τις.

Ξεκιναμε με την εγκατασταση των πακετων: 

Πυρηνας 2.6.17.9:
[email protected]:/tmp# swaret --install kernel-ide-2.6.17.9-i486-1
[email protected]:/tmp# swaret --install kernel-modules-2.6.17.9-i486-1
[email protected]:/tmp# swaret --install kernel-headers-2.6.17.9-i386-1

Μετα την εγκατασταση του πυρηνα και αφου ειμαστε βεβαιοι πως ολα ειναι στη θεση τους, επανεκκινουμε τον server μας.
Αν εχουμε ηδη εγκατεστημενο το πυρηνα τοτε απλα περναμε στο επομενο βημα.

Asterisk, mISDN & Bristuff:
[email protected]:/tmp# swaret --install misdn-310806-i486-1
[email protected]:/tmp# swaret --install misdnuser-310806-i486-1
[email protected]:/tmp# swaret --install asterisk-1.2.11-i486-1 
[email protected]:/tmp# swaret --install bristuff-0.3.0.PRE1s-i486-2

Ολα τα αρχεια ρυθμισεων του Asterisk βρισκονται στον καταλογο /etc/asterisk.
Το σημαντικοτερο αρχειο ειναι το extensions.conf. Σε αυτο το αρχειο καθοριζουμε πως θα χειριζεται
ο Asterisk τις εισερχομενες/εξερχομενες κλησεις (Dialplan).
Ο Asterisk χειριζεται τα διαφορετικα πρωτοκολα (SIP,IAX,H323 κλπ) ως καναλια. Για καθε καναλι θα πρεπει μεσα στο extensions.conf
να υπαρχει και η αντιστοιχη ενοτητα (context).

Για καθε πρωτοκολλο που υποστηριζεται απο τον Asterisk υπαρχει και το αντιστοιχο αρχειο ρυθμισεων.
Για το SIP κοιταμε το sip.conf, για το H323 το h323.conf για το mISDN to misdn.conf κλπ.

Ενα επισης σημαντικο αρχειο ρυθμισεων ειναι το modules.conf. Μεσα απο αυτο καθοριζουμε τι πρεπει και τι δεν πρεπει να προσπαθησει να φορτωσει κατα το startup του ο Asterisk.
Π.χ. αν δεν θελουμε να φορτωνεται το Zap module, τοτε προσθετουμε την παρακατω γραμμη:
noload => chan_zap.so

Εξ ορισμου, ο Asterisk θα προσπαθησει να φορτωσει οτι module βρει μεσα στο καταλογο /usr/lib/asterisk/modules.

Σε αυτο το σημειο αν δεν υπηρξε καποιο προβλημα κατα την εγκατασταση θα πρεπει να μπορουμε να ξεκινησουμε τον Asterisk
ακομη και με τις default ρυθμισεις.
Τρεχουμε: rc.asterisk start και ps -A|grep asterisk για να ελεγξουμε αν οντως ξεκινησε..
Ο Asterisk διαθετει ενα telnet-like interface διαχειρισης (CLI). Για να το χρησιμοποιησετε, τρεξτε την εντολη: rc.asterisk cli.

Αν για καποιο λογο ο Asterisk δεν ξεκινα τοτε μην απελπιζεστε.
Ελεγξτε πρωτα τα logs (/var/log/asterisk/) για ενδειξεις του προβληματος.
Αν δεν βρειτε κατι στα logs, τοτε δοκιμαστε να ξεκινησετε χειροκινητα τον Asterisk.
Τρεξτε την παρακατω εντολη:
asterisk -vvv
Ξεκινωντας με αυτο το τροπο τον Asterisk θα παρουμε πολλες χρησιμες πληροφοριες για τον εντοπισμο του προβληματος.



Resources: 

Asterisk Introduction: http://www.slackware.awmn/Guides/10.2/a ... uction.pdf
Asterisk channels: http://www.slackware.awmn/Guides/10.2/a ... annels.pdf
Asterisk codecs: http://www.slackware.awmn/Guides/10.2/a ... Codecs.pdf
Defining extensions: http://www.slackware.awmn/Guides/10.2/a ... nsions.pdf
Asterisk links: http://www.slackware.awmn/Guides/10.2/a ... 0Links.pdf

Φυσικα ολα τα παραπανω κι ακομη περισσοτερα θα τα βρειτε στο voip-info.org.

Good luck  :: 

Edit: Διορθωθηκε το version του misdnuser (thanks trendy  ::  )

----------


## trendy

Αλλαγή του ονόματος του πακέτου misdnuser-310606-i486-1 σε misdnuser-310806-i486-1.
Τώρα το δοκιμάζω μπας και αποκτήσω κι εγώ ένα *  ::

----------


## spirosco

Συμπληρωματικος οδηγος για εγκατασταση mISDN συμβατου USB modem.
Δοκιμασμενο και αξιοπιστο ειναι το Tornado Webjet II USB.

Φροντιζουμε να εκτελειται κατα το startup το script /etc/rc.d/rc.misdn-init.
Αυτο γινεται βαζοντας στο /etc/rc.d/rc.M το παρακατω block:


```
# Initialize mISDN drivers support:
if [ -x /etc/rc.d/rc.misdn-init ]; then
  . /etc/rc.d/rc.misdn-init start
fi
```

Το παραπανω script φορτωνει τα καταλληλα modules, τα οποια βρισκει μεσω του /etc/misdn-init.conf.
Παραθετω το misdn-init.conf που χρησιμοποιω:


```
;
; chan_misdn sample config
;

; general section:
;
; for debugging and general setup, things that are not bound to port groups
;

[general]
; Sets the Path to the misdn-init.conf (for nt_ptp mode checking)
;
misdn_init=/etc/misdn-init.conf

; 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=1

; set debugging file and flags for mISDNuser (NT-Stack)
;
; flags can be or'ed with the following values:
;
; DBGM_NET        0x00000001
; DBGM_MSG        0x00000002
; DBGM_FSM        0x00000004
; DBGM_TEI        0x00000010
; DBGM_L2         0x00000020
; DBGM_L3         0x00000040
; DBGM_L3DATA     0x00000080
; DBGM_BC         0x00000100
; DBGM_TONE       0x00000200
; DBGM_BCDATA     0x00000400
; DBGM_MAN        0x00001000
; DBGM_APPL       0x00002000
; DBGM_ISDN       0x00004000
; DBGM_SOCK       0x00010000
; DBGM_CONN       0x00020000
; DBGM_CDATA      0x00040000
; DBGM_DDATA      0x00080000
; DBGM_SOUND      0x00100000
; DBGM_SDATA      0x00200000
; DBGM_TOPLEVEL   0x40000000
; DBGM_ALL        0xffffffff
;

ntdebugflags=0
ntdebugfile=/var/log/misdn-nt.log

; the big trace
;
; default value: [not set]
;
;tracefile=/var/log/misdn.trace

; set to yes if you want mISDN_dsp to bridge the calls in HW
;
; default value: yes
;
;bridging=no

; 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

;
; sets the musiconhold class
;
musicclass=default

;
; Either if we should produce DTMF Tones ourselve
;
;senddtmf=yes

;
; If we should generate Ringing for chan_sip and others
;
;far_alerting=no


;
; here you can define which bearers should be allowed
;
;allowed_bearers=all

; 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

;
; This option defines, if chan_misdn should check the L1 on  a PMP
; before makeing a group call on it. The L1 may go down for PMP Ports
; so we might need this.
; But be aware! a broken or plugged off cable might be used for a group call
; as well, since chan_misdn has no chance to distinguish if the L1 is down
; because of a lost Link or because the Provider shut it down...
;
; default: yes
;
pmp_l1_check=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 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=yes

; 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
;
; these are the exact isdn screening and presentation indicators
; if -1 is given for both values the presentation indicators are used
; from asterisks SetCallerPres application.
; s=0, p=0 -> callerid presented not screened
; s=1, p=1 -> callerid presented but screened (the remote end does not see it!)
;
; defaule values s=-1, p=-1
;presentation=-1
;screen=-1

; 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

; change this to yes, if you want to bridge a mISDN data channel to
; another channel type or to an application.
;
;hdlc=no

[netmod]
; define your ports, e.g. 1,2 (depends on mISDN-driver loading order)
ports=1
; context where to go to when incoming Call on one of the above ports
context=misdn
msns=*
```

Αφου τρεξουμε rc.misdn-init start, τo lsmod θα πρεπει να περιεχει τα παρακατω:


```
mISDN_dsp             196460  0
hfcsusb                26356  0
mISDN_capi             99500  0
l3udss1                40180  0
mISDN_l2               35948  0
mISDN_l1               10068  0
mISDN_core             73280  6 mISDN_dsp,hfcsusb,mISDN_capi,l3udss1,mISDN_l2,mISDN_l1
```

Ανοιγουμε το /etc/asterisk/modules.conf και κανουμε comment την παρακατω γραμμη.
Απο:


```
noload => chan_misdn.so
```

σε:


```
;noload => chan_misdn.so
```

Αν δεν υπαρχει καθολου η παραπανω γραμμη τοτε δεν χρειαζεται καμμια παρεμβαση στο αρχειο.

Μενει να προσθεσουμε στο extensions.conf το παρακατω:


```
[misdn]
;
; Incoming ISDN calls.
; Ring SIP extensions 12861 & 12862.
;
exten => s,1,Macro(call,SIP/<Συμπληρωστε το extension σας>)

; Outgoing calls.
; Every 10 digit number is passed to mISDN channel.
;
exten => _XXXXXXXXXX/_1286X,1,Dial(misdn/g:netmod/${EXTEN},50,RtT)
exten => _XXXXXXXXXX/_1286X,2,Playback(number-not-answering)
exten => _XXXXXXXXXX/_1286X,102,Playback(connection-failed)
exten => _XXXXXXXXXX/_1286X,3,Hangup
exten => _XXXXXXXXXX/_1286X,103,Hangup
```

Αρκει να το κανουμε include μεσα στο context που περιεχει τις συσκευες μας.


```
[sip]
...
include => misdn
```

Και πρεπει -ετσι λεμε συνηθως  ::  - να ειμαστε ετοιμοι.

----------


## ncksm

Πάντως, για να καταθέσω την προσωπική μου εμπειρία, αγόρασα μία 4πλη ISDN Beronet και δοκίμασα το mISDN και είχα τρομερά προβλήματα echo σε συγκεριμένες εξερχόμενες κλήσεις. 

Έβαλα bristaff και χρησιμοποιώ Dial (ZAP,xxxxxxx) αντί για Dial (mISDN,xxxxx) και τα προβήματα έχουν περιορισθεί στο ελάχιστο.

----------


## Ifaistos

Το mISDN δεν έχει echo cancelation γιαυτό και τα προβλήματα.
Υπάρχουν 2 είδη echo το Line echo που προέρχεται από την τηλεφωνική γραμμή και είναι σύνηθες σε pstn γραμμές και το voice echo που προέρχεται από την συσκευή στην άλλη ακρή της γραμμής.
Πολύ πιθανό τα προβλήματα που αντιμετώπισες να είναι του 2ου τύπου.

Το bristuff/zaphfc θέλει προσοχή σχετικά με τις εκδόσεις των zaptel drivers και των άλλων Patch ώστε να παίζει χωρίς προβλήματα.
Βασικό θέμα είναι (όπως και σε όλες τις zaptel κάρτες) να μην μοιράζονται irq οι κάρτες τόσο μεταξύ τους όσο και με άλλα περιφεριακά
(κλείστε δηλ από το bios usb controllers και ότι άλλο δεν χρησιμοποιείται )
Έχω ήδη αρκετά συστήματα που παίζουν χωρίς κάποιο ιδιαίτερο πρόβλημα με bristuff/zaphfc εδώ και καιρό.

----------

