Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
voip:asterisk18:isdn [29.11.2010 15:39. ] – django | voip:asterisk18:isdn [20.04.2018 09:00. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Asterisk Anbindung ans ISDN ====== | ||
+ | |||
+ | {{voip: | ||
+ | \\ | ||
+ | Da wir mit unserem Asterisk nicht nur // | ||
+ | ===== Installation ===== | ||
+ | Dank des [[voip: | ||
+ | Wir installieren uns also die folgenden Pakete: **asterisk16-misdn**, | ||
+ | # yum install asterisk18-misdn mISDN mISDNuser kmod-mISDN | ||
+ | Was uns die Pakete alles mitbringt, offenbart uns jeweils der Aufruf von **rpm -iql** *PAKETNAME*. | ||
+ | ==== asterisk18-misdn ==== | ||
+ | # rpm -iql asterisk18-misdn | ||
+ | < | ||
+ | Version | ||
+ | Release | ||
+ | Install Date: Mo 29 Nov 2010 15:29:42 CET Build Host: localhost.localdomain | ||
+ | Group : Utilities/ | ||
+ | Size : 1101048 | ||
+ | Signature | ||
+ | Packager | ||
+ | URL : http:// | ||
+ | Summary | ||
+ | Description : | ||
+ | mISDN channel driver for Asterisk | ||
+ | / | ||
+ | ==== mISDN ==== | ||
+ | # rpm -iql mISDN | ||
+ | < | ||
+ | Version | ||
+ | Release | ||
+ | Install Date: Mo 29 Nov 2010 15:29:42 CET Build Host: localhost.localdomain | ||
+ | Group : Utilities/ | ||
+ | Size : 65785 License: GPL | ||
+ | Signature | ||
+ | Packager | ||
+ | URL : http:// | ||
+ | Summary | ||
+ | Description : | ||
+ | The mISDN project | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ==== mISDNuser ==== | ||
+ | # rpm -iql mISDNuser | ||
+ | < | ||
+ | Version | ||
+ | Release | ||
+ | Install Date: Mo 29 Nov 2010 15:29:32 CET Build Host: localhost.localdomain | ||
+ | Group : Utilities/ | ||
+ | Size : 859322 | ||
+ | Signature | ||
+ | Packager | ||
+ | URL : http:// | ||
+ | Summary | ||
+ | Description : | ||
+ | The open source mISDNuser project | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ==== kmod-mISDN ==== | ||
+ | # rpm -iql kmod-mISDN | ||
+ | < | ||
+ | Version | ||
+ | Release | ||
+ | Install Date: Mo 29 Nov 2010 15:29:37 CET Build Host: localhost.localdomain | ||
+ | Group : System Environment/ | ||
+ | Size : 8466730 | ||
+ | Signature | ||
+ | Packager | ||
+ | URL : http:// | ||
+ | Summary | ||
+ | Description : | ||
+ | This package provides the mISDN kernel modules built for the Linux | ||
+ | kernel 2.6.18-194.26.1.el5 for the i686 family of processors. | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ===== Konfiguration ===== | ||
+ | Als erstes suchen wir nach unserer/ | ||
+ | # service mISDN scan | ||
+ | < | ||
+ | >> avmfritz</ | ||
+ | Als nächstes legen wir die Konfigurationsdatei für mISDN unter // | ||
+ | # service mISDN config | ||
+ | < | ||
+ | >> avmfritz</ | ||
+ | Mit Hilfe des vorgenannten Aufrufes wird automatisch folgende Konfigurationsdatei angelegt: | ||
+ | < | ||
+ | <!-- | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Card Type: BN2S0, BN4S0, BN8S0 | ||
+ | Card Attributes: ulaw=(yes|no), | ||
+ | | ||
+ | | ||
+ | Port Attributes: mode=(te|nt), | ||
+ | | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Card Type: BN2E1 | ||
+ | Card Attributes: ulaw=(yes|no), | ||
+ | | ||
+ | | ||
+ | Port Attributes: mode=(te|nt), | ||
+ | | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Card Type: hfcmulti, avmfritz, w6692pci | ||
+ | Port Attributes: mode=(te|nt), | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Module: hfcmulti | ||
+ | Options: poll=< | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Module: hfcsusb | ||
+ | Options: debug=< | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Module: xhfc | ||
+ | Options: debug=< | ||
+ | Port Attributes: mode=(te|nt), | ||
+ | | ||
+ | | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Module: mISDN_dsp | ||
+ | Options: debug=< | ||
+ | | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | --> | ||
+ | < | ||
+ | <module poll=" | ||
+ | <module debug=" | ||
+ | <devnode user=" | ||
+ | <card type=" | ||
+ | <port mode=" | ||
+ | </ | ||
+ | </ | ||
+ | Damit es später beim Betrieb keine Probleme mit den Zugriffsrechten auf die Gerätedatei gibt passen wir noch den **user** und die **group** des // | ||
+ | Ansonsten könnte es Bsp. zu folgender Fehlermeldung kommen: | ||
+ | < | ||
+ | [Nov 30 10:35:53] ERROR[5043]: | ||
+ | setup SRTP session. | ||
+ | -- Executing [08936046666@default: | ||
+ | " | ||
+ | [Nov 30 10:35:53] WARNING[7281]: | ||
+ | for ' | ||
+ | [Nov 30 10:35:53] WARNING[7281]: | ||
+ | of type ' | ||
+ | == Everyone is busy/ | ||
+ | -- Executing [08936046666@default: | ||
+ | == Spawn extension (default, 08936046666, | ||
+ | asterisk*CLI> | ||
+ | </ | ||
+ | Wir ändern also \\ | ||
+ | **< | ||
+ | in \\ | ||
+ | // | ||
+ | # vim /etc/mISDN | ||
+ | < | ||
+ | <!-- | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Card Type: BN2S0, BN4S0, BN8S0 | ||
+ | Card Attributes: ulaw=(yes|no), | ||
+ | | ||
+ | | ||
+ | Port Attributes: mode=(te|nt), | ||
+ | | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Card Type: BN2E1 | ||
+ | Card Attributes: ulaw=(yes|no), | ||
+ | | ||
+ | | ||
+ | Port Attributes: mode=(te|nt), | ||
+ | | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Card Type: hfcmulti, avmfritz, w6692pci | ||
+ | Port Attributes: mode=(te|nt), | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Module: hfcmulti | ||
+ | Options: poll=< | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Module: hfcsusb | ||
+ | Options: debug=< | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Module: xhfc | ||
+ | Options: debug=< | ||
+ | Port Attributes: mode=(te|nt), | ||
+ | | ||
+ | | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Module: mISDN_dsp | ||
+ | Options: debug=< | ||
+ | | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | --> | ||
+ | < | ||
+ | <module poll=" | ||
+ | <module debug=" | ||
+ | <devnode user=" | ||
+ | <card type=" | ||
+ | <port mode=" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | ===== mISDN Daemon starten ===== | ||
+ | ==== erster Programmstart ==== | ||
+ | Zum Laden der Kernelmodule und zum Starten des **mISDN**-Daemon erfolgt mit: | ||
+ | # service mISDN start | ||
+ | < | ||
+ | >> / | ||
+ | >> / | ||
+ | >> / | ||
+ | >> / | ||
+ | >> / | ||
+ | >> / | ||
+ | >> / | ||
+ | >> / | ||
+ | Der Start wird uns im **syslog** entsprechend positiv vermerkt. | ||
+ | < | ||
+ | Nov 29 15:47:24 office kernel: ISDN L1 driver version 1.20 | ||
+ | Nov 29 15:47:24 office kernel: ISDN L2 driver version 1.32 | ||
+ | Nov 29 15:47:24 office kernel: mISDN: DSS1 Rev. 1.47 | ||
+ | Nov 29 15:47:24 office kernel: mISDN Capi 2.0 driver file version 1.21 | ||
+ | Nov 29 15:47:24 office kernel: ISAC module $Revision: 1.18 $ | ||
+ | Nov 29 15:47:24 office kernel: AVM Fritz PCI/PnP driver Rev. 1.43 | ||
+ | Nov 29 15:47:24 office kernel: PCI: Enabling device 0000: | ||
+ | Nov 29 15:47:24 office kernel: ACPI: PCI Interrupt 0000: | ||
+ | Nov 29 15:47:24 office kernel: mISDN_fcpcipnp: | ||
+ | Nov 29 15:47:24 office kernel: AVM PCI V2: stat 0x240020e | ||
+ | Nov 29 15:47:24 office kernel: AVM PCI V2: Class E Rev 2 | ||
+ | Nov 29 15:47:24 office kernel: AVM PnP: HDLC version 2 | ||
+ | Nov 29 15:47:24 office kernel: mISDN: AVM Fritz!PCIv2 config irq:177 base:0xD000 | ||
+ | Nov 29 15:47:24 office kernel: AVM PCI/PnP: reset | ||
+ | Nov 29 15:47:24 office kernel: AVM PCI/PnP: S0/S1 40/2 | ||
+ | Nov 29 15:47:24 office kernel: mISDN_isac_init: | ||
+ | Nov 29 15:47:24 office kernel: AVM Fritz!PCI: IRQ 177 count 2 | ||
+ | Nov 29 15:47:24 office kernel: fritz 1 cards installed | ||
+ | Nov 29 15:47:24 office kernel: mISDN_dsp: Audio DSP Rev. 1.29 (debug=0x0) EchoCancellor MG2 dtmfthreshold(100) | ||
+ | Nov 29 15:47:24 office kernel: mISDN_dsp: DSP clocks every 64 samples. This equals 8 jiffies.</ | ||
+ | Mit **misdnportinfo** kann nun zum einen geprüft werden, ob die Module korrekt geladen wurden, und zum anderen die momentane Portkonfiguration ausgegeben werden: | ||
+ | # misdnportinfo | ||
+ | < | ||
+ | Port 1: TE-mode BRI S/T interface line (for phone lines) | ||
+ | -> Protocol: DSS1 (Euro ISDN) | ||
+ | -> childcnt: 2 | ||
+ | -------- | ||
+ | |||
+ | mISDN_close: | ||
+ | </ | ||
+ | |||
+ | ==== automatischer Programmstart ==== | ||
+ | Damit unser mISDN-Daemon automatisch bei jedem Systemstart starten kann ergänzen wir noch das startscript // | ||
+ | < | ||
+ | # | ||
+ | # mISDN Start up mISDN subsystem | ||
+ | # | ||
+ | # chkconfig: 2345 10 90 | ||
+ | # description: | ||
+ | # | ||
+ | ### BEGIN INIT INFO | ||
+ | # Provides: $mISDN | ||
+ | ### END INIT INFO</ | ||
+ | # vim / | ||
+ | Somit ergibt sich folgendes Startscript in Gänze: | ||
+ | < | ||
+ | |||
+ | # Django: 29.11.2010 | ||
+ | # | ||
+ | # mISDN Start up mISDN subsystem | ||
+ | # | ||
+ | # chkconfig: 2345 10 90 | ||
+ | # description: | ||
+ | # | ||
+ | ### BEGIN INIT INFO | ||
+ | # Provides: $mISDN | ||
+ | ### END INIT INFO | ||
+ | |||
+ | # | ||
+ | # | ||
+ | # CONFIGURATION: | ||
+ | # | ||
+ | MISDN_CONF="/ | ||
+ | MISDN_CONF_XSL="/ | ||
+ | # | ||
+ | # | ||
+ | |||
+ | SELF=" | ||
+ | USAGE=" | ||
+ | |||
+ | function die { | ||
+ | echo "[!!] ${1}" | ||
+ | exit 1 | ||
+ | } | ||
+ | |||
+ | function check_cmd | ||
+ | { | ||
+ | if ! which " | ||
+ | if [ " | ||
+ | return | ||
+ | fi | ||
+ | if [ "$(id -u)" != " | ||
+ | die "$1 not in path, please install and/or be root." | ||
+ | else | ||
+ | die "$1 not in path, please install." | ||
+ | fi | ||
+ | exit 1 | ||
+ | else | ||
+ | local var=$(echo ${1} | tr a-z A-Z) | ||
+ | eval " | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | function check_misdn_conf | ||
+ | { | ||
+ | if [ ! -f ${MISDN_CONF} ]; then | ||
+ | die " | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | check_cmd sed | ||
+ | check_cmd cut | ||
+ | check_cmd cp | ||
+ | check_cmd wc | ||
+ | check_cmd grep | ||
+ | check_cmd xsltproc | ||
+ | check_cmd modprobe | ||
+ | check_cmd sleep | ||
+ | check_cmd lspci | ||
+ | check_cmd lsusb opt | ||
+ | check_cmd mknod | ||
+ | check_cmd chown | ||
+ | check_cmd chmod | ||
+ | |||
+ | declare -a START_COMMANDS | ||
+ | declare -a STOP_COMMANDS | ||
+ | |||
+ | declare -a HFCMULTI_card | ||
+ | declare -a HFCMULTI_type | ||
+ | declare -a HFCMULTI_protocol | ||
+ | declare -a HFCMULTI_layermask | ||
+ | HFCMULTI_options='' | ||
+ | MISDNDSP_options='' | ||
+ | L1OIP_options='' | ||
+ | |||
+ | AVMFRITZ_protocol='' | ||
+ | AVMFRITZ_layermask='' | ||
+ | |||
+ | HFCPCI_protocol='' | ||
+ | HFCPCI_layermask='' | ||
+ | |||
+ | HFCSUSB_protocol='' | ||
+ | HFCSUSB_layermask='' | ||
+ | HFCSUSB_options='' | ||
+ | |||
+ | XHFC_protocol='' | ||
+ | XHFC_layermask='' | ||
+ | XHFC_options='' | ||
+ | |||
+ | L1OIP_type='' | ||
+ | L1OIP_protocol='' | ||
+ | L1OIP_layermask='' | ||
+ | L1OIP_codec='' | ||
+ | L1OIP_ip='' | ||
+ | L1OIP_port='' | ||
+ | L1OIP_localport='' | ||
+ | L1OIP_ondemand='' | ||
+ | L1OIP_id='' | ||
+ | |||
+ | DEVNODE_user=' | ||
+ | DEVNODE_group=' | ||
+ | DEVNODE_mode=' | ||
+ | |||
+ | declare -a SCAN_card | ||
+ | declare -a SCAN_opts | ||
+ | declare -a SCAN_num_ports | ||
+ | declare -a SCAN_port_opts | ||
+ | |||
+ | function parse_config | ||
+ | { | ||
+ | local CONFIG=$(${XSLTPROC} ${MISDN_CONF_XSL} ${MISDN_CONF}) | ||
+ | local t p l line i tmpcmd curr tmpstr extra_modules val | ||
+ | local IFS=$' | ||
+ | |||
+ | START_COMMANDS[${# | ||
+ | START_COMMANDS[${# | ||
+ | START_COMMANDS[${# | ||
+ | START_COMMANDS[${# | ||
+ | START_COMMANDS[${# | ||
+ | START_COMMANDS[${# | ||
+ | |||
+ | for line in ${CONFIG}; do | ||
+ | case " | ||
+ | DEVNODE: | ||
+ | tmpstr=$(echo ${line} | ${SED} -n ' | ||
+ | if [ ! -z " | ||
+ | DEVNODE_user=" | ||
+ | fi | ||
+ | tmpstr=$(echo ${line} | ${SED} -n ' | ||
+ | if [ ! -z " | ||
+ | DEVNODE_group=" | ||
+ | fi | ||
+ | tmpstr=$(echo ${line} | ${SED} -n ' | ||
+ | if [ ! -z " | ||
+ | DEVNODE_mode=" | ||
+ | fi | ||
+ | ;; | ||
+ | MODULE: | ||
+ | HFCMULTI_options=${line: | ||
+ | ;; | ||
+ | MODULE: | ||
+ | HFCSUSB_options=${line: | ||
+ | ;; | ||
+ | MODULE: | ||
+ | XHFC_options=${line: | ||
+ | ;; | ||
+ | MODULE: | ||
+ | extra_modules[${# | ||
+ | ;; | ||
+ | MODULE: | ||
+ | MISDNDSP_options=${line: | ||
+ | ;; | ||
+ | MODULE: | ||
+ | L1OIP_options=${line: | ||
+ | ;; | ||
+ | CARD:BN*) | ||
+ | curr=' | ||
+ | i=${# | ||
+ | let "t = $(echo ${line} | ${SED} -n ' | ||
+ | HFCMULTI_type[${i}]=$(printf " | ||
+ | |||
+ | # this is for the BN2E1 card that needs two type numbers | ||
+ | t=$(echo ${line} | ${SED} -n ' | ||
+ | if [ ! -z " | ||
+ | let "t = ${t}" | ||
+ | HFCMULTI_type[${i}]=" | ||
+ | fi | ||
+ | |||
+ | HFCMULTI_card[${i}]=$(echo ${line:5} | ${CUT} -d" " -f1) | ||
+ | ;; | ||
+ | CARD: | ||
+ | curr=' | ||
+ | ;; | ||
+ | CARD: | ||
+ | curr=' | ||
+ | ;; | ||
+ | CARD:xhfc*) | ||
+ | curr=' | ||
+ | ;; | ||
+ | CARD: | ||
+ | curr=' | ||
+ | ;; | ||
+ | CARD: | ||
+ | curr=' | ||
+ | ;; | ||
+ | PORT*) | ||
+ | case " | ||
+ | hfcmulti) | ||
+ | let "p = $(echo ${line} | ${SED} -n ' | ||
+ | HFCMULTI_protocol[${i}]=" | ||
+ | let "l = $(echo ${line} | ${SED} -n ' | ||
+ | HFCMULTI_layermask[${i}]=" | ||
+ | ;; | ||
+ | hfcpci) | ||
+ | let "p = $(echo ${line} | ${SED} -n ' | ||
+ | HFCPCI_protocol=" | ||
+ | let "l = $(echo ${line} | ${SED} -n ' | ||
+ | HFCPCI_layermask=" | ||
+ | ;; | ||
+ | hfcsusb) | ||
+ | let "p = $(echo ${line} | ${SED} -n ' | ||
+ | HFCSUSB_protocol=" | ||
+ | let "l = $(echo ${line} | ${SED} -n ' | ||
+ | HFCSUSB_layermask=" | ||
+ | ;; | ||
+ | xhfc) | ||
+ | let "p = $(echo ${line} | ${SED} -n ' | ||
+ | XHFC_protocol=" | ||
+ | let "l = $(echo ${line} | ${SED} -n ' | ||
+ | XHFC_layermask=" | ||
+ | ;; | ||
+ | avmfritz) | ||
+ | let "p = $(echo ${line} | ${SED} -n ' | ||
+ | AVMFRITZ_protocol=" | ||
+ | let "l = $(echo ${line} | ${SED} -n ' | ||
+ | AVMFRITZ_layermask=" | ||
+ | ;; | ||
+ | l1oip) | ||
+ | let "val = $(echo ${line} | ${SED} -n ' | ||
+ | L1OIP_type=" | ||
+ | let "val = $(echo ${line} | ${SED} -n ' | ||
+ | L1OIP_protocol=" | ||
+ | let "val = $(echo ${line} | ${SED} -n ' | ||
+ | L1OIP_layermask=" | ||
+ | val=" | ||
+ | L1OIP_codec=" | ||
+ | val=" | ||
+ | L1OIP_ip=" | ||
+ | val=" | ||
+ | L1OIP_port=" | ||
+ | val=" | ||
+ | L1OIP_localport=" | ||
+ | val=" | ||
+ | L1OIP_ondemand=" | ||
+ | val=" | ||
+ | L1OIP_id=" | ||
+ | ;; | ||
+ | esac | ||
+ | ;; | ||
+ | esac | ||
+ | done | ||
+ | |||
+ | if [ ! -z " | ||
+ | tmpcmd=" | ||
+ | i=1 | ||
+ | while [ ! -z " | ||
+ | tmpcmd=" | ||
+ | let "i = ${i} + 1" | ||
+ | done | ||
+ | tmpcmd=" | ||
+ | i=1 | ||
+ | while [ ! -z " | ||
+ | tmpcmd=" | ||
+ | let "i = ${i} + 1" | ||
+ | done | ||
+ | tmpcmd=" | ||
+ | i=1 | ||
+ | while [ ! -z " | ||
+ | tmpcmd=" | ||
+ | let "i = ${i} + 1" | ||
+ | done | ||
+ | START_COMMANDS[${# | ||
+ | fi | ||
+ | |||
+ | if [ ! -z " | ||
+ | START_COMMANDS[${# | ||
+ | fi | ||
+ | |||
+ | if [ ! -z " | ||
+ | START_COMMANDS[${# | ||
+ | fi | ||
+ | |||
+ | if [ ! -z " | ||
+ | START_COMMANDS[${# | ||
+ | fi | ||
+ | |||
+ | if [ ! -z " | ||
+ | START_COMMANDS[${# | ||
+ | fi | ||
+ | |||
+ | if [ ! -z " | ||
+ | START_COMMANDS[${# | ||
+ | fi | ||
+ | |||
+ | START_COMMANDS[${# | ||
+ | |||
+ | i=1 | ||
+ | while [ ! -z " | ||
+ | START_COMMANDS[${# | ||
+ | let "i = ${i} + 1" | ||
+ | done | ||
+ | } | ||
+ | |||
+ | function run_start_commands | ||
+ | { | ||
+ | local i=0 | ||
+ | |||
+ | echo "-- Loading mISDN modules --" | ||
+ | while [ ! -z " | ||
+ | echo ">> | ||
+ | eval " | ||
+ | let "i = ${i} + 1" | ||
+ | done | ||
+ | } | ||
+ | |||
+ | function run_stop_commands | ||
+ | { | ||
+ | local mod i=0 | ||
+ | |||
+ | for mod in $(lsmod | ${SED} -ne '/ | ||
+ | case " | ||
+ | mISDN_capi | mISDN_dsp | l3udss1 | mISDN_l2 | mISDN_l1 | mISDN_isac | hfcmulti | hfcpci | hfcsusb | xhfc | avmfritz | l1oip) | ||
+ | STOP_COMMANDS[0]=" | ||
+ | ;; | ||
+ | mISDN_debugtool) | ||
+ | STOP_COMMANDS[1]=" | ||
+ | ;; | ||
+ | mISDN_core) | ||
+ | STOP_COMMANDS[2]=" | ||
+ | ;; | ||
+ | esac | ||
+ | done | ||
+ | |||
+ | echo "-- Unloading mISDN modules --" | ||
+ | for i in `seq 0 1 2`; do | ||
+ | if [ ! -z " | ||
+ | echo ">> | ||
+ | eval " | ||
+ | fi | ||
+ | done | ||
+ | } | ||
+ | |||
+ | function scan_devices | ||
+ | { | ||
+ | local skipnext=0 IFS=$' | ||
+ | local NL=" | ||
+ | " | ||
+ | |||
+ | function addcard { | ||
+ | SCAN_card[${# | ||
+ | SCAN_opts[${# | ||
+ | SCAN_num_ports[${# | ||
+ | SCAN_port_opts[${# | ||
+ | } | ||
+ | |||
+ | for line in $(${LSPCI} -n -d 0xd161: | ||
+ | addcard " | ||
+ | done | ||
+ | |||
+ | for line in $(${LSPCI} -n | ${SED} -n ' | ||
+ | if [ ${skipnext} -eq 1 ]; then | ||
+ | skipnext=0 | ||
+ | continue | ||
+ | fi | ||
+ | case " | ||
+ | 30b1*) | ||
+ | case " | ||
+ | 00*) | ||
+ | addcard " | ||
+ | ;; | ||
+ | *) | ||
+ | if [ $(${LSPCI} -n -s " | ||
+ | addcard " | ||
+ | skipnext=1 | ||
+ | else | ||
+ | addcard " | ||
+ | fi | ||
+ | ;; | ||
+ | esac | ||
+ | ;; | ||
+ | 16b8*) | ||
+ | addcard " | ||
+ | ;; | ||
+ | 08b4*) | ||
+ | if ${LSPCI} -n -v -s " | ||
+ | addcard " | ||
+ | elif ${LSPCI} -n -v -s " | ||
+ | addcard " | ||
+ | else | ||
+ | addcard " | ||
+ | fi | ||
+ | ;; | ||
+ | esac | ||
+ | done | ||
+ | for line in $(${LSPCI} -n | ${GREP} " | ||
+ | addcard " | ||
+ | done | ||
+ | for line in $(${LSPCI} -n -d 0x1397: | ||
+ | addcard " | ||
+ | done | ||
+ | for line in $(${LSPCI} -n | ${GREP} " | ||
+ | addcard " | ||
+ | done | ||
+ | for line in $(${LSPCI} -n -d 1050:6692); do | ||
+ | addcard " | ||
+ | done | ||
+ | if [ -e ${LSUSB} ]; then | ||
+ | for line in $(${LSUSB} | ${GREP} " | ||
+ | addcard " | ||
+ | done | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | function write_mISDN_conf | ||
+ | { | ||
+ | local NL=" | ||
+ | " | ||
+ | local TAB=" | ||
+ | local HEADER="<? | ||
+ | <!-- | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Card Type: BN2S0, BN4S0, BN8S0 | ||
+ | Card Attributes: ulaw=(yes|no), | ||
+ | | ||
+ | | ||
+ | Port Attributes: mode=(te|nt), | ||
+ | | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Card Type: BN2E1 | ||
+ | Card Attributes: ulaw=(yes|no), | ||
+ | | ||
+ | | ||
+ | Port Attributes: mode=(te|nt), | ||
+ | | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Card Type: hfcmulti, avmfritz, w6692pci | ||
+ | Port Attributes: mode=(te|nt), | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Module: hfcmulti | ||
+ | Options: poll=< | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Module: hfcsusb | ||
+ | Options: debug=< | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Module: xhfc | ||
+ | Options: debug=< | ||
+ | Port Attributes: mode=(te|nt), | ||
+ | | ||
+ | | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | Module: mISDN_dsp | ||
+ | Options: debug=< | ||
+ | | ||
+ | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
+ | --> | ||
+ | < | ||
+ | ${TAB}< | ||
+ | ${TAB}< | ||
+ | ${TAB}< | ||
+ | local FOOTER="</ | ||
+ | local i=0 j=0 MAIN="" | ||
+ | |||
+ | echo " | ||
+ | while [ ! -z " | ||
+ | echo ">> | ||
+ | MAIN=" | ||
+ | j=1 | ||
+ | while [ ${j} -le ${SCAN_num_ports[${i}]} ]; do | ||
+ | MAIN=" | ||
+ | let "j = ${j} + 1" | ||
+ | done | ||
+ | MAIN=" | ||
+ | let "i = ${i} + 1" | ||
+ | done | ||
+ | |||
+ | if [ -f ${MISDN_CONF} ]; then | ||
+ | echo " | ||
+ | ${CP} " | ||
+ | fi | ||
+ | echo " | ||
+ | } | ||
+ | |||
+ | function print_scan_results | ||
+ | { | ||
+ | local i=0 | ||
+ | |||
+ | echo " | ||
+ | while [ ! -z " | ||
+ | echo ">> | ||
+ | let "i = ${i} + 1" | ||
+ | done | ||
+ | } | ||
+ | |||
+ | function mk_misdn_dev | ||
+ | { | ||
+ | if [ ! -e /dev/mISDN ]; then | ||
+ | echo " | ||
+ | ${MKNOD} /dev/mISDN c 46 0 | ||
+ | fi | ||
+ | ${CHOWN} ${DEVNODE_user}: | ||
+ | ${CHMOD} ${DEVNODE_mode} /dev/mISDN | ||
+ | } | ||
+ | |||
+ | # | ||
+ | # MAIN | ||
+ | # | ||
+ | |||
+ | case " | ||
+ | |||
+ | start|--start) | ||
+ | |||
+ | check_misdn_conf | ||
+ | parse_config | ||
+ | run_start_commands | ||
+ | mk_misdn_dev | ||
+ | ;; | ||
+ | |||
+ | stop|--stop) | ||
+ | |||
+ | run_stop_commands | ||
+ | ;; | ||
+ | |||
+ | restart|--restart) | ||
+ | |||
+ | check_misdn_conf | ||
+ | parse_config | ||
+ | run_stop_commands | ||
+ | ${SLEEP} 2 | ||
+ | run_start_commands | ||
+ | mk_misdn_dev | ||
+ | ;; | ||
+ | |||
+ | config|--config) | ||
+ | |||
+ | scan_devices | ||
+ | write_mISDN_conf | ||
+ | ;; | ||
+ | |||
+ | scan|--scan) | ||
+ | |||
+ | scan_devices | ||
+ | print_scan_results | ||
+ | ;; | ||
+ | |||
+ | help|--help) | ||
+ | echo " | ||
+ | exit 0 | ||
+ | ;; | ||
+ | |||
+ | *) | ||
+ | echo " | ||
+ | exit 2 | ||
+ | ;; | ||
+ | |||
+ | esac | ||
+ | |||
+ | </ | ||
+ | Der Automatische Start kann nun durch Aufruf des folgenden Befehles erreicht werden: | ||
+ | # chkconfig mISDN on | ||
+ | Ein Überprüfung ob der Dienst (Daemon) mISDN wirklich bei jedem Systemstart automatisch mit gestartet wird, kann durch folgenden Befehl erreicht werden: | ||
+ | # chkconfig --list | grep mISDN | ||
+ | mISDN 0:Aus | ||
+ | |||
+ | Wichtig ist jeweils der Schalter **on** bei den Runleveln - **3 4 5**. | ||
+ | |||