How to update firmware in individual Avaya 96xx phones

If you have an Avaya telephone system, you probably have a web server to manage firmware. If not, it’s pretty easy to set up so let me know if I should post the procedures. What is not easy is testing firmware before deploying it to the whole network. What if you just want to update one particular phone? What if someone is complaining about something (e.g. continuous reboots) and you want to update their firmware to see if it fixes it? You could set up a development web server and statically assign the file server address to the phone. But then you have to statically assign all addresses on the phone or the DHCP server will overwrite the file server address. And this isn’t a permanent fix because the phone will forever have a statically assigned address. You could do tricky things in Apache using the IP address of the phone in the http.conf file or .htaccess, but there’s another way.

The trick is in the 96xxupgrade.txt file on your web server. As with most of these posts, we need to assume you have a web server and have access to the root html folder. Find the 96xxupgrade.txt, open it in any text editor and you should see something similar to this (if you’re using the sample file from Avaya):

############################################################
## Check backup application version                       ## 
############################################################
IF $MODEL4 SEQ 9610 goto BACKUPAPP96XX
IF $MODEL4 SEQ 9620 goto BACKUPAPP9640
IF $MODEL4 SEQ 9630 goto BACKUPAPP96XX
IF $MODEL4 SEQ 9640 goto BACKUPAPP9640
IF $MODEL4 SEQ 9650 goto BACKUPAPP96XX
IF $MODEL4 SEQ 9670 goto BACKUPAPP9670
goto END

This is the stuff Avaya put in the sample file so individual types of phones can download different versions of firmware. Note how there’s a check against a “$MODEL4” variable? This allows the phone to jump to a new section after a very basic check. Unfortunately, there are only a few variables available. I’ve never been able to find a definitive list of all available variables, but we can make this work with the GROUP variable.

So let’s say you want to test version ha96xxua3_2_0_S.bin of the 9600 firmware on your 9630 phone at your own desk before deploying to the entire network. In the 96xxupgrade.txt file, go to the section for the 9630s (probably BACKUPAPP96XX if you have the default Avaya file)

Your file will probably have a section like this:

# BACKUPAPP96XX

IF $BOOTNAME SEQ hb96xxua3_1_03_S.bin goto PHONEAPP96XX
SET APPNAME hb96xxua3_1_03_S.bin
goto GETSET

This just tells the phone to check its firmware version and if it’s already 3_1_03_S, then go to PHONEAPP96XX. If not, set its version to 3_1_03_S, which will cause the phone to download the new file, reboot, write it to flash, and reload the 96xxupgrade.txt file. Then when it gets to this line, it will have the version 3_1_03_S and jump to PHONEAPP96XX. Why is there a goto GETSET? Well, that’s there in case the phone cannot find the file. It will just jump to GETSET.

Within the PHONEAPP96XX section, my file says

 # PHONEAPP96XX
SET APPNAME ha96xxua1_1_03_S.bin
goto GETSET

Maybe yours does too. This just sets the application file to the right name. Again, causing the phone to load the file, reboot, write to flash, and reboot again. Then when it gets to this section, it jumps to GETSET. When you download new firmware, the phone reboots four times as it works through all these files.

In GETSET, my file says

GET 46xxsettings.txt
goto END

And this again is an Avaya default. I don’t have any 4600 series phones. I guess I should rename mine to 96xxsettings.txt. But it doesn’t matter. The settings file contains tons of options. Tons.

So back to my point. How do you load different firmware for a single phone? What you can do is perform a check against the phone’s GROUP variable. My 96xxupgrade file now has this line in the BACKUPAPP96XX section:

# BACKUPAPP96XX
IF $GROUP SEQ 30 goto BACKUPAPP30
IF $BOOTNAME SEQ hb96xxua3_1_03_S.bin goto PHONEAPP96XX
SET APPNAME hb96xxua3_1_03_S.bin
goto GETSET

When the phone gets to that line in red, it will check against its own internal GROUP variable and jump to BACKUPAPP30 if it matches. Now you can add the firmware version you want in that section by adding the following lines to the file:

# BACKUPAPP30
IF $BOOTNAME SEQ hb96xxua3_2_0_S.bin goto PHONEAPP30
SET APPNAME hb96xxua3_2_0_S.bin
goto GETSET

