Wpcard
(→Example) |
(→Example) |
||
(8 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
− | |||
− | |||
Sangoma Wanpipe E1/T1 PRI cards signalling and data driver. | Sangoma Wanpipe E1/T1 PRI cards signalling and data driver. | ||
This module can build signalling interfaces (D-channels) or audio channels (B-channels) on E1/T1 spans. | This module can build signalling interfaces (D-channels) or audio channels (B-channels) on E1/T1 spans. | ||
− | '''Note:'''The API for communicating with the wanpipe kernel drivers has changed over time. | + | '''Note:'''The API for communicating with the wanpipe kernel drivers has changed over time. |
− | We currently recommend drivers version [http://voip.null.ro/sangoma/wanpipe-3.3.14.11.tgz 3.3.14.11] - anything older or newer may or may not compile or run correctly. | + | We currently recommend drivers version [http://voip.null.ro/sangoma/wanpipe-3.3.14.11.tgz 3.3.14.11] - anything older or newer may or may not compile or run correctly.<br> |
− | + | The wanpipe devices must be started before starting Yate (use the wanrouter script to start all or specific wanpipe device(s)). | |
− | + | ||
===Building a D-channel=== | ===Building a D-channel=== | ||
Line 16: | Line 13: | ||
The '''siggroup''' parameter from the section given by '''sig''' MUST indicate a valid device configured in driver (e.g. w1g1).<br> | The '''siggroup''' parameter from the section given by '''sig''' MUST indicate a valid device configured in driver (e.g. w1g1).<br> | ||
An interface opens its wanpipe device and starts the worker thread when enabled by the owner. It closes the device and stop the worker thread when is disabled.<br> | An interface opens its wanpipe device and starts the worker thread when enabled by the owner. It closes the device and stop the worker thread when is disabled.<br> | ||
− | '''Note:''' No check is made if the wanpipe device is in use. If the wanpipe device is in use (by other programs or Yate) the D-channel creation won't fail. | + | |
+ | '''Note:''' No check is made if the wanpipe device is in use. If the wanpipe device is in use (by other programs or Yate) the D-channel creation won't fail. | ||
===Building a B-channel group (voice span)=== | ===Building a B-channel group (voice span)=== | ||
Line 39: | Line 37: | ||
===Configuration=== | ===Configuration=== | ||
− | |||
Configuration file: wpcard.conf | Configuration file: wpcard.conf | ||
− | |||
; This file keeps the configuration of cards using the wanpipe driver | ; This file keeps the configuration of cards using the wanpipe driver | ||
− | ; Each section except for 'general' configures a group (span) of | + | ; Each section except for 'general' configures a group (span) of wanpipe channels |
− | + | ||
Line 53: | Line 48: | ||
; span parameters | ; span parameters | ||
− | ; bitswap: boolean: Specify if sent/received data has each byte | + | ; bitswap: boolean: Specify if sent/received data has each byte rotated (swapped) |
− | + | ||
; If missing, enable is assumed | ; If missing, enable is assumed | ||
; This parameter can be overridden in group sections | ; This parameter can be overridden in group sections | ||
;bitswap=enable | ;bitswap=enable | ||
− | ; idlevalue: integer: The value to send for unused voice data | + | ; idlevalue: integer: The value to send for unused voice data channels |
− | ; Interval: 0..255. Default value: 255 | + | ; Interval: 0..255. Default value: 255 (0xFF) for T1, 213 (0xD5) for E1 and BRI |
+ | ; A value of -1 sets the circuit code as idle value (for circuit identification) | ||
; This parameter can be overridden in group sections | ; This parameter can be overridden in group sections | ||
− | ;idlevalue= | + | ;idlevalue= |
− | ; buflen: integer: The length of the buffers used by the data | + | ; buflen: integer: The length of the buffers used by the data sources and consumers |
− | + | ||
; Data consumers' buffers will be twice this value | ; Data consumers' buffers will be twice this value | ||
; This value can't be 0. Defaults to 160 | ; This value can't be 0. Defaults to 160 | ||
; This parameter can be overridden in group sections | ; This parameter can be overridden in group sections | ||
;buflen=160 | ;buflen=160 | ||
+ | |||
+ | ; hwrepeatcapable: boolean: Use HW signalling packet repeat capability | ||
+ | ; If disabled, the module will handle packet repeat when requested by the upper layer | ||
+ | ; This parameter can be overridden in group sections | ||
+ | ;hwrepeatcapable=true | ||
Line 82: | Line 81: | ||
;type=E1 | ;type=E1 | ||
− | ; readonly: boolean: Specifies if this is a read only span | + | ; readonly: boolean: Specifies if this is a read only span (signalling and audio data) |
− | + | ||
; If enabled, no data will be sent through this span | ; If enabled, no data will be sent through this span | ||
; Defaults to no | ; Defaults to no | ||
;readonly=no | ;readonly=no | ||
− | + | ||
− | ; siggroup: string: The name of the device containing the | + | ; siggroup: string: The name of the device containing the signalling channel(s) |
− | + | ||
; E.g. w1g1 | ; E.g. w1g1 | ||
− | ; This parameter is required when creating a signalling interface | + | ; This parameter is required when creating a signalling interface (D-channel) |
− | + | ||
;siggroup=w1g1 | ;siggroup=w1g1 | ||
− | ; voicegroup: string: The name of the device containing the voice | + | ; voicegroup: string: The name of the device containing the voice (data) channel(s) |
− | + | ||
; This parameter is required when creating a voice group | ; This parameter is required when creating a voice group | ||
; E.g. w1g2 | ; E.g. w1g2 | ||
;voicegroup=w1g2 | ;voicegroup=w1g2 | ||
− | ; voicechans: string: The range of channels used for voice (data) | + | ; voicechans: string: The range of channels used for voice (data) transfer |
− | + | ; Channel intervals may be specified by separating the margins using the '-' character | |
− | ; Channel intervals may be specified by separating the margins | + | |
− | + | ||
; Individual channels or channel intervals may be separated by '.' | ; Individual channels or channel intervals may be separated by '.' | ||
− | ; Duplicate, not strict positive channel numbers, or channel numbers | + | ; Duplicate, not strict positive channel numbers, or channel numbers greater then channel |
− | + | ; count (channel count defaults to 31 for E1 and to 24 for T1) are not allowed | |
− | ; count (channel count defaults to 31 for E1 and to 24 for T1) | + | |
− | + | ||
; E.g. 1-15.17-31 or 1-23 or 1.2.3-15.17.18-30.31 | ; E.g. 1-15.17-31 or 1-23 or 1.2.3-15.17.18-30.31 | ||
; If missing, will be computed from type (E1: 1-15.17-31, T1: 1-23) | ; If missing, will be computed from type (E1: 1-15.17-31, T1: 1-23) | ||
Line 118: | Line 109: | ||
;offset= | ;offset= | ||
− | ; samples: integer: Specify the number of data samples | + | ; start: integer: Absolute start of circuits numbers, ignore group's start |
− | + | ; Default is offset + group's current start | |
− | + | ;start= | |
− | ; number of bytes given by the number of samples multiplied | + | |
− | + | ; increment: integer: How much will increment this span the circuit number in | |
+ | ; the group it belongs to | ||
+ | ; Defaults to 32 for E1, 24 for T1 | ||
+ | ;increment= | ||
+ | |||
+ | ; samples: integer: Specify the number of data samples expected to be received | ||
+ | ; It is used to create the buffer to read data from span. The total buffer will have the | ||
+ | ; number of bytes given by the number of samples multiplied by the number of voice | ||
+ | ; channels configured for this span | ||
; If missing or 0, it will be computed from type (E1: 50, T1: 64) | ; If missing or 0, it will be computed from type (E1: 50, T1: 64) | ||
;samples=50 | ;samples=50 | ||
; errormask: integer: Value to AND with the received error byte | ; errormask: integer: Value to AND with the received error byte | ||
− | ; The errors controlled by this mask are | + | ; The errors controlled by this mask are 1: RX overrun, 2: CRC, 4: Abort/align |
− | + | ||
; Maximum value 255 | ; Maximum value 255 | ||
− | ; Defaults to | + | ; Defaults to 250 (all except overrun and abort) if missing or invalid |
− | ;errormask= | + | ;errormask=250 |
− | + | ||
− | ; echocancel: boolean: Enable or disable echo canceller on voice | + | |
− | + | ; echocancel: boolean: Enable or disable echo canceller on voice circuits | |
; Defaults to no | ; Defaults to no | ||
− | ; | + | ;echocancel=no |
− | ; dtmfdetect: boolean: Enable or disable tone detector on voice | + | ; dtmfdetect: boolean: Enable or disable tone detector on voice circuits |
− | + | ||
; Defaults to no | ; Defaults to no | ||
;dtmfdetect=no | ;dtmfdetect=no | ||
− | |||
− | |||
− | |||
− | |||
====Example==== | ====Example==== | ||
Line 171: | Line 164: | ||
bitswap=false | bitswap=false | ||
− | Here | + | Here we used Sangoma card with hardware echo cancelation module. |
And here is a config wanpipe1.conf which used by WanRouter: | And here is a config wanpipe1.conf which used by WanRouter: | ||
Line 223: | Line 216: | ||
DATA_MUX = YES | DATA_MUX = YES | ||
TDMV_HWEC = YES | TDMV_HWEC = YES | ||
+ | |||
+ | |||
+ | '''See also''' | ||
+ | |||
+ | * [http://sangoma.com/assets/docs/misc/2008_09_18_Conferencing_with_Sangoma_Wanpipe.pdf Conferencing with Sangoma Wanpipe] (PDF) | ||
+ | |||
+ | [[Category:Sangoma]] [[Category:ISDN]] |
Latest revision as of 12:13, 4 November 2013
Sangoma Wanpipe E1/T1 PRI cards signalling and data driver.
This module can build signalling interfaces (D-channels) or audio channels (B-channels) on E1/T1 spans.
Note:The API for communicating with the wanpipe kernel drivers has changed over time. We currently recommend drivers version 3.3.14.11 - anything older or newer may or may not compile or run correctly.
The wanpipe devices must be started before starting Yate (use the wanrouter script to start all or specific wanpipe device(s)).
Contents |
[edit] Building a D-channel
D-channels are built and managed on request (by API calls), not at startup. The configuration file is read when a request is processed.
The sig parameter of the request MUST indicate an existing section in wpcard.conf and a valid card configured in driver (e.g. wanpipe1).
The siggroup parameter from the section given by sig MUST indicate a valid device configured in driver (e.g. w1g1).
An interface opens its wanpipe device and starts the worker thread when enabled by the owner. It closes the device and stop the worker thread when is disabled.
Note: No check is made if the wanpipe device is in use. If the wanpipe device is in use (by other programs or Yate) the D-channel creation won't fail.
[edit] Building a B-channel group (voice span)
B-channel groups are built and managed on request (by API calls), not at startup. The configuration file is read when a request is processed.
The voice parameter of the request MUST indicate an existing section in wpcard.conf and a valid card configured in driver (e.g. wanpipe1).
The voicegroup parameter from the section given by voice MUST indicate a valid device configured in driver (e.g. w1g2).
A voice span opens its wanpipe device and starts the worker thread when created. It closes the device and stop the worker thread when destroyed.
Voice span creation will fail if:
- The section indicated by the voice parameter is not found in configuration file.
- The voicegroup parameter from the span configuration section is invalid.
- Failed to open the wanpipe device.
- Failed to start the worker thread.
[edit] Additional commands
None
[edit] Message handlers
None
[edit] Configuration
Configuration file: wpcard.conf
; This file keeps the configuration of cards using the wanpipe driver ; Each section except for 'general' configures a group (span) of wanpipe channels [general] ; This section is used to configure the module and set default values for ; span parameters ; bitswap: boolean: Specify if sent/received data has each byte rotated (swapped) ; If missing, enable is assumed ; This parameter can be overridden in group sections ;bitswap=enable ; idlevalue: integer: The value to send for unused voice data channels ; Interval: 0..255. Default value: 255 (0xFF) for T1, 213 (0xD5) for E1 and BRI ; A value of -1 sets the circuit code as idle value (for circuit identification) ; This parameter can be overridden in group sections ;idlevalue= ; buflen: integer: The length of the buffers used by the data sources and consumers ; Data consumers' buffers will be twice this value ; This value can't be 0. Defaults to 160 ; This parameter can be overridden in group sections ;buflen=160 ; hwrepeatcapable: boolean: Use HW signalling packet repeat capability ; If disabled, the module will handle packet repeat when requested by the upper layer ; This parameter can be overridden in group sections ;hwrepeatcapable=true ;[wanpipe1] ;The section's name is the card name defined in wanpipe driver ;E.g. wanpipe1 ; type: string: Specify the span type ; Allowed values: ; E1, T1 ; Defaults to E1 ;type=E1 ; readonly: boolean: Specifies if this is a read only span (signalling and audio data) ; If enabled, no data will be sent through this span ; Defaults to no ;readonly=no ; siggroup: string: The name of the device containing the signalling channel(s) ; E.g. w1g1 ; This parameter is required when creating a signalling interface (D-channel) ;siggroup=w1g1 ; voicegroup: string: The name of the device containing the voice (data) channel(s) ; This parameter is required when creating a voice group ; E.g. w1g2 ;voicegroup=w1g2 ; voicechans: string: The range of channels used for voice (data) transfer ; Channel intervals may be specified by separating the margins using the '-' character ; Individual channels or channel intervals may be separated by '.' ; Duplicate, not strict positive channel numbers, or channel numbers greater then channel ; count (channel count defaults to 31 for E1 and to 24 for T1) are not allowed ; E.g. 1-15.17-31 or 1-23 or 1.2.3-15.17.18-30.31 ; If missing, will be computed from type (E1: 1-15.17-31, T1: 1-23) ;voicechans=1-15.17-31 ; offset: integer: Positive value to add to each voice channel number ; Defaults to 0 if missing or invalid ;offset= ; start: integer: Absolute start of circuits numbers, ignore group's start ; Default is offset + group's current start ;start= ; increment: integer: How much will increment this span the circuit number in ; the group it belongs to ; Defaults to 32 for E1, 24 for T1 ;increment= ; samples: integer: Specify the number of data samples expected to be received ; It is used to create the buffer to read data from span. The total buffer will have the ; number of bytes given by the number of samples multiplied by the number of voice ; channels configured for this span ; If missing or 0, it will be computed from type (E1: 50, T1: 64) ;samples=50 ; errormask: integer: Value to AND with the received error byte ; The errors controlled by this mask are 1: RX overrun, 2: CRC, 4: Abort/align ; Maximum value 255 ; Defaults to 250 (all except overrun and abort) if missing or invalid ;errormask=250 ; echocancel: boolean: Enable or disable echo canceller on voice circuits ; Defaults to no ;echocancel=no ; dtmfdetect: boolean: Enable or disable tone detector on voice circuits ; Defaults to no ;dtmfdetect=no
[edit] Example
Here is an example of config from working environment:
[general] ;bitswap=enable idlevalue=255 buflen=160 hwrepeatcapable=true dumpevents=yes [wanpipe1] type=E1 readonly=no siggroup=w1g1 voicegroup=w1g2 voicechans=2-31 ;offset=0 increment=32 samples=40 errormask=255 echocancel=yes dtmfdetect=yes bitswap=false
Here we used Sangoma card with hardware echo cancelation module.
And here is a config wanpipe1.conf which used by WanRouter:
[devices] wanpipe1 = WAN_AFT_TE1, Comment [interfaces] w1g1 = wanpipe1, , API, Comment w1g2 = wanpipe1, , API, Comment [wanpipe1] CARD_TYPE = AFT S514CPU = A CommPort = PRI AUTO_PCISLOT = NO PCISLOT = 1 PCIBUS = 10 FE_MEDIA = E1 FE_LCODE = HDB3 FE_FRAME = NCRC4 FE_LINE = 1 TE_CLOCK = NORMAL TE_REF_CLOCK = 0 TE_HIGHIMPEDANCE= NO TE_RX_SLEVEL = 120 LBO = 120OH TE_SIG_MODE = CCS FE_TXTRISTATE = NO MTU = 1500 UDPPORT = 9000 TTL = 255 ;TDMV_SPAN = 1 IGNORE_FRONT_END = NO TDMV_HW_DTMF = YES ;TDMV_HW_FAX_DETECT = YES ACTIVE_CH = ALL DATA_MUX_MAP = 0x01234567 [w1g1] HDLC_STREAMING = YES ACTIVE_CH = 1 TDMV_HWEC = NO [w1g2] HDLC_STREAMING = NO ACTIVE_CH = 2-31 IDLE_FLAG = 0x7E MTU = 1200 MRU = 1200 DATA_MUX = YES TDMV_HWEC = YES
See also