YAMAHA RTX830のファームウェアの更新をLinuxマシンから行った。
今回ファームウェアを更新したRTX830(Rev.15.02.28)は新品、未設定で、既存のネットワークにはどこにも接続されていないスタンドアローン状態のものである。既に設定済みで運用中のものを更新するものではない。今回適用するファームウェアは「Rev.15.02.30」である。
言うまでもなく、ファームウェアを更新するだけでは安全には使用することはできない。セキュリティーのために綿密な設定が必要である。
■ 準備
Linuxマシンにおいて次の準備を行った。
◯ ファームウェアのダウンロード
https://www.rtpro.yamaha.co.jp/RT/firmware/index.phpをブラウザで開き、適用するべきファームウェアファイル(拡張子bin)と、チェックサムファイル(拡張子md5)をダウンロードした。
◯ ファームウェアファイルのチェックサムの検証
$ cd Download
$ ls
rtx830.bin
rtx830.md5
$ md5sum -c rtx830.md5
rtx830.bin: 完了
◯ tftp、telnetのインストール
$ sudo su
# apt install tftp
# apt install telnet
# exit
$
■ RTX830とLinuxマシン(Raspberry Pi 5)を接続
RTX830は新品で未設定の状態であるが、LAN側でDHCPサーバーの機能が動作している。そのため、Linuxマシンで有線LANについてDHCPクライアントを有効にしている場合、LinuxマシンとRTX830のLAN側をつなぐだけでLinuxマシンは自動的にIPv4アドレスを取得する。
◯ Linuxマシンの既存のネットワークの接続状況を確認した
接続前は次のような状態であった。既存のネットワーク接続「wlan1」が存在している。
$ nmcli d
DEVICE TYPE STATE CONNECTION
wlan1 wifi 接続済み wlan1
lo loopback 接続済み (外部) lo
wlan0 wifi 切断済み --
p2p-dev-wlan0 wifi-p2p 切断済み --
eth0 ethernet 利用不可 --
◯ 万全を期すため、 既存のネットワークからLinuxマシンは切り離した
(重要)「万全を期す」というのは、ターゲットのRTX830のつもりが他のネットワークに存在するルーターを相手にしているというような最悪な状態を避けるためである。
$ nmcli con down wlan1
接続 'wlan1' が正常に非アクティブ化されました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/2)
(注)後で再接続するには、「nmcli con up wlan1」とコマンドを入力するか、Linuxマシンを再起動すればよい。
次のように、既存ネットワークからは切断されていることが確認できた。
$ nmcli d
DEVICE TYPE STATE CONNECTION
lo loopback 接続済み (外部) lo
wlan0 wifi 切断済み --
wlan1 wifi 切断済み --
p2p-dev-wlan0 wifi-p2p 切断済み --
eth0 ethernet 利用不可 --
◯ LinuxマシンとRTX830とを有線LANで接続し、状態を確認
Linuxマシンの未使用LANポートと、RTX830のLAN側ポートを有線LANで接続した。その後、数秒程度待ってから状態を確認した。
user01@raspberrypi:~ $ nmcli d
DEVICE TYPE STATE CONNECTION
eth0 ethernet 接続済み 有線接続 1
lo loopback 接続済み (外部) lo
wlan0 wifi 切断済み --
wlan1 wifi 切断済み --
p2p-dev-wlan0 wifi-p2p 切断済み --
◯ Linuxマシンが取得したIPv4アドレスを表示
Linuxマシンは、RTX830からDHCPで割り当てられたIPv4アドレスを取得している。
$ ip a
(略)
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
inet 192.168.100.2/24 brd 192.168.100.255 scope global dynamic noprefixroute eth0
valid_lft 259194sec preferred_lft 259194sec
inet6 fe80::XXXX:XXXX:XXXX:XXXX/64 scope link noprefixroute
valid_lft forever preferred_lft forever
(略)
◯ RTX830側のIPv4アドレスを確認
Linuxマシンは、RTX830からDHCPで割り当てられたIPv4アドレスといっしょにゲートウェイアドレスを受け取っている。このゲートウェイがRTX830なので、ゲートウェイアドレスがRTX830のLAN側アドレスである。
$ ip r
default via 192.168.100.1 dev eth0 proto dhcp src 192.168.100.2 metric 100
(略)
ここで、確認したRTX830のLAN側アドレスは後で使う。
■ RTX830のファームウェアを更新
上記のように、RTX830とLinuxマシンを有線LANで接続したまま次の操作を行った。
◯ RTX830でtftpによるアクセスを許可する設定を行った
LinuxマシンにてtelnetコマンドでRTX830(工場出荷時状態のもの)に接続し、RTX830のコンソールを開いた。(注意)このRTX830は既存のネットワークには接続されていない。
$ telnet 192.168.100.1
Trying 192.168.100.1...
Connected to 192.168.100.1.
Escape character is '^]'.
Password: ←何も入力せずにそのままエンター
RTX830 Rev.15.02.28 (Wed Dec 28 19:47:51 2022)
Copyright (c) 1994-2023 Yamaha Corporation. All Rights Reserved.
To display the software copyright statement, use 'show copyright' command.
YY:YY:YY:YY:YY:YY, YY:YY:YY:YY:YY:yy
Memory 256Mbytes, 2LAN
The login password is factory default setting. Please request an administrator to change the password by the 'login password' command.
> administrator ←このように入力してエンター
Password: ←何も入力せずにそのままエンター
The administrator password is factory default setting. Please change the password by the 'administrator password' command.
#
# tftp host any ←このように入力してエンター
#
入力した「tftp host any」コマンドは、tftpクライアントからの接続をすべて許可する設定である。後で、必要に応じて解除しておく。
このままRTX830のtelnetコンソールは開いたままにし、後の手順によるLinuxマシンからのファームウェアの転送の状態がわかるようにしておく。
Linuxマシンではさらに別のターミナルを用いて次の手順を行った。
◯ tftpコマンドでファームウェアをRTX830に送信
$ cd Download
$ ls
rtx830.bin
rtx830.md5
$ tftp -m binary 192.168.100.1 -c put rtx830.bin exec
Transfer timed out.
このコマンドを実行すると、RTX830とLinuxマシン双方のLANのステータスLEDが点滅してデータ送受信が行われていることがわかった。
しばらくすると、Linuxマシンで実行したtftpコマンドが「Transfer timed out. 」で終了した。しかし、上記のtelnetコンソールには次のように表示された。
Update exec file receiving... Testing received file... Writing to Nonvolatile memory... done
Restarting ...
Connection closed by foreign host.
このことから、うまくファームウェアの転送ができたとわかった。RTX830はまもなく再起動しファームウェアの更新作業が完了した。