■SWX2200 ファームウェア更新の事前準備
SWX2200 のファームウェアを更新する手段として、以下の 3 つの方法があります。
１．ヤマハルーター／ファイアウォールの GUI 設定画面を利用する
２．ヤマハ ユーティリティ SWX 設定ツールを利用する
３．ヤマハルーター／ファイアウォールのコマンドを利用する
いずれの場合でも、SWX2200 のファームウェアを更新する前には必ず、以下の注意事項を確認して、事前準備を実施してください。誤った操作を行うと、運用中のネットワークの通信障害や SWX2200 の故障を引き起こす原因になります。

【注意事項】
・ファームウェアの更新開始後は、更新が完了して SWX2200 が再起動するまで、絶対に他の操作は行わないでください。万一中断したときは SWX2200 が使えなくなり修理が必要となります。
・ファームウェアの更新が完了すると SWX2200 は自動的に再起動するので、全ての通信が切断されます。また、設定を一度初期化した後に再設定するので、一時的に意図しない動作を行う場合があります。SWX2200 の設定や接続状態によっては、ループ接続によるパケットストームなど予期せぬ事象が発生します。
・ファームウェアの更新中は、絶対にケーブルを抜かないでください。SWX2200 が使えなくなり、修理が必要となります。
・FAT または FAT32 形式でフォーマットされていない外部メモリは、ヤマハルーターで使用できません。
・USB ハブを介して、複数の USB メモリなどの外部メモリをヤマハルーターに接続することはできません。
・ヤマハルーターの USB ランプまたは microSD ランプが点灯／点滅している間は、外部メモリを取り外さないでください。外部メモリ内のデータを破損することがあります。
USB ボタンまたは microSD ボタンを 2 秒間押し続けて、USB ランプまたは microSD ランプが消灯していることを確認してから外部メモリを取り外してください。

【事前準備】
・SWX2200 を運用中のネットワークから切り離してください。
・SWX2200 をヤマハルーター／ファイアウォールもしくは SWX 設定ツールのいずれかの管理下においてください。
・更新する SWX2200 のファームウェアをヤマハ rtpro サイトからダウンロードしてください。
http://www.rtpro.yamaha.co.jp/RT/firmware/index.php#l2switch
・ヤマハルーター／ファイアウォールの GUI 設定画面を利用する場合には、ダウンロードしたSWX2200 のファームウェアを USB メモリに格納してください。

■ヤマハルーター／ファイアウォールの GUI 設定画面からのファームウェア更新手順
SWX2200 のファームウェアを更新する前には必ず、「SWX2200 ファームウェア更新の事前準備」の注意事項を確認して、事前準備を実施してください。誤った操作を行うと、運用中のネットワークの通信障害や SWX2200 の故障を引き起こす原因になります。
【更新手順】
１．SWX2200 のファームウェアを保存した USB メモリを用意してください。
２．USB メモリをヤマハルーター／ファイアウォールの USB ポートに差し込んでください。
３．ヤマハルーター／ファイアウォールの GUI 設定画面からスイッチ制御画面を開き、ファームウェア更新を行う SWX2200 の筐体をクリックして SWX2200 の設定画面を開いてください。
GUI 設定画面の基本的な操作方法については、SWX2200 の GUI マニュアルを参照してください。
http://netvolante.jp/products/swx2200/gui_manual/ja/

４．「ファームウェア」欄の「実行」をクリックしてください。

５．
「USB メモリ」を選択し、「参照」をクリックしてください。

６．更新に使用するファームウェアの「選択」をクリックしてください。

７．「実行」をクリックしてください。

８．
「はい」をクリックすると、ファームウェアの更新が開始します。

９．ファームウェアの転送と内部への書き込みが完了すると、 SWX2200 は自動的に再起動して、設定の初期化と再設定を行います。GUI 設定画面のネットワーク情報が更新されて、再び SWX2200 が表示されるまでお待ちください。ファームウェアが正しく更新されたことは「SWX2200 の設定画面」の「ファームウェア」欄で確認することができます。

１０．ファームウェアの更新が必要な SWX2200 について、上記３～９の手順を繰り返し実施してください。

