Asterisk with Nortel i2002 IP Phones

asterisk-logo I was feeling under the weather this weekend and found myself confined to my bedroom and basement. With all the idle time I spent a few hours setting up Asterisk. I was looking at two goals, first examining the basic functionality that Asterisk provides and the second was testing the integration between Asterisk and a Nortel i2002 IP phone using the UNIStim (chan_unistim) protocol driver.

For anyone that isn’t familiar with Asterisk; Asterisk is the world’s leading open source PBXi, telephony engine, and telephony applications toolkit. Offering flexibility unheard of in the world of proprietary communications, Asterisk empowers developers and integrators to create advanced communication solutions…for free.

I started by building a CentOS 5.2 server within a VMware environment which was easy enough. I then downloaded the latest Asterisk release (1.6.1-rc1) and compiled the source files. Within no time I had the basic Asterisk installation up and running. I hacked away at the unistim.conf, and extensions.conf file and before long I was making test calls across my private branch exchange between two softphones (X-Lite) and two Nortel i2002 IP phones.

Asterisk is an incredibly powerful solution and can really empower SOHO and small Enterprise networks. The feature support within Asterisk is very impressive and includes voice mail and conferencing. Digium actually manufacturers a number of telephony products based on Asterisk and are very appealing to some businesses. There are also a number of growing service providers which can be used to connect Asterisk over the Internet to the PSTN network without the need for dedicated hardware. I was very impressed with the solution.

Cheers!

