説明

ネットワーク装置の制御ソフトウェアの更新

【課題】 複数の制御ソフトウェアの更新をより確実に行う技術を提供する。
【解決手段】 ネットワーク装置は、互いに通信チャンネルで結合された第1と第2の制御部を有し、第1の制御部によってネットワークに接続されている。第2の制御部は、第1の制御ソフトウェアの更新に使用される第1の更新データと、第2の制御ソフトウェアの更新に使用される第2の更新データと、に関する更新データ情報を取得する。第2の制御部は、取得された更新データ情報と、第1の制御ソフトウェアに関する第1の保有データ情報と、第2の制御ソフトウェアに関する第2の保有データ情報とを比較することによって、第1と第2の制御ソフトウェアのそれぞれの更新の要否を判断する。第2の制御部は、第1と第2の制御ソフトウェアのうち、更新が必要と判断された制御ソフトウェアを更新する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ネットワーク装置の制御ソフトウェアを更新する技術に関する。
【背景技術】
【0002】
ネットワークプリンタやネットワーク対応のスキャナ・プリンタ・コピー複合機(以下、単に「複合機」と呼ぶ)等のネットワーク装置では、プリンタや複合機としての機能を実現するための制御部と、ネットワークに関する処理を実行する制御部と、を別個に設け、これらの2つの制御部を通信チャンネルで結合することが行われる。これらの制御部の機能は、通常、各制御部に設けられた中央処理装置が各制御部のROMに格納された制御ソフトウェア(コンピュータプログラム)を実行することにより実現される。このような制御ソフトウェア(「ファームウェア」と呼ばれる)は、各制御部の機能の改良等のため更新される場合がある。
【0003】
【特許文献1】特開2004−272770号公報
【0004】
しかしながら、各制御部のファームウェアを必要に応じて更新するためには、ユーザが、各制御部のファームウェアのそれぞれについて格納されているファームウェアと更新用ファームウェアとを比較して、更新の要否を判断することが必要となる場合がある。このような判断は必ずしも容易ではなく、必要なファームウェアの更新がされない場合もある。
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明は、上述した従来の課題を解決するためになされたものであり、複数の制御ソフトウェアの更新をより確実に行う技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的の少なくとも一部を達成するために、本発明の制御ソフトウェアの更新方法は、第1の制御ソフトウェアを用いて制御を実行する第1の制御部と、第2の制御ソフトウェアを用いて制御を実行する第2の制御部と、を有し、前記第1と第2の制御部は互いに通信チャンネルで結合されており、前記第1の制御部によってネットワークに接続されるネットワーク装置の制御ソフトウェアの更新方法であって、前記第2の制御部が、前記第1の制御ソフトウェアの更新に使用される第1の更新データと、前記第2の制御ソフトウェアの更新に使用される第2の更新データと、に関する更新データ情報を取得し、前記第2の制御部が、前記第1の制御部が保有する前記第1の制御ソフトウェアに関する第1の保有データ情報と、前記第2の制御部が保有する前記第2の制御ソフトウェアに関する第2の保有データ情報と、を取得して、前記更新データ情報と前記第1と第2の保有データ情報とを比較することによって前記第1と第2の制御ソフトウェアのそれぞれの更新の要否を判断し、前記第2の制御部が、前記第1と第2の制御ソフトウェアのうち、更新が必要と判断された制御ソフトウェアを更新することを特徴とする。
【0007】
この構成によれば、第1の制御ソフトウェアと第2の制御ソフトウェアとの更新の要否が、更新データ情報と、第1と第2の保有データ情報とに基づいて第2の制御部により判断される。そのため、第1と第2の制御ソフトウェアのそれぞれの必要に応じた更新をより確実におこなうことができる。
【0008】
前記ネットワークには、前記第1の更新データと、前記第2の更新データと、前記更新データ情報と、のそれぞれを提供可能な少なくとも1つのデータ保管サーバが接続されており、前記制御ソフトウェアの更新方法は、(a)前記第2の制御部が、前記少なくとも1つのデータ保管サーバから提供される前記更新データ情報を前記第1の制御部を介して取得する工程と、(b)前記第2の制御部が、前記第1の制御部が保有する前記第1の制御ソフトウェアに関する第1の保有データ情報を取得する工程と、(c)前記第2の制御部が、前記第1の保有データ情報と前記更新データ情報とを比較して、前記第1の制御ソフトウェアの更新の要否を判断する工程と、(d)前記工程(c)において、前記第1の制御ソフトウェアの更新が必要であると判断された場合、前記第2の制御部が、前記少なくとも1つのデータ保管サーバから提供される前記第1の更新データを前記第1の制御部を介して取得し、取得した前記第1の更新データを前記通信チャンネルを介して前記第1の制御部に転送し、前記第1の制御部に前記第1の更新データを用いて前記第1の制御ソフトウェアを更新させる工程と、(e)前記第2の制御部が、前記第2の制御部が保有する前記第2の制御ソフトウェアに関する第2の保有データ情報を取得する工程と、(f)前記第2の制御部が、前記第2の保有データ情報と前記更新データ情報とを比較して、前記第2の制御ソフトウェアの更新の要否を判断する工程と、(g)前記工程(f)において、前記第2の制御ソフトウェアの更新が必要であると判断された場合、前記第2の制御部が、前記少なくとも1つのデータ保管サーバから提供される前記第2の更新データを前記第1の制御部を介して取得し、取得した前記第2の更新データを用いて前記第2の制御ソフトウェアを更新する工程と、を備えるものとしてもよい。
【0009】
この構成によれば、データ保管サーバは、第1と第2の更新データと、更新データ情報と、を提供することができる。そのため、より新しい更新データと更新データ情報とをデータ保管サーバに格納することにより、ネットワーク装置の制御ソフトウェアをより新しいものに更新することができる。
【0010】
前記工程(e)ないし(g)は、前記工程(a)ないし(d)の実行の後に実行され、 前記第1の制御部は、前記第1の制御ソフトウェアを格納するための複数の格納領域を有しており、前記工程(d)において、前記複数の格納領域のうちの制御の実行に使用する前記第1の制御ソフトウェアの格納領域とは異なる領域に格納された前記第1の制御ソフトウェアを、前記第2の制御部から転送された前記第1の更新データにより更新するものとしてもよい。
【0011】
この構成によれば、第1の制御ソフトウェアの更新後の第1の制御部の再起動を省略し、第1の制御ソフトウェアの更新処理に続いて第2の制御ソフトウェアの更新処理が実行できるので、制御ソフトウェアの更新に要する時間をより短縮することができる。
【0012】
前記第1の制御部は、前記工程(d)において、前記少なくとも1つのデータ保管サーバに前記第1の更新データの全体を複数回に分けて提供することを要求する複数のメッセージを送信し、前記複数のメッセージのそれぞれに対して前記少なくとも1つのデータ保管サーバから提供される前記第1の更新データを取得し、前記第1の更新データの全体を取得するまで待つことなく、前記少なくとも1つのデータ保管サーバから提供された第1の更新データを順次前記第2の制御部に転送するものとしてもよい。
【0013】
この構成によれば、第1の制御部の記憶装置の容量を第1の更新データ全体の大きさよりも小さくすることができるので、第1の制御部の記憶装置の容量が第1の更新データ全体を格納するために増大することを抑制することができる。
【0014】
前記第1の制御部は、前記工程(g)において、前記少なくとも1つのデータ保管サーバに前記第2の更新データの全体を複数回に分けて提供することを要求する複数のメッセージを送信し、前記複数のメッセージのそれぞれに対して前記少なくとも1つのデータ保管サーバから提供される前記第2の更新データを取得し、前記第2の更新データの全体を取得するまで待つことなく、前記少なくとも1つのデータ保管サーバから提供された第2の更新データを順次前記第2の制御部に転送するものとしてもよい。
【0015】
この構成によれば、第1の制御部の記憶装置の容量を第2の更新データ全体の大きさよりも小さくすることができるので、第1の制御部の記憶装置の容量が第2の更新データ全体を格納するために増大することを抑制することができる。
【0016】
前記ネットワーク装置は、ユニバーサルプラグアンドプレイ対応のネットワーク装置であって、前記制御ソフトウェアの更新方法は、さらに、前記第2の制御部が、前記制御ソフトウェアの更新シーケンスの所定のタイミング以降は、前記第2の制御部を前記制御ソフトウェアの更新以外の処理要求を受け付けない状態にする工程を備えるものとしてもよい。
【0017】
この構成によれば、制御ソフトウェアの更新中は、制御ソフトウェアの更新以外の処理要求を受け付けない状態となるので、制御ソフトウェアの更新処理を確実に実行することができる。
【0018】
なお、本発明は、種々の態様で実現することが可能であり、例えば、ネットワーク装置、ネットワーク装置の制御プログラム更新装置、方法およびシステム、それらの装置、方法またはシステムの機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の態様で実現することができる。
【発明を実施するための最良の形態】
【0019】
次に、本発明の実施の形態を実施例に基づいて以下の順序で説明する。
A.システムの概要:
B.複合機の構成:
C.ファームウェアの更新:
D.変形例:
【0020】
A.システムの概要:
図1は、本発明の一実施例としてのネットワークシステム100の構成を示す説明図である。このネットワークシステム100は、デジタルテレビ110と、ルータ120と、複合機200とがローカルエリアネットワーク(LAN)を介して相互に接続された構成を有している。LANに接続されたルータ120は、インターネットINETを介して、ファームウェア保管サーバ130に接続されている。LANは、IEEE802.3のような有線ネットワークでも、IEEE802.11b/g/aなどの無線ネットワークでもよい。
【0021】
デジタルテレビ110は、LANを介してHTML(HyperText Markup Language)で記述されたHTMLデータを取得し、ブラウザを用いてこのHTMLデータで表されるWebページを表示する機能を有している。
【0022】
複合機200は、ネットワークユニット300と、デバイスユニット400とを有している。ネットワークユニット300は、LAN上の他の装置とデバイスユニット400との間で交換されるメッセージを仲介するネットワークプロトコル制御部302としての機能を有している。
【0023】
ネットワークユニット300は、HTTPサーバおよびHTTPクライアントとしての機能を有している。後述するように、ネットワークユニット300は、LANから転送されるHTTPに基づいたメッセージのヘッダを解釈してデバイスユニット400に転送し、デバイスユニット400から転送されるメッセージにHTTPに基づいたヘッダを付加してLANに転送する。なお、ネットワークユニット300は、ネットワークに関する種々の制御を行う一種の制御部である。
【0024】
デバイスユニット400は、サービスデバイスとしてのプリンタ404及びスキャナ406と、これらを制御するデバイス制御部402とを備えている。また、プリンタ404及びスキャナ406以外のサービスも追加することができる。サービスデバイスとしては、プリンタ404やスキャナ406を単独で、あるいはその他のサービスデバイス単独で存在させることも可能である。ネットワークユニット300とデバイスユニット400との間は、USB(Universal Serial Bus)で接続されている。但し、両者の間をUSB以外の他の物理的インタフェースで接続することも可能である。なお、デバイスユニット400は、プリンタ404やスキャナ406等の複合機200の主要な機能を実行する一種の制御部である。
【0025】
なお、デジタルテレビ110及び複合機200は、UPnP(Universal Plug and Play。UPnPは、UPnP Implementers Corporationの商標)対応のネットワーク装置として構成することも可能である。この場合、複合機200のネットワークユニット300は、UPnPで使用される種々のネットワークプロトコルを解釈しデバイスユニット400に転送する。これにより、複合機200は、UPnPで使用可能な各種機能をデジタルテレビ110に提供することができる。
【0026】
デジタルテレビ110及び複合機200がUPnP対応のネットワーク装置となっている場合、デジタルテレビ110は、UPnPの機能によりHTMLデータである複合機200のプレゼンテーションページを取得することができる。このプレゼンテーションページをデジタルテレビ110のブラウザに表示させることにより、複合機200の各種設定を行うユーザインタフェースが表示される。
【0027】
なお、UPnPでは、外部からの要求に応じて印刷や画像スキャン等のサービスを実行するネットワーク装置は「サービスデバイス」あるいは単に「デバイス」とも呼ばれる。また、デバイスによって提供されるサービスを利用するネットワーク装置は「コントロールポイント」とも呼ばれる。図1に示すネットワークシステム100において、デジタルテレビ110と複合機200とがUPnP対応のネットワーク装置として構成されている場合には、複合機200が備えるプリンタ404とスキャナ406とが「デバイス」に相当し、デジタルテレビ110が「コントロールポイント」に相当する。
【0028】
ファームウェア保管サーバ130には、複合機200の制御ソフトウェア(「ファームウェア」と呼ばれる)の更新に使用されるファームウェアデータ(更新データ)と、更新データに関する情報とが格納されている。この複合機200のファームウェアの更新については、後述する。ファームウェア保管サーバ130に格納されたファームウェアデータは、インターネットINETを介してファームウェアデータを提供する。ファームウェアデータの提供は、HTTP(Hypertext Transfer Protocol)に従ってファームウェアデータの送出をファームウェア保管サーバ130のHTTPサーバに要求することにより行われる。なお、本実施例では、ファームウェア保管サーバ130は、HTTPに従ってファームウェアの送出を行っているが、FTP(File Transfer Protocol)等の他のプロトコルに従ってファームウェアの送出を行うことも可能である。
【0029】
B.複合機の構成:
図2は、複合機200の内部構成を示すブロック図である。複合機200は、ネットワークユニット300と、デバイスユニット400と、ネットワークユニット300およびデバイスユニット400に電力を供給する電源回路210と、を備えている。
【0030】
ネットワークユニット300は、中央制御部(CPU)310と、RAM320と、電気的に書込可能なROM(EPROM)330と、ネットワーク制御部340と、USBホスト制御部350とを有している。EPROM330には、ネットワークユニット300のファームウェアが格納されている。このファームウェアは、複合機200の起動時に中央制御部310によりRAM320に転送される。そして、RAM320に転送されたファームウェアを実行することにより、中央制御部310は、ネットワークユニット300が有する種々の機能を実現する。なお、EPROM330としては、フラッシュメモリ等、電気的に書換が可能な任意のEPROMを使用することができる。
【0031】
ネットワーク制御部340は、コネクタ342を介して有線ネットワークに接続される。USBホスト制御部350は、ルートハブ352を有しており、ルートハブ352には2つのUSBコネクタ354,356が設けられている。第1のUSBコネクタ354は、USBケーブルを介してデバイスユニット400のUSBコネクタ462に接続されている。第2のUSBコネクタ356には、追加のデバイス(例えば無線LANネットワークへ通信するための無線通信回路や他のデバイスユニット)を接続可能である。
【0032】
デバイスユニット400は、中央制御部(CPU)410と、RAM420と、EPROM430と、印刷エンジン440と、スキャンエンジン450と、2つのUSBデバイス制御部460,470と、PCカードインタフェース480と、操作パネル制御部490と、ビューワ制御部500と、USBホスト制御部510と、電源回路210を制御する電源制御部520とを有している。EPROM430には、デバイスユニット400のファームウェアが格納されている。中央制御部410は、EPROM430に格納されたファームウェアを実行することにより、デバイスユニット400が有する種々の機能を実現する。なお、EPROM430としては、フラッシュメモリ等、電気的に書換が可能な任意のEPROMを使用することができる。
【0033】
印刷エンジン440は、与えられた印刷データに応じて印刷を実行する印刷機構である。スキャンエンジン450は、画像をスキャンして画像データを生成する機構である。なお、本発明は、複合機200のファームウェア更新に関するものであり、これらの印刷エンジン440とスキャンエンジン450との構成や機能などには影響しないので、その説明を省略する。
【0034】
デバイスユニット400の第1のUSBデバイス制御部460は、USBコネクタ462を介してネットワークユニット300のUSBホスト制御部350に接続されている。第2のUSBデバイス制御部470は、USBコネクタ472を有しており、ここにパーソナルコンピュータなどの任意のUSBホストを接続することが可能である。PCカードインタフェース480は、PCカード用のスロット482を有している。操作パネル制御部490には、入力手段としての操作パネル492が接続されている。ビューワ制御部500には、画像表示手段としてのビューワ502が接続されている。ユーザは、ビューワ502上に表示された画像やメニューを観察しながら、操作パネル492を用いて種々の指示を入力することができる。USBホスト制御部510は、ルートハブ512を有しており、ルートハブ512にはUSBコネクタ514が設けられている。このコネクタ514には、デジタルカメラやハードディスクドライブ(HDD)等のUSBデバイスを接続することが可能である。
【0035】
ネットワークユニット300の中央制御部310とネットワーク制御部340とUSBホスト制御部350は、図1におけるネットワークプロトコル制御部302としての機能を実現する。より具体的には、ネットワーク制御部340は、各種のネットワークプロトコルに従ってメッセージの送受信を行う。また、中央制御部310は、ネットワークプロトコルを解釈して転送先を決定する。USBホスト制御部350は、デバイスユニット400との間でメッセージを転送する。なお、これらの制御部310,340,350は、メッセージボディの解釈や処理は行わずにメッセージを転送している。
【0036】
デバイスユニット400のUSBデバイス制御部460及び中央制御部410は、図1におけるデバイス制御部402としての機能を実現する。より具体的には、USBデバイス制御部460は、USBの転送プロトコルに従ってメッセージの送受信を行う。また、中央制御部410は、ネットワークユニット300を介して転送されたメッセージの内容を解釈し、メッセージの内容に応じた処理を実行して、印刷エンジン440やスキャンエンジン450を動作させる。印刷エンジン440は図1のプリンタ404に相当し、スキャンエンジン450は図1のスキャナ406に対応する。
【0037】
図3は、ネットワークユニット300とデバイスユニット400のファームウェア更新に関する機能の階層構造を示すブロック図である。ネットワークユニット300は、ネットワークプロトコルであるHTTPプロトコルをネットワークユニット300とデバイスユニット400との間の通信に使用されるD4プロトコルに変換するプロトコル変換部1000を備えている。なお、D4プロトコルとは、IEEE1284.4に規定されたパケット(D4パケット)を用いた通信プロトコルである。
【0038】
プロトコル変換部1000は、HTTPプロトコル処理部とD4プロトコル処理部1100の上部の階層において機能する。HTTPプロトコル処理部よりも下部の階層には、下から順番にネットワークインタフェースと、ドライバと、TCP/IPプロトコル処理部とが設けられている。また、D4プロトコル処理部1100よりも下部の階層には、下から順番に、USBホストインタフェース(ハードウェア)と、USBシステムソフトウェアと、プリンタクラス論理インタフェースとが設けられている。
【0039】
デバイスユニット400は、ファームウェアの更新のためのメッセージを解釈し、解釈の結果に応じた処理を実行するためのファームウェア更新処理部2000を備えている。ファームウェア更新処理部2000よりも下部の構造としては、下から順番に、USBデバイスインタフェース(ハードウェア)と、USB論理デバイスと、プリンタクラス論理インタフェースと、D4プロトコル処理部2100とが設けられている。なお、プリンタクラス論理インタフェースとは、プリンタクラスのUSB論理デバイスと上位のプロトコルを仲介するためのインタフェースである。なお、図3の例では、印刷エンジン440やスキャンエンジン450に関連する構成は省略している。
【0040】
図3において、ネットワークユニット300とデバイスユニット400の間には、種々の通信チャンネルが描かれている。これらは、ネットワークユニット300とデバイスユニット400の同一階層間における論理的な接続を示している。D4プロトコル処理部1100,2100の間の5つのチャンネルは、USB転送における論理的なチャンネルである。以下ではまず、USB転送用のチャンネルについて説明する。
【0041】
図4は、USBのインタフェース/エンドポイント構成と論理チャンネルの構成とを示す説明図である。一般に、USBデバイスは、インタフェースとエンドポイントとを有している。USBの転送は、USBのホストとエンドポイントとの間で行われる。すなわち、「エンドポイント」とは、ホストと通信を行う論理的なリソースである。図4(a)の例では、5つのエンドポイントEP#0〜EP#4が示されている。コントロールエンドポイントEP#0は、標準デバイスリクエストの送受信を行うためのエンドポイントである。「標準デバイスリクエスト」とは、すべてのUSBでサポートする必要がある基本的なリクエストである。従って、コントロールエンドポイントEP#0は、1つのUSBデバイスに必ず1つ設けられている。
【0042】
プリンタ用のバルクアウトエンドポイントEP#1とバルクインエンドポイントEP#2は、印刷エンジン440用のメッセージの受信と送信を行うためのエンドポイントである。同様に、スキャナ用のバルクアウトエンドポイントEP#3とバルクインエンドポイントEP#4は、スキャンエンジン450用のメッセージの受信と送信を行うためのエンドポイントである。一般に、USBデバイスでは、コントロールエンドポイントEP#0以外のエンドポイントは、論理的なインタフェース(「デバイスクラス」と呼ばれる)によって区分されている。図4(a)の例では、論理的なインタフェースとして、プリンタインタフェースIF#0とスキャナインタフェースIF#1とが設けられている。
【0043】
本実施例では、図4(b)に示すように、プリンタインタフェースIF#0に7つの論理的なチャンネルが設けられている。これらの論理チャンネルは、いずれもバルクアウトエンドポイントEP#1とバルクインエンドポイントEP#2の両方を利用して双方向通信を行うことができる。論理チャンネルの識別情報は、D4パケットのヘッダに登録される。但し、論理チャンネルの数や区分としては、これ以外の任意のものを採用することができる。
【0044】
図5は、USB転送に用いられるD4パケットの構成を示す説明図である。D4パケットは、6バイトのヘッダ(D4ヘッダ)とボディ部分とを有している。D4ヘッダは、プライマリソケットID(PSID)と、セカンダリソケットID(SSID)と、パケット長と、クレジットと、制御情報とを含んでいる。通常、プライマリソケットIDとセカンダリソケットIDとには、同一の図4(b)に示す論理チャンネルを識別するIDが設定される。D4ヘッダのパケット長には、D4ヘッダを含むD4パケット全体の長さが登録される。クレジットと制御情報には、D4プロトコルにおけるデータの伝送制御を行うための情報が登録される。ボディ部分のデータには、論理チャンネルに応じて種々の情報が格納される。
【0045】
図6は、図4(b)に示した各論理チャンネルで転送されるD4パケットのボディ部分に格納される情報を示す表である。図6の表の第1列には、図4(b)の各論理チャンネルが示されている。図6の表の第2列には、各論理チャンネルのデータ転送方向を示している。第2列の「N」から「D」に向いた矢印は、ネットワークユニット300からデバイスユニット400にデータが転送されることを示しており、「D」から「N」に向いた矢印は、デバイスユニット400からネットワークユニット300にデータが転送されることを示している。図6の表の第3列には、各論理チャンネルで転送されるD4パケットのボディ部分に格納される情報を示している。
【0046】
図6の表に示すように、制御コマンドとそのパラメータは、LOCAL-CONTROLチャンネルとLOCAL-EVENTチャンネルとにより転送される。また、HTMLデータは、UP-PRESENTATIONチャンネルとDOWN-PRESENTATIONチャンネルとにより転送される。これらの4つのチャンネルは、データの内容毎に、ネットワークユニット300からデバイスユニット400への転送を行うチャンネル(LOCAL-CONTROLおよびDOWN-PRESENTATION)と、デバイスユニット400からネットワークユニット300への転送を行うチャンネル(LOCAL-EVENTおよびUP-PRESENTATION)と、に区分されている。
【0047】
DOWN-CONTENTチャンネルは、ネットワークユニット300からデバイスユニット400に種々のデータを転送するために設けられている。PRINT-DATAチャンネルとPRINT-STATUSチャンネルとは、印刷エンジン440とネットワークユニット300との間のデータ転送を行うチャンネルである。
【0048】
図7は、ネットワークユニット300を介したデータ転送処理の一例を示すシーケンス図である。図7の例は、デジタルテレビ110がそのブラウザ上で表示するためのHTMLデータを取得する様子を示している。このとき、デジタルテレビ110と、ネットワークユニット300と、デバイスユニット400との間で種々のメッセージが転送される。
【0049】
ステップ[1]では、デジタルテレビ110がHTTPのリクエストメッセージF1をネットワークユニット300に送信する。メッセージF1のヘッダには、リクエスト命令(GETやPOSTなどのメソッド)と、取得するHTMLデータのデバイスユニット400における固有の位置を示す識別子URI(Uniform Resource Identifier)と、複合機200のIPアドレス(この例では192.168.123.123)とが記述されている。以下、本明細書において、このようにリクエスト命令GETを含むHTTPのリクエストメッセージを単に「GETリクエスト」とも呼び、他のリクエスト命令(POST等)についても同様に呼ぶ。なお、HTTPのリクエスト命令の種類によっては、メッセージF1には送信データが含まれる。
【0050】
ステップ[2]では、ネットワークユニット300が、リクエストメッセージF1を解析する。図7の例では、ネットワークユニット300は、リクエストメッセージF1を解析することにより、HTTPのリクエスト命令がURIで示されるHTMLデータを取得するためのGETリクエストであると判定する。なお、ネットワークユニット300は、リクエストメッセージF1が送信データを含んでいても、送信データの内容の解釈は行わない。
【0051】
ステップ[3]において、ネットワークユニット300は、LOCAL-CONTROLチャンネルを介して、リクエストID(RequestID)を取得するコマンド(GetRequestID)をデバイスユニット400に送出する。送出されるGetRequestIDコマンドには、そのパラメータとして、HTTPのリクエスト命令の種類(GET)と、取得されるHTMLデータのURIとが付加される。なお、リクエストIDとは、GetRequestIDコマンドに応じてネットワークユニット300とデバイスユニット400との間で送受信されるデータを識別するための識別コードである。
【0052】
ステップ[4]において、デバイスユニット400は、GetRequestIDコマンドに対して応答(Reply)を行う。この応答には、ステップ[3]のGetRequestIDコマンドに応じてデバイスユニット400が送信するHTMLデータ(返信データ)を識別するためのリクエストIDが含まれている。
【0053】
ステップ[5]では、デバイスユニット400が、GetRequestIDコマンドに応じて返信データを準備する。具体的には、デバイスユニット400は、GetRequestIDコマンドのパラメータとして与えられたURIに従って種々の処理を行い、その結果としてHTMLデータを生成する。
【0054】
ステップ[6]において、デバイスユニット400は、UP-PRESENTATIONチャンネルを介して、返信メッセージR1をネットワークユニット300に送出する。なお、返信メッセージR1中には、送信されるHTMLデータがステップ[3]で転送された要求に対応することを示すリクエストIDが含まれる。
【0055】
ステップ[7]において、ネットワークユニット300は、返信メッセージR1からHTMLデータを抽出する。そして、抽出されたHTMLデータにHTTPヘッダを付加する。このHTTPヘッダは、HTTPリクエストの処理結果を示すステータスコードを含んでいる。例えば、処理結果がOKであればステータスコードが”200”に設定され、エラーであれば”500”に設定される。
【0056】
ステップ[8]では、こうして作成されたHTTPのレスポンスメッセージR2がネットワークユニット300からデジタルテレビ110に送信される。
【0057】
C.ファームウェアの更新:
図8は、複合機200のファームウェアの更新の際にデジタルテレビ110のブラウザ上に表示される表示画面を示す説明図である。ユーザは、デジタルテレビ110のブラウザを用いて複合機200のメンテナンスページをブラウザ上に表示させることができる。具体的には、デジタルテレビ110は、メンテナンスページを表すHTMLデータの送信を要求するGETリクエストを複合機200のネットワークユニット300に送信する。デジタルテレビ110は、ネットワークユニット300から返信されるHTTPレスポンス中のHTMLデータで表されるメンテナンスページをブラウザ上に表示する。
【0058】
デジタルテレビ110が、メンテナンスページをブラウザ上に表示することにより、ブラウザには複合機200の各種設定を行うためのユーザインタフェースが表示される。なお、デジタルテレビ110と複合機200とのいずれもがUPnP対応ネットワークデバイスとして構成されている場合、複合機200がコントロールポイントに通知するプレゼンテーションページを用いて、デジタルテレビ110は、メンテナンスページをブラウザ上に表示することができる。
【0059】
図8(a)は、複合機200のメンテナンスページがデジタルテレビ110のブラウザ上に表示されている様子を示している。図8(a)に示すように、メンテナンスページにより形成されるユーザインタフェースUI1には、プリンタのノズルの状態をチェックを指示するためのボタンBEX1と、プリンタのノズルのクリーニングを指示するためのボタンBEX2と、複合機200のファームウェアの更新を指示するためのボタンBEX3と、メンテナンスの処理の中止を指示するための中止ボタンBCN1とが、表示されている。
【0060】
ユーザがユーザインタフェースUI1に表示されたボタンBEX1を操作すると、デジタルテレビ110は、複合機200のネットワークユニット300にプリンタのノズル状態をチェックするためのページの送信を要求するHTTPリクエストを送信する。複合機200は、このHTTPリクエストに応じて、プリンタのノズル状態をチェックし、その結果を表すページをデジタルテレビ110に返信する。同様に、ボタンBEX2の操作により、デジタルテレビ110は、複合機200のネットワークユニット300にプリンタのノズルをクリーニングするためのページの送信を要求するHTTPリクエストを送信する。複合機200は、このHTTPリクエストに応じて、ノズルのクリーニングのためのページをデジタルテレビ110に返信する。
【0061】
ユーザがユーザインタフェースUI1に表示されたボタンBEX3を操作すると、デジタルテレビ110は、複合機200のネットワークユニット300にファームウェア更新のためのページの送信を要求するHTTPリクエストを送信する。
【0062】
図9は、デジタルテレビ110が複合機200のネットワークユニット300にファームウェア(FW)更新のためのページの送信を要求するHTTPリクエストを送信する際の処理の様子を示すシーケンス図である。
【0063】
ステップ[CF1]において、デジタルテレビ110は、ネットワークユニット300にファームウェア更新ページの送信を要求する。具体的には、デジタルテレビ110は、ページの送信を要求する内容を表すGETメソッドと、ファームウェア更新ページを指定するURIとを含むHTTPのリクエストメッセージをネットワークユニット300に送信する。
【0064】
ステップ[CF1]でHTTPリクエストがネットワークユニット300に送信されると、ステップ[CF2]において、ネットワークユニット300は、LOCAL-CONTROLチャンネルを介して、GetRequestIDコマンドをデバイスユニット400に送出する。図9の例では、GetRequestIDコマンドには、リクエスト命令がHTMLデータの送信を要求するGETリクエストであることと、送信が要求されているHTMLデータがファームウェア更新ページを示すURIであることを表すパラメータが付加されている。ステップ[CF2]のGetRequestIDコマンドに対して、デバイスユニット400は、ステップ[CF3]において、リクエストIDを含む応答を行うとともに、デバイスユニット400をファームウェアの更新以外の処理要求を受け付けない状態にする。
【0065】
ステップ[CF4]において、デバイスユニット400は、ファームウェア更新ページの送信要求に対して、返信するHTMLデータを生成する。本実施例において、ステップ[CF4]では、ユーザにファームウェアの更新の実行可否を確認する更新確認ページを表すHTMLデータが生成される。更新確認ページを表すHTMLデータは、ステップ[CF5]でネットワークユニット300に送出される。ネットワークユニット300は、ステップ[CF6]において、更新確認ページを表すHTMLデータにHTTPヘッダを付加した後、HTTPレスポンスとしてメッセージをデジタルテレビ110に送信する。
【0066】
図8(b)は、図9のステップ[CF6]においてデジタルテレビ110に送信された更新確認ページがデジタルテレビ110のブラウザ上に表示されている様子を示している。更新確認ページにより、デジタルテレビ110のブラウザ上には、ファームウェアの更新の実行可否を確認するためのユーザインタフェースUI2が表示される。
【0067】
図8(b)に示すユーザインタフェースUI2には、ファームウェア更新の開始を指示する開始ボタンBSTと、ファームウェア更新の中止を指示する中止ボタンBCN2とが表示されている。ユーザが、中止ボタンBCNを操作すると、デジタルテレビ110は、メンテナンスページを表示するため、メンテナンスページを表すHTMLデータ送信を要求するHTTPリクエストを複合機200に送信する。これにより、デジタルテレビ110のブラウザには、図8(a)に示すメンテナンスページが表示される。
【0068】
ユーザが、開始ボタンBSTを操作すると、デジタルテレビ110は、複合機200のネットワークユニット300に対してファームウェア更新を開始する指示を送信する。本実施例においては、このファームウェア更新開始の指示も、HTTPのリクエストとして複合機200のネットワークユニット300に送信される。
【0069】
図10は、デジタルテレビ110が複合機200のネットワークユニット300にファームウェア更新を開始する指示をHTTPリクエストとして送信する際の処理の様子を示すシーケンス図である。
【0070】
ステップ[ST1]において、デジタルテレビ110は、ネットワークユニット300にユーザによる指示を送信する。具体的には、デジタルテレビ110は、ファームウェア更新CGI(Common Gateway Interface)にユーザの指示に関する情報を含むHTMLデータ(ファームウェア更新指示フォーム)を渡すように、HTTPのPOSTリクエストをネットワークユニット300に送信する。このPOSTリクエストには、ファームウェア更新指示フォームが含まれている。ここで、ファームウェア更新CGIとは、デバイスユニット400上でユーザの指示を解析し、解析内容に応じて処理を実行する一種のコンピュータプログラムである。
【0071】
ステップ[ST2]において、ネットワークユニット300は、LOCAL-CONTROLチャンネルを介して、GetRequestIDコマンドをデバイスユニット400に送出する。図10の例では、GetRequestIDコマンドには、デジタルテレビ110からのHTTPリクエストがPOSTリクエストであることと、実行されるファームウェア更新CGIを示すURIとがパラメータとして付加されている。ステップ[ST2]のGetRequestIDコマンドに対して、デバイスユニット400は、ステップ[ST3]において、リクエストIDを含む応答を行う。
【0072】
ステップ[ST4]において、デバイスユニット400は、ファームウェア更新CGIの実行を開始する。デバイスユニット400は、ステップ[ST5]において、ネットワークユニット300からファームウェア更新指示フォームを取得する。取得されたファームウェア更新指示フォームは、ファームウェア更新CGIにより解析される。ファームウェア更新指示フォームの解析により、ユーザの指示がファームウェア更新を中止する指示であると判定された場合には、処理は中止される。なお、ファームウェア更新処理が中止されると、デバイスユニット400は、デバイスユニット400をファームウェアの更新以外の処理要求を受け付ける状態にする。
【0073】
一方、ユーザの指示がファームウェア更新を実行する指示であると判定された場合には、処理が続行される。この場合、デバイスユニット400は、ユーザにファームウェア更新を開始したことを通知する更新開始ページを生成するとともに、ファームウェアの更新処理を開始する。なお、HTMLで記述された更新開始ページには、ブラウザに定期的(例えば、1秒ごと)にファームウェア更新ページを取得させるための指示が含まれている。
【0074】
ステップ[ST6]において、デバイスユニット400は、生成された更新開始ページをネットワークユニット300に送出する。そして、ステップ[ST7]において、ネットワークユニット300は、HTTPヘッダが付加された更新開始ページをデジタルテレビ110に送信する。
【0075】
図8(c)は、図10のステップ[ST7]においてデジタルテレビ110に送信された更新開始ページがデジタルテレビ110のブラウザ上に表示されている様子を示している。図8(c)に示すように、デジタルテレビ110のブラウザ上には、ファームウェアの更新を開始したことをユーザに通知するユーザインタフェースUI3が表示される。
【0076】
図11は、更新開始ページに含まれる指示により、デジタルテレビ110のブラウザが定期的にファームウェア更新ページを取得する際のシーケンス図である。図11に示すシーケンスは、ステップ[SM4]においてデバイスユニット400で生成されるデジタルテレビに返信されるHTMLデータが更新確認ページから状態表示ページとなっている点で、図9に示すシーケンスと異なっている。他の点は、図9に示すシーケンスと同じであるので、ここではその説明は省略する。
【0077】
図12は、図11に示すシーケンスにおいてデジタルテレビ110のブラウザに表示される状態表示ページを示している。ファームウェアの更新が開始されると、デジタルテレビ110のブラウザには、図12(a)に示すファームウェアの更新中であることをユーザに通知するユーザインタフェースUI4がデジタルテレビ110のブラウザに表示される。なお、図12(b)に示す複合機200の電源をオフにすることをユーザに通知するユーザインタフェースUI5がデジタルテレビ110のブラウザに表示される場合については、後述する。
【0078】
図13は、ファームウェアの更新を実行するファームウェア更新実行ルーチンを示すフローチャートである。なお、図13に示すフローチャートの左側の各ステップS100〜S330は、デバイスユニット400が実行を制御するステップを示し、右側のステップS520は、ネットワークユニット300が実行を制御するステップを示している。
【0079】
ステップS100において、デバイスユニット400は、ファームウェア保管サーバ130(図1)に格納されているファームウェアデータ情報を取得する。図14は、ステップS100においてファームウェアデータ情報を取得する様子を示すシーケンス図である。図14に示すように、ステップS100では、ファームウェア保管サーバ130と、ネットワークユニット300と、デバイスユニット400と、の間でデータの転送が行われる。
【0080】
図14のステップ[GL1]において、デバイスユニット400は、LOCAL-EVENTチャンネルを介してネットワークユニット300にGetRequestIDコマンドを送出する。ステップ[GL1]で送出されるGetRequestIDコマンドには、予めデバイスユニット400に記録されたファームウェアデータ情報の所在を示すURIと、ファームウェアデータ情報を取得するためのリクエスト命令(GET)が付加されている。
【0081】
ステップ[GL2]において、ネットワークユニット300は、ステップ[GL1]で受け取ったコマンドGetRequestIDに応答する。そして、ステップ[GL3]において、ファームウェアデータ情報の送出を要求するGETリクエストをファームウェア保管サーバ130に送信する。
【0082】
ステップ[GL4]において、ファームウェア保管サーバ130は、ステップ[GL3]で受け取ったHTTPリクエストに応じたHTTPレスポンスとして、ファームウェアデータ情報をネットワークユニット300に送信する。
【0083】
ステップ[GL5]において、ネットワークユニット300は、ステップ[GL4]でファームウェア保管サーバ130から受信したファームウェアデータ情報をDOWN-CONTENTチャンネルを介してデバイスユニット400に転送する。転送されたファームウェアデータ情報は、ステップ[GL6]において、デバイスユニット400のRAM420(図2)に格納される。
【0084】
図15は、ステップS100において取得されるファームウェアデータ情報FDIの例を示す説明図である。図15に示すように、ファームウェアデータ情報FDIには、公開日付と、ファームウェアのバージョン番号と、ファームウェアデータの所在を示すURIと、バージョンアップ内容の説明と、が格納されている。ファームウェアデータ情報FDIのうち、ファームウェアのバージョン番号とファームウェアデータのURIとしては、ネットワークユニット300とデバイスユニット400のそれぞれのファームウェアについての情報が格納されている。
【0085】
図13のステップS200において、デバイスユニット400は、ネットワークユニット300のファームウェアの更新の要否を判断する。具体的には、デバイスユニット400は、ステップS100で取得したファームウェアデータ情報を解析することにより、ファームウェア保管サーバ130に格納されたネットワークユニット300の更新用ファームウェアのバージョン番号を取得する。取得された更新用ファームウェアのバージョン番号と、複合機200の起動時にネットワークユニット300から通知される使用中のファームウェアのバージョン番号とが、デバイスユニット400により比較される。この使用中のファームウェアは、ネットワークユニット300が保有するファームウェアであるので、ネットワークユニット300の保有ファームウェアとも言うことができる。
【0086】
ネットワークユニット300の更新用ファームウェアのバージョン番号が使用中のファームウェアのバージョン番号よりも大きい場合、デバイスユニット400は、ネットワークユニット300のファームウェアの更新が必要であると判断し、制御がステップS210に移される。一方、更新用ファームウェアのバージョン番号が使用中のファームウェアのバージョン番号以下の場合、デバイスユニット400は、ネットワークユニット300のファームウェアの更新が不要であると判断し、制御はステップS300に移される。
【0087】
ステップS210において、デバイスユニット400は、ファームウェア保管サーバ130(図1)からネットワークユニット300のファームウェアデータを取得し、デバイスユニット400のRAM420(図2)に格納する。
【0088】
図16は、ステップS210においてネットワークユニット300のファームウェアデータを取得する様子を示すシーケンス図である。図16に示すシーケンスは、ファームウェア情報データに換えてネットワークユニット300のファームウェアデータがファームウェア保管サーバ130から取得される点と、ステップ[GN3]で送信されるGETリクエストにレンジリクエストヘッダ(Range:bytes=xxxx-yyyy)が付加されている点と、で図14に示すシーケンスと異なっている。他の点は、図14に示すシーケンスと同じである。ステップ[GN1]のGetRequestIDコマンドで指定されるネットワークユニット300のファームウェアデータのURIは、デバイスユニット400がファームウェア情報データを解析することによって取得される。
【0089】
ステップ[GN3]において、ネットワークユニット300は、レンジリクエストヘッダが付加されたGETリクエストをファームウェア保管サーバ130に送信し、ネットワークユニット300のファームウェアデータの送出を要求する。通常、ネットワークユニット300が稼働しているときのRAM320(図2)の空き容量は、ネットワークユニット300のファームウェアデータよりも小さい。そのため、ステップ[GN3]で送信されるGETリクエストでは、レンジリクエストヘッダにより転送されるファームウェアデータの範囲が指定され、転送されるデータの大きさが制限されている。ファームウェア保管サーバ130は、ネットワークユニット300のファームウェアデータのうちレンジリクエストヘッダで指定された範囲のデータを送信する。なお、本実施例では、ネットワークユニット300がレンジリクエストヘッダをGETリクエストに付加することにより送信されるファームウェアデータの範囲を指定しているが、ファームウェア保管サーバ130が送信範囲を指定するものとしてもよい。
【0090】
ステップ[GN3]でファームウェア保管サーバ130に送信されるGETリクエストでは、レンジリクエストヘッダにより送信されるファームウェアデータの範囲が指定されている。ネットワークユニット300は、ファームウェアデータの全体を順次デバイスユニット400に転送するため、レンジリクエストヘッダのパラメータを適宜変更するとともに、ステップ[GN3]ないしステップ[GN5]を複数回繰り返し実行する。そのため、ファームウェアデータ全体は、複数に分割されて順次デバイスユニット400に転送される。デバイスユニット400は、ステップ[GN5]で転送されるデータを順次RAM420に格納する。これにより、デバイスユニット400のRAM420には、ネットワークユニット300のファームウェアデータ全体が格納される。
【0091】
図13のステップS220において、デバイスユニット400は、RAM420に格納されたネットワークユニット300のファームウェアデータをネットワークユニット300に転送する。ステップS520において、ネットワークユニット300は、ステップS220で転送されるファームウェアデータにより、ネットワークユニット300のEPROM330(図2)を更新する。なお、2つのステップS220,S520は、デバイスユニット400とネットワークユニット300とで並列に実行される。
【0092】
図17は、2つのステップS220,S520におけるネットワークユニット300のファームウェアデータの転送と、EPROM330の更新の様子を示すシーケンス図である。
【0093】
ステップ[WN1]において、デバイスユニット400は、LOCAL-EVENTチャンネルを介してネットワークユニット300にファームウェアの更新を指示するコマンドを送出する。ネットワークユニット300は、ステップ[WN2]において、ステップ[WN1]で受け取ったコマンドに対する応答として、ファームウェアの更新が可能か否かをデバイスユニット400に通知する。デバイスユニット400は、ステップ[WN2]で受け取った応答から、ネットワークユニット300のファームウェアの更新が不可能と判断した場合、ファームウェアの更新処理を終了する。
【0094】
ネットワークユニット300は、ファームウェアの更新が可能な場合、ステップ[WN3]において、ファームウェア更新デーモンの実行を開始する。ここで、ファームウェア更新デーモンとは、USBのcontrol IN/OUTパイプ(図3)を介したデバイスユニット400とのデータ転送と、転送されたデータによるEPROM330の書き換えと、を行うコンピュータプログラムである。なお、control IN/OUTパイプを介したデータの転送は、一般に、コントロール転送と呼ばれる。なお、コントロール転送によるファームウェアの転送には、上述した標準デバイスリクエストとは異なるベンダリクエスト(Vendor Request)が使用される。
【0095】
デバイスユニット400は、ネットワークユニット300のファームウェアの更新が可能と判断した場合、ステップ[WN4]において、ネットワークユニット300のファームウェアデータをコントロール転送によりネットワークユニット300に送出する。ステップ[WN5]において、ネットワークユニット300は、ネットワークユニット300のEPROM330をステップ[WN4]で転送されたファームウェアデータに順次更新する。なお、EPROM330のデータの更新は、EPROM330のうちデータを書き込む領域を消去した後、消去した領域に新しいデータを記録することによって行われる。
【0096】
ステップ[WN5]におけるデータの更新が終了すると、ステップ[WN6]において、ネットワークユニット300は、ネットワークユニット300のファームウェアの更新の終了をコントロール転送によりデバイスユニット400に通知する。
【0097】
図13のステップS300において、デバイスユニット400は、デバイスユニット400のファームウェアの更新の要否を判断する。具体的には、デバイスユニット400は、ステップS100で取得したファームウェアデータ情報を解析することにより、ファームウェア保管サーバ130に格納されたデバイスユニット400の更新用ファームウェアのバージョン番号を取得する。取得された更新用ファームウェアのバージョン番号と、デバイスユニット400のEPROM430に格納されている使用中のファームウェアのバージョン番号とが、デバイスユニット400により比較される。この使用中のファームウェアは、デバイスユニット400が保有するファームウェアであるので、デバイスユニット400の保有ファームウェアとも言うことができる。
【0098】
デバイスユニット400の更新用ファームウェアのバージョン番号が使用中のファームウェアのバージョン番号よりも大きい場合、デバイスユニット400は、デバイスユニット400のファームウェアの更新が必要であると判断し、制御がステップS310に移される。一方、更新用ファームウェアのバージョン番号が使用中のファームウェアのバージョン番号以下の場合、デバイスユニット400は、デバイスユニット400のファームウェアの更新が不要であると判断し、制御はステップS330に移される。
【0099】
図13のステップS310において、デバイスユニット400は、ファームウェア保管サーバ130(図1)からデバイスユニット400のファームウェアデータを取得し、デバイスユニット400のRAM420(図2)に格納する。なお、図13のステップS310が終了すると、図11のステップ[SM4]で生成される状態表示ページは、複合機200の電源をオフにすることをユーザに通知するHTMLデータとなる。そのため、デジタルテレビ110(図1)のブラウザには、図12(b)に示すユーザインタフェースUI5が表示される。
【0100】
図18は、ステップS310においてデバイスユニット400のファームウェアデータを取得する様子を示すシーケンス図である。図18に示すシーケンスは、取得するファームウェアデータがネットワークユニット300のファームウェアデータからデバイスユニット400のファームウェアデータに置き換えられている点で図16に示すシーケンスと異なっている。他の点は、図16に示すネットワークユニット300のファームウェアデータ取得のシーケンスと同じである。ステップ[GD1]のGetRequestIDコマンドで指定されるデバイスユニット400のファームウェアデータのURIは、デバイスユニット400がファームウェア情報データを解析することによって取得される。
【0101】
図13のステップS320において、デバイスユニット400は、RAM420に格納されたデバイスユニット400のファームウェアデータにより、デバイスユニット400のEPROM430(図2)を更新する。
【0102】
図19は、図13のステップS320において、デバイスユニット400のEPROM430を更新する様子を示すシーケンス図である。
【0103】
ステップ[WD1]において、デバイスユニット400は、LOCAL-EVENTチャンネルを介してネットワークユニット300に停止コマンドを送出する。ネットワークユニット300は、ステップ[WD2]において、ステップ[WD1]で受け取った停止コマンドに応答する。
【0104】
ステップ[WD3]では、ネットワークユニット300は、ネットワークユニット300のシャットダウンの準備を行う。具体的には、ネットワークユニット300によって実行される種々のネットワークプロトコルの処理機能を停止する。ネットワークプロトコルの処理機能が停止し、ネットワークユニット300のシャットダウンが可能になると、ネットワークユニット300は、ステップ[WD4]において、デバイスユニット400にシャットダウンコマンドを送出する。デバイスユニット400は、ステップ[WD5]において、ステップ[WD4]で受け取ったシャットダウンコマンドに対して応答する。
【0105】
ステップ[WD6]において、デバイスユニット400は、RAM420からの再起動を行う。具体的には、デバイスユニット400で実行される制御ソフトウェアが、EPROM430に記録されたファームウェアから、図18のステップ[GD6]においてRAM420に格納されたファームウェアに切り替えられる。
【0106】
RAM420からの再起動により、ステップ[WD7]では、USBの切断処理が行われる。ステップ[WD7]でUSBの切断処理が行われると、ネットワークユニット300は、ステップ[WD8]においてシャットダウンされてその機能が停止する。一方、デバイスユニット400は、ステップ[WD9]において、EPROM430の更新を行う。
【0107】
ステップ[WD9]でのEPROM430の更新が完了すると、ステップ[WD10]において、デバイスユニット400は、デバイスユニット400自体のシャットダウン処理を行うとともに、電源制御部520(図2)から電源回路210(図2)にネットワークユニット300およびデバイスユニット400への電力の供給を停止する指示を送出する。電力供給停止の指示により、電源回路210は、ステップ[WD11]において、ネットワークユニット300およびデバイスユニット400への電力供給を停止し、複合機200は電源OFFの状態となる。
【0108】
図13のステップS330において、デバイスユニット400は、ネットワークユニット300とデバイスユニット400とのシャットダウン処理を行う。図20は、ステップS330における、ネットワークユニット300とデバイスユニット400とのシャットダウン処理の様子を示すシーケンス図である。図20に示すシーケンスは、RAM420からの再起動[WD6]とEPROM430の更新[WD9]との2つのステップが省略されている点で、図19に示すシーケンスと異なっている。他の点は、図19のシーケンスと同じである。
【0109】
このように、本実施例では、デバイスユニット400が、ファームウェアデータ情報に格納された更新用ファームウェアのバージョン番号と、ネットワークユニット300とデバイスユニット400とのそれぞれで使用しているファームウェアのバージョン番号とを比較する。そして、ネットワークユニット300とデバイスユニット400とのうち、更新用ファームウェアのバージョン番号が使用中のファームウェアのバージョン番号よりも大きいファームウェアについてファームウェアの更新を行う。そのため、ネットワークユニット300とデバイスユニット400とのファームウェアの更新をより確実に行うとともに、ファームウェア更新に要する時間をより短縮することができる。
【0110】
D.変形例:
なお、この発明は上記実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【0111】
D1.変形例1:
上記実施例では、デバイスユニット400は、ファームウェア更新ページの最初のGETリクエストに応答する図9のステップ[CF3]において、デバイスユニット400をファームウェアの更新以外の処理要求を受け付けない状態にしているが、他のタイミングでファームウェアの更新以外の処理要求を受け付けない状態にするものとしてもよい。処理要求の受付可否の状態変更は、ネットワークユニット300のファームウェア更新を開始する図17のステップ[WN1]や、ネットワークユニット300に停止コマンドを送出する図19のステップ[WD1]等の、ファームウェア更新シーケンスの所定のタイミングで行うことができる。
【0112】
D2.変形例2:
上記実施例では、複合機200のファームウェアの更新処理に関する指示が、ユーザが操作するデジタルテレビ110(図1)から提供されているが、更新処理に関する指示は、他の方法によって提供されるものしても良い。ファームウェアの更新処理に関する指示は、例えば、操作パネル制御部490(図2)がユーザによる操作パネル492(図2)の操作に応じて提供するものとしてもよく、ユーザによる第2のUSBデバイス制御部472(図2)に接続されたパーソナルコンピュータPCの操作に応じてパーソナルコンピュータPCが提供するものとしてもよい。この場合、ビューワ502(図2)やパーソナルコンピュータPCの画面上には、ユーザによる指示を取得し、ユーザに複合機200の状態を通知するためのユーザインタフェースUI1〜UI5(図8,図12)が表示される。
【0113】
ファームウェアの更新処理に関する指示を第2のUSBデバイス制御部472に接続されたパーソナルコンピュータPCが提供する場合、パーソナルコンピュータPCは、ファームウェアデータ情報と、更新に使用されるファームウェアデータとを複合機200に送出することが可能である。この場合、ユーザによる指示の取得(図9,図10)と、ユーザへの通知と(図11)、ファームウェアデータ情報の転送(図14)と、ファームウェアデータの転送(図16,図18)とは、第1のUSBデバイス制御部460に換えて第2のUSBデバイス制御部470を用いて行われるが、これらはいずれもUSBデバイス制御部であることには変わりがない。そのため、複合機200は、使用するデバイス制御部を変更し上記実施例と同一の処理(プロトコル)を実行することでファームウェアの更新をすることができる。なお、パーソナルコンピュータPCから複合機200に送出されるファームウェアデータとしては、パーソナルコンピュータPCがLANを介して取得したデータを順次転送するものとしてもよく、パーソナルコンピュータPCが備える記録媒体に予め格納されたデータを転送するものとしてもよい。
【0114】
D3.変形例3:
上記実施例では、ネットワークユニット300は、EPROM330に格納されたファームウェアをRAM320に転送し、転送したRAM320に格納されたファームウェアにより制御を実行しているが、制御の実行に使用されるファームウェアはEPROM330に格納されたものであってもよい。この場合、ファームウェアの更新の後のネットワークユニット300の再起動が不要となるので、EPROM330が複数のファームウェア格納領域を備え、制御の実行に使用されるファームウェアの格納領域とは異なる領域のファームウェアに対してファームウェアの更新を行うのがより好ましい。
【0115】
D4.変形例4:
上記実施例では、ファームウェアデータ情報に格納されたファームウェア保管サーバ130の更新用ファームウェアのバージョン番号と、複合機200で使用されている使用中のファームウェアのバージョン番号とを比較することによりファームウェアの更新の要否を判断しているが、ファームウェアデータ情報に格納された他の情報に基づいてファームウェアの更新の要否を判断することも可能である。ファームウェアデータ情報と複合機200に格納されたファームウェアとにそれぞれファームウェアの作成日付を格納し、更新用ファームウェアの作成日付と使用中のファームウェアの作成日付とを比較して更新用ファームウェアの作成日付がより遅い場合にファームウェアの更新が必要であると判断してもよい。
【0116】
D5.変形例5:
上記実施例では、ファームウェアデータ情報と、ネットワークユニット300のファームウェアデータと、デバイスユニット400のファームウェアデータと、がいずれも単一のファームウェア保管サーバ130(図1)に格納されているものとしているが、これらのデータの少なくとも1つは、複数のデータ保管サーバに別個に格納されていてもよい。
【0117】
D6.変形例6:
上記実施例では、本発明のファームウェアの更新を複合機200(図2)に適用しているが、本発明は、他のネットワーク装置にも適用することができる。一般に、本発明は、互いに通信チャンネルにより接続された複数の制御部を備え、複数の制御部のうち少なくとも1つの制御部によりネットワークに接続されるネットワーク装置に適用することができる。本発明は、ネットワークプリンタやネットワークスキャナ等の単独でサービスを提供しうるネットワーク装置と、ネットワーク処理機能を持たない装置を接続しその装置の機能をサービスとしてLANに提供するネットワーク装置(例えば、UPnPブリッジ)と、のいずれにも適用することができる。
【図面の簡単な説明】
【0118】
【図1】本発明の一実施例としてのネットワークシステム100の構成を示す説明図。
【図2】複合機200の内部構成を示すブロック図。
【図3】ネットワークユニット300とデバイスユニット400のファームウェア更新に関する機能の階層構造を示すブロック図。
【図4】USBのインタフェース/エンドポイント構成と論理チャンネルの構成とを示す説明図。
【図5】USB転送に用いられるD4パケットの構成を示す説明図。
【図6】各論理チャンネルで転送されるD4パケットのボディ部分に格納される情報を示す表。
【図7】ネットワークユニット300を介したデータ転送処理の一例を示すシーケンス図。
【図8】複合機200のファームウェアの更新の際にデジタルテレビ110のブラウザ上に表示される表示画面を示す説明図。
【図9】デジタルテレビ110がファームウェア更新のためのページの送信を要求するHTTPリクエストを送出する際の処理の様子を示すシーケンス図。
【図10】デジタルテレビ110が複合機200のネットワークユニット300にファームウェア更新を開始する指示をHTTPリクエストとして送信する際の処理の様子を示すシーケンス図。
【図11】更新開始ページに含まれる指示により、デジタルテレビ110のブラウザが定期的にファームウェア更新ページを取得する際のシーケンス図。
【図12】デジタルテレビ110のブラウザに表示される状態表示ページ。
【図13】ファームウェアの更新を実行するファームウェア更新実行ルーチンを示すフローチャート。
【図14】ステップS100においてファームウェアデータ情報を取得する様子を示すシーケンス図。
【図15】ステップS100において取得されるファームウェアデータ情報の例を示す説明図。
【図16】ステップS210においてネットワークユニット300のファームウェアデータを取得する様子を示すシーケンス図。
【図17】ネットワークユニット300のファームウェアデータの転送と、EPROM330の更新の様子を示すシーケンス図。
【図18】デバイスユニット400のファームウェアデータを取得する様子を示すシーケンス図。
【図19】デバイスユニット400のEPROM430を更新する様子を示すシーケンス図。
【図20】ネットワークユニット300とデバイスユニット400とのシャットダウン処理の様子を示すシーケンス図。
【符号の説明】
【0119】
100…ネットワークシステム
110…デジタルテレビ
120…ルータ
130…ファームウェア保管サーバ
200…複合機
210…電源回路
300…ネットワークユニット
302…ネットワークプロトコル制御部
310…中央制御部
320…RAM
330…EPROM
340…ネットワーク制御部
342…コネクタ
350…USBホスト制御部
352…ルートハブ
354,356…USBコネクタ
400…デバイスユニット
402…デバイス制御部
404…プリンタ
406…スキャナ
410…中央制御部
420…RAM
430…EPROM
440…印刷エンジン
450…スキャンエンジン
460,470…USBデバイス制御部
462,472…USBコネクタ
480…PCカードインタフェース
482…スロット
490…操作パネル制御部
492…操作パネル
500…ビューワ制御部
502…ビューワ
510…USBホスト制御部
512…ルートハブ
514…USBコネクタ
520…電源制御部
1000…プロトコル変換部
2000…ファームウェア更新処理部

