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).
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.
Very helpful – thank you.
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.
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!
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
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!
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!
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!
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:
Hey Roger!
Thank you. Your explanation was great.
Best regards & keep doing great job.
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{0ed28e3470e974017c124b0897303dd14e34b5245564abb28916e7d48d9b07c0} only.
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!
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?
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.
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?
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.
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.
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?
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
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.
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.
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.
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.
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.
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.
Roger, that would be extremely helpful!
Done! http://rogerthephoneguy.com/?p=358
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.
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!
nice
Thanks!
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 ?
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.
yup – read more here
https://downloads.avaya.com/css/P8/documents/100178036
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
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
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.
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.
roger, i has avaya that see the http file and download it to flash and it worked fine but when i remove the http server ip from the avaya it remove the setting , so is it possible to make the avaya cache the .txt file and doesn’t need to save the http server ip on it .
Hi Roger am new only on this device can please help me what i need to do if i want to downgrade the version of application of 1608 model, because i want to test the headset since in the old application the quality of voice is good but in the updated version voice was very low quality. Thanks i hope you can help me Thank!
Hi Roger,
I want to fetch 46xx settings file from new utility server on my phones without upgrading their firmware. I have tried disabling the corresponding firmware on utility server but then it fails to fetch settings file. Is there a way we can set phones to directly fetch 46xxsettings.txt without looking for upgrade (96xx or 96x1Hupgrade.txt)?
Helle Mr Roger, Please urgently
I’m installing sip phone 9620l on ip office 9.1.7 and i get acquiring service ..
I have :
-switch extreme x450e
– ip office 500 v2
– 2 sip phones 9620l
vlan voice 1 ports 1-2
register sip and extension
Sorry Walid – I’m not familiar with SIP on IP Office. With Communication Manager, I would go into the Session Manager and TraceSM to see if the phone is talking to the Session Manager. If the phone says “Acquiring Service”, it’s usually a network, firewall, or port thing, which is very unhelpful. I wish I could say more.
HI Roger,
I was told that you can also change the 46xxsettings file name to the MAC address of the phone you want to change and the phone will pick up just that file… have you heard of this? I am using a 96×1 set…
Hey Fredd. I had not heard that about the 96×1 phones. That’s a good tip. You can confirm this by watching the Apache log file. For large sites, this log file is really busy and it’s hard to watch it. But as a tip, you can “tail” it and grep it at the same time with:
tail -f /var/log/httpd/access_log | grep --line-buffered GET
This will watch the file for changes, and only display the lines that contain GET. Or, if you know its IP address, you can grep for that too. You can watch it and see what files the phone is trying to GET. If you see it attempting to get [its-mac-address].txt, then you know which file to post.
Typically, the phones are pretty good about displaying the files they are trying to GET and the response code from the web server. You might need to record it with your phone so you can play it back slowly.
Good luck! Let me know how that goes!
Roger
Hi Roger,
Thanks for the tip, it did not work. Funny thing, Avaya tech said it would, I had to use “group ID” to segregate the units.
Great information.
My problem is I have multiple directories on my http server, one for each of several avaya phone types (96×1, 96xx, j100, etc). The phone looks for the upgrade.txt file in the root directory. Can I change the path in the upgrade.txt file? For example how can I tell it to look for “FW_S_179…bin” in a different directory?
SET APPNAME FW_S_J179_R4_0_0_0_21.bin
I’ve tried this: SET APPNAME j100/FW_S_J179_R4_0_0_0_21.bin (j100 is the folder my j100 upgrade files are in). This makes sense to me but it doesn’t work. The phone still doesn’t look beyond the root directory.
Thank you!
Greg
Nice to hear from you, Greg! It’s been a year???
What you are doing makes sense to me too. For any typical http request, that folder reference should work. I cannot think of any reason why that should not work. Is this an Apache web server? You could “tail -f access.log” and watch the phone try to get the file. You’ll be able to see the web server’s response (such as a 404 or something).
As a last resort, if you determine the phones will not follow a path and you don’t want to move them all into your root folder, you can set a symbolic link from the root directory of your web server to the various files. It’s not ideal, but it would allow you to do single files.
Oh, I suppose you could also try to put the entire url in the appname, for example,
SET APPNAME 10.2.2.10/j100/FW_S_J179_R4_0_0_0_21.bin
or maybe SET APPNAME http://10.2.2.10/j100/FW_S_J179_R4_0_0_0_21.bin
Roger:
First, your site is very helpful for us that do not have a lot of experience with Telephony/Voice systems.
Where can I find procedures to have a web server manage firmware for Avaya phones? If it’s not within your site, when you have a chance can you post it? Thank you very much.
Hi George. Yes that’s a good idea. I’ll add that to my list. I will get back into blogging after a long break and this is an excellent thing to post. It’s really easy. Heck, you may have done it already.
The trick is in the right SIP firmware please if there is anyone with the right SIP firmware for avaya 9611G and 9630G i would be very grateful
I only know support.avaya.com for this. I don’t think you need a contract for firmware.
I have not received any help from on how to make Avaya IP phone 9611G work on freepbx please help I am really stuck if you can kindly send me simple step by step I will be very grateful
Sorry Herman – I don’t have access to Avaya phones anymore. If it’s anything like the 9630, you can
1 – add a config server IP address to the phone, and then have a config file on a web server somewhere that feeds all the info to the phone, or
2 – manually add the SIP server IP addresses to the phone directly – no config server required.
If you go with option 1, the SIP firmware comes with a sample config file that is heavily commented. You can “tail -f /var/log/http/access.log” and see if your phone is hitting the web server
The Asterisk will tell you if the phone is able to register. You may also have firewalls running on the Linux server. You could try disabling these (service stop firewalld or service stop fail2ban) for a few seconds and see if the phone can reach the asterisk server. After too many failed registrations, the phone may be blocked.
I hope this helps!
Roger
Thank you so much I managed to change long time but thank you so much for the response
I, i am triying to change firmware of phones 9608 and try to change the protocol from SIP to H.323 because all of this phones were registered in Avaya communication manager using SIP protocol but now we need to install all of this in IP Office Server edition release 11 but it are not compatible running the SIP protocol.
The models 9608 are only compatible running the H.323 protocol for IP Office Server
All is fine,,, we need to change first the SIG from SIP to H.323 and restart it to leave take H.323 firmware
You can see if the process is correct because if you see the phone screen looking for a Hupgrade file, it means is looking for the upgrade firmware but for the H.323 protocol but if you see the Supgrade it means the phone is looking for SIP firmware.
Everything is working fine after it ends the process but the problem is: “randomly some phones begins to restart continuosly and i do not know what must i do to fix it,,,, any suggestion is welcome”.
Regards
hey Jorge – did you figure this out? I hate “random restarting problems”. I had a problem and I could swear it was a PoE issue, but the network engineer would not believe me. I would just keep upgrading/downgrading the firmware. It magically fixed itself a couple weeks later – for all I know the network guy fixed it w/o telling me.