Changes RSS

Using Nortel Unistim phones with FreePBX/Asterisk/AsteriskNOW

Nortel non-SIP IP telephones uses a communication protocol called Unistim. This protocol has been reverse-engineered for the purpose of interoperability (thus legal at least in Europe), and the results are implemented in the chan_unistim Asterisk module.

At least the i2004 (tested), i2002 (tested), i2007 hardphones and the i2050 softphone are supported, and support is also claimed (I have not tried yet) for Cisco compatible phones.

The following features are supported:

  • Transfer
  • Threeway call
  • Call Forward
  • Message Waiting Indication (MWI)
  • Distinctive ring
  • Call History
  • Send/Receive CallerID
  • Redial
  • (Dynamic) SoftKeys
  • SendText()
  • Music On Hold

Install the chan_unistim driver

yum update
yum install asterisk14-devel
wget http://mlkj.net/UNISTIM/chan_unistim-1.0.0.5f.tar.bz2
tar zxvf chan_unistim-1.0.0.5f.tar.bz2
cd chan_unistim-1.0.0.5f
make
make install

Set up config entries for Unistim

Edit /etc/asterisk/unistim.conf

Note that we are using the planned extension number as both Unistim ID and Unistim Line number, in this example, 6007.

[6007]                    ; name of the device, preferably the same as the extension number
device=000ae40a6c38       ; mac address of the phone
country=no                ; country (ccTLD) for dial tone frequency. See README, default = us
extension=line            ; To register for extension. This is needed IN ADDITION to a dialplan entry
context=from-internal     ; freePBX uses this for internally originated calls.
callerid="Desk" <6007>    ; Set a sane CID-display
titledefault="Ext # 6007" ; default = "TimeZone (your time zone)". 12 characters max
timeformat=2              ; 0 = 0:00am ; 1 (default) = 0h00, 2 = 0:00
line=>6007                ; Device and extension number. Only one line by device is currently supported.
; Beware ! only bookmark and softkey entries are allowed after line=>
bookmark=2@Logout@8001**  ; I use the keys above the Line key for logging in and out
bookmark=1@Login@8001*    ; of my primary Queue...

Play around with any of the other options, they are fairly well documented.

Add an extension / dialplan entry

In freePBX, go to Admin / Extensions, and Add Extension

(With the previous example as a base, Caller ID name is “Desk”, and Unistim number is 6007)

  • Select device: Other (Custom) device
  • Set the display name to the same as the String part of the callerid in unistim.conf
    • Desk
  • Set the dial string to “USTM/ustmline@ustmname”
    • UTSM/6007@6007
  • Submit

Reload your asterisk config with the “Reload bar” in freepbx.

Restart your Asterisk server

You *could* load the module from the asterisk prompt, but to be absolutely shure, restart the setup. Either run “restart now” on an *-prompt, or do it from a shell-prompt:

asterisk -rx "restart now"

Set up your Nortel phone

From voip-info.org, I have stolen this, as it works ;)

  • Power on the phone
  • Wait for message “Nortel Networks”
  • While the “Nortel Networks” splash is showing, quickly press each the four softkeys just below the LCD screen, in sequence from left to right. (you can do it real easily with your four fingers as if on a piano - one-two-three-four). This is known as 'swiping' a phone.
  • If you see “Locating server”, you weren't fast enough. Power off (or reboot the phone - see below) and try again
- EAP Enable? (0-N,1-Y):0 
- DHCP? (0-N,1-Y):1 
- Cached IP? (0-N,1-Y):1 
- DHCP:0-Full,1-Partial:1 
- S1 IP: xxx.xxx.xxx.xxx (Asterisk's Server IP Address) 
- S1 PORT: 5000 
- S1 ACTION: 1 
- S1 RETRY COUNT: 10 
- S2 IP: xxx.xxx.xxx.xxx (Asterisk's Server IP Address) 
- S2 PORT: 5000 
- S2 ACTION: 1 
- S2 RETRY COUNT: 10 
- Cfg XAS? (0-No,1-Yes):0 
- VOICE VLAN? (0-N,1-Y):0 
- PC PORT? (0-OFF,1-ON):1 
- DATA VLAN? (0-N,1-Y):0 
- DUPLEX (0-AUTO,1-FULL):1 
- SPEED (0-10Mb,1-100Mb):1 
- GARP Ignore? (0-N,1-Y):1 

Full auto via DHCP

I have not yet tested the following, but it is definitely on my list! I am quoting voip-info.org:

Using a proper (read: Unix) DHCP daemon like ISC, the following should be easily adapted:

When using ISC DHCP daemon:

  • Edit /etc/dhcpd.conf
    • Add the following line near the top of the file
      option nortel_ipt code 128 = string; 
    • Add the following line within the subnet for your phones
      option nortel_ipt "Nortel-i2004-A,iii.iii.iii.iii:ppppp,aaa,rrr;iii.iii.iii.iii:ppppp,aaa,rrr." 
      • iii.iii.iii.iii = IP address of call server
      • ppppp = Signaling port of call server
      • aaa = Action, currently must be 1
      • rrr = Retry count, any value. 10 is fine
      • The repetition of this whole section is for a second server, and is optional.
    • Take care to enter all the punctuation marks correctly. There's a colon (:) between the IP and the Port, commas (,) between the other fields, a period (.) at the end, and, to keep DHCP happy, a semi-colon (;) after the closing quote.
    • For example, to connect to call server at 172.16.1.1:5000, use:
      option nortel_ipt "Nortel-i2004-A,172.16.1.1:5000,1,10;172.16.1.1:5000,1,10."; 
  • Restart your DHCP daemon

For OpenBSD DHCP daemon, set the option numerically in your subnet section:

option option-128 "Nortel-i2004-A,172.16.1.1:5000,1,10.";