■ヤマハ ユーティリティ SWX 設定ツールからのファームウェア更新手順
SWX2200 のファームウェアを更新する前には必ず、「SWX2200 ファームウェア更新の事前準備」の注意事項を確認して、事前準備を実施してください。誤った操作を行うと、運用中のネットワークの通信障害や SWX2200 の故障を引き起こす原因になります。
【更新手順】
１．SWX2200 のファームウェアを SWX 設定ツールがインストールされたパソコンに保存してください。
２．SWX 設定ツールを起動して、ファームウェア更新を行う SWX2200 の筐体をダブルクリックし、SWX2200 の設定画面を開いてください。
SWX 設定ツールの基本的な操作方法については、SWX 設定ツールのマニュアルを参照してください。

３．
「ファームウェア」欄の「実行」をクリックしてください。

４．
「参照」をクリックし、用意したファームウェアファイルを選択してください。

５．
「実行」をクリックすると、ファームウェアの更新が開始します。

６．ファームウェア更新開始、更新中。

７．ファームウェアの転送と内部への書き込みが完了すると、 SWX2200 は自動的に再起動して、設定の初期化と再設定を行います。SWX 設定ツールの表示が更新されて、再び SWX2200 が表示されるまでお待ちください。ファームウェアが正しく更新されたことは「SWX2200 の設定画面」の「ファームウェア」欄で確認することができます。

８．ファームウェアの更新が必要な SWX2200 について、上記２～７の手順を繰り返し実施してください。

■ヤマハルーター／ファイアウォールのコンソールからのファームウェア更新手順
SWX2200 のファームウェアを更新する前には必ず、「SWX2200 ファームウェア更新の事前準備」の注意事項を確認して、事前準備を実施してください。誤った操作を行うと、運用中のネットワークの通信障害や SWX2200 の故障を引き起こす原因になります。
SWX2200 のファームウェアを、USB メモリやルーター／ファイアウォールの内部に格納して、ヤマハルーター／ファイアウォールのコンソールコマンドで SWX2200 に転送して、更新することができます。
ルーター／ファイアウォールの内部に SWX2200 のファームウェアをファイルとして格納する方法は、以下の技術資料を参照してください。tftp を用いてファイルを格納することができます。
「RTFS」
http://www.rtpro.yamaha.co.jp/RT/docs/rtfs/index.html
SWX2200 のファームウェアを更新するコンソールコマンドについては、コマンドリファレンスの「switch control firmware upload go」や「switch control function get firmware-version」コマンドの項を参照してください。
「コマンドリファレンス」
http://www.rtpro.yamaha.co.jp/RT/manual.html

■参考情報1 台のヤマハルーター／ファイアウォールで制御している複数の SWX2200 に対して、ファームウェア更新を順次自動で実行する Lua スクリプトファイル(revup.lua)を、参考情報として記載します。
このスクリプトを使用して何らかの問題が発生した場合、弊社はその責任を一切負いかねます。内容を十分ご理解された上でのご利用をお願い致します。
revup.lua の使い方
【用途】
revup.lua は現在制御している全ての SWX2200 に対して、指定したファームウェアファイルを使用してファームウェア更新を実行します。
【手順】
１．revup.lua 内で設定されている場所に swx2200.bin を格納する。
-- SWX2200 のファームウェア格納場所
firmware_file = "usb1:/swx2200.bin"
２．ファームウェア更新したい SWX2200 をルーター／ファイアウォールに接続する。
３．revup.lua を実行する。
lua /revup.lua【備考】
revup.lua 実行時の引数にリビジョン番号を指定した場合、指定したリビジョン番号と現在のリビジョン番号を比較して一致した場合はファームウェア更新を行いません。例えば、以下のように指定した場合、既にファームウェアが Rev.1.00.07 に更新されている SWX2200 に対してファームウェア更新を行いません。
lua usb1:/revup.lua Rev.1.00.07

