Wanpipe Windows Driver Operation
- Sangoma Windows Device Driver Event log
- Wanpipemon - debugging utility
- Hardware Echo Canceler configuration
The Driver event log can be found at
From this log file, you will be able to find out if the driver is loaded properly on certain port, if the link is connected and etc.
You could also run 'stail' utility to view the wanpipelog updates dynamically:
-> open windows console (cmd)
-> run: stail <enter>
The size of the wanpipelog file is limited 10 Mb. After the maximum file size is reached, the driver will truncate it to size 0.
To truncate/reset the file manually, the 'stail' utility can be used as follows:
-> run: stail -reset <enter>
It is recommended to provide the 'wanpipelog.txt' file in a e-mail when requesting the Tech Support.
Used to view driver statistics, T1/E1 alarms, data trace etc..
To get the list of available commands:
-> run: wanpipemon <enter>
The Hardware Echo Canceler is configured using 'wanec_client.exe' utility located in <AFT_ROOT>\card\utils> directory.
The explanations and an example of how to use 'wanec_client.exe' is located in 'example_echo_cancel.bat' batch file.
Please use your text editor to view the content of 'example_echo_cancel.bat' which is also located in <AFT_ROOT>\card\utils> directory.
Syntax: wanec_client.exe wanpipe<port>_if1 config
This step is absolutely necessary for the EC chip to work at all. If it's the first time that is run for a port in a given card, the EC image will be loaded. However, this command must still be executed for any other port that requires either HW EC or HW DTMF. If you have an A102 for example you must do:
# wanec_client.exe wanpipe1_if1 config
The first time a port in that card gets configured the command will do 2 things, load the EC firmware image (which is global for the whole card) and configure the ec for that port in that card. Then, to configure the EC chip on the second port:
# wanec_client.exe wanpipe2_if1 config
This will no longer load any EC firmware image because at least 1 port in the card already loaded the image, but will still configure the ec for port 2 of that card.
Other point of confusion here may be that the _if1 part that is constant. In a card configured in channelized mode, there is 24 interfaces ranging from wanpipe<port>_if1 to wanpipe<port>_if24. The reason we use interface 1 is that that interface is always there no matter which type of configuration is being used (for example, even in span mode).
At this point, just after configuration, the EC is just configured, but is not doing any HW EC or HW DTMF features in your ports. You can verify that by doing:
# wanpipemon -i wanpipe1_if1 -c ehw
# wanpipemon -i wanpipe2_if1 -c ehw
This will print the channels for your ports where EC is enabled. At this point the EC is configured but not enabled so you should not see anything (Message: "Sangoma HW EC is disabled for all channels" will be printed).
2. Enabling EC chip features.
The EC chip does both, echo cancellation and DTMF detection, but each one must be enabled separately in order to work.
- Enabling echo cancellation.
Syntax: wanec_client.exe wanpipe<port>_if1 enable <channel>
The channel very important, as we don't want to corrupt data on the D channel. If not specified the echo cancellation will be enabled in all channels for the specified port including the D-channel and we don't want that.
# wanec_client.exe wanpipe1_if1 enable 1-23
# wanec_client.exe wanpipe2_if2 enable 1-23
This command is, of course, not necessary in the ports where you don't want echo cancellation.
- Enabling DTMF detection.
The EC can do DTMF detection in hardware, but this feature must also be enabled.
Syntax: wanec_client.exe wanpipe<port>_if1 de <channel> <direction>
The initial part of the command is the same usual syntax, followed by "de" DTMF enable, the channel number, or range and finally the direction. For incoming DTMF detection is "sout". I do agree this is another aspect that must be improved for usability, since sout is a bit confusing for someone not familiar with the internal architecture.
# wanec_client.exe wanpipe1_if1 de 1-23 sout
# wanec_client.exe wanpipe2_if2 de 1-23 sout
3. Enabling DTMF detection in your program using FreeTDM API (skip this if you use raw libsangoma API).
Up to this point, the card has everything setup. But if you use the FreeTDM API, it needs to know if you want the DTMF events passed up. This is achieved by doing:
ftdm_channel_command(chan, FTDM_COMMAND_ENABLE_DTMF_DETECT, NULL);
This enables the DTMF buffering, whether the DTMF is done in software or hardware it does not matter for FreeTDM, this simply states that you want any DTMF detected to be buffered until you call:
ftdm_channel_dequeue_dtmf(chan, dtmfbuff, sizeof(dtmfbuff));