VOIP
Hardware
PSTN gateways
I tried out a Linksys SPA-400 with 3 PSTN analog phone lines and an Asterisk server running on a recycled PC. It probably works fine as intended, in an all Linksys system but I was never able to get it to work reliably with Asterisk. The irony is that the SPA-400 runs Linux and Asterisk internally.
You can download the source tarball from the Linksys site.
version 1.0.0.2
It's based on Monta Vista Hardhat Linux
- MIPS processor
- ?? Flash
- ?? RAM
- Linux 2.4 kernel
- Busybox
- Asterisk PBX software
- thttpd
- /usr/sbin/lightbox controls LED's
- dropbear ssh
After a few months of wrestling with it, we bought a TDM-400 and sold the SPA-400 on eBay.
Digium X100P
These are fine if you only need one line, cheap on ebay.
Digium TDM400
This is the card I am working with now. It's great.
Sipura SPA3000
I'd like to try one of these as a single line solution.
Sipura SPA3102
I have a SPA3102 now that I picked up for the Chintimini Wireless Project.
Handsets
Ones that I have tried include
Grandstream GXV3240 (my favorite), GXV3275, DP715
Grandstream BT-100 -- cheapie
Linksys/Sipura SPA-841
Linksys SPA-941
Polycom IP-550
Polycom IP-650
What has paging / auto-answer / intercom support??? [1] The GXV324xx phones do, I have tested it and it works fine.
Some phones support multicast. incl Grandstream, Aastra, Snom, Linksys
Aastra -- The ALERT_INFO variable works for 480i, 480i CT, 9133i, 9112i firmware 1.2.x or later [2] The bugs listed for this phone seem to preclude its desirability. It's been replaced by the 9480i which is TOO EXPENSIVE
Linksys SPA-841
Snom 300 supports POE and auto answer and multicast paging http://www.snom.com/en/products/ip-phones/snom-300-ip-phone/
Network
Setting up QOS on Mikrotik
Refer to http://wiki.mikrotik.com/wiki/Voip
/ip firewall mangle
- First mark things as SIP
add action=mark-packet new-packet-mark=SIP_IN chain=prerouting in-interface=ether1-gateway disabled=no passthrough=no \ src-address=192.168.1.2 comment="Bellman" add action=mark-packet new-packet-mark=SIP_OUT chain=postrouting out-interface=ether1-gateway disabled=no passthrough=no \ dst-address=192.168.1.2 comment="Bellman" add action=mark-packet new-packet-mark=SIP_IN chain=prerouting in-interface=ether1-gateway disabled=no passthrough=no \ src-address=192.168.1.43 comment="GXV3240" add action=mark-packet new-packet-mark=SIP_OUT chain=postrouting out-interface=ether1-gateway disabled=no passthrough=no \ dst-address=192.168.1.43 comment="GXV3240"
add action=mark-packet new-packet-mark=SIP_IN chain=prerouting in-interface=ether1-gateway disabled=no passthrough=no \ src-address=192.168.1.45 comment="SPA2000" add action=mark-packet new-packet-mark=SIP_OUT chain=postrouting out-interface=ether1-gateway disabled=no passthrough=no \ dst-address=192.168.1.45 comment="SPA2000"
add action=mark-packet new-packet-mark=ELSE_IN chain=prerouting in-interface=ether1-gateway disabled=no passthrough=no \ src-address=!192.168.1.2 comment="All Else" add action=mark-packet new-packet-mark=ELSE_OUT chain=postrouting out-interface=ether1-gateway disabled=no passthrough=no \ dst-address=!192.168.1.2 comment="All Else"
add action=mark-packet new-packet-mark=ELSE_IN chain=prerouting in-interface=ether1-gateway disabled=no passthrough=yes \ src-address=192.168.1.2 src-port=80 protocol=tcp comment="Bellman Web Server" add action=mark-packet new-packet-mark=ELSE_OUT chain=postrouting out-interface=ether1-gateway disabled=no passthrough=yes \ dst-address=192.168.1.2 dst-port=80 protocol=tcp comment="Bellman Web Server"
iptables -A twilio_whitelist -j ACCEPT -s 54.172.60.0/30 iptables -A twilio_whitelist -j ACCEPT -s 54.244.51.0/30 iptables -A twilio_whitelist -j ACCEPT -s 54.171.127.192 iptables -A twilio_whitelist -j ACCEPT -s 54.171.127.193 iptables -A twilio_whitelist -j ACCEPT -s 54.171.127.194 iptables -A twilio_whitelist -j ACCEPT -s 54.65.63.192 iptables -A twilio_whitelist -j ACCEPT -s 54.65.63.193 iptables -A twilio_whitelist -j ACCEPT -s 54.65.63.194 iptables -A twilio_whitelist -j ACCEPT -s 54.169.127.128 iptables -A twilio_whitelist -j ACCEPT -s 54.169.127.129 iptables -A twilio_whitelist -j ACCEPT -s 54.169.127.130 iptables -A twilio_whitelist -j ACCEPT -s 54.252.254.64 iptables -A twilio_whitelist -j ACCEPT -s 54.252.254.65 iptables -A twilio_whitelist -j ACCEPT -s 54.252.254.66 iptables -A twilio_whitelist -j ACCEPT -s 177.71.206.192 iptables -A twilio_whitelist -j ACCEPT -s 177.71.206.193 iptables -A twilio_whitelist -j ACCEPT -s 177.71.206.194
/queue tree add name="IN" parent=global-in priority=1 add name="OUT" parent=global-out priority=1 add name="SIP_IN" packet-mark=SIP_IN parent=IN priority=2 add name="SIP_OUT" packet-mark=SIP_OUT parent=OUT priority=2 add name="ALL_ELSE_IN" packet-mark=ELSE_IN parent=IN priority=8 add name="ALL_ELSE_OUT" packet-mark=ELSE_OUT parent=OUT priority=8
Software
Asterisk -- works well but pretty complicated for small installations. I have some set up notes here Asterisk.
Freeswitch -- http://www.freeswitch.org/
I am testing a set up on 8track
Kirk Bailey is experimenting with pfSense (http://pfSense.com/) which is a FreeBSD based firewall project. It is intended for embedded systems such as the Soekris. pfSense has a package management system and there is now a FreeSwitch package. I am going for a file server based solution right now so this is on hold for me.
Asterisk
You might want to use an IDE/CF adapter that can hold two CF cards. This way you could stick in a smaller second card -say- 32 or 64MB and mount stuff like /etc/asterisk, /var/log, /var/run and voicemail etc on that one, possibly leaving the main card mounted read-only for most of the time.
Setting up
Using Digium cards for FXS/FXO
Zaptel modules
Use the command genzaptelconf -d to generate new config files. Generates /etc/zaptel.conf and /etc/asterisk/zapata-channels.conf files.
Echo cancellation and gain settings on FXO lines
This page covers both of these topics:http://www.asteriskdocs.org/modules/tinycontent/content/docbook/current/docs-html/x1695.html
This one is interesting too: http://www.rowetel.com/blog/?p=18
- Edit /etc/zaptel.conf to adjust receive and xmit gain levels.
- Use ztmonitor channel to see levels during a call.
- Use asterisk -r and the reload command to change settings during a call.
Web interface
Voicemail
User interface
On delete of message, move it to Trash/
Administration interface
- Should trashed messages be deleted or archived? How often?
- Should messages marked as old be deleted or archived? How often?
- Per user control of Trash/ ?
Service providers
Internet Telephony Service Providers
Links
Digital signal processing and Spandsp: http://www.soft-switch.org/
The Blackfin project http://rowetel.com/ucasterisk/
Digium
Elastix
iPitomy
Qualmetrics
Trixbox