Difference between revisions of "Guerrilla VoIP"

From Hackerspace ACKspace
Jump to: navigation, search
(added images)
(added VLAN trick and config generator)
Line 73: Line 73:
 
* Cisco NL dialplan
 
* Cisco NL dialplan
 
* tested with battery; float charging device still has to be made (haven't measured how long it would run on a single charge though, but enough time to do some important phone calling)
 
* tested with battery; float charging device still has to be made (haven't measured how long it would run on a single charge though, but enough time to do some important phone calling)
 +
 +
Also, I've been playing with the Banana Pi, since the Raspberry Pi sometimes chokes on input digits.
 +
Here is a log/some steps to reproduce
 +
==== get the basics ====
 +
<pre>apt-get install vlan dnsmasq make curl</pre>
 +
 +
==== create and install FreeSWITCH ====
 +
see https://freeswitch.org/confluence/display/FREESWITCH/Debian#Debian-BuildingFromSource
 +
<pre>cd /usr/src
 +
curl https://freeswitch.org/stash/projects/FS/repos/freeswitch/browse/build/Makefile.centos6?raw > Makefile</pre>
 +
If you want to compile and install STABLE branch, edit the above Makefile and add " -b v1.4 " just after the word "clone".
 +
<pre>make && make install</pre>
 +
 +
* ''(you can kill time by doing the other chapters)''
 +
 +
create user 'freeswitch', add it to group 'daemon' and change owner and group of the freeswitch installation
 +
 +
<pre>cd /usr/local
 +
adduser --disabled-password  --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH Voice Platform" --ingroup daemon freeswitch
 +
chown -R freeswitch:daemon /usr/local/freeswitch/
 +
chmod -R ug=rwX,o= /usr/local/freeswitch/
 +
chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/*</pre>
 +
 +
==== prepare VLAN ====
 +
<pre>modprobe 8021q
 +
lsmod | grep 8021q
 +
echo 8021q >> /etc/modules
 +
vconfig set_name_type DEV_PLUS_VID_NO_PAD</pre>
 +
 +
==== set-up network and VLAN ====
 +
<pre>vi /etc/network/interfaces</pre>
 +
 +
<pre>auto lo
 +
iface lo inet loopback
 +
 +
auto eth0
 +
 +
# dhcp configuration, used in normal operation (this connects to your internet)
 +
iface eth0 inet dhcp
 +
 +
# static ip configuration, used for stand-alone preconfiguring factory-reset phones
 +
#iface eth0 inet static
 +
# address 192.168.6.1
 +
# netmask 255.255.255.0
 +
# gateway 192.168.6.1
 +
 +
# operational VLAN 11 (pick any), for usage with VoIP
 +
auto eth0.11
 +
iface eth0.11 inet static
 +
    address 192.168.11.1
 +
    netmask 255.255.255.0
 +
    vlan-raw-device eth0</pre>
 +
==== dnsmasq ====
 +
<pre>vi /etc/dnsmasq.conf</pre>
 +
 +
<pre># uncomment to enable dhcp server on eth0, used for stand-alone preconfiguring factory-reset phones
 +
#interface=eth0
 +
# operational VLAN 11 (pick any), for usage with VoIP
 +
interface=eth0.11
 +
 +
# Choose different ranges for each (V)LAN
 +
dhcp-range=eth0,192.168.6.50,192.168.6.150,12h
 +
dhcp-range=eth0.11,192.168.11.50,192.168.11.150,12h
 +
 +
# Most likeley not needed
 +
#option:tftp-server
 +
#dhcp-option=66,192.168.6.1
 +
#option:
 +
#dhcp-option=150,192.168.178.16
 +
 +
# Enable dnsmasq's built-in TFTP server to serve config files
 +
enable-tftp
 +
 +
# Set the root directory for files available via FTP.
 +
tftp-root=/srv/tftp</pre>
 +
 +
Create the ''/srv/tftp'' directory and put the configs and firmwares in it.
 +
[[Media:gencfg.tar|Here is a config generator]] you can put in there (sorry, can't provide the firmwares since "I don't have them").
 +
 +
<pre>service dnsmasq restart</pre>
 +
or
 +
<pre>/etc/init.d/dnsmasq restart</pre>
 +
 +
==== preconfigure phone ====
 +
* Connect the phone directly using a (optionally crosslink) ethernet cable.
 +
* Power the phone, and hold # until the red (mute) light is off and the phone states: "Reset sequence detected"
 +
* type 123456789*0#, and when asked to keep network config, choose 2=no
 +
* once the new firmware is loaded (Freeswitch is not running, so it won't connect), press 'settings' (checkbox button at the bottom right)
 +
* go to Admin. VLAN ID
 +
* type **# to unlock the setting, and press 'edit'
 +
* type in your voice VLAN (11 like the configs say)
 +
* press validate, and save
 +
* dnsmasq and interfaces configs can now be restored (no dhcp on eth0, only eth0.11)
 +
* nohup sh -c "invoke-rc.d networking stop; sleep 2; invoke-rc.d networking start"
  
 
=== todo ===
 
=== todo ===

Revision as of 22:11, 23 January 2015

Project: Guerrilla VoIP
Featured:
State Active
Members xopr
GitHub No GitHub project defined. Add your project here.
Description low cost communication node
Picture
No project picture! Fill in form Picture or Upload a jpeg here

synopsis

Create a low cost communication node (with VoIP as a base), trying to connect as many as possible types of links, for example:

  • copper/fibre/WiFi network
  • DECT/POTS telephony
  • SIP/SCCP
  • HAM radio (or preferrably, CB radio: 27MC/PMR)
  • copper/WiFi/USB uplink


It also could need some of the following functionality:

  • PoE service (to drive phones, remote switches/accesspoints)
  • battery supported/powered (in case of power failures/lack of power)
  • Efficient power converter(s) when running on battery
  • sturdy compact waterproof casing

prototyping

So to make the first prototype, I chose the following:

  • ammo box
  • 7Ah battery
  • step-down converter 12->5V
  • step-up converter 12v->48V
  • Fritz!Box 7270 (NAT, FxS, FxO, DECT)
  • two Raspberry Pis running FreeSWITCH (external queue, internal SCCP server), DHCP and TFTP
  • Netgear GS110TP (8xPoE + 2xSFP)

Some power tests

hardware power source U I
Two Raspberry Pis, step down drill battery pack 12V 330mA
Cisco CP7940, step up drill battery pack 12V 360mA - 450mA
Fritz!box (wifi off), direct lab power supply 12V 360mA (idle) - 440mA
(42% - 52%, top ~880mA)
15V 250mA (idle)
Netgear GS110TP PoE, step up lab power supply 12V 330mA
Netgear GS110TP PoE +
Cisco CP7940, step up
lab power supply 12V 740mA
Complete set: 2 RasPis,
Fritz!box, switch,
phone + cellphone charging
lab power supply 12V 2000mA
13.8V 1600mA

interesting facts

  • Fritz!box has a switching regulator to 5V tested between 5.5V and 15V (drops off at 5.3V idle and elco at power supply segment is rated 16V)
  • PoE hack adapter connected pin 1 (white-orange) and pin 3 (white-green) with 22K resistor.
  • if the pre-standard CP-79x0 is connected using the PoE adapter hack, the Netgear GS110TP doesn't power, when you unplug it, it will enable power within 5 seconds; plug in, and the phone boots.
  • if you configure the administrative VLAN, the phone will fetch a DHCP lease on that VLAN, allowing you to seperately set up dnsmasq on a Raspberry Pi

done

  • the first version works, but still needs some manual labor
  • Telephone system:Cisco PoE hack cable
  • Cisco NL dialplan
  • tested with battery; float charging device still has to be made (haven't measured how long it would run on a single charge though, but enough time to do some important phone calling)

Also, I've been playing with the Banana Pi, since the Raspberry Pi sometimes chokes on input digits. Here is a log/some steps to reproduce

get the basics

apt-get install vlan dnsmasq make curl

create and install FreeSWITCH

see https://freeswitch.org/confluence/display/FREESWITCH/Debian#Debian-BuildingFromSource

cd /usr/src
curl https://freeswitch.org/stash/projects/FS/repos/freeswitch/browse/build/Makefile.centos6?raw > Makefile

If you want to compile and install STABLE branch, edit the above Makefile and add " -b v1.4 " just after the word "clone".

make && make install
  • (you can kill time by doing the other chapters)

create user 'freeswitch', add it to group 'daemon' and change owner and group of the freeswitch installation

cd /usr/local
adduser --disabled-password  --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH Voice Platform" --ingroup daemon freeswitch
chown -R freeswitch:daemon /usr/local/freeswitch/
chmod -R ug=rwX,o= /usr/local/freeswitch/
chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/*

prepare VLAN

modprobe 8021q
lsmod | grep 8021q
echo 8021q >> /etc/modules
vconfig set_name_type DEV_PLUS_VID_NO_PAD

set-up network and VLAN

vi /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0

# dhcp configuration, used in normal operation (this connects to your internet)
iface eth0 inet dhcp

# static ip configuration, used for stand-alone preconfiguring factory-reset phones
#iface eth0 inet static
#	address 192.168.6.1
#	netmask 255.255.255.0
#	gateway 192.168.6.1

# operational VLAN 11 (pick any), for usage with VoIP
auto eth0.11
iface eth0.11 inet static
    address 192.168.11.1
    netmask 255.255.255.0
    vlan-raw-device eth0

dnsmasq

vi /etc/dnsmasq.conf
# uncomment to enable dhcp server on eth0, used for stand-alone preconfiguring factory-reset phones
#interface=eth0
# operational VLAN 11 (pick any), for usage with VoIP
interface=eth0.11

# Choose different ranges for each (V)LAN
dhcp-range=eth0,192.168.6.50,192.168.6.150,12h
dhcp-range=eth0.11,192.168.11.50,192.168.11.150,12h

# Most likeley not needed
#option:tftp-server
#dhcp-option=66,192.168.6.1
#option:
#dhcp-option=150,192.168.178.16

# Enable dnsmasq's built-in TFTP server to serve config files
enable-tftp

# Set the root directory for files available via FTP.
tftp-root=/srv/tftp

Create the /srv/tftp directory and put the configs and firmwares in it. Here is a config generator you can put in there (sorry, can't provide the firmwares since "I don't have them").

service dnsmasq restart

or

/etc/init.d/dnsmasq restart

preconfigure phone

  • Connect the phone directly using a (optionally crosslink) ethernet cable.
  • Power the phone, and hold # until the red (mute) light is off and the phone states: "Reset sequence detected"
  • type 123456789*0#, and when asked to keep network config, choose 2=no
  • once the new firmware is loaded (Freeswitch is not running, so it won't connect), press 'settings' (checkbox button at the bottom right)
  • go to Admin. VLAN ID
  • type **# to unlock the setting, and press 'edit'
  • type in your voice VLAN (11 like the configs say)
  • press validate, and save
  • dnsmasq and interfaces configs can now be restored (no dhcp on eth0, only eth0.11)
  • nohup sh -c "invoke-rc.d networking stop; sleep 2; invoke-rc.d networking start"

todo

  • work out 'modus operandi': multiple config files switchable by phone
  • work on dual linux config with GPIO hardware switch
  • test the fibre ports
  • add homeplug as a proof of concept
  • design and create (or buy) small-sized float charger (13.8V 2A) with overcurrent protection, if needed