Author Archives: roger

How to update Avaya System Manager from 6.3.3 to 6.3.9

Updating System Manager should not be scary. As I write this, I am updating my Avaya Aura System Manager from 6.3.3 to 6.3.9. I just have to keep the faith in the Avaya engineers.

So here are the steps to perform upgrade this upgrade. It is definitely something you, as a customer, can do yourself. These instructions are from page 22 of this document https://downloads.avaya.com/css/P8/documents/100175367

  1. Download the patch System_Manager_6.3.9_r4602482.bin from support.avaya.com.
  2. Use WinSCP or (or any SCP program) to upload it to System Manager. I used the admin account (with the same password as the web interface).
  3. SSH to the System Manager using the same account as the file upload. The admin account didn’t give me a $ prompt at the shell, but it worked fine. When you login, you should see the .bin file in the default folder (/home/admin/ in my case)
  4. Before you start, you should disable geo-redundancy if you use it. Go to Home->Georedundancy and disable it.
  5. Simply type “SMGRPatchdeploy System_Manager_6.3.9_r4602482.bin” and the patch manager will take over.
  6. The Patch manager will ask you to review and accept the license agreement, then start running. I was warned that it will take about an hour and I should be patient. Unfortunately, I need to test this before I do the redundant session manager, then I need to do my system managers. So I’m looking at a late night and I’d like this to finish. I think my System Manager can tell so it’s taking its time. As I’ve said before – just long enough to panic, plus 30 seconds. In this case, I think it’ll be plus 10 minutes or so. Here is the output from my patching:
