D-Link 澳大利亚使用 Python 控制固件更新
作者:How Wong,D-Link 澳大利亚
介绍
D-Link 澳大利亚的 RMA 部门为澳大利亚西亚地区提供保修服务。保修服务包括诊断、修复、测试、翻新和包装安全摄像头、调制解调器、VoIP 硬件、交换机和路由器产品。
问题描述
在开发下面描述的软件之前,升级保修服务期间的固件的标准方法是通过 Web 浏览器在固件完全启动后加载设置和固件到调制解调器上。使用这种技术,每台机器一次只能升级一个调制解调器。为了确认固件成功升级,调制解调器必须重启,然后再次通过 Web 浏览器检查版本。
对于固件损坏的调制解调器、需要转换到不同本地化区域的调制解调器,以及需要升级引导加载程序的调制解调器,无法以这种方式处理。相反,使用一个单独的可执行文件在引导-ROM 级别上进行恢复或转换。在典型的一天中,有数百个这样的设备需要服务,且有许多不同的型号。
解决方案
为了解决这些问题,我开始使用终端脚本来驱动调制解调器的串行通信,以绕过在升级引导-ROM 级别固件过程中手动使用 Web 浏览器的步骤,并将调制解调器的重启次数减少到一次。尽管这种方法消除了许多问题,但仍然存在手动选择适合调制解调器型号的固件和使用不同引导加载程序的不同命令的步骤。此外,一次只能执行一个升级。这并不是一个特别用户友好的解决方案。
为了改善这种情况,我决定开发自定义软件来处理升级。起初,我考虑使用 Java 来提高性能,但一旦我看到了复杂的 Java 串行通信代码和语言本身,我选择了 Python。我不是程序员,我觉得我不会去使用和理解 Java 代码。我相信 Python 会让我更多地关注问题而不是语言。
DSL 固件恢复系统
用于这项工作的开发环境是在 Linux 上的 Eclipse,