Friday, January 13, 2012

Integration of the Valcom VIP-204 with the ShoreTel Phone System

A cheatsheet for me to have on the next integration...

Ok, this was not as easy as it seemed like it would be, but I finally got this going.  Forget calling ShoreTel about this.  I had two TAC guys who told me (basically) that they couldn't help me, and that integrating with the Valcom system was "UNSUPPORTED".  I really cant believe that Valcom is an "unsupported" company in ShoreTel land.  After all, Valcom is in almost every company Ive been to where I live.  I did, however, talk with one pre-sales guy that offered some help (Thanks Tom).  He didn't know how to do this exactly, but he did at least make some suggestions about the SIP part.  So, with that said, here are my notes on this on how to integrate ShoreTel with the Valcom VIP-204.

CONFIGURATION OF THE VALCOM VIP-204:
On the VIP-204 PagePro Paging System:
Install the VIP-102B Solutions Setup Tool.
Device must be scanned and found first.  Scan for "all devices".
Give device an static IP address.  click "assign".
Device reboots.
You must now verify the device.  Right click on pagepro device and click "verify device".
Window comes up, click "verify".
Move device to the vlan you want it to be in, that matches the ip address range you configured the ip address for.
Rescan "all devices" again.
I had to "update changed devices" at this point.
When the device reboots, go to System ---> Audio Groups.
Create as many Audio Groups as you need.  Click OK.
Go to System --->  Audio Group Membership.
On this page, select the Audio Group in the drop down box you want, and select what ports it should be available to.  Click "close".
Go to "Channels" tab.  Select 1 through 4 and put in the dial code you want it to be.  Leave the rest as default. 
Go to "SIP" tab.  Select your paging zones (1 - 8) and fill out the info.  Here is what I found:
Phone Number: After you dial the ShoreTel SIP extension to access the Valcom box, you will hear a "tone" in the earpiece.  You will then dial this "phone number" to select the paging zone you want to access (1 - 8).  In my case here, I used 12 for tab 2.
Description:
Authentication Name:  Used for authentication with the ShoreTel SIP extension.
Secret:  Match this with the ShoreTel SIP extension password.
SIP Server:  Match this with the ShoreGear Switch that hosts the SIP Proxy Ports.  In this case, I used 172.17.10.4 (the switch ip address, NOT that of the ShoreTel Director Server.
The rest leave as is.
Pre-Announce Tone:  I checked this so that I would know when to hit the code for the paging zone.
Audio Groups:  Select the Audio Groups you want this dial code (phone number, 12 in this case) to access for paging.
Now, configure each SIP tab as you need to.  Authentication will be the same for each one. 
To save this config, go to File ---> Save.  This will save to your pc.
Below is a screenshot of the VIP-102B Solutions Setup Tool interface.  Its easy to use and the tool is the only way to configure the paging system.
CONFIGURATION FOR THE SHORETEL PHONE SYSTEM PIECE:
Go to the ShoreGear switch you want to be the Proxy SIP Server.
Select one "port type" as "100 SIP Proxy" in the drop down box.  Make sure that in the "Built-in Capacity" on the same page, you have at lease "100 SIP Proxy Ports" in RED.
Go to Sites, and in the site with the ShoreGear switch you selected above, go to the SIP Proxy settings.  Forget the "Virtual IP Address blank.  Select your ShoreGear switch in Proxy Switch 1.  Save it.
In Call Control ---> Options.  Make sure "Realm" is set to the same thing you have in the PagePro setup.
For SIP Profiles, I used "_System", which is a system default.  I didn't know what else to use, and IF you need to create one for some reason, I wouldn't know what specs to configure for it.
Go to Users and create a user.  I called mine Paging.  Type in the extension you want to use to access the Valcom and the sip authentication password to match that of the PagePro SIP authentication.  Save this.
Go to IP Phones ---> Individual IP Phones.  Select the "SIP Registration" button, and put in the info. I used:
Contact: company name
AOR: company name
Host:  IP address of the pagepro sip appliance (the sip device)
User: The SIP extension you created just before this.
SIP Profile:  _system
Site: Site you want this for.
Save this info.  You should see the SIP phone register now down toward the bottom.  See below screenshot.  Make sure it registers to the ShoreGear switch you intended it to.  This can cause you problems if it registers to a different ShoreGear switch.
Go back to the SIP extension user (under Users), and for the IP phone, select the SIP phone you saw down at the bottom of the page you just saw register.  Actually, it should already be assigned, but make sure.  For some reason, it did assign mine automatically.
Done.
  
FOR THE PHYSICAL CONNECTIONS:
The PagePro VIP-204 isn't hard.  Its a LAN interface on the front, and 4 analog ports on the back.  They are Ethernet connected, which comes with a biscuit jack, that connects to the speakers.  Make sure your speakers have an external power source.  Other than that, see the picture below of what this biscuit jack looks like.  Notice that its the BROWN pair that goes to the audio speakers.
You can also use the buttset to test with as a speaker IF you can not use the production test speakers to test with.  This can interrupt the people in the company, which may be unwanted, so I used the buttset to test with until I knew my setup/config was right.  Then I moved on to connect the speakers.  It looked like this:

My buttset setting was set like this below (apparently, my focus doesn't work on my phone) :

TROUBLESHOOTING THE SETUP:
Now, for troubleshooting.  ShoreTel will not help you with this, so I have very little to offer.  But, I do have SOME good info.  For troubleshooting this, the main thing I did was to telnet to the PagePro SIP device and make sure it registered.  Its a Linux box, but here is exactly what I did below.  Notice that I have NOTES in this troubleshooting below for some help.
ON THE PAGEPRO IP SIP APPLIANCE:
telnet to the ip address of the SIP PagePro device.
THIS LOGIN BELOW IS THE DEFAULT LOGIN, GIVEN TO ME BY VALCOM:
PagePro login:  root
Password:  moonbase
#
#
# ps            <------------- Show what processes are running
  PID PORT STAT SIZE SHARED %CPU COMMAND
    1      S     25K     0K  0.1 init
    2      S      0K     0K  0.0 keventd
    3      R      0K     0K  3.3 ksoftirqd_CPU0
    4      S      0K     0K  0.0 kswapd
    5      S      0K     0K  0.0 bdflush
    6      S      0K     0K  0.0 kupdated
    7      S      0K     0K  0.0 mtdblockd
   16      S      0K     0K  0.0 jffs2_gcd_mtd2
   25   S0 S     85K     0K  0.0 /bin/sh
   26      S     50K     0K  0.0 /mnt/bin/inetd
   44      S    178K     0K  0.0 /mnt/bin/boa
   46      S    586K     0K  0.1 /mnt/bin/vipRunStp
   54      S    1326K     0K 94.6 /mnt/bin/vip804               <------------ Find this process
   57      S     85K     0K  0.3 /mnt/bin/telnetd
   58   p0 S     85K     0K  1.2 -sh
   59   p0 R     50K     0K  0.0 ps
# kill -15 54                        <--------------------- Stop this process from running

# vip804 &              <----------- To start the vip804 process
64
# Initializing System
initializing DHCP handling
ws1: dhcp, ws2: 0
v1Socket: 7
v2Socket: 8
v2McastControlSocket: 9
v2McastAudioSocket: 10
v2McastSetupSocket: 11, 4097
v2McaseSetupAddr: 239.1.1.2
tos: 00
tos: 00
tos: 00
initNetwork fdmax: 11
sizeof dspQueueEntry_t: 412
sizeof testentry.next: 4
calling vpResetDSP()
Entering vpResetDSP
Leaving vpResetDSP
calling vpInit()
vpInit: setting chip selects 1
cs1base address set
cs1base: 0x90000d01
cs1option address set
cs1option: 0xf0000e08
calling vpInitGlobals
vpInitGlobals: setting dspPtr
vpInitPortA()
paddr: 0014
padat: E00C
ICR1: 88000005
ISR: 9FFFFFF0
Leaving vpInterruptInit
Entering vpResetDSP
Leaving vpResetDSP
First DSP Word: AA55
Writing Patch
***** writePatch
result of writing patch: 0
tcounter: 32771
Done writing Patch
After write of 0x6060: 6060
how long did it take for the dsp to come back? : 59909
number of statusQueue entries: 0
number of statusQueue entries: 1
system ready message:
00E0
0A00
0000
0000
0001
00FA
0341
0026
1400
0401
before capabilityMsg number of statusQueue entries: 0
writeCapabilityMessage
initializing for 4 channels
after capabilityMsg number of statusQueue entries: 1
lin0gc: 2
lout0gc: 1
lin1gc: 2
lout1gc: 1
mingc: 2
spoutgc: 0
hsingc: 2
hsoutgc: 1
ConfigureGPIO()
starting monitor gpio
start monitor gpioProcess
start monitor gpioProcess
start monitor gpioProcess
start monitor gpioProcess
start monitor gpioProcess
start monitor gpioProcess
start monitor gpioProcess
start monitor gpioProcess
configure channel
configure channel
configure channel
configure channel
init channels, systemVars.numChannels == 4
opening /mnt/chan1.ini
starting to get file contents
vox: 0
unicast page not defined, assuming 0
opening /mnt/chan2.ini
starting to get file contents
vox: 0
unicast page not defined, assuming 0
opening /mnt/chan3.ini
starting to get file contents
vox: 0
unicast page not defined, assuming 0
opening /mnt/chan4.ini
starting to get file contents
vox: 0
unicast page not defined, assuming 0
sipInitNetwork: ERROR bind SIP(UDP) Channel: 1, Port: 5060 - Address already in
use
sipInitNetwork: errno: 98 (0x62), socket = 15
sipInitNetwork: ERROR bind SIP(UDP) Channel: 2, Port: 5060 - Address already in
use
sipInitNetwork: errno: 98 (0x62), socket = 16
sipInitNetwork: ERROR bind SIP(UDP) Channel: 3, Port: 5060 - Address already in
use
sipInitNetwork: errno: 98 (0x62), socket = 17
sipInitNetwork: ERROR bind SIP(UDP) Channel: 4, Port: 5060 - Address already in
use
sipInitNetwork: errno: 98 (0x62), socket = 18
sipInitNetwork: ERROR bind SIP(UDP) Channel: 5, Port: 5060 - Address already in
use
sipInitNetwork: errno: 98 (0x62), socket = 19
sipInitNetwork: ERROR bind SIP(UDP) Channel: 6, Port: 5060 - Address already in
use
sipInitNetwork: errno: 98 (0x62), socket = 20
sipInitNetwork: ERROR bind SIP(UDP) Channel: 7, Port: 5060 - Address already in
use
sipInitNetwork: errno: 98 (0x62), socket = 21
initProtocolstun: Routine entered
read 5588 bytes from /tmp/SingleChimeHigh.raw
read 10950 bytes from /tmp/DualChime.raw
how long did it take for the dsp to come back? : 0
number of statusQueue entries: 1
starting main loop number of statusQueue entries: 0
running cleanupToIdle before main
cleanupToIdle chan: 0
musicoff channel: 0
musicoff channel: 0
cleanupToIdle chan: 1
musicoff channel: 1
musicoff channel: 1
cleanupToIdle chan: 2
musicoff channel: 2
musicoff channel: 2
cleanupToIdle chan: 3
musicoff channel: 3
musicoff channel: 3
generic FD_MAX value: 0
setting 10ms timer for 48 Mhz clock
safInitQueue()
unknown DSP data: 00E0, 0000, 0004, 00FA, 0341
Xmt0: REGISTER Seq:1000 To:804@172.17.10.4:5060
sipMatchChan: Routine entered
sipMatchChan: Response type = 200
sipMatchChan: Chan=0, ws1=804@
sipProcessResponse: entered, sipCalledChannel=0, sipCallExtptr->rspCode=200
Rcv0: 200-OK For:REGISTER Seq:1000 From:804@172.17.10.4:5060            <--------------- Seeing 200-OK means it registered.  THIS IS WHAT YOU ARE LOOKING FOR!!!

Xmt1: REGISTER Seq:2000 To:805@172.17.10.10:5060
Xmt1: REGISTER Seq:2001 To:805@172.17.10.10:5060
Xmt1: REGISTER Seq:2002 To:805@172.17.10.10:5060
Xmt1: REGISTER Seq:2003 To:805@172.17.10.10:5060

And that is the process I went through on this.  To me, it was a little painful, but now I know how to do this.  I hope this is helpful.