admin >SMGRPatchdeploy System_Manager_6.3.9_r4602482.bin
Verifying the patch binary.....
mv: cannot stat `/var/log/Avaya/SMGR_Patch.log.3': No such file or directory
Extracting files to /tmp/patchsfx.p18665...
Adopter_list.txt
CAF.jar
EULA.txt
System_Manager_R6.3.9_4602482.txt
defConfParam.properties
geo_upgrade_util.jar
install.jar
installer_relno.txt
int_postgres_response.properties
mgmt-custom.xml
mgmt-custom.xsd
postPatchHook.sh
runAuditor.sh
runInstaller.sh

Read the following Avaya Software License Terms carefully. The Chinese, German, Portugese, Spanish, French, Japanese, and Russian versions of the Avaya Software License Terms are posted at https://support.avaya.com/LicenseInfo . If you do not have direct Internet access, please access a device that has Internet access to view, download and print the applicable license.

Press the [Enter] key to read the Avaya Software License Terms.

***THIS IS WHERE YOU READ AND ACCEPT THE LICENSE TERMS***
If you agree with Terms and Conditions of the applicable Avaya Software License Terms, please enter "Y" for yes. If you do not agree with the Terms and Conditions, please enter "N" for No.

If you enter "Y", you have read, understand, and agreed to the Terms and Conditions of the Avaya Software License Terms (Avaya Products).  You further understand that by entering "Y" you will initiate the process to upgrade, and/or install the Avaya Product; and continued installations is acceptance of the Terms and Conditions of the applicable Avaya Software License Terms (Avaya Products).

If you do not agree to these terms and enter "N" it will abort the installation/upgrade of this Software.

Do you accept the Avaya Software License Terms? (Y)es/(N)o: y

You have accepted the Avaya Software License Terms. The Software Installation will now begin.
Executing checkForPatchRequisite
Executed checkForPatchRequisite successfully, proceed to install the patch.
Thu Oct 16 22:10:09 EDT 2014 Continue the patch installation in normal way.
Perform cleanup ....
Stopping System Manager JBoss - PID: 6928
.............................................
Stopped System Manager JBoss
/tmp/patchsfx.v29174 /tmp/patchsfx.v29174
Enter the Encryption Key :
Please Wait


Log file has been created at location: /tmp/avaya_aura_install-log_2014-10-16_10.11.42.txt
[ Starting automated Installation ]


Checking if the system has sufficient space as required by the selected packs.

Available Space: 13.9 GB
Total space Required: 1.54 GB


[ Starting to unpack ]

[ Processing package: System Manager - Update Patch (1/15) ]
.
[ Processing package: Conferencing - Update Patch (2/15) ]
.......
[ Processing package: PS SysMgr Extensions (3/15) ]
.................
[ Processing package: IPTCM - 6.2 FP4 S4 (4/15) ]
....................
[ Processing package: IP Office - 6.2 FP3 S4 (5/15) ]
........
[ Processing package: SUM - 6.2 FP4 S4 (6/15) ]
......
[ Processing package: MESSAGING - 6.2 FP4 SP9 (7/15) ]
.............
[ Processing package: INVENTORY - 6.2 FP4 S4 (8/15) ]
............
[ Processing package: MMCS (9/15) ]
..
[ Processing package: CS1000 - 6.3 FP4 (10/15) ]
................
[ Processing package: Session Manager Element Manager (11/15) ]
..
[ Processing package: Collaboration Environment Element Manager (12/15) ]
..
[ Processing package: AMM - Update Patch (13/15) ]
...
[ Processing package: System Manager on VMware (14/15) ]
...
[ Processing package: System Manager Update (15/15) ]
...........
Parsing files
........
File execution started for pack : System Manager - Update Patch
..
File execution started for pack : Conferencing - Update Patch
.
File execution started for pack : PS SysMgr Extensions
.
File execution started for pack : IPTCM - 6.2 FP4 S4
.
File execution started for pack : IP Office - 6.2 FP3 S4
.
File execution started for pack : SUM - 6.2 FP4 S4
.
File execution started for pack : MESSAGING - 6.2 FP4 SP9
.
File execution started for pack : INVENTORY - 6.2 FP4 S4
.
File execution started for pack : MMCS
.
File execution started for pack : CS1000 - 6.3 FP4
.
File execution started for pack : Session Manager Element Manager
.
File execution started for pack : Collaboration Environment Element Manager
.
File execution started for pack : AMM - Update Patch
..
File execution started for pack : System Manager on VMware
..
File execution started for pack : System Manager Update
..
[ Unpacking finished ]
[ Writing the uninstaller data  ... ]
output.response.file /opt/Avaya/autoInstall_Avaya_AURA.properties generated
[Automated Installation Completed !]
Log file has been moved to location: /opt/Avaya/install_logs/avaya_aura_install-log_2014-10-16_10.11.42.txt from location: /tmp/avaya_aura_install-log_2014-10-16_10.11.42.txt
/tmp/patchsfx.v29174
Executing Common Inventory Datamigration script for access point & attributes.
dos2unix: converting file /opt/Avaya/Mgmt/6.3.8//bulkadministration/exportutility/epXmlArtifactProcessor.sh to UNIX format ...
Thu Oct 16 23:18:14 EDT 2014 Restarting JBoss...
Service was not running
Starting System Manager JBoss
.
Service started successfully - PID: 21891
Thu Oct 16 23:18:42 EDT 2014 Patch installation completed and waiting for JBoss to finish start-up... this may take a few minutes
Thu Oct 16 23:39:45 EDT 2014 Patch installation completed and waiting for Quantum init to finish ... this may take a few minutes
QuantumElementType Version mis match in QuantumElementType.xml and DataBase so republishing the QuantumElementType.
dos2unix: converting file tmConfigProfile.xml to UNIX format ...
dos2unix: problems converting file tmConfigProfile.xml
log4j:WARN No such property [conversionPattern] in com.avaya.common.logging.client.CommonLoggingLayout.
post_fix.sh: line 53: ${LOGFILE}: ambiguous redirect
Thu Oct 16 23:48:19 EDT 2014 : Check for the EP Status at the end of patch installation.
START : Execution of ep_process_state.sh
END : Executed ep_process_state.sh with status: 0
Thu Oct 16 23:48:19 EDT 2014 : Executed the domains and Adopter scripts successfully.
Thu Oct 16 23:48:19 EDT 2014 Changing the needful permission for various dirctories
Changed the ownerships of directories successfully..
Thu Oct 16 23:48:20 EDT 2014 Maintenance completed Successfully
admin >
admin >shutdown -r now
shutdown: you must be root to do that!
admin >su root
Password:

        * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
        *                                                                     *
        * !! Virtual Machine needs to be rebooted as System Manager Patch     *
        *    installation updated the Kernel. !!                              *
        *                                                                     *
        * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

root >shutdown -r now

Broadcast message from root (pts/0) (Fri Oct 17 00:34:51 2014):

The system is going down for reboot NOW!
root >

Troubleshooting Signaling Manipulation (SigMa) Scripts in Avaya Aura SBC

This is pretty obscure and I’m probably only talking to three people on the Internet right now, but if you have ever tried to troubleshoot SigMa scripts in the Avaya Aura Session Border Controller, you probably wish it had better logging. Actually, if you have ever gotten logging to work, please let me know. I had given up. However – I recently discovered a nice easy way to troubleshoot signaling manipulation, and consequently also discovered just how cumbersome this process really is.

The easy way to log is to set your own custom header in the SigMa script, then inspect the INVITE from the Session Manager’s point of view. For example, I added this SigMa script:

    act on request where {0ed28e3470e974017c124b0897303dd14e34b5245564abb28916e7d48d9b07c0}DIRECTION="INBOUND" and {0ed28e3470e974017c124b0897303dd14e34b5245564abb28916e7d48d9b07c0}ENTRY_POINT="PRE_ROUTING" {
        if({0ed28e3470e974017c124b0897303dd14e34b5245564abb28916e7d48d9b07c0}HEADERS["To"][1].URI.USER.regex_match("2025556199"))then {
            {0ed28e3470e974017c124b0897303dd14e34b5245564abb28916e7d48d9b07c0}HEADERS["roger-debug"][1] = {0ed28e3470e974017c124b0897303dd14e34b5245564abb28916e7d48d9b07c0}HEADERS["From"][1].URI.USER; 
            append({0ed28e3470e974017c124b0897303dd14e34b5245564abb28916e7d48d9b07c0}HEADERS["roger-debug"][1],"<");
            append({0ed28e3470e974017c124b0897303dd14e34b5245564abb28916e7d48d9b07c0}HEADERS["roger-debug"][1],"2135551212");
            append({0ed28e3470e974017c124b0897303dd14e34b5245564abb28916e7d48d9b07c0}HEADERS["roger-debug"][1],"@roger.corp>");
        }
    }

This SigMa script checks for calls to 202-555-6199 and creates a new header. Then, within Session Manager, you can look at the full header and see this info:

INVITE sip:2027216199@ares.corp SIP/2.0 
From: "PHONEGUY ROGER " <sip:6265554799@ares.corp>;tag=6698455617080545_c1b09.2.2.1404967301186.0_7074379_15030130 
To: <sip:2025556199@telco.corp> 
CSeq: 2 INVITE 
Call-ID: 9959340302389262@12.11.18.20 
Contact: <sip:10.10.20.71:5060;transport=tcp> 
Record-Route: <sip:10.10.20.71:5060;ipcs-line=63646;lr;transport=tcp> 
Allow: INVITE,ACK,CANCEL,BYE,INFO,PRACK 
Max-Forwards: 64 
Via: SIP/2.0/TCP 10.16.26.71:5060;branch=z9hG4bK-s1632-000279738415-1--s1632- 
Accept: application/sdp, application/isup, application/dtmf, application/dtmf-relay, multipart/mixed 
P-Asserted-Identity: "PHONEGUY ROGER " <sip:6265554799@telco.corp> 
Content-Disposition: session; handling=required 
Content-Type: application/sdp 
roger-debug: roger-debug: 6265554799< 
roger-debug: roger-debug: 62655547992135551212 
roger-debug: roger-debug: 6265554799@roger.corp> 
Content-Length: 241 
 
v=0 
o=Sonus_UAC 11647 11015 IN IP4 10.16.26.71 
s=SIP 
c=IN IP4 10.16.26.71 
t=0 0 
m=audio 19234 RTP/AVP 18 0 100 
a=rtpmap:18 G729/8000 
a=rtpmap:0 PCMU/8000 
a=rtpmap:100 telephone-event/8000 
a=fmtp:100 0-15 
a=sendrecv 
a=maxptime:30

For quick one-liners, this is pretty handy. However, you can see my attempt at creating ONE header with a new p-asserted-identity completely failed. I can generate a new header, but my attempts to append to it only created another header. I really hope the new version of software adds some better manipulation features. In the meantime, I’ll keep hacking away at it.

If anyone out there knows SigMa, please let me know!

How I stopped one hundred percent of all telemarketers.

At the beginning of 2014, I got an aggressive telemarketer call at my house. Like most people, I really hate telemarketing calls so I let my 13-year-old son take the call. Well, my son said the caller said something really rude but he didn’t really hear. At that point, I said “hey, I’m a telephone guy. I should be able to stop this.” So I did.

Being a telephone guy, I cannot imagine NOT having a landline at home. I have AT&T U-Verse so it’s not like I have old-school POTS service anyway, but I like my home telephone numbers and don’t want to disconnect them. And hey, this was all an experiment anyway. So I got a new telephone number from a SIP provider and forwarded my home line to it, then via that SIP provider I routed it to my Asterisk server at a cloud provider. Then I added an Analog Terminal Adapter at home and plugged my home cordless phone into that. So I’m kinda like a Vonage or any other VoIP provider now. Incoming calls come into the SIP provider, then my Asterisk server, and then to my house via the ATA. Outgoing calls go out my Asterisk server then to my SIP provider. Pretty basic stuff. Yes, I tested 911.

Then I created a “white list” inbound app on Asterisk where all incoming callers get a greeting “hey, if you’re a real person press a digit and you’ll ring through to my house. If you don’t press a button, you’ll go to voicemail”. If a caller presses a button, their caller-id is added to the “white list” and rings to my house. From then on, that caller-id is allowed. After each call, I get an email with the caller-id and caller-id name of the caller, along with what happened to the call (e.g. rang through, went to voicemail, or hungup). It worked perfectly. It turns out that in the last six months, 100{0ed28e3470e974017c124b0897303dd14e34b5245564abb28916e7d48d9b07c0} of telemarketers are using predictive dialers; their machine thinks it got an answering machine and simply calls back later.

So on the email notification, I added a link to let me set the “disposition” of the caller-id next time. For friends, relatives, vendors, service providers, schools, etc, I can grant access next time. For obvious telemarketers (“SUN SOLAR”, “ELITE SERVICES”, etc), I can reject the call completely (“I’m sorry, your call did not go through”).

Sweet relief! It’s my telephone again! Now when the phone rings, I know it’s a real person and probably want to talk to him or her. I figured some telemarketers would punch through occasionally, but they don’t. I’ve stopped them all.

But here’s where it got interesting. I kept getting repeated calls from the same numbers – sometimes four within one minute. I get calls from particular numbers every night at about the same time. I got calls from fake numbers like “10000000000” or “16261346229”. That last one may not be obvious, but the first digit of an office code cannot be a 0 or 1. There’s no possible telephone number 134-6229 in the 626 area code. Now that my number is “protected”, I could even call the valid numbers back without worrying about tipping them off. When I did, I would get “Thank you for calling back. To be removed from our list…” or sometimes I would get a home-made “your call cannot be completed as dialed” message. Or sometimes just a fast busy or dead-air then disconnect. Obvious telemarketers.

So great, I’m blocking telemarketers and none are getting through, but I’m not causing them pain. I’m just blocking their dialing machine with my blocking machine. What if I send telemarketers to a greeting that says “hello” a few times, then tells them to hang on? Would that cause the predictive dialer to cut the agent through to me? If so, it would at least burn some “human time” and cost the telemarketing company some money, right? I tried it, and this was the result:

Not bad! I wasted 41 seconds of her time! So clearly I can get my telephone system to fool the predictive dialer into thinking it found a real person. I figured if I could combine some “detect noise” and “detect silence” algorithms into this thing, could I keep them on the phone longer? And how would I do it without any kind of speech recognition? Could I really keep a telemarketer on the phone just by detecting noise and silence? It turns out I could:

I really have to say thanks to Sofia for this call. Ironically, I listened more closely to Sofia’s pitch (and so have my friends) than if I had just hung up on her at the beginning. But anyway, this gave me the confidence to build a more elaborate parrot. At this point, I have collected several dozen calls of various entertaining quality. I will post them individually. I hope you enjoy. Perhaps next post about this subject, I’ll get a bit more technical how the algorithm works.

How to remove an extension when there are messages waiting

Just a quick note regarding the message

Message(s) waiting; please delete message(s) first

If you try to remove a station with messages waiting, the Communication Manager will reject it if there are messages waiting. In my case, I wanted to convert a virtual station to a physical 9630, but the system won’t let me remove the station. And of course, I cannot change the type of station from Virtual to 9630 – I get this message:

"9630" Station must be removed and re-added to change type

As usual, the solution is simple once you know it. You can clear the message waiting indicator with “clear amw all xxxx“. This clears the messages flag (not the messages!) and turns off the message waiting indicator. This allows you to remove the station.

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.

Updating firmware on Avaya TN799DP Circuit Packs

There are tons of documents that describe the firmware update procedures for the Avaya circuit packs and media modules. This document is meant to be simple, and as I often do for these posts, it’s is also written for myself for future reference. I have found that I update firmware just a few months after I’ve forgotten how to do it.

I will assume you know what firmware to load. There’s a hard-to-find matrix on support.avaya.com that will tell you and I’ll include this procedure in a future post. For now, let’s say you have the firmware you want for your card. This post is for the TN799DP (C-LAN) cards but the procedures are similar on other cards as well.

Step 1 – Make some notes

You’ll want to have the following handy – paste into notepad or something:

  • The exact card type including the suffix (TN799DP in my case),
  • The board location
  • The current firmware version. “list config all” will tell you these first three.
  • The IP address of the C-LAN. “list ip-interface clan” will tell you this.
  • The username and password you will use for file transfers. This is temporary – File transfer will get disabled automatically when you’re done so don’t worry about crazy passwords.
  • The exact filename of the firmware.
list configuration all                                                 Page   1

                              SYSTEM CONFIGURATION

Board                                                     Assigned Ports
Number   Board Type              Code     Vintage    u=unassigned t=tti p=psa

01A00    POWER SUPPLY              655A
01A01    IP SERVER INTFC         TN2312BP HW36 FW056 01 02 03 04 05 06 07 08
01A03    CONTROL-LAN              TN799DP HW01 FW040 u  u  u  u  u  u  u  u
                                                     u  u  u  u  u  u  u  u
                                                     17
01A04    DS1 INTERFACE            TN464GP HW02 FW025 01 02 03 04 05 06 07 08
                                                     09 10 11 12 13 14 15 16
                                                     17 18 19 20 21 22 23 24
                                                     25 26 27 28 29 30 31 u
01A05    CONTROL-LAN              TN799DP HW16 FW040 u  u  u  u  u  u  u  u
                                                     u  u  u  u  u  u  u  u
                                                     17
01A06    ANALOG LINE              TN746B  000013     01 02 03 04 05 06 07 08
                                                     09 10 11 12 13 14 15 16
list ip-interface clan

                                IP INTERFACES

                                                            Skts  Net       Eth
ON  Slot   Code/Sfx Node Name/       Mask  Gateway Node     Warn  Rgn VLAN  Link
                    IP-Address
--  ----   -------- ---------------  ----  ---------------  ----  --- ---- ----
 y  01A03  TN799  D CLAN_01A03       /24   Gateway001       400   6   n    1
                    10.10.11.5
 y  01A05  TN799  D CLAN_01A05       /24   Gateway001       400   6   n    2
                    10.10.11.9
 y  01B10  TN799  D CLAN_01B10       /24   Gateway001       400   6   n    4
                    10.10.11.8

At the time of this posting, I want those C-LANs to say FW043. Note there’s a special case with C-LANs. I have one at hardware version HW01, and one at hardware version HW16. There are two different version 43 firmware files for these!

Step 2 – Enable file transfer on the C-LAN

From the CLI, type “enable filexfer” and fill out the form. If file transfer is already enabled for the board you want, you may need to disable it and re-enable it. If there are files already on the board, you will need to remove them. You can “list directory board xxxx” to see the files, and “remove directory board xxxxx” to remove them. Then you can disable the filexfer and re-enable it with the password you want.

enable filexfer                                                 Page   1 of   1


                                 ENABLE FILE TRANSFER

                    Login: roger
                 Password:
         Reenter Password:
                   Secure? y
            Board address: 01a05

Step 3 – Transfer the file to the C-LAN

Use whatever file transfer method (WinSCP, ftp, ssh, sftp, etc) to move the firmware file to the card. When it’s done, you can “list directory board xxxx” to make sure the file transferred correctly. Avaya is very good at confirming the file transferred correctly and is appropriate to your card. In my humble opinion, Avaya’s deep roots in telecom have made this process smooth. It’s designed for remote work and verification. Of course now I have jinxed myself and will brick-a-clan tonight when I update my system.

list directory board 01A05

                                LIST DIRECTORY

Board                File/Directory                    Creation       Size  Pro-
Loc                      Name                       Date       Time    Kb   tect
01A05 F:tn799dp-h13-f43-sig.bin                   2014/04/24 15:53:54 4729   n

Step 4 – Start the update

This is the part that affects service. If your C-LAN is serving any phones (“status socket” to see), then you should wait until after-hours. C-LANs serve 400 phones maximum, so you could disable phone registrations on the C-LAN after hours and update the card mid-day if you’d like. If you “change ip-interface xxxxx” you’ll see a parameter called “Allow H.323 Endpoints”. The scary part is you have to set “Enable Interface” to N before you can change that. The first time I did this, I was worried that I wouldn’t be able to manage the C-LAN but don’t worry – you are managing it via the G650 backplane so you can disable the interface and still manage the card.

Open a separate command prompt and continuously ping the C-LAN’s IP address.

Now type “change firmware download 1” and fill out the form. For the source board, use your C-LAN, file server is “none”. The image file name is the exact name of your firmware file including the “.bin” extension. The target board codes is TN799 and the Suffix is DP. Vintage is blank. I never schedule the updates, so I say “n” to schedule. According to my docs, the C-LAN can only be updated from its own file system, so you might as well “Remove Image File After Successful Download” so you don’t have to delete it yourself (this also disables file transfer for you). The target location is the same as the Source Board Location (i.e. itself), and submit.

change firmware download 1                                      Page   1 of   1
                               FIRMWARE DOWNLOAD          Schedule: 1
   Source Board Location: 01a05        File Server: none

Firmware Image File Name: tn799dp-h13-f43-sig.bin
       Target Board Code: TN799   Suffix: DP  Firmware Vintage:
       Schedule Download? n


    Target          Target          Target          Target          Target
   Location        Location        Location        Location        Location
 1. 01a05       11.             21.             31.             41.
 2.             12.             22.             32.             42.
 3.             13.             23.             33.             43.
 4.             14.             24.             34.             44.
 5.             15.             25.             35.             45.
 6.             16.             26.             36.             46.
 7.             17.             27.             37.             47.
 8.             18.             28.             38.             48.
 9.             19.             29.             39.             49.
10.             20.             30.             40.             50.

This is where Avaya confirms the firmware file is complete, signed correctly, and is appropriate for your card. In the past, I have intentionally tried to update with the wrong firmware and I get an Abort code. Anyway, submit the correct filename and then do a “stat firm down 1”

Step 5 – Monitor the update

Now wait. At some point the pings will drop then come back. You can check the status of the update with “status firmware download 1”. The status code will be Pending, Complete, Failed, or Aborted. If failed or aborted – check the documentation for the reason code. If you’re like me, you have tons of PDFs of Avaya documentation in your hard drive. I end up using Google anyway.

status firmware download 1
                            STATUS FIRMWARE DOWNLOAD      Schedule: 1
   Source Board Location: 01A05        File Server: none

Firmware Image File Name: tn799dp-h13-f43-sig.bin
       Target Board Code: TN799   Suffix: DP  Firmware Vintage: 43
       Schedule Download? n
   Start Date/Time: 05/02/2014  00:01    Stop Date/Time:   /  /        :

   Target    Status    Reason              Target    Status    Reason
   Location            Code                Location            Code
 1. 01A05    Pending                    11.

You should see “Pending” for the download state. Soon your pings will drop. It takes a few minutes. In my experience it will take just long enough for me to panic, plus 30 seconds. Not worried, but actually concerned. After 30 seconds of “oh crap I’m going to have to drive the site”, the update completes. I have noticed the HW01 vintage was MUCH slower than the HW16.

If you have a lot of updates and trust the system, you can run these in parallel with “change/status firmware download x” where x is between 1 and 4. So you can have up to four firmware updates running at a time. I’ve done it – it works. And by the time you’re done with the fourth one, the first one is probably done.

 Step 6 – Verify

When the update is done, the “status firm down 1” will blank out. When you “list config” you should see your new firmware version. However, the ping did not come back! I am embarrassed to say I panicked. I did a “busy board” If you disabled the ip-interface then enable it. Type “status sock” and check for registered phones. Phones should move back to it as the CM balances the traffic. you can also disable other ip-interfaces momentarily to encourage phones to move to it immediately.

status socket-usage
                           SOCKET USAGE

                                 Total Registered IP Endpoints: 872
 Registered IP Endpoints with TCP Signaling Socket Established: 872
                                            Total Socket Usage: 00926/02900

Intf         Board Socket      Net    Intf          Board Socket      Net
Type   Loc    Sfx  Usage       Rgn    Type   Loc    Sfx   Usage       Rgn

procr              442/1700    250
CLAN   01A03   D   162/400     1
CLAN   01A05   D   161/400     1
CLAN   01B10   D   161/400     1

 What if the ping doesn’t come back?

Strangely, the ping doesn’t stop when you disable the ip interface. But once the firmware is done loading and the “stat firm down 1” shows nothing and the “list config” shows the right SW version, what if the pings still timeout? Well first, give it a good long time. You really need to panic before the firmware will finish. If that doesn’t seem to work, then “change ip-i xxxxx” and enable the ip-interface. The pings respond? Mine did. If yours don’t, you can try “busy board xxxxx” then “release board xxxxx”. That always works for me. If it still doesn’t work, Avaya would probably recommend pulling the board and re-seating it. There are a bunch of test procedures though. I assume performing a busy/release would Abort if you try it while the firmware is loading, but I don’t want to try. Let me know if you do it.

Summary

That’s it. The first time is scary, then it gets easier. Especially since this is done so infrequently that, as usual I start to forget the exact procedures. Good luck all and let me know how it goes. Thanks as always, Roger.

 

How to unlock a locked Avaya CM / SAT login

Every once in a while, your login may lock out. And if you use just one, or if you have some scripts using one, you might not want to wait for the account to unlock automatically (hopefully it does).

login as: telecom

This system is restricted solely to authorized users for legitimate business 
purposes only. The actual or attempted unauthorized access, use or modifications 
of this system is strictly prohibited. Unauthorized users are subject to company 
disciplinary procedures and or criminal and civil penalties under state, federal 
or other applicable domestic and foreign laws.

The use of this system may be monitored and recorded for administrative and 
security reasons. Anyone accessing this system expressly consents to such 
monitoring and recording, and is advised that if it reveals possible evidence of 
criminal activity, the evidence of such activity may be provided to law 
enforcement officials. All users must comply with all corporate instructions 
regarding the protection of information assets.
Using keyboard-interactive authentication.
Your account is locked. Maximum amount of failed attempts was reached.
Password:

So here are three things that are totally obvious once you’ve done it once.

  1. Have another login handy. Create a second just-in-case. This is easy also, but not completely straightforward.
  2. Check your account lockout policy. This is done via the web interface at Security->Login Account Policy. You can set the number of failed accesses that trigger a lockout and the time the account is locked.
  3. You can manually unlock an account via the web interface at Security->Administrator Accounts. You can “Change Login” and uncheck the “Lock This Account” checkbox, or you can go to Security->Administrator Accounts and select the “Lock/Unlock Login” and it will toggle the locked status.

Here are a couple screenshots showing the lockout policy (at the end of the Login Account Policy screen) and the account lockout screens.

avaya-cm-account-policy

avaya-cm-unlock-login

 

Update – there’s another way to do this. From the SSH command line in your CM, simply type

userlock -u cust unlock

So… should I delete the rest of this post? Probably not. I suppose you may want to teach your helpdesk folks how to use the GUI rather than the terminal. So there you go.

How to “kick” an Avaya Local Survivable Processor without rebooting

I recently had an Avaya Local Survivable Processor (LSP) unregister. There was no indication why – it just went down. I was able to get to its web interface, and it had a minor alarm indicating that it was unregistered. I suppose I could have restarted the whole thing, but my tech talked me through this procedure, which worked great.

Please note that the LSP is typically registered and inactive. This LSP only activates if network connectivity is lost to the site. So if the home site is available through the WAN, it should look like this:

list survivable-processor
                             SURVIVABLE PROCESSORS
 Record Name/            Type         Reg Act         Translations      Net
 Number  IP Address                                   Updated           Rgn
  1     THE_LSP          LSP           y   n          2:02 12/30/2013   10
         10.2.10.110
        No V6 Entry

However, in my case it looked like this!

list survivable-processor
                             SURVIVABLE PROCESSORS
 Record Name/            Type         Reg Act         Translations      Net
 Number  IP Address                                   Updated           Rgn
  1     THE_LSP          LSP           n                                10
         10.2.10.110
        No V6 Entry

No entry to indicate the active status nor the last translation date. I was able to SSH to the LSP and I confirmed the LSP wasn’t active. The media gateway was still connected to my home site. The LSP could ping the home site. Somehow, the LSP was simply lost.

So I confirmed all CM processes were up with the “statapp” command:

telecom@pbx-cm01> statapp
Watchdog         9/ 9 UP SIMPLEX
TraceLogger      3/ 3 UP SIMPLEX
LicenseServer    2/ 2 UP SIMPLEX
SME              6/ 6 UP SIMPLEX
MasterAgent      1/ 1 UP SIMPLEX
MIB2Agent        1/ 1 UP SIMPLEX
MVSubAgent       1/ 1 UP SIMPLEX
LoadAgent        1/ 1 UP SIMPLEX
FPAgent          1/ 1 UP SIMPLEX
INADSAlarmAgent  1/ 1 UP SIMPLEX
GMM              4/ 4 UP SIMPLEX
SNMPManager      1/ 1 UP SIMPLEX
filesyncd        1/ 1 UP SIMPLEX
MCD              1/ 1 UP SIMPLEX
CommunicaMgr    86/86 UP SIMPLEX
telecom@pbx-cm01>

Sure enough, all processes were running fine. So I stopped CM with the command

stop -afcn

This will stop the processes listed above, refreshing as it goes. It’s pretty nice. When all processes have stopped, you can start CM again with

start -ac

Again, it refreshes the screen as the processes start back up. When it’s done, the LSP should re-register. It’s also a good idea to watch the home CM for this register event. About 30 seconds after the CM comes back, you should see it. In your home site, do a

list trace ras ip-a 10.2.10.110

while the LSP processes restarts.

Here is the register event

list trace ras ip-address 10.2.10.110

                                LIST TRACE

time            data

17:45:39 TRACE STARTED 12/30/2013 CM Release String cold-03.0.124.0-21166
17:46:37   rcv RRQ ext
                   endpt  [10.2.10.110]:1719
                   switch [10.1.10.110]:1719
17:46:52   rcv KARRQ ext
                   endpt  [10.2.10.110]:1719
                   switch [10.1.10.110]:1719
17:47:07   rcv KARRQ ext
                   endpt  [10.2.10.110]:1719
                   switch [10.1.10.110]:1719
17:47:20   RAS TRACE COMPLETE ext

Those KARRQ messages are the keepalives.

After this restart, the LSP was registered fine. No service impact at the site, as the LSP is inactive unless the WAN goes down. And much less scary (for me anyway) than restarting the whole LSP.

Happy New Year everyone!

Vintage Tele-Cost pricing guide for Los Angeles, CA

A friend of mine was cleaning out his father’s garage and found this pricing guide for Los Angeles, CA. Specifically the HIllcrest exchange 213-445, 446, and 447 exchanges. Back in the 1960s, the 213 area code was huge, and the farther you called, the more the call would cost. But the telephone company didn’t charge by miles, or by minutes. They priced the call by “Message Units”. Sometimes the cost of the call could surprise you, so this enterprising company came up with a pricing guide to tell you how many message units it would cost to call around your area. The information was readily available in your telephone book or asking your operator, but Tele-Cost (or TELE-CO$T) presented it in a nice chart to compare the cost of a 3-minute call vs. 5-minute and more. It looks like you could order one for any exchange, but since they were in Temple City, it may have just been a local thing to this area. I cannot find a reference to Tele-Cost anywhere else.

I have always known that exchange “names” were built from the first two numbers of the 7-digit telephone number. But I didn’t realize the Bell System would have multiple exchanges with the first two digits. For example, on the last page of this guide, there’s a list of the letter prefixes. DA-3, 4, 7, and 9 (prefixes 323, 324, 327, and 329) were called “DAvis”, but DA-5 and 6 (prefixes 325 and 326) were called “DAvenport”. I presume if you called the operator and asked for “DAvenport 3″, she might attempt to clarify that you have the right number, since DA-3 is really the”DAvis” exchange.

So this looks to be all of the assigned exchanges in the early 1960s in the 213 area code. Please also note the advertisement for Investors Savings and Loan Association. The telephone numbers for the ofices in Pasadena, Glendora, and East Pasadena are listed with the letter prefixes of SY 5, MU 1, and ED 5.

I would certainly love to hear from you if you have guides like this for your area, or if you stories about using exchange names when you were a kid.

tele-cost-page1

tele-cost-page2

tele-cost-page3

tele-cost-page4

How to integrate Avaya Session Manager 6.x with Microsoft Lync

In my last post, I described how to integrate Avaya Session Manager with Asterisk. I originally hacked away at that because I figured it would be a great way to eventually integrate with Microsoft Lync. Sure enough, my Exchange guy asked me if we could integrate Avaya and Lync so I simply followed my own instructions replacing “Asterisk” with “Lync Mediation Server” it came up first try. On the Lync side, just call the Avaya a VoIP carrier. And use media bypass whenever possible. Works great for us! Right-click a contact and select ‘dial’. It’ll dial out the PSTN. This is basic integration. What is interesting is it brings up a whole new level of questions. What do people mean by “Lync Integration”?

  1. Do you want to use your PC as the phone, or control your desk phone?
  2. Do you want to support inbound calls to your PC, desk phone, or both?
  3. Do you expect to be able to transfer calls between your PC and desk phon?
  4. Do you expect common lamping? I.e. Incoming call rings on my deskphone (lamp slow flashes), I pick it up (lamp solid), put it on hold (lamp fast flash), take it on my PC (lamp should go solid again)
  5. Do you expect your call log to keep up with both PC and deskphone?
  6. If you have separate calls up on both PC and desk, do you want to conference them together?

Obviously there’s a lot more to “integration” than simply making calls between Lync and Avaya. I’ll be working on some tricks with EC500 to make some of these work. What type of Lync integration are your managers and users want?