1. 项目缘起:为什么要把AVAYA 96X1话机刷成SIP话机?
如果你手头有几台闲置的AVAYA 96X1系列IP话机,比如9611G、9621G或者9641G,看着它们做工扎实、屏幕清晰,却因为绑定了AVAYA自家的Aura或CM通信系统而无法直接用在标准的SIP PBX(如FreePBX、3CX、Asterisk)上,是不是觉得有点可惜?我最初也是这么想的。这些话机在二手市场很常见,价格不高,但硬件素质远超很多同价位的SIP话机。与其让它们吃灰,不如动手改造一下,让它们重获新生,成为你家庭办公室、小型工作室甚至实验室里稳定可靠的SIP终端。
这个“改造”的核心,就是刷写固件。AVAYA为这些话机提供了两种固件模式:一种是专有的“AVAYA”固件,只能注册到AVAYA的通信管理器;另一种就是“SIP”固件,这是一个符合行业标准的SIP协议栈实现,允许话机像任何其他SIP话机一样,注册到支持标准SIP的PBX或服务提供商。我们的目标,就是把话机从“AVAYA模式”切换到“SIP模式”。这个过程听起来有点技术性,但只要你跟着步骤走,避开几个关键的坑,成功率非常高。我前后折腾过十几台不同型号的96X1,积累了一些实战经验,这篇文章就是把这些经验系统化地分享出来。
2. 准备工作:固件、工具与网络环境
动手之前,准备工作做充分,能避免过程中80%的麻烦。这个阶段的核心是获取正确的固件和搭建一个临时的引导环境。
2.1 固件文件获取与甄别
这是整个过程中最关键、也最容易出错的一步。AVAYA官方并不公开提供SIP固件的直接下载链接,通常需要通过合作伙伴或内部渠道获取。对于个人用户,最可靠的来源是AVAYA的官方支持网站(需要有效的服务合同),或者从一些技术社区、论坛寻找热心网友分享的已验证版本。
你需要寻找的固件文件通常是一个压缩包,解压后包含类似以下结构的文件:
96x1SIP.bin: 这是主引导文件(BootROM),负责最底层的硬件初始化和加载。96x1SIP.loads: 这是一个文本文件,里面定义了需要加载的各个软件模块(loads)的名称和版本号。- 一系列以
.bin或.z结尾的模块文件,如appdata.bin,appsip.bin,jvm.z等。这些是话机的应用程序、SIP协议栈、Java虚拟机等核心组件。
重要提示: 固件版本必须与你的话机硬件型号严格匹配。例如,9611G、9621G、9641G的固件通常不通用。刷入错误型号的固件极有可能导致话机“变砖”。在下载时,务必确认固件包是针对“96x1 SIP”系列的,并且最好能找到对应你具体型号(如9641G)的说明。
2.2 TFTP服务器搭建
话机在刷机过程中,需要通过TFTP(简单文件传输协议)从服务器获取固件文件。这是最传统也是最可靠的方式。你需要在同一局域网内的一台电脑上搭建一个TFTP服务器。
- 选择TFTP服务器软件: Windows用户可以使用
Tftpd64或SolarWinds TFTP Server,它们都是免费且图形界面友好。Linux/macOS用户可以使用系统自带的tftpd-hpa服务,或者用atftpd。这里以Windows下的Tftpd64为例。 - 配置TFTP服务器:
- 运行Tftpd64,在“Current Directory”一栏,选择你存放所有固件文件的文件夹路径(例如
D:\96x1_SIP_Firmware)。 - 在“Server interface”下拉菜单中,选择你电脑在当前局域网的IP地址(例如
192.168.1.100)。务必记下这个IP,后续配置要用。 - 其他设置通常保持默认即可。确保Windows防火墙允许Tftpd64通过。
- 运行Tftpd64,在“Current Directory”一栏,选择你存放所有固件文件的文件夹路径(例如
2.3 话机网络与配置准备
物理连接: 用网线将AVAYA话机连接到你的局域网中,确保话机和搭建TFTP服务器的电脑在同一个子网内,能够互相ping通。
获取话机IP: 给话机通电启动。在话机屏幕上,按
*#*#(星号井号星号井号),可以进入一个隐藏的状态菜单。在这里找到“Network”或类似选项,查看话机获取到的IP地址(例如192.168.1.150)。同样,记下这个IP。准备配置脚本(关键!): SIP话机在启动时,会尝试从一个指定的HTTP或TFTP服务器下载一个配置文件。我们可以利用这个机制来引导刷机。你需要创建一个名为
46xxsettings.txt的文本文件,这是AVAYA话机的标准配置文件。用记事本创建一个新文件,输入以下内容,并保存为
46xxsettings.txt,将其放入TFTP服务器的目录(即和固件文件放在一起):SET SIP_OFF_DHCP 0 SET SIP_OFF_IP 192.168.1.100 SET SIP_OFF_LOAD_FILE "96x1SIP.loads" SET SIP_OFF_LOAD_SERVER 192.168.1.100SIP_OFF_DHCP 0: 告诉话机使用DHCP获取IP(与之前查看的IP方式一致)。SIP_OFF_IP: 这是话机准备在SIP模式下使用的IP地址。通常就设为你刚才在状态菜单里看到的那个IP(192.168.1.150)。如果冲突,可以换一个同网段未使用的IP。SIP_OFF_LOAD_FILE: 指定要加载的固件定义文件,就是我们固件包里的96x1SIP.loads。SIP_OFF_LOAD_SERVER: 指定固件文件所在的TFTP服务器地址,就是你电脑的IP(192.168.1.100)。
3. 核心刷机操作流程详解
一切准备就绪,现在进入实质性的刷写阶段。这个过程是通过话机的“安全加载”模式完成的。
3.1 进入安全加载模式
- 断开话机的电源。
- 按住话机键盘上的
*键不放。 - 重新插上电源,继续按住
*键。 - 等待约10-15秒,直到话机屏幕上出现“Secured Load”或类似提示,并且屏幕上可能会显示话机的MAC地址和正在尝试联系的TFTP服务器IP(此时应为
0.0.0.0)。此时可以松开*键。
这个模式下的话机,就像一张白纸,等待从网络加载最基本的引导程序。
3.2 配置话机引导参数
在“Secured Load”界面,你需要通过话机键盘输入几个关键参数,告诉话机去哪里找固件。
- 在话机键盘上按:
#(井号键)。屏幕上可能会提示你输入一个数字。 - 输入
2然后按#确认。这个操作是设置“加载服务器类型”,2代表TFTP。 - 接下来,系统会提示输入服务器IP地址。你需要用键盘输入你电脑的IP地址。输入方式比较特殊:
- 假设你的TFTP服务器IP是
192.168.1.100。 - 你在键盘上依次按下:
192*168*1*100。 - 注意: 这里的
*键代表IP地址中的点.。所以192.168.1.100就输入为192*168*1*100。 - 输入完成后,按
#键确认。
- 假设你的TFTP服务器IP是
- 系统接着会提示输入加载文件名。输入我们准备好的配置文件名:
46xxsettings.txt(按键盘上的ABC键可以在字母和数字间切换)。输入完毕后按#确认。
3.3 执行加载与刷写
完成上述输入后,话机屏幕可能会显示“Loading...”或类似信息。此时,话机会向你的TFTP服务器(192.168.1.100)请求46xxsettings.txt文件。
观察TFTP服务器日志: 迅速切换到运行Tftpd64的电脑,你应该能在日志窗口中看到话机(以其MAC地址或IP标识)成功请求并下载了
46xxsettings.txt文件。自动加载固件: 话机解析
46xxsettings.txt后,会根据里面的SIP_OFF_LOAD_SERVER和SIP_OFF_LOAD_FILE设置,再次向TFTP服务器请求96x1SIP.loads文件。文件传输与刷写: TFTP服务器发送
96x1SIP.loads。话机读取这个文件,得知需要加载96x1SIP.bin以及其他一系列.bin或.z模块。然后,话机会依次请求并下载这些文件。在Tftpd64的日志里,你会看到一连串的文件传输记录。这个过程可能会持续2到5分钟,期间话机屏幕会显示进度条或不同的加载阶段提示(如“Loading Bootrom”, “Loading JVM”, “Loading Application”等)。绝对不要在此期间断电或重启话机!
刷写完成与重启: 当所有文件传输完毕,话机会自动校验并写入闪存。完成后,话机通常会自动重启。重启后,如果你看到启动画面不再是AVAYA的Logo,或者出现了“SIP”字样的启动界面,那么恭喜你,刷机成功!话机现在已经运行在SIP固件下了。
4. SIP话机基础配置与PBX注册
刷机成功只是第一步,接下来需要配置话机,让它能真正作为一部电话使用。
4.1 访问话机Web管理界面
话机重启进入SIP模式后,会使用我们之前在46xxsettings.txt里设置的SIP_OFF_IP(例如192.168.1.150)作为IP地址。它也会通过DHCP获取网关、DNS等信息。
- 在你的电脑浏览器中,输入话机的IP地址(如
http://192.168.1.150)。 - 会弹出登录窗口。默认的用户名和密码通常是:
- 用户名:
admin - 密码:
admin或password(不同固件版本可能有差异,如果不对,可以尝试空密码,或查阅固件包内的说明文档)。
- 用户名:
成功登录后,你就进入了话机的Web配置界面。这里的选项比AVAYA模式下丰富得多,也更接近标准的SIP话机。
4.2 配置SIP账户连接PBX
我们需要在话机上创建一个SIP账户,指向你的SIP PBX服务器。这里以常见的FreePBX/Asterisk为例。
在Web界面中,找到“SIP”或“Line”或“Account”配置部分。通常有1-2个可配置的SIP账户。
填写以下关键参数:
- SIP Server / Registrar / Proxy: 你的PBX服务器地址。可以是IP(如
192.168.1.10)或域名。 - SIP User / Auth ID / Username: 在PBX上为这台话机创建的分机号码,例如
1001。 - Password / Secret: 该分机在PBX上设置的认证密码。
- Display Name / Caller ID Name: 来电显示名称,例如
“Desk Phone”。 - (可选) Outbound Proxy: 通常留空或与SIP Server一致。
- (可选) SIP Transport: 选择
UDP或TCP,需与PBX设置匹配,默认UDP即可。
- SIP Server / Registrar / Proxy: 你的PBX服务器地址。可以是IP(如
网络设置检查: 确保“Network”设置中的IP获取方式(DHCP/Static)、子网掩码、网关、DNS都正确。特别是DNS,如果PBX地址用的是域名,就必须配置有效的DNS服务器。
保存并重启: 填写完所有信息后,点击页面底部的“Save”或“Apply”。大多数配置需要话机重启才能生效,根据页面提示重启话机。
4.3 在PBX端进行配置与验证
话机配置好后,还需要在PBX端进行对应设置。
- 在FreePBX/Asterisk中创建分机: 登录PBX管理界面,添加一个SIP分机(Extension)。分机号、密码必须与话机上配置的
SIP User和Password完全一致。其他参数如上下文(context)、编解码器等可以按需设置,初期保持默认即可。 - 验证注册状态:
- 在PBX上: 在FreePBX的“分机状态”页面,或者通过SSH登录到Asterisk命令行,运行
sip show peers命令,你应该能看到分机1001的状态是OK或Registered,并且能看到注册的IP地址是你的话机IP。 - 在话机Web界面: 通常有一个“状态”页面,可以查看SIP账户的注册状态,显示为“Registered”即表示成功。
- 在PBX上: 在FreePBX的“分机状态”页面,或者通过SSH登录到Asterisk命令行,运行
- 拨号测试: 拿起话机听筒,听到拨号音后,尝试拨打PBX上的其他分机号码(如
1002),或者拨打一个测试号码(如*43回铃测试)。如果通话建立成功,说明整个链路完全打通。
5. 高级配置、优化与排错指南
基础功能跑通后,我们可以进行一些优化,并看看常见问题如何解决。
5.1 功能按键与灯光的编程
96X1话机侧面有很多可编程的功能键(Line Keys),顶部的消息等待指示灯(MWI)也很实用。这些需要在Web界面里手动映射到PBX的功能上。
可编程按键: 在Web界面的“Keys”或“Programmable Keys”部分,你可以为每个物理按键分配功能。常见的分配包括:
- BLF (Busy Lamp Field): 订阅其他分机的状态(忙/闲)。需要PBX支持BLF(通常通过
Subscribe Context实现)。格式通常是*分机号,如*1002。 - Speed Dial: 快速拨号。直接输入要拨打的号码。
- Call Park / Pickup: 呼叫驻留与取回。需要配置对应的功能码,如
*72。 - XML Service: 用于触发PBX上的定制服务(需要PBX提供XML菜单)。
- BLF (Busy Lamp Field): 订阅其他分机的状态(忙/闲)。需要PBX支持BLF(通常通过
消息等待指示灯 (MWI): 要让话机上的LED在语音信箱有留言时闪烁,需要正确配置MWI。
- 在话机Web的SIP账户高级设置里,找到“MWI Subscribe”相关选项。
- 通常需要启用订阅,并设置“MWI Subscription Expiry”(如3600秒)。
- 最关键的是“Voice Mail Number”,这里要填写你PBX上查询语音信箱的接入号码,通常是
*97或*98。格式可能是*97或sip:*97@your-pbx-ip。 - PBX端也需要确保语音信箱服务已正确配置并向分机发送MWI通知。
5.2 音频与网络优化
- 编解码器优先顺序: 在SIP账户的音频设置中,可以设置编解码器列表。建议将
G.711u(alaw) 或G.711a(ulaw) 放在最前面,以保证最好的兼容性和通话质量。如果带宽有限,可以加入G.729(注意可能需要许可证)。 - NAT穿透设置: 如果话机在路由器后面,而PBX在公网或不同子网,可能需要配置NAT。
- 在话机的SIP设置中,找到“NAT Traversal”或“SIP ALG”相关选项。可以尝试启用“Keep Alive”(发送OPTIONS包)和“STUN Server”。
- STUN服务器可以设置为公共的,如
stun.l.google.com:19302。这有助于话机感知自己的公网IP和端口。 - 更可靠的方案: 在PBX端的该分机高级设置中,勾选“nat=yes”或“qualify=yes”,并设置
externip和localnet参数。这是解决NAT问题最有效的方法。
5.3 常见问题与排查思路
即使步骤正确,你也可能会遇到一些问题。以下是几个典型的“坑”及其排查方法。
问题:话机无法从TFTP服务器加载文件。
- 排查:
- 防火墙: 确保电脑的防火墙完全放行了UDP 69端口(TFTP)。
- 路径与权限: 确认Tftpd64的“Current Directory”设置正确,并且该目录对系统用户有读取权限。可以将固件文件直接放在磁盘根目录(如
C:\tftp)试试,避免过深的路径和中文、空格。 - 文件名大小写: TFTP在某些系统上对文件名大小写敏感。确保请求的文件名与服务器上存放的文件名完全一致,包括扩展名。
- 网络连通性: 在电脑上ping话机的IP,确保链路层是通的。
- 排查:
问题:刷机过程中途失败,话机“变砖”,屏幕无显示或循环重启。
- 排查与挽救:
- 这通常是由于固件文件不完整、型号不匹配或传输中断导致。
- 重试安全加载: 首先尝试重复第3.1节的步骤,再次进入“Secured Load”模式,确保TFTP服务器和文件准备无误后,重新引导。
- 检查固件完整性: 重新下载固件包,并核对文件的MD5或SHA1校验和(如果有提供的话)。
- 终极方法——恢复模式: 部分96X1话机有一个物理的“恢复”跳线或按钮(通常在电路板上)。你需要拆机,短接特定的测试点或按住恢复按钮再上电,可以进入更深层的恢复模式,允许通过串口或特殊网络包刷写。这一步风险较高,需要一定的硬件操作能力。
- 排查与挽救:
问题:刷成SIP后,无法注册到PBX。
- 排查:
- 抓包分析: 这是最强大的工具。在电脑或PBX上使用Wireshark抓包,过滤
sip和ip.addr==话机IP。看话机是否发出了REGISTER请求,PBX是否回复了401 Unauthorized(要求认证)或200 OK(注册成功)。如果收到403 Forbidden或404 Not Found,检查用户名/分机号是否正确。 - 核对凭证: 逐字核对话机Web界面和PBX上设置的分机号、密码。密码中是否有特殊字符?尝试使用纯数字密码。
- 检查SIP端口: 默认SIP端口是5060。确认话机发出的注册请求目标端口是PBX监听的SIP端口(默认为5060)。有些PBX可能使用5060 UDP/TCP,或其他端口。
- 查看PBX日志: FreePBX/Asterisk的日志(
/var/log/asterisk/full)会详细记录注册失败的原因,如“Wrong password”、“No matching peer found”等,这是定位问题的金钥匙。
- 抓包分析: 这是最强大的工具。在电脑或PBX上使用Wireshark抓包,过滤
- 排查:
问题:能注册,但无法通话(无声音、单通、快速忙音)。
- 排查:
- 编解码器: 检查话机和PBX上为该分机配置的编解码器是否有交集。确保双方都支持
G.711。 - NAT与RTP流: 这是无声或单通的最常见原因。通话建立(SIP信令)成功,但音频流(RTP)被防火墙阻断。确保话机所在网络的防火墙开放了RTP端口范围(默认10000-20000)。在PBX的分机设置中,强制设置
nat=yes和externip=你的公网IP。 - 快速忙音: 通常表示PBX路由失败。检查拨号规则(Dialplan),确认你拨打的号码有正确的路由指向(例如,内部分机是否已定义,出局路由是否配置)。
- 编解码器: 检查话机和PBX上为该分机配置的编解码器是否有交集。确保双方都支持
- 排查:
将AVAYA 96X1话机刷成SIP话机并接入开源PBX,是一个极具性价比和成就感的技术实践。它不仅仅是一次简单的固件更换,更涉及网络协议、服务器配置和问题排查的综合运用。整个过程最磨人的地方往往不是标准步骤,而是遇到问题时的那份耐心和排查思路。我自己的经验是,第一次成功可能会花上一两个小时,但摸清门道后,后续的话机十分钟就能搞定。最重要的是,一定要做好TFTP文件的准备和网络环境的隔离,一个干净的实验环境能省去无数莫名其妙的麻烦。当你用着这台扎实的工业级话机,流畅地拨打接听电话时,就会觉得这些折腾都是值得的。如果遇到怪问题,别犹豫,打开Wireshark,真相都在数据包里。