revup.lua (1/3)--[[● SWX リビジョンアップスクリプト
現在制御している全ての SWX2200 に対して、指定したファームウェアファイルを使用してリビジョンアップを実行します。
引数にリビジョン番号を指定した場合、指定したリビジョン番号と現在のリビジョン番号を比較して一致した場合はリビジョンアップを行いません。
＜説明＞・このファイルを RTFS か外部メモリに保存してください。
・スクリプトを停止するときは terminate lua コマンドを実行してください。
・再度、Lua スクリプトを実行する場合は lua コマンドで実行してください。
・★マークの付いた設定値は変更が可能です。
＜ノート＞
・本スクリプトが出力する SYSLOG レベルを指定することができます。
SYSLOG のレベルを指定するには、log_level を設定してください。
debug レベル、notice レベルの SYSLOG を出力するためには、それぞれ以下の設定が必要です。
debug レベル ･･･ syslog debug on
notice レベル･･･ syslog notice on
・本スクリプトファイルを編集する場合、文字コードは必ず Shift-JIS を使用してください。
]]--------------------------##

設定値##---------------------------------- SWX2200 のファームウェア格納場所
firmware_file = "usb1:/swx2200.bin"-- ★

-- このスクリプトが出力する SYSLOG のレベル (info, debug, notice)
log_level = "info"-- ★
----------------------## 設定値ここまで##----------------------------------------------------------------------------------------- スイッチのリビジョンが変更されているか確認する関数----- 【戻り値】--- リビジョンアップ成功: true, 実行後のリビジョン番号--- リビジョンアップ失敗: false, エラーメッセージ------------------------------------------------------------function check_revup(route, wait)
local cmd = "switch control function get firmware-revision " .. route
local rtn, str
rt.sleep(wait)
rtn, str = rt.command(cmd)
if not rtn or str:match("エラ") thenif wait > 100 then-- 100 秒後リビジョンアップが確認できない場合エラーを返す
return false, str
else-print("[debug]Revup 確認エラー。10 秒後に再確認")
return check_revup(route, wait + 10)
end
end
return true, str
endrevup.lua (2/3)------------------------------------------------------------- スイッチのリビジョンアップを実行する関数----- 【戻り値】--- リビジョンアップ成功: true, 実行後のリビジョン番号--- リビジョンアップ失敗: false, エラーメッセージ------------------------------------------------------------function exec_revup(route, rev_str)
local cmd_get_rev = "switch control function get firmware-revision " .. route
local cmd_revup = "switch control firmware upload go " .. firmware_file .. " " .. route
local rtn, str
rtn, str = rt.command(cmd_get_rev)
if not rtn or str:match("エラ") thenreturn false, str
end
if rev_str thenif str:match(rev_str) thenreturn true, str
end
end
rtn, str = rt.command(cmd_revup)
if not rtn or str thenreturn false, str
end-- リビジョンアップが正常に行われたか確認
rtn, str = check_revup(route, 30)
if not rtn thenreturn false, str
end
return true, str
end------------------------------------------------------------- 制御スイッチの経路情報を取得する関数------------------------------------------------------------function get_switch_route(tbl)-- local route_ptn = "経路%s+:%s(.+)"
local route_ptn = "%[(.+)%]"
local rtn, str
rtn, str = rt.command("show status switch control")if not rtn or not str thenreturnend
for i in each(str:split("\r\n")) do
if i:match(route_ptn) thentable.insert(tbl, 1, i:match(route_ptn))
end
end
end

revup.lua (3/3)------------------------------------------------------------- メインルーチン------------------------------------------------------------local sw_tbl = {}local rtn, str
local new_revision-- 引数がある場合、引数と現在のリビジョン番号を比較。一致した場合 Revup を行わない
if arg[1] thennew_revision = arg[1]end
get_switch_route(sw_tbl)
if not sw_tbl thenrt.syslog(log_level, "スイッチが見つかりませんでした。\r\n スクリプトを停止します。")
returnend-- スイッチをひとつずつリビジョンアップ
for i, v in ipairs(sw_tbl) do
rt.syslog(log_level, "スイッチ[" .. v .. "]のリビジョンアップを実行(" .. i .. "/" .. #sw_tbl .. ")")
rtn, str = exec_revup(v, new_revision)
if not rtn thenrt.syslog(log_level, "スイッチ[" .. v .. "]のリビジョンアップ中にエラーが発生しました。\r\n".. str .. "\r\n スクリプトを停止します。")
returnend
rt.syslog(log_level, "スイッチ[" .. v .. "]のリビジョンアップが正常に行われました。\r\n 現在のリビジョン：" .. str)end
rt.syslog(log_level, #sw_tbl .. "台のスイッチのリビジョンアップが全て正常に行われました。")