【特許請求の範囲】
【請求項1】
第1の制御ソフトウェアを用いて制御を実行する第1の制御部と、第2の制御ソフトウェアを用いて制御を実行する第2の制御部と、を有し、前記第1と第2の制御部は互いに通信チャンネルで結合されており、前記第1の制御部によってネットワークに接続されるネットワーク装置の制御ソフトウェアの更新方法であって、
前記第2の制御部が、前記第1の制御ソフトウェアの更新に使用される第1の更新データと、前記第2の制御ソフトウェアの更新に使用される第2の更新データと、に関する更新データ情報を取得し、
前記第2の制御部が、前記第1の制御部が保有する前記第1の制御ソフトウェアに関する第1の保有データ情報と、前記第2の制御部が保有する前記第2の制御ソフトウェアに関する第2の保有データ情報と、を取得して、前記更新データ情報と前記第1と第2の保有データ情報とを比較することによって前記第1と第2の制御ソフトウェアのそれぞれの更新の要否を判断し、
前記第2の制御部が、前記第1と第2の制御ソフトウェアのうち、更新が必要と判断された制御ソフトウェアを更新する、
制御ソフトウェアの更新方法。
【請求項2】
請求項1記載の制御ソフトウェアの更新方法であって、
前記ネットワークには、前記第1の更新データと、前記第2の更新データと、前記更新データ情報と、のそれぞれを提供可能な少なくとも1つのデータ保管サーバが接続されており、
前記制御ソフトウェアの更新方法は、
(a)前記第2の制御部が、前記少なくとも1つのデータ保管サーバから提供される前記更新データ情報を前記第1の制御部を介して取得する工程と、
(b)前記第2の制御部が、前記第1の制御部が保有する前記第1の制御ソフトウェアに関する第1の保有データ情報を取得する工程と、
(c)前記第2の制御部が、前記第1の保有データ情報と前記更新データ情報とを比較して、前記第1の制御ソフトウェアの更新の要否を判断する工程と、
(d)前記工程(c)において、前記第1の制御ソフトウェアの更新が必要であると判断された場合、前記第2の制御部が、前記少なくとも1つのデータ保管サーバから提供される前記第1の更新データを前記第1の制御部を介して取得し、取得した前記第1の更新データを前記通信チャンネルを介して前記第1の制御部に転送し、前記第1の制御部に前記第1の更新データを用いて前記第1の制御ソフトウェアを更新させる工程と、
(e)前記第2の制御部が、前記第2の制御部が保有する前記第2の制御ソフトウェアに関する第2の保有データ情報を取得する工程と、
(f)前記第2の制御部が、前記第2の保有データ情報と前記更新データ情報とを比較して、前記第2の制御ソフトウェアの更新の要否を判断する工程と、
(g)前記工程(f)において、前記第2の制御ソフトウェアの更新が必要であると判断された場合、前記第2の制御部が、前記少なくとも1つのデータ保管サーバから提供される前記第2の更新データを前記第1の制御部を介して取得し、取得した前記第2の更新データを用いて前記第2の制御ソフトウェアを更新する工程と、
を備える、制御ソフトウェアの更新方法。
【請求項3】
請求項2記載の制御ソフトウェアの更新方法であって、
前記工程(e)ないし(g)は、前記工程(a)ないし(d)の実行の後に実行され、
前記第1の制御部は、
前記第1の制御ソフトウェアを格納するための複数の格納領域を有しており、
前記工程(d)において、前記複数の格納領域のうちの制御の実行に使用する前記第1の制御ソフトウェアの格納領域とは異なる領域に格納された前記第1の制御ソフトウェアを、前記第2の制御部から転送された前記第1の更新データにより更新する、
制御ソフトウェアの更新方法。
【請求項4】
請求項2または3記載の制御ソフトウェアの更新方法であって、
前記第1の制御部は、前記工程(d)において、
前記少なくとも1つのデータ保管サーバに前記第1の更新データの全体を複数回に分けて提供することを要求する複数のメッセージを送信し、
前記複数のメッセージのそれぞれに対して前記少なくとも1つのデータ保管サーバから提供される前記第1の更新データを取得し、
前記第1の更新データの全体を取得するまで待つことなく、前記少なくとも1つのデータ保管サーバから提供された第1の更新データを順次前記第2の制御部に転送する、
制御ソフトウェアの更新方法。
【請求項5】
請求項2ないし4のいずれか記載の制御ソフトウェアの更新方法であって、
前記第1の制御部は、前記工程(g)において、
前記少なくとも1つのデータ保管サーバに前記第2の更新データの全体を複数回に分けて提供することを要求する複数のメッセージを送信し、
前記複数のメッセージのそれぞれに対して前記少なくとも1つのデータ保管サーバから提供される前記第2の更新データを取得し、
前記第2の更新データの全体を取得するまで待つことなく、前記少なくとも1つのデータ保管サーバから提供された第2の更新データを順次前記第2の制御部に転送する、
制御ソフトウェアの更新方法。
【請求項6】
請求項1ないし5のいずれか記載の制御ソフトウェアの更新方法であって、
前記ネットワーク装置は、ユニバーサルプラグアンドプレイ対応のネットワーク装置であって、
前記制御ソフトウェアの更新方法は、さらに、
前記第2の制御部が、前記制御ソフトウェアの更新シーケンスの所定のタイミング以降は、前記第2の制御部を前記制御ソフトウェアの更新以外の処理要求を受け付けない状態にする工程を備える、制御ソフトウェアの更新方法。
【請求項7】
第1の制御ソフトウェアを用いて制御を実行する第1の制御部と、第2の制御ソフトウェアを用いて制御を実行する第2の制御部と、を有し、前記第1と第2の制御部は互いに通信チャンネルで結合されており、前記第1の制御部によってネットワークに接続されるネットワーク装置であって、
前記第2の制御部は、
前記第1の制御ソフトウェアの更新に使用される第1の更新データと、前記第2の制御ソフトウェアの更新に使用される第2の更新データと、に関する更新データ情報を取得し、
前記第1の制御部が保有する前記第1の制御ソフトウェアに関する第1の保有データ情報と、前記第2の制御部が保有する前記第2の制御ソフトウェアに関する第2の保有データ情報と、を取得して、前記更新データ情報と前記第1と第2の保有データ情報とを比較することによって前記第1と第2の制御ソフトウェアのそれぞれの更新の要否を判断し、
前記第1と第2の制御ソフトウェアのうち、更新が必要と判断された制御ソフトウェアを更新する、
ネットワーク装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2007−80055(P2007−80055A)
【公開日】平成19年3月29日(2007.3.29)
【国際特許分類】
【出願番号】特願2005−268474(P2005−268474)
【出願日】平成17年9月15日(2005.9.15)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】