# PHONEAPP30
SET APPNAME ha96xxua3_2_0_S.bin
goto GETSET

So the phone will jump to a new section of the file and load specific firmware based upon its GROUP variable. Note that you can also “goto GETSET30” for example if you wanted to load a different settings file for this phone. In my case, I just want to test version ha96xxua3_2_0_S of firmware.

So how to you set the phone’s GROUP variable? Two ways:

Method 1 – Page 3 of the station form within SAT of your Communication Manager:

display station 4799                                            Page   3 of   7
                                     STATION

             Conf/Trans on Primary Appearance? n
   Bridged Appearance Origination Restriction? n


               Call Appearance Display Format: disp-param-default
                            IP Phone Group ID: 30
Enhanced Callr-Info Display for 1-Line Phones? n

                              ENHANCED CALL FORWARDING
                                       Forwarded Destination         Active
 Unconditional For Internal Calls To:                                   n
                   External Calls To:                                   n
          Busy For Internal Calls To:                                   n
                   External Calls To:                                   n
      No Reply For Internal Calls To:                                   n
                   External Calls To:                                   n

            SAC/CF Override: n

This method will “follow the station” so if you log a new extension into the phone, the GROUP will follow the new extension and will likely change. Then when the phone reboots, it will load new firmware. If you log your extension into another phone and then reboot that phone, it will load new firmware.