Comments on this entry are closed.

  • Mark Stevens February 23, 2009, 9:41 am

    Congrats on the Asterisk set-up. I did something similar here with some colleagues. CentOS & with Asterisk on top, then configured 1120 phones running SIP firmware. Fun little project. Just got the basics up and running.

  • Michael McNamara February 23, 2009, 4:47 pm

    Hi Mark,

    What’s really neat is that the i2002 phones were still running the UNIStim stack with firmware 0604DAD and 0604DBG (no SIP firmware available for the i2002/i2004 phones). Thanks to the efforts of Cedric Hans and others they were able to reverse engineer the UNIStim stack and provide the channel driver for using Nortel’s proprietary protocol on Asterisk.

    I will comment that it took me about 30 minutes to realize that you couldn’t just pickup the handset and dial a number. You had to pickup the handset, dial the phone number and then select the softkey labeled “Call”. I spent that first 30 minutes running packet traces trying to figure out if I had a G.711/GSM codec issue or what the problem was.

    Thanks again for the comment!

  • Gord March 17, 2009, 2:34 pm

    The most current SIP firmware for the IP Phone 1120E/1140E can be accessed from http://www.nortel.com/support. I would be interested in anybody else’s experience using this with Asterisk.

  • tim lang April 8, 2009, 12:57 pm

    I am just installing an asterisk server into my small business, I have 8 Grandstream 2000 phones for hte initial deployment. These are configured and working fine. I am replaceing a Nortel BCM50 and I have 3 IP phones I would LOVE to get working on the system.

    I am on CentOS 5.2 like you, and used hte AsteriskNOW 1.6Beta for my base intstall of everything.

    Can I get a DETAILED instruction on how you got the nortels to work? Heck I would even pay you fo rhte consult to help me.. I truely like the nortel phones and it would save me about $400 if I can re-use the 3 IP phones I have.

    [removed by moderator]

    PS: I am not a ‘Phone Guy’ so this is all new to me, I am a MCSE/T type.

  • Michael McNamara April 8, 2009, 6:49 pm

    Hi Tim,

    The only real changes beyond just building and installing the software was configuring the extensions in the extensions.conf file and then provision the IP phones in the unistim.conf file. I’ll see if I can power back up that VM and copy down the files to post here.

    One note, I didn’t realize for quite some time that I had to go off-hook on the i2002, then dial the number and then select the appropriate line key before the phone would actually dial. It might have been my configuration, I’m not sure but going off-hook didn’t provide dialtone until I selected a line.

    Thanks for the feedback!

  • Michael McNamara April 8, 2009, 10:28 pm

    I managed to dig up those two files… I’ve only included the parts that you might need to change (I didn’t include the entire file just the statements concerning the two IP phones I setup.

    You’ll need to find their MAC address (on the back of the phone) and then depending on software version the phone is running you may need to tweak the rtp_method.

    unistim.conf

    [phone1]                     ; name of the device
    device=001765ffe0fc         ; mac address of the phone
    rtp_port=10000              ; RTP port used by the phone, default = 10000. RTCP = rtp_port+1
    rtp_method=3                ; If you don't have sound, you can try 1, 2 or 3, default = 0
    status_method=0             ; If you don't see status text, try 1, default = 0
    titledefault=Asterisk       ; default = "TimeZone (your time zone)". 12 characters max
    maintext0="Asterisk PBX"  ; default = "Welcome", 24 characters max
    ;maintext1="a custom text"   ; default = the name of the device, 24 characters max
    ;maintext2="(main page)"     ; default = the public IP of the phone, 24 characters max
    ;dateformat=1                ; 0 = month/day, 1 (default) = day/month
    ;timeformat=1                ; 0 = 0:00am ; 1 (default) = 0h00, 2 = 0:00
    ;contrast=8                  ; define the contrast of the LCD. From 0 to 15. Default = 8
    ;country=us                  ; country (ccTLD) for dial tone frequency. See README, default = us
    ;ringvolume=2                ; ring volume : 0,1,2,3, can be overrided by Dial(), default = 2
    ringstyle=3                 ; ring style : 0 to 7, can be overrided by Dial(), default = 3
    callhistory=1               ; 0 = disable, 1 = enable call history, default = 1
    callerid="Customer Support" <555-234-5678>
    context=michael             ; context, default="default"
    mailbox=2000                ; Specify the mailbox number. Used by Message Waiting Indication
    ;linelabel="Support"         ; Softkey label for the next line=> entry, 9 char max.
    ;extension=line              ; Add an extension into the dialplan. Only valid in context specified previously.
                                 ; none=don't add (default), ask=prompt user, line=use the line number
    line => 100                 ; Only one line by device is currently supported.
                                 ; Beware ! only bookmark and softkey entries are allowed after line=>
    ;bookmark=Hans C.@123        ; Use a softkey to dial 123. Name : 9 char max
    ;bookmark=Mailbox@011@54     ; 54 shows a mailbox icon. See #define FAV_ICON_ for other values (32 to 63)
    bookmark=Test@*@USTM/phone2  ; Display an icon if violet is connected (dynamic), only for unistim device
    ;bookmark=4@Pager@54321@51   ; Display a pager icon and dial 54321 when softkey 4 is pressed
    
    [phone2]                     ; name of the device
    device=0018b0342c34         ; mac address of the phone
    rtp_port=10000              ; RTP port used by the phone, default = 10000. RTCP = rtp_port+1
    rtp_method=3                ; If you don't have sound, you can try 1, 2 or 3, default = 0
    status_method=0             ; If you don't see status text, try 1, default = 0
    titledefault=Asterisk       ; default = "TimeZone (your time zone)". 12 characters max
    maintext0="Asterisk PBX"  ; default = "Welcome", 24 characters max
    ;maintext1="a custom text"   ; default = the name of the device, 24 characters max
    ;maintext2="(main page)"     ; default = the public IP of the phone, 24 characters max
    ;dateformat=1                ; 0 = month/day, 1 (default) = day/month
    ;timeformat=1                ; 0 = 0:00am ; 1 (default) = 0h00, 2 = 0:00
    ;contrast=8                  ; define the contrast of the LCD. From 0 to 15. Default = 8
    ;country=us                  ; country (ccTLD) for dial tone frequency. See README, default = us
    ;ringvolume=2                ; ring volume : 0,1,2,3, can be overrided by Dial(), default = 2
    ringstyle=3                 ; ring style : 0 to 7, can be overrided by Dial(), default = 3
    callhistory=1               ; 0 = disable, 1 = enable call history, default = 1
    callerid="Customer Support" <555-234-5678>
    context=michael             ; context, default="default"
    mailbox=2001                ; Specify the mailbox number. Used by Message Waiting Indication
    ;linelabel="Support"         ; Softkey label for the next line=> entry, 9 char max.
    ;extension=line               ; Add an extension into the dialplan. Only valid in context specified previously.
                                 ; none=don't add (default), ask=prompt user, line=use the line number
    line => 101                 ; Only one line by device is currently supported.
                                 ; Beware ! only bookmark and softkey entries are allowed after line=>
    ;bookmark=Hans C.@123        ; Use a softkey to dial 123. Name : 9 char max
    ;bookmark=Mailbox@011@54     ; 54 shows a mailbox icon. See #define FAV_ICON_ for other values (32 to 63)
    bookmark=Test@*@USTM/phone1  ; Display an icon if violet is connected (dynamic), only for unistim device
    ;bookmark=4@Pager@54321@51   ; Display a pager icon and dial 54321 when softkey 4 is pressed
    

    I then added the following lines in the extensions.conf file;

    exten => 100,1,Dial(USTM/100@phone1)
    exten => 101,1,Dial(USTM/101@phone2)
    

    It’s not to complicated after you spend some time with it.

    Good Luck!

    • Nortel IP phones December 23, 2010, 11:23 am

      Hi Michael, we have a Nortel conversion from a BCM to another pbx. We have no user names or passwords for the phones and i have no idea how to get into the unistim.conf. Would you be interested in consulting on this.

      • Michael McNamara December 23, 2010, 12:46 pm

        Hi “Nortel IP phones”,

        You realize that the i2002/i2004 IP phones are only UNIStim capable, they don’t support SIP so you’ll need a solution that supports UNIStim and even so I would advise you to test thoroughly. It’s one thing to get it working in a lab environment, it’s a complete different thing to have it working in a production environment 24x7x365. I’d also be curious as to why you are leaving the BCM solution. The BCM is a really great solution, providing a lot of features in a very small footprint.

        I’m currently too busy to take on any additional work at this time… that doesn’t mean I won’t give you advice. Why not head over to the forums and post a topic over there.

        You can find information on how to access to the configuration options of the i2002/i2004 in this post.

        Good Luck!

  • Hani Bizri June 21, 2010, 4:24 am

    Hi all,

    I just bought POE splitter to use on the Nortel i2002 Phone conneting it to POE switch but no power comes up the unit is dead I tried another unit the same story, but when I connect the external power adapter it works fine.

    I need use the POE feature without using the power adapter.
    The splitter I am using model # PD-PS-401/RA-NTLR V5

    Please advise.

    Regards,
    Hani
    hbizri@msn.com

    • Michael McNamara June 21, 2010, 7:21 pm

      Hi Hani,

      You don’t need a PoE splitter… if you have a PoE switch you should be good to go. If you don’t have a PoE switch you’ll need a PoE injector that conforms to the 802.3af standards.

      Here’s a link from Amazon of a 1 port PoE injector.

      Good Luck!

  • Joe Sus November 23, 2011, 9:08 am

    Hi Michael,

    There is an official company now marketing the Unistim Astersik system for use with Nortel IP and digitial M/T Norstar/BCM phones and SRG.

    It’s called the UCx from http://www.emetrotel.com.

    Check it out, these are all former Nortel guys with 30+ years of experience for some.

    Joe

  • Leon July 13, 2012, 1:12 pm

    Hi Michael,

    Great blog! I was just wondering if there was any way to manually update Nortel IP phones without having a Nortel server to push them?

    I have 6 i2002 phones working with my asterisk server, but they’re running fairly old firmwares. I wanted to update them to see if they’re more stable.

    I often get disconnections 15 seconds into the call, or it regularly loses connection to the server and has to reconnect.

    Thanks!

    • Michael McNamara July 29, 2012, 8:27 pm

      Hi Leon,

      Unfortunately the UNSTim (i2000 series) can only be upgraded via the proprietary UTFTP protocol. I guessing it wouldn’t be to hard to reverse engineer if someone hasn’t already done it. Only the later IP phones (1100, 1200 series) support TFTP.

      I really won’t suspect the firmware/software with such a blaring problem/issue. UNIStim is very chatty and requires <1% packet loss – how’s your network?

      Thanks for the comment!

      Cheers!

  • Eric November 27, 2012, 5:54 am

    Hi

    i2004 Transfer Crash,
    I test 3 phone, A(SIP), B(SIP, C(i2004)
    when A dial C, then C tranfer the call to B,
    B ring, after C hangup, then asterisk Crash
    My asterisk version is 1.8

    • Michael McNamara November 27, 2012, 9:47 pm

      Hi Eric,

      I would suggest you file a bug report with the developers of Asterisk although I’m not sure that the UNIStim channel driver is actively being supported, in which case you might need to fire up the compiler yourself. That the joy of open source software.

      Good Luck!

  • Ganesh August 21, 2013, 4:14 pm

    Hi Michael, I recently started to use FreePBX on our network – the Nortel Option 11C VOIP card crashed and we have over 100 Nortel I2002 voip phones. These were set up on the uniStim.conf file and are working fine. The only problem is that whenever someone transfers a call the entire system crashes. All calls are killed!!
    The Phones have firmware “0604D98″ – Is there any fix for this issue? or can I disable the ‘transfer’ option on the phones.

    Thanks.

    • Michael McNamara August 21, 2013, 6:46 pm

      Hi Ganesh,

      I would suspect the release of Asterisk and not the firmware of the i2002 IP phones. Have your tried submitting a bug request to the FreePBX team? Have you tried using another Asterisk distribution such as AsteriskNow? The problem might also be related to the UNIStim channel driver. If you can find a fix you might try reaching out to the folks at E-Metrotel for some commercial help.

      Good Luck!

  • John August 28, 2013, 5:07 pm

    We are testing convering our entire nortell system to Asterisk (freepbx) but using our exisiting 1140e’s through the transistion. In our test enviorment we have two sip devices 100 and 101. Both can call each other fine. Devices 200, 201 and 202 are 1140s. I can call the SIP phones from them but i can’t call them from the SIP phones. I’m sure i’m missing something simple. Could you nudge me in the right direction?

    log–

    netsock2.c: == Using SIP RTP TOS bits 184
    netsock2.c: == Using SIP RTP CoS mark 5
    pbx.c: — Executing [201@from-internal:1] ResetCDR(“SIP/101-00000006″, “”) in new stack
    pbx.c: — Executing [201@from-internal:2] NoCDR(“SIP/101-00000006″, “”) in new stack
    pbx.c: — Executing [201@from-internal:3] Progress(“SIP/101-00000006″, “”) in new stack
    pbx.c: — Executing [201@from-internal:4] Wait(“SIP/101-00000006″, “1”) in new stack
    pbx.c: — Executing [201@from-internal:5] Progress(“SIP/101-00000006″, “”) in new stack
    pbx.c: — Executing [201@from-internal:6] Playback(“SIP/101-00000006″, “silence/1&cannot-complete-as-dialed&check-number-dial-again,noanswer”) in new stack
    file.c: — Playing ‘silence/1.ulaw’ (language ‘en’)
    file.c: — Playing ‘cannot-complete-as-dialed.gsm’ (language ‘en’)
    pbx.c: == Spawn extension (from-internal, 201, 6) exited non-zero on ‘SIP/101-00000006′
    pbx.c: — Executing [h@from-internal:1] Hangup(“SIP/101-00000006″, “”) in new stack
    pbx.c: == Spawn extension (from-internal, h, 1) exited non-zero on ‘SIP/101-00000006′

    extension_custom.conf (using freebpx)–

    exten => 200,1,Dial(USTM/200@test200)
    exten => 201,1,Dial(USTM/201@test201)
    exten => 202,1,Dial(USTM/202@test202)

    unistim.conf–

    [general]
    port=5000

    [test200]
    device=001b2530085e
    line =>200

    [test201]
    device=001b252fb5a6
    callerid=”John”
    maintext0=”Welcome”
    line =>201

    [test202]
    device=001b252f9ca0
    line =>202

    • John August 29, 2013, 4:33 pm

      Figured it out.. changed the context=from-inside and added extension=line

      Now i can’t figure out how to add voicemail boxes to these UNISTIM lines. All my SIP extensions automatically created mailboxes.

  • Vlad M June 8, 2014, 8:45 am

    Hi! Excellent Tutorial!

    After I fought with a 2002 for a little while I managed to get it to properly talk to the an Elastix (Asterisk 1.8.x)

    There are a couple of tutorials and some of them suggest that the 2002 will benefit from a different module (which requires re-compilation).
    The out-of the box works fine – the things I noticed:
    – The speaker light does not go off
    – The number called is not displaying (or when dialed is not showing)
    – I am not able to select the default codec (it ends up using 711u – I’d prefer 711a)
    I think all these are partially due to the 2004 and above compatibility which phones are having slightly larger screens…

    However if someone has an idea how to fix the above I will be greatful!

    I also figured out the icons for the book marks:
    ; Soft keys icons 2002
    ;
    ; 31 = Tel full normal
    ; 32 = tel empty normal
    ; 33 = tel full normal ringing
    ; 34 = tell empty normal ringing
    ; 35 = Tel full off-hook (up)
    ; 36 = Tel empty off-hook (up)
    ; 37 = TEL full open/ dn
    ; 38 = tel empty open/ dn
    ; 39 = tel full open (up) ringing
    ; 40 = tel empty open (up) ringing
    ; 41 = tel full no rec
    ; 42 = tel empty no rec
    ; 43 = tel full no rec ring
    ; 44 = tel empty no rec ring
    ; 45 = rec (up) ring
    ; 46 = rec (donw) ring
    ;
    ; Bookmark Positions of 2002
    ; 4 —- 1
    ; 3 —- 0

    References:
    http://blog.dale.id.au/how-to-asterisk-1-6-2-and-nortel-2002-ip-phone-ntdu91/
    http://www.voip-info.org/wiki/view/Asterisk+UNISTIM+channels

7ads6x98y