chan-lantiq for Asterisk

Note: This wiki entry is not finished and not complete yet.

The Asterisk channel chan-lantiq provides support for FXS ports from routers using lantiq based SoCs. The channel should usable with most routers using DANUBE, VRX200 (VR9) SoC and probably ARX100 (AR9). VRX200 (VR9) devices need a special firmware using a reserved CPU core and reserved RAM (see section 2.)

To install chan-lantiq for usage with a SIP carrier like sipgate.de the following packages are recommended to install.

opkg install asterisk asterisk-chan-lantiq asterisk-chan-sip asterisk-codec-a-mu asterisk-codec-alaw asterisk-codec-resample asterisk-codec-ulaw asterisk-res-rtp-asterisk

Before release of openwrt-18.06 you could build OpenWrt manually and select the listed packages manually. Self building is supported since OpenWrt master commit 49acec5b5f4b2040c307aebb1a258cf8c1ade278 at 2017-03-24.

To use chan-lantiq with DANUBE SoC based routers only chan-lantiq needs to be installed. A special easy-to-use firmware should installed automatically by ltq-vmmc and ltq-tapi packages. For VRX200 (VR9) based routers a special lantiq firmware must be loaded to a reserved CPU core that is able to access a amount of 2MB reserved RAM. Reserved core and RAM is not needed with DANUBE based devices.

The channel was tested on the following DANUBE SoC based devices:

  • ARV752DPW22 (EasyBox 803A)

The channel should run out of the box with the following VRX200 (VR9) SoC based devices:

  • VGV7510KW22 (o2 Box 6431)
  • VGV7519 (KPN Experia Box v8)

If chan-lantiq is not working with a specific DANUBE based SoC router, check if the routers DTS file have specified GPIOs within a vmmc section. Give a look to ARV752DPW22 DTS file. To support a new VRX200 (VR9) based router give a look to VGV7519 DTSI file (https://github.com/openwrt/openwrt/commit/0ce929228a63cc23f0deb52a72cc99b21c1c9bf9#diff-6c090f56b029513115c56a335129a3e2).

Most important part is to add the following arguments to the kernel command line (bootargs). This line is valid for VGV7519 with 64 MB RAM.

mem=62M vpe1_load_addr=0x83e00000 vpe1_mem=2M maxvpes=1 maxtcs=1 nosmp

You may need to change the mem parameter and vpe1_load_addr. The reserved memory for firmware (vpe1_mem) uses 2M, that means remaining memory is 64M-2M=62M. So the parameter mem=62M is valid. The vpe1_load_addr should point to begin of 62th MB of RAM. You should adopt parameters maxvpes and maxtcs unchanged. The parameter nosmp is needed to disable SMP. That means if you want using chan-lantiq you can only use one CPU core. The second CPU core is reserved for the special firmware for supporting FXS. The firmware might support DECT devices, too. But actually there is no utility/service that does maintain DECT telephones (e. g. register, key management).

To use FXS ports with e. g. Archer VR200v the kernel command line (bootargs) needs to be edited and a vmmc section must added to DTS file. Then FXS might probably work with chan-lantiq (not tested).

The minimal configuration allows to take and receive calls via a SIP carrier like sipgate.de

asterisk/lantiq.conf

[interfaces]
channels = 2
per_channel_context = on

asterisk/sip.conf

nat=yes
directmedia=no
qualify=yes
register => SIPID:PASSWORD@sipgate.de/SIPID
[sipgate]
type=peer
host=sipgate.de
fromdomain=sipgate.de
dtmfmode=rfc2833
insecure=port,invite
directmedia=no
transport=udp,tcp
context=in_sipgate
disallow=all
allow=alaw,ulaw
username=SIPID
fromuser=SIPID
secret=PASSWORD
add to [sipgate] context
context=in_sipgate

asterisk/extensions.conf

[out_sipgate]
exten => _[+0-9].,1,Set(CALLERID(num)=NUMBER)
exten => _[+0-9].,2,Dial(SIP/sipgate/${EXTEN},30,Trg)
exten => _[+0-9].,3,Hangup

[in_sipgate]
exten => SIPID,1,Goto(tel1_in,s,1)

[tel1_out]
exten => _Z,1,Goto(out_internal,${EXTEN},1)
exten => _[+0-9].,1,Gosub(out_sipgate,${EXTEN})

[tel2_out]
exten => _Z,1,Goto(out_internal,${EXTEN},1)
exten => _[+0-9].,1,Gosub(out_sipgate,${EXTEN})

[ltq1_out]
;exten => _[+0-9]!,1,Goto(tel1_out,${EXTEN},1)
exten => _[+0-9]!,1,Dial(local/${EXTEN}@tel1_out/n)

[ltq2_out]
;exten => _[+0-9]!,1,Goto(tel2_out,${EXTEN},1)
exten => _[+0-9]!,1,Dial(local/${EXTEN}@tel2_out/n)

[ltq1_in]
exten => s,1,Dial(TAPI/1,30,t)

[ltq2_in]
exten => s,1,Dial(TAPI/2,30,t)

[tel1_in]
;exten => s,1,Goto(ltq1_in,s,1)
exten => s,1,Dial(local/s@ltq1_in/n)

[tel2_in]
;exten => s,1,Goto(ltq2_in,s,1)
exten => s,1,Dial(local/s@ltq2_in/n)

[lantiq1]
include => ltq1_out

[lantiq2]
include => ltq2_out
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2021/10/06 17:04
  • by agriveaux