Method 2 – The “GROUP” menu item on the config screen of the 9630 telephone (Usually accessed by pressing Mute-CRAFT-# on the 9630, or pressing *-CRAFT-# at boot-up).

GROUP-item-in-craft-menu

This method will “follow the phone” so if you log a new extension into the phone, it will retain the phone’s setting. However, it gets over-ridden by the station’s group if there is one. Interaction gets complicated. I always use the station form.

And lastly, this is how we load SIP firmware in the 9630 using the same network and DHCP server we already have. We can check the value of the SIG variable, which is set in the CRAFT menu. But that’s a different post. For now, I hope this helps and I look forward to hearing from you.

37 thoughts on “How to update firmware in individual Avaya 96xx phones

  1. bala

    hi
    I have some doubt about how to upgrade firmware in 9600 series sip phone. I notify one error when plugged in LAN port the sip phone get booting but vlan ID does not take what is the issue of vlan does not take out. Pls reply for this queries.

    Reply
    1. roger Post author

      Hi Bala – if I understand you correctly, you are booting up a 9630 phone, but it’s not selecting the right vlan? If that’s the issue, the VLAN can be set from the DHCP server, or from the phone itself.

      – To set it from the DHCP server, set DHCP option string 242 to something like “L2QVLAN=155”. When the phone boots up, it will pull this setting, then restart the DHCP process while tagging VLAN 155.
      – to set it from the phone, enter the craft setup menu (press * when it says “press * to program, default pw is 27238, which spells CRAFT), select ADDR, then scroll to VLAN ID and change it there.

      If it’s a different issue, let me know!

      Reply
  2. Branko

    Hey Roger, thank you very much on nice post. What if I have 9608 type of phone, H.323? Is it the same procedure as yours, just what model should I choose?

    Tnx a lot

    Branko

    Reply
  3. Branko

    Dear Mr Roger, I have found by myself. 9608 type uses 96x1Hupgrade.txt file.
    I believe, I can make a change there, in that file, and utilize it for individual FW update, don’t I?

    Thank you in advance, for advice!

    Reply
    1. roger Post author

      Yes, use the same IF statements in the 96x1Hupgrade.txt file to point your phone to new firmware. There’s typically only a production environment for these phones (it’s not like we can all afford a development lab for our telecom network, right?) I’ll typically make a simple change and reboot a phone at my desk. Make another change, reboot again. This way you know any phones in your network will act the same way. It’s not until I think I’m done with the edits to upgrade.txt that I’ll change my phone’s group. Then when I reboot I should see magic happen. I hope it goes well for you!

      Reply
      1. Branko

        Roger, thanx for fast and very good answer.
        I would like to ask you something regarding Upgrade files I have recently d’loaded from avaya support site, for 9620 type of phone. When I unpack the file I see 3 different .bin files ha96xxua3_1_05_S.bin, ha96xxua3_2_2A.bin and ha96xxua3_2_4_2A.bin. Also, there are 3 diff files with prefix “hb” at the beginning of file’s name. One type of files are for application file, another are for boot. Let’s see about application files. The first one (ha96xxua3_1_05_S.bin) is old one, I have it now and I want to upgrade it. Should I test second and third, then choose which one is OK, and maybe delete another two, to avoid some Roll back scenario? Hope you can understand me – English is not my mother tongue:-). Thanx a lot, again!

        Reply
        1. roger Post author

          Hi Branko,

          Thank you for the kind words. Your English is great!

          There should also have been a sample upgrade.txt file included with them. You’ll only need one ha and one hb for each type of set, or for each type of signaling (SIP vs H.323). If you look in the sample upgrade file, you should be able to follow the if/goto statements to see what Avaya has in mind:

          ############################################################
          ##            Check backup application version            ##           
          ############################################################
          
          IF $MODEL4 SEQ 9610 goto BACKUPAPP96XX
          IF $MODEL4 SEQ 9620 goto BACKUPAPP96XX
          IF $MODEL4 SEQ 9630 goto BACKUPAPP96XX
          IF $MODEL4 SEQ 9640 goto BACKUPAPP96XX
          IF $MODEL4 SEQ 9650 goto BACKUPAPP96XX
          goto END
          
          # BACKUPAPP96XX
          IF $BOOTNAME SEQ hb96xxua1_585.bin goto PHONEAPP96XX
          SET APPNAME hb96xxua1_585.bin
          goto GETSET
          
          
          ############################################################
          ##            Check phone application version             ##           
          ############################################################
          
          # PHONEAPP96XX
          SET APPNAME ha96xxua1_585.bin
          goto GETSET
          
          Reply
  4. manimala

    I want to know how to upgrade firmware in 9601 sip phone in live the sip phone undertaking 6_4 firmware. now I plugged in live the phone continuously booting the RFS File update upto 14% only.

    Reply
    1. roger Post author

      Sorry to hear it. So the phone is rebooting after partial download? I had a similar problem in an office that had flaky data service. The file is large and the phones probably have very basic timeout/retry/correction capabilities. It may eventually download correctly. You might want to try a different connection or move it to a different office. If the phone keeps rebooting after a full download, it could be logic in the settings file (ha and hb mismatch). Let me know if you figure it out!

      Reply
  5. Bob Rustle

    Different issue here, on bootup display shows “* to program”

    CRAFT# doesn’t work, RESET# doesn’t work – phone just reboots and goes back to “* to program”

    Any way out of it since it looks like whoever set this thing up last changed the admin password. Thoughts?

    Reply
    1. roger Post author

      Also try just pressing #. I had some 1616s that didn’t have any craft password. If that doesn’t work, see if you can figure out what IP address it’s trying to hit when it boots up. You can set that password in the 96xxupdrade.txt file or the 46xxsettings.txt file. If it’s not hitting anything, then you can set that httpsrvr using a dhcp option. Let me know how it goes – I can post instructions for the settings files or dhcp option if you want to go down those roads.

      Reply
      1. Bob Rustle

        Tried the DHCP server route, have the 9630 connected over xover cable into my laptop, got httpd up and 46xxsettings.txt with

        SET PROCPSWD 27238

        in there. Phone boots up, gets the IP assigned, then goes immediately into VPN tunnel setup.

        Tried doing the 96xxvpn.txt file, but clearly i’m messing up somewhere. If this thing is hardcoded on a VPN setting, is there truly a “factory” reset that can blow everything away?

        Reply
        1. roger Post author

          Not that I know of. So your laptop is the dhcp server and web server? Are you setting DHCP option 242 from your DHCP server? In your http log file, can you see the phone requesting the settings file? Good for you for digging this deep, but unless you have a bunch of these phones doing this, it sounds like it’s already not worth it for one phone. Unless you just love the challenge. It would suck to get it all working and the backlight goes out, or the microphone is bad, or something. Keep me posted.

          Reply
  6. Janelle

    So in the 96x1Hupgrade.txt how would I point this to other firmware? I tried by checking group, but my phone keeps cycling. I don’t want it to go to every 9611 I have, so I can’t do it by model.

    Reply
    1. roger Post author

      There are two files that need to get loaded. If only one is loaded, the phone will reboot cycle. For example, if I set the group to 32 in the phone and include this IF statement:
      IF $GROUP SEQ 32 goto BACKUPAPP32

      Then the phone will jump to this section:
      # BACKUPAPP32
      IF $BOOTNAME SEQ hb96xxua3_2_1A.bin goto PHONEAPP32
      SET APPNAME hb96xxua3_2_1A.bin
      goto GETSET

      But note that if the base file (hb*) is already correct, we go to the PHONEAPP32 label:

      # PHONEAPP32
      SET APPNAME ha96xxua3_2_1A.bin
      goto GETSET

      And at this second jump, we give it the application file (ha*). I have fat-fingered this process before, and it causes a reboot cycle where it kept loading alternating hb files. Is that what yours is doing?

      Reply
  7. Janelle

    So mine is different:

    I tried an IF group statement, but it didn’t do anything, not sure how to get around this without it affecting every 9611 model. I am fairly new to this, and these phones rarely get updated, but we bought some that we are having issues with, and I would like to test in my area. The phones with the issues are up to date, but no matter how we tweak the 46xxsettings, only the call appr shows up on the first screen, and I need features to show up there as well, so they can actually see the call pickup lights, etc!

    * Common Kernel/RFS File for all 96×1 models
    ********************************************
    IF $MODEL4 SEQ 9641 GOTO 9641SW
    IF $MODEL4 SEQ 9608 GOTO 9608SW
    IF $MODEL4 SEQ 9611 GOTO 9611SW
    IF $MODEL4 SEQ 9621 GOTO 9621SW

    *********************************************
    * Application and Kernel file for 9641
    *********************************************
    # 9641SW
    SET RFSNAME S96x1_UKR_V13r61_V13r61.tar
    SET APPNAME S9621_41HALBR6_2_3_13U_V452.tar
    GOTO GETSET

    *********************************************

    *********************************************
    * Application and Kernel file for 9608
    *********************************************
    # 9608SW
    SET RFSNAME S96x1_UKR_V13r61_V13r61.tar
    SET APPNAME S9608_11HALBR6_2_3_13U_V452.tar
    GOTO GETSET

    *********************************************
    * Application and Kernel file for 9611
    *********************************************
    # 9611SW
    SET RFSNAME S96x1_UKR_V13r61_V13r61.tar
    SET APPNAME S9608_11HALBR6_2_3_13U_V452.tar
    GOTO GETSET

    Reply
    1. roger Post author

      So if you’re trying to load a different config (rather than firmware) based upon group, there is a section of the 46xxsettings file ready for you. It’s at the end:
      IF $GROUP SEQ 1 GOTO GROUP_1
      IF $GROUP SEQ 2 GOTO GROUP_2
      IF $GROUP SEQ 3 GOTO GROUP_3
      IF $GROUP SEQ 4 GOTO GROUP_4
      IF $GROUP SEQ 5 GOTO GROUP_5
      GOTO END

      ##############################################################
      # GROUP_1
      ########## Add SET Statements for GROUP 1 below ############

      ################ END OF GROUP 1 SETTINGS #####################
      GOTO END

      ##############################################################
      # GROUP_2
      ########## Add SET Statements for GROUP 2 below ############

      Or, to troubleshoot, you can add an IF statement to the 96xxupgrade file and rather than have everything GOTO GETSET, have specific GETSET for each group like this:
      # SIPGETSET
      GET 46xxsettings.txt
      goto END

      # SYSLOGGETSET
      GET 46xxsettings_syslogging.txt
      goto END

      # SNMPGETSET
      GET 46xxsettings_snmp.txt
      goto END

      # GETSETGROUP86
      GET 46xxsettings_group86.txt
      goto END

      # END

      This will have the phone load a different config file depending upon the group. If you watch the phone carefully during bootup, you’ll see the filename it’s loading at the very end. Or, you can look at your http logs and see what file it’s loading. This will tell you if the group is working.

      Reply
  8. John Davis

    Is there a way to change the group value on a SIP phone? Whether I change it in System Manager or Site Administration it will not change in the craft settings? I can change a H.323 group value, but not a SIP one.

    Thanks.

    Reply
    1. roger Post author

      Yes John, you’re right. I tried the same thing on mine. I change the endpoint in System Manager. I see the change in CM, but not in the craft menu.

      Are you trying to load specific settings based upon group? I do the same. I do wish we had more control over these endpoints. I see reference to a $MACADDR variable in some forums. Do you suppose this will work? I’ll try it and let you know, but it will be a few days.

      Reply
      1. John Davis

        Hello Roger, I heard a rumor the 7.0 SIP Firmware resolved this issue but found that to not be true. Not sure about the $MACADDR but I appreciate your help! I am still looking for a work around as well.

        Reply
        1. John Davis

          Just heard from Avaya, this feature is not support for SIP phones. I am waiting on a reply from Avaya to see if it’ll ever be supported as this would be great for us to go from H.323 to SIP to H.323 in case we ever need to.

          Reply
          1. roger Post author

            Are you using SIP phones on your own network? If you are trying to supply different config based upon IP address ranges, you can use an .htaccess rule in Apache. I had to do this at the last minute when I had a site that had different DHCP settings coming from a router rather than the Windows DHCP server. I had to override the Call Server settings for that site, so I created an .htaccess file to redirect the http request from the phones to a specific file. I can post specifics if you think it would help.

            But if your SIP phones are coming through the Internet, or if you’re trying to split config info within an office, it won’t help.

  9. Ed

    Can you please provide a guideline on how to setup a Web server for FW upgrade? I have FTP server and not a Web server.

    Reply
    1. roger Post author

      Your phones are using FTP? In theory it’s quite simple – just set up a web server. You can use IIS, but I had trouble starting with IIS version 6 rejecting anonymous PUTs so as far as I know everyone uses Apache. If you set up a default Apache install, it should all work fine. Avaya has tons of docs on how to configure Apache, but I don’t remember having any trouble getting it to work.

      Once you have the web server working, you can change your 46xx settings file to (1) tell the phones to use http and (2) point the phones to your new http server. You can use the GROUP section in the settings file to re-point the phone to the right place. As far as I can tell, you can provide multiple setting parameters to a phone and the most recent setting takes over. For example, if your settings file has a bunch of parameters in it, and then you set some group specific parameters at the bottom, these simply overwrite the settings from above.

      “tail -f tail -f /var/log/httpd/access_log” is an extremely useful command during this process – it follows the GET and PUT requests to the web server so you can watch the phone’s http activity. Let me know if you have any trouble and I’ll post some specific parameters from my environment. Good luck!

      Reply
  10. Damian Tracey

    hey, i have 5 bricked 1616 units with duplicate MAC addresses due to the firmware downgrade. is there a way of fixing it without having to get them shipped off ?

    Reply
    1. roger Post author

      Wow, I’ve never heard of that. It’s possible to change the MAC address in the 1616?

      I would assume you can update them one at a time? I suppose not since you’re saying they’re bricked. I don’t know then. Sorry.

      Reply
    1. Damian Tracey

      sorry, bricked is an incorrect word to use. they will boot, but since they all have the same MAC address they dont play well on the same network

      Reply
  11. Bryan

    Roger, I have two used 9608’s that I purchased which must have been used in a SIP environment. When the phones boot up they land on the SIP Server Logon screen. I have gone into the Program mode (CRAFT) and selected CLEAR along with setting the SIG setting to both Default and H.323. The phones appear to maintain the SIP settings and never load the H.323 firmware.

    What am I missing

    Reply
    1. roger Post author

      I just went through this with some 9630s. It’s a pain. I ended up assigning static IP addresses to them so I could enter the web server address manually. Even with a static address, I had to set the SIG to h.323.

      Then, once the firmware gets loaded, you should be able to CLEAR out the IP info. Hopefully this works for you. Please let me know.

      Reply
      1. Bryan

        I also purchased at the same time a 9608G which I was able to connect, verify the H.323 settings, reboot and everything on that device loaded and booted fine; I was able to start using the phone in 5 minutes. Just wish the other 2 9608’s would have installed as easy.

        FYI, the vendor is willing to exchange the phones, so I am almost ready to “throw in the towel” and try another set of phones to see what happens.

        Reply

Leave a Reply

Your email address will not be published. Required fields are marked *