(57)【特許請求の範囲】
【請求項１】
第１の制御ソフトウェアを用いて制御を実行する第１の制御部と、第２の制御ソフトウェアを用いて制御を実行する第２の制御部と、を有し、前記第１の制御部によってネットワークに接続されるネットワーク装置の制御ソフトウェアの更新方法であって、
前記第１と第２の制御部は、互いに通信チャンネルで結合されており、
前記制御ソフトウェアの更新方法は、
（ａ）前記第１の制御部が、前記ネットワークを介して前記第１の制御ソフトウェアの更新に使用される第１の制御ソフトウェア更新データを取得するとともに、取得した前記第１の制御ソフトウェア更新データを前記通信チャンネルを介して前記第２の制御部に転送する工程と、
（ｂ）前記第２の制御部が、前記第１の制御部から転送される前記第１の制御ソフトウェア更新データを前記第２の制御部が有する記憶装置に格納する工程と、
（ｃ）前記第２の制御部により前記第１の制御ソフトウェア更新データの全体が前記記憶装置に格納された後、前記第２の制御部が、前記通信チャンネルを介して前記第１の制御ソフトウェア更新データを前記第１の制御部に転送する工程と、
（ｄ）前記第１の制御部が、前記第２の制御部から転送される前記第１の制御ソフトウェア更新データを用いて、前記第１の制御ソフトウェアを更新する工程と、
を備える、制御ソフトウェアの更新方法。
【請求項２】
請求項１記載の制御ソフトウェアの更新方法であって、
前記ネットワークには、クライアントからの要求に応じて第１の制御ソフトウェア更新データを提供可能な更新データサーバが接続されており、
前記工程（ａ）は、
前記第１の制御部が、前記更新データサーバに前記ネットワークを介して前記第１の制御ソフトウェア更新データの全体を複数回に分けて提供することを要求する複数のメッセージを送信する工程と、
前記第１の制御部が、前記複数のメッセージのそれぞれに対して前記更新データサーバから提供される前記第１の制御ソフトウェア更新データを取得する工程と、
前記第１の制御部が、前記第１の制御ソフトウェア更新データの全体を取得するまで待つことなく、前記更新データサーバから提供された第１の制御ソフトウェア更新データを順次前記第２の制御部に転送する工程と、
を含む、制御ソフトウェアの更新方法。
【請求項３】
請求項２記載の制御ソフトウェアの更新方法であって、
前記第１の制御部の稼働中の記憶装置の最大空き容量は、前記第１の制御ソフトウェア更新データ全体の大きさよりも小さい、制御ソフトウェアの更新方法。
【請求項４】
請求項１ないし３のいずれか記載の制御ソフトウェアの更新方法であって、さらに、
（ｅ）前記第１の制御部が、前記ネットワークを介して前記第２の制御ソフトウェアの更新に使用される第２の制御ソフトウェア更新データを取得するとともに、取得した前記第２の制御ソフトウェア更新データの前記通信チャンネルを介して前記第２の制御部に転送する工程と、
（ｆ）前記第２の制御部が、前記第１の制御部から転送される前記第２の制御ソフトウェア更新データを前記第２の制御部が有する記憶装置に格納する工程と、
（ｇ）前記第２の制御部により前記第２の制御ソフトウェア更新データの全体が前記記憶装置に格納された後、前記第２の制御部が、前記記憶装置に格納された前記第２の制御ソフトウェア更新データを用いて、前記第２の制御ソフトウェアを更新する工程と、
を備える、制御ソフトウェアの更新方法。
【請求項５】
請求項１ないし４のいずれか記載の制御ソフトウェアの更新方法であって、
前記ネットワーク装置は、ユニバーサルプラグアンドプレイ対応のネットワーク装置であって、
前記制御ソフトウェアの更新方法は、さらに、
前記第２の制御部が、前記制御ソフトウェアの更新シーケンスの所定のタイミング以降は、前記第２の制御部を前記制御ソフトウェアの更新以外の処理要求を受け付けない状態にする工程を備える、制御ソフトウェアの更新方法。
【請求項６】
第１の制御ソフトウェアを用いて制御を実行する第１の制御部と、第２の制御ソフトウェアを用いて制御を実行する第２の制御部と、を有し、前記第１の制御部によってネットワークに接続されるネットワーク装置であって、
前記第１と第２の制御部は、互いに通信チャンネルで結合されており、
前記第２の制御部は、
前記第１の制御ソフトウェアの更新に使用される第１の制御ソフトウェア更新データを格納しうる記憶装置と、
前記第１の制御部により、前記ネットワークを介して取得され、前記通信チャンネルを介して前記第２の制御部に転送された前記第１の制御ソフトウェア更新データを前記記憶装置に格納する更新データ格納部と、
前記第１の制御ソフトウェア更新データの全体が前記記憶装置に格納された後、前記通信チャンネルを介して前記第１の制御ソフトウェア更新データを前記第１の制御部に転送する更新データ転送部と、
を備え、
前記第１の制御部は、前記第２の制御部から転送される前記第１の制御ソフトウェア更新データを用いて、前記第１の制御ソフトウェアを更新する、ネットワーク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワーク装置の制御ソフトウェアを更新する技術に関する。
【背景技術】
【０００２】
ネットワーププリンタやネットワーク対応のスキャナ・プリンタ・コピー複合機（以下、単に「複合機」と呼ぶ）等のネットワーク装置では、プリンタや複合機としての機能を実現するための制御部と、ネットワークに関する処理を実行する制御部と、を別個に設け、これらの２つの制御部を通信チャンネルで結合することが行われる。これらの制御部の機能は、通常、各制御部に設けられた中央処理装置が各制御部のＲＯＭに格納された制御ソフトウェア（コンピュータプログラム）を実行することにより実現される。このような制御ソフトウェア（「ファームウェア」と呼ばれる）は、各制御部の機能の改良等のため更新される場合がある。
【０００３】
ところで、これらのファームウェアは、一部分のみが更新されると、ファームウェアとして機能しなくなり、ネットワーク装置の起動ができなくなるおそれがある。そのため、ファームウェアを更新する場合、更新に使用されるファームウェア全体のデータ（ファームウェアイメージ）を生成し、生成されたファームウェアイメージによりファームウェアを更新することが行われる。
【０００４】
【特許文献１】特開２００４−５４５４号公報
【０００５】
しかしながら、ファームウェアの更新では、電気的に書込可能なＲＯＭ（ＥＰＲＯＭ）にファームウェアイメージを書き込むため、ファームウェアイメージは、一旦、各制御部のＲＡＭに格納される。そのため、各制御部に必要となるＲＡＭの容量は、ファームウェアイメージを格納するため、各制御部がその機能の実現に必要な容量よりも多くなる場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、上述した従来の課題を解決するためになされたものであり、制御ソフトウェアの更新のために必要となる記憶装置の容量の増大を抑制する技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的の少なくとも一部を達成するために、本発明の制御ソフトウェアの更新方法は、第１の制御ソフトウェアを用いて制御を実行する第１の制御部と、第２の制御ソフトウェアを用いて制御を実行する第２の制御部と、を有し、前記第１の制御部によってネットワークに接続されるネットワーク装置の制御ソフトウェアの更新方法であって、前記第１と第２の制御部は、互いに通信チャンネルで結合されており、前記制御ソフトウェアの更新方法は、（ａ）前記第１の制御部が、前記ネットワークを介して前記第１の制御ソフトウェアの更新に使用される第１の制御ソフトウェア更新データを取得するとともに、取得した前記第１の制御ソフトウェア更新データを前記通信チャンネルを介して前記第２の制御部に転送する工程と、（ｂ）前記第２の制御部が、前記第１の制御部から転送される前記第１の制御ソフトウェア更新データを前記第２の制御部が有する記憶装置に格納する工程と、（ｃ）前記第２の制御部により前記第１の制御ソフトウェア更新データの全体が前記記憶装置に格納された後、前記第２の制御部が、前記通信チャンネルを介して前記第１の制御ソフトウェア更新データを前記第１の制御部に転送する工程と、（ｄ）前記第１の制御部が、前記第２の制御部から転送される前記第１の制御ソフトウェア更新データを用いて、前記第１の制御ソフトウェアを更新する工程と、を備えることを特徴とする。
【０００８】
この構成によれば、制御ソフトウェア更新データの全体は、第２の制御部の記憶装置に格納される。そのため、第１の制御部の記憶装置の容量が制御ソフトウェア更新データの全体を格納するために増大することを抑制することができる。
【０００９】
前記ネットワークには、クライアントからの要求に応じて第１の制御ソフトウェア更新データを提供可能な更新データサーバが接続されており、前記工程（ａ）は、前記第１の制御部が、前記更新データサーバに前記ネットワークを介して前記第１の制御ソフトウェア更新データの全体を複数回に分けて提供することを要求する複数のメッセージを送信する工程と、前記第１の制御部が、前記複数のメッセージのそれぞれに対して前記更新データサーバから提供される前記第１の制御ソフトウェア更新データを取得する工程と、前記第１の制御部が、前記第１の制御ソフトウェア更新データの全体を取得するまで待つことなく、前記更新データサーバから提供された第１の制御ソフトウェア更新データを順次前記第２の制御部に転送する工程と、を含むものとしてもよい。
【００１０】
この構成によれば、制御ソフトウェア更新データ全体を複数回に分けて更新データサーバから取得し、第２の制御部の記憶装置に格納することができる。そのため、制御ソフトウェア更新データの転送の必要な第１の制御部の記憶装置の容量を小さくすることができるので、第１の制御部の記憶装置の容量の増大をより抑制することができる。
【００１１】
前記制御ソフトウェアの更新方法は、さらに、（ｅ）前記第１の制御部が、前記ネットワークを介して前記第２の制御ソフトウェアの更新に使用される第２の制御ソフトウェア更新データを取得するとともに、取得した前記第２の制御ソフトウェア更新データの前記通信チャンネルを介して前記第２の制御部に転送する工程と、（ｆ）前記第２の制御部が、前記第１の制御部から転送される前記第２の制御ソフトウェア更新データを前記第２の制御部が有する記憶装置に格納する工程と、（ｇ）前記第２の制御部により前記第２の制御ソフトウェア更新データの全体が前記記憶装置に格納された後、前記第２の制御部が、前記記憶装置に格納された前記第２の制御ソフトウェア更新データを用いて、前記第２の制御ソフトウェアを更新する工程と、を備えるものとしてもよい。
【００１２】
この構成によれば、第１と第２の制御ソフトウェアのいずれをもネットワークを介して更新することができるので、ネットワーク装置の制御ソフトウェアの更新がより容易となる。
【００１３】
前記ネットワーク装置は、ユニバーサルプラグアンドプレイ対応のネットワーク装置であって、前記制御ソフトウェアの更新方法は、さらに、前記第２の制御部が、前記制御ソフトウェアの更新シーケンスの所定のタイミング以降は、前記第２の制御部を前記制御ソフトウェアの更新以外の処理要求を受け付けない状態にする工程を含むものとしてもよい。
【００１４】
この構成によれば、制御ソフトウェアの更新中は、制御ソフトウェアの更新以外の処理要求を受け付けない状態となるので、制御ソフトウェアの更新処理を確実に実行することができる。
【００１５】
なお、本発明は、種々の態様で実現することが可能であり、例えば、ネットワーク装置、ネットワーク装置の制御プログラム更新装置および方法、それらの装置または方法の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の態様で実現することができる。
【発明を実施するための最良の形態】
【００１６】
次に、本発明の実施の形態を実施例に基づいて以下の順序で説明する。
Ａ．システムの概要：
Ｂ．複合機の構成：
Ｃ．ファームウェアの更新：
Ｄ．変形例：
【００１７】
Ａ．システムの概要：
図１は、本発明の一実施例としてのネットワークシステム１００の構成を示す説明図である。このネットワークシステム１００は、デジタルテレビ１１０と、ルータ１２０と、複合機２００とがローカルエリアネットワーク（ＬＡＮ）を介して相互に接続された構成を有している。ＬＡＮに接続されたルータ１２０は、インターネットＩＮＥＴを介して、ファームウェア保管サーバ１３０に接続されている。ＬＡＮは、ＩＥＥＥ８０２．３のような有線ネットワークでも、ＩＥＥＥ８０２．１１ｂ／ｇ／ａなどの無線ネットワークでもよい。
【００１８】
デジタルテレビ１１０は、ＬＡＮを介してＨＴＭＬ（HyperText Markup Language）で記述されたＨＴＭＬデータを取得し、ブラウザを用いてこのＨＴＭＬデータで表されるＷｅｂページを表示する機能を有している。
【００１９】
複合機２００は、ネットワークユニット３００と、デバイスユニット４００とを有している。ネットワークユニット３００は、ＬＡＮ上の他の装置とデバイスユニット４００との間で交換されるメッセージを仲介するネットワークプロトコル制御部３０２としての機能を有している。
【００２０】
ネットワークユニット３００は、ＨＴＴＰサーバおよびＨＴＴＰクライアントとしての機能を有している。後述するように、ネットワークユニット３００は、ＬＡＮから転送されるＨＴＴＰに基づいたメッセージのヘッダを解釈してデバイスユニット４００に転送し、デバイスユニット４００から転送されるメッセージにＨＴＴＰに基づいたヘッダを付加してＬＡＮに転送する。なお、ネットワークユニット３００は、ネットワークに関する種々の制御を行う一種の制御部である。
【００２１】
デバイスユニット４００は、サービスデバイスとしてのプリンタ４０４及びスキャナ４０６と、これらを制御するデバイス制御部４０２とを備えている。また、プリンタ４０４及びスキャナ４０６以外のサービスも追加することができる。サービスデバイスとしては、プリンタ４０４やスキャナ４０６を単独で、あるいはその他のサービスデバイス単独で存在させることも可能である。ネットワークユニット３００とデバイスユニット４００との間は、ＵＳＢ（Universal Serial Bus）で接続されている。但し、両者の間をＵＳＢ以外の他の物理的インタフェースで接続することも可能である。なお、デバイスユニット４００は、プリンタ４０４やスキャナ４０６等の複合機２００の主要な機能を実行する一種の制御部である。
【００２２】
なお、デジタルテレビ１１０及び複合機２００は、ＵＰｎＰ（Universal Plug and Play。UPnPは、UPnP Implementers Corporationの商標）対応のネットワーク装置として構成することも可能である。この場合、複合機２００のネットワークユニット３００は、ＵＰｎＰで使用される種々のネットワークプロトコルを解釈しデバイスユニット４００に転送する。これにより、複合機２００は、ＵＰｎＰで使用可能な各種機能をデジタルテレビ１１０に提供することができる。
【００２３】
デジタルテレビ１１０及び複合機２００がＵＰｎＰ対応のネットワーク装置となっている場合、デジタルテレビ１１０は、ＵＰｎＰの機能によりＨＴＭＬデータである複合機２００のプレゼンテーションページを取得することができる。このプレゼンテーションページをデジタルテレビ１１０のブラウザに表示させることにより、複合機２００の各種設定を行うユーザインタフェースが表示される。
【００２４】
なお、ＵＰｎＰでは、外部からの要求に応じて印刷や画像スキャン等のサービスを実行するネットワーク装置は「サービスデバイス」あるいは単に「デバイス」とも呼ばれる。また、デバイスによって提供されるサービスを利用するネットワーク装置は「コントロールポイント」とも呼ばれる。図１に示すネットワークシステム１００において、デジタルテレビ１１０と複合機２００とがＵＰｎＰ対応のネットワーク装置として構成されている場合には、複合機２００が備えるプリンタ４０４とスキャナ４０６とが「デバイス」に相当し、デジタルテレビ１１０が「コントロールポイント」に相当する。
【００２５】
ファームウェア保管サーバ１３０には、複合機２００の制御ソフトウェア（「ファームウェア」と呼ばれる）の更新に使用されるファームウェアデータ（制御ソフトウェア更新データ）が格納されている。この複合機２００のファームウェアの更新については、後述する。ファームウェア保管サーバ１３０に格納されたファームウェアデータは、インターネットＩＮＥＴを介してファームウェアデータを提供する。ファームウェアデータの提供は、ＨＴＴＰ（Hypertext Transfer Protocol）に従ってファームウェアデータの送出をファームウェア保管サーバ１３０のＨＴＴＰサーバに要求することにより行われる。なお、本実施例では、ファームウェア保管サーバ１３０は、ＨＴＴＰに従ってファームウェアの送出を行っているが、ＦＴＰ（File Transfer Protocol）等の他のプロトコルに従ってファームウェアの送出を行うことも可能である。
【００２６】
Ｂ．複合機の構成：
図２は、複合機２００の内部構成を示すブロック図である。複合機２００は、ネットワークユニット３００と、デバイスユニット４００と、ネットワークユニット３００およびデバイスユニット４００に電力を供給する電源回路２１０と、を備えている。
【００２７】
ネットワークユニット３００は、中央制御部（ＣＰＵ）３１０と、ＲＡＭ３２０と、電気的に書込可能なＲＯＭ（ＥＰＲＯＭ）３３０と、ネットワーク制御部３４０と、ＵＳＢホスト制御部３５０とを有している。ＥＰＲＯＭ３３０には、ネットワークユニット３００のファームウェアが格納されている。このファームウェアは、複合機２００の起動時に中央制御部３１０によりＲＡＭ３２０に転送される。そして、ＲＡＭ３２０に転送されたファームウェアを実行することにより、中央制御部３１０は、ネットワークユニット３００が有する種々の機能を実現する。なお、ＥＰＲＯＭ３３０としては、フラッシュメモリ等、電気的に書換が可能な任意のＥＰＲＯＭを使用することができる。
【００２８】
ネットワーク制御部３４０は、コネクタ３４２を介して有線ネットワークに接続される。ＵＳＢホスト制御部３５０は、ルートハブ３５２を有しており、ルートハブ３５２には２つのＵＳＢコネクタ３５４，３５６が設けられている。第１のＵＳＢコネクタ３５４は、ＵＳＢケーブルを介してデバイスユニット４００のＵＳＢコネクタ４６２に接続されている。第２のＵＳＢコネクタ３５６には、追加のデバイス（例えば無線ＬＡＮネットワークへ通信するための無線通信回路や他のデバイスユニット）を接続可能である。
【００２９】
デバイスユニット４００は、中央制御部（ＣＰＵ）４１０と、ＲＡＭ４２０と、ＥＰＲＯＭ４３０と、印刷エンジン４４０と、スキャンエンジン４５０と、２つのＵＳＢデバイス制御部４６０，４７０と、ＰＣカードインタフェース４８０と、操作パネル制御部４９０と、ビューワ制御部５００と、ＵＳＢホスト制御部５１０と、電源回路２１０を制御する電源制御部５２０とを有している。ＥＰＲＯＭ４３０には、デバイスユニット４００のファームウェアが格納されている。中央制御部４１０は、ＥＰＲＯＭ４３０に格納されたファームウェアを実行することにより、デバイスユニット４００が有する種々の機能を実現する。なお、ＥＰＲＯＭ４３０としては、フラッシュメモリ等、電気的に書換が可能な任意のＥＰＲＯＭを使用することができる。
【００３０】
印刷エンジン４４０は、与えられた印刷データに応じて印刷を実行する印刷機構である。スキャンエンジン４５０は、画像をスキャンして画像データを生成する機構である。なお、本発明は、複合機２００のファームウェア更新に関するものであり、これらの印刷エンジン４４０とスキャンエンジン４５０との構成や機能などには影響しないので、その説明を省略する。
【００３１】
デバイスユニット４００の第１のＵＳＢデバイス制御部４６０は、ＵＳＢコネクタ４６２を介してネットワークユニット３００のＵＳＢホスト制御部３５０に接続されている。第２のＵＳＢデバイス制御部４７０は、ＵＳＢコネクタ４７２を有しており、ここにパーソナルコンピュータなどの任意のＵＳＢホストを接続することが可能である。ＰＣカードインタフェース４８０は、ＰＣカード用のスロット４８２を有している。操作パネル制御部４９０には、入力手段としての操作パネル４９２が接続されている。ビューワ制御部５００には、画像表示手段としてのビューワ５０２が接続されている。ユーザは、ビューワ５０２上に表示された画像やメニューを観察しながら、操作パネル４９２を用いて種々の指示を入力することができる。ＵＳＢホスト制御部５１０は、ルートハブ５１２を有しており、ルートハブ５１２にはＵＳＢコネクタ５１４が設けられている。このコネクタ５１４には、デジタルカメラやハードディスクドライブ（ＨＤＤ）等のＵＳＢデバイスを接続することが可能である。
【００３２】
ネットワークユニット３００の中央制御部３１０とネットワーク制御部３４０とＵＳＢホスト制御部３５０は、図１におけるネットワークプロトコル制御部３０２としての機能を実現する。より具体的には、ネットワーク制御部３４０は、各種のネットワークプロトコルに従ってメッセージの送受信を行う。また、中央制御部３１０は、ネットワークプロトコルを解釈して転送先を決定する。ＵＳＢホスト制御部３５０は、デバイスユニット４００との間でメッセージを転送する。なお、これらの制御部３１０，３４０，３５０は、メッセージボディの解釈や処理は行わずにメッセージを転送している。
【００３３】
デバイスユニット４００のＵＳＢデバイス制御部４６０及び中央制御部４１０は、図１におけるデバイス制御部４０２としての機能を実現する。より具体的には、ＵＳＢデバイス制御部４６０は、ＵＳＢの転送プロトコルに従ってメッセージの送受信を行う。また、中央制御部４１０は、ネットワークユニット３００を介して転送されたメッセージの内容を解釈し、メッセージの内容に応じた処理を実行して、印刷エンジン４４０やスキャンエンジン４５０を動作させる。印刷エンジン４４０は図１のプリンタ４０４に相当し、スキャンエンジン４５０は図１のスキャナ４０６に対応する。
【００３４】
図３は、ネットワークユニット３００とデバイスユニット４００のファームウェア更新に関する機能の階層構造を示すブロック図である。ネットワークユニット３００は、ネットワークプロトコルであるＨＴＴＰプロトコルをネットワークユニット３００とデバイスユニット４００との間の通信に使用されるＤ４プロトコルに変換するプロトコル変換部１０００を備えている。なお、Ｄ４プロトコルとは、ＩＥＥＥ１２８４．４に規定されたパケット（Ｄ４パケット）を用いた通信プロトコルである。
【００３５】
プロトコル変換部１０００は、ＨＴＴＰプロトコル処理部とＤ４プロトコル処理部１１００の上部の階層において機能する。ＨＴＴＰプロトコル処理部よりも下部の階層には、下から順番にネットワークインタフェースと、ドライバと、ＴＣＰ／ＩＰプロトコル処理部とが設けられている。また、Ｄ４プロトコル処理部１１００よりも下部の階層には、下から順番に、ＵＳＢホストインタフェース（ハードウェア）と、ＵＳＢシステムソフトウェアと、プリンタクラス論理インタフェースとが設けられている。
【００３６】
デバイスユニット４００は、ファームウェアの更新のためのメッセージを解釈し、解釈の結果に応じた処理を実行するためのファームウェア更新処理部２０００を備えている。ファームウェア更新処理部２０００よりも下部の構造としては、下から順番に、ＵＳＢデバイスインタフェース（ハードウェア）と、ＵＳＢ論理デバイスと、プリンタクラス論理インタフェースと、Ｄ４プロトコル処理部２１００とが設けられている。なお、プリンタクラス論理インタフェースとは、プリンタクラスのＵＳＢ論理デバイスと上位のプロトコルを仲介するためのインタフェースである。なお、図３の例では、印刷エンジン４４０やスキャンエンジン４５０に関連する構成は省略している。
【００３７】
図３において、ネットワークユニット３００とデバイスユニット４００の間には、種々の通信チャンネルが描かれている。これらは、ネットワークユニット３００とデバイスユニット４００の同一階層間における論理的な接続を示している。Ｄ４プロトコル処理部１１００，２１００の間の５つのチャンネルは、ＵＳＢ転送における論理的なチャンネルである。以下ではまず、ＵＳＢ転送用のチャンネルについて説明する。
【００３８】
図４は、ＵＳＢのインタフェース／エンドポイント構成と論理チャンネルの構成とを示す説明図である。一般に、ＵＳＢデバイスは、インタフェースとエンドポイントとを有している。ＵＳＢの転送は、ＵＳＢのホストとエンドポイントとの間で行われる。すなわち、「エンドポイント」とは、ホストと通信を行う論理的なリソースである。図４（ａ）の例では、５つのエンドポイントＥＰ＃０〜ＥＰ＃４が示されている。コントロールエンドポイントＥＰ＃０は、標準デバイスリクエストの送受信を行うためのエンドポイントである。「標準デバイスリクエスト」とは、すべてのＵＳＢでサポートする必要がある基本的なリクエストである。従って、コントロールエンドポイントＥＰ＃０は、１つのＵＳＢデバイスに必ず１つ設けられている。
【００３９】
プリンタ用のバルクアウトエンドポイントＥＰ＃１とバルクインエンドポイントＥＰ＃２は、印刷エンジン４４０用のメッセージの受信と送信を行うためのエンドポイントである。同様に、スキャナ用のバルクアウトエンドポイントＥＰ＃３とバルクインエンドポイントＥＰ＃４は、スキャンエンジン４５０用のメッセージの受信と送信を行うためのエンドポイントである。一般に、ＵＳＢデバイスでは、コントロールエンドポイントＥＰ＃０以外のエンドポイントは、論理的なインタフェース（「デバイスクラス」と呼ばれる）によって区分されている。図４（ａ）の例では、論理的なインタフェースとして、プリンタインタフェースＩＦ＃０とスキャナインタフェースＩＦ＃１とが設けられている。
【００４０】
本実施例では、図４（ｂ）に示すように、プリンタインタフェースＩＦ＃０に７つの論理的なチャンネルが設けられている。これらの論理チャンネルは、いずれもバルクアウトエンドポイントＥＰ＃１とバルクインエンドポイントＥＰ＃２の両方を利用して双方向通信を行うことができる。論理チャンネルの識別情報は、Ｄ４パケットのヘッダに登録される。但し、論理チャンネルの数や区分としては、これ以外の任意のものを採用することができる。
【００４１】
図５は、ＵＳＢ転送に用いられるＤ４パケットの構成を示す説明図である。Ｄ４パケットは、６バイトのヘッダ（Ｄ４ヘッダ）とボディ部分とを有している。Ｄ４ヘッダは、プライマリソケットＩＤ（ＰＳＩＤ）と、セカンダリソケットＩＤ（ＳＳＩＤ）と、パケット長と、クレジットと、制御情報とを含んでいる。通常、プライマリソケットＩＤとセカンダリソケットＩＤとには、同一の図４（ｂ）に示す論理チャンネルを識別するＩＤが設定される。Ｄ４ヘッダのパケット長には、Ｄ４ヘッダを含むＤ４パケット全体の長さが登録される。クレジットと制御情報には、Ｄ４プロトコルにおけるデータの伝送制御を行うための情報が登録される。ボディ部分のデータには、論理チャンネルに応じて種々の情報が格納される。
【００４２】
図６は、図４（ｂ）に示した各論理チャンネルで転送されるＤ４パケットのボディ部分に格納される情報を示す表である。図６の表の第１列には、図４（ｂ）の各論理チャンネルが示されている。図６の表の第２列には、各論理チャンネルのデータ転送方向を示している。第２列の「Ｎ」から「Ｄ」に向いた矢印は、ネットワークユニット３００からデバイスユニット４００にデータが転送されることを示しており、「Ｄ」から「Ｎ」に向いた矢印は、デバイスユニット４００からネットワークユニット３００にデータが転送されることを示している。図６の表の第３列には、各論理チャンネルで転送されるＤ４パケットのボディ部分に格納される情報を示している。
【００４３】
図６の表に示すように、制御コマンドとそのパラメータは、LOCAL-CONTROLチャンネルとLOCAL-EVENTチャンネルとにより転送される。また、ＨＴＭＬデータは、UP-PRESENTATIONチャンネルとDOWN-PRESENTATIONチャンネルとにより転送される。これらの４つのチャンネルは、データの内容毎に、ネットワークユニット３００からデバイスユニット４００への転送を行うチャンネル（LOCAL-CONTROLおよびDOWN-PRESENTATION）と、デバイスユニット４００からネットワークユニット３００への転送を行うチャンネル（LOCAL-EVENTおよびUP-PRESENTATION）と、に区分されている。
【００４４】
DOWN-CONTENTチャンネルは、ネットワークユニット３００からデバイスユニット４００に種々のデータを転送するために設けられている。PRINT-DATAチャンネルとPRINT-STATUSチャンネルとは、印刷エンジン４４０とネットワークユニット３００との間のデータ転送を行うチャンネルである。
【００４５】
図７は、ネットワークユニット３００を介したデータ転送処理の一例を示すシーケンス図である。図７の例は、デジタルテレビ１１０がそのブラウザ上で表示するためのＨＴＭＬデータを取得する様子を示している。このとき、デジタルテレビ１１０と、ネットワークユニット３００と、デバイスユニット４００との間で種々のメッセージが転送される。
【００４６】
ステップ[1]では、デジタルテレビ１１０がＨＴＴＰのリクエストメッセージＦ１をネットワークユニット３００に送信する。メッセージＦ１のヘッダには、リクエスト命令（ＧＥＴやＰＯＳＴなどのメソッド）と、取得するＨＴＭＬデータのデバイスユニット４００における固有の位置を示す識別子ＵＲＩ（Uniform Resource Identifier）と、複合機２００のＩＰアドレス（この例では192.168.123.123）とが記述されている。以下、本明細書において、このようにリクエスト命令ＧＥＴを含むＨＴＴＰのリクエストメッセージを単に「ＧＥＴリクエスト」とも呼び、他のリクエスト命令（ＰＯＳＴ等）についても同様に呼ぶ。なお、ＨＴＴＰのリクエスト命令の種類によっては、メッセージＦ１には送信データが含まれる。
【００４７】
ステップ[2]では、ネットワークユニット３００が、リクエストメッセージＦ１を解析する。図７の例では、ネットワークユニット３００は、リクエストメッセージＦ１を解析することにより、ＨＴＴＰのリクエスト命令がＵＲＩで示されるＨＴＭＬデータを取得するためのＧＥＴリクエストであると判定する。なお、ネットワークユニット３００は、リクエストメッセージＦ１が送信データを含んでいても、送信データの内容の解釈は行わない。
【００４８】
ステップ[3]において、ネットワークユニット３００は、LOCAL-CONTROLチャンネルを介して、リクエストＩＤ（RequestID）を取得するコマンド（GetRequestID）をデバイスユニット４００に送出する。送出されるGetRequestIDコマンドには、そのパラメータとして、ＨＴＴＰのリクエスト命令の種類（ＧＥＴ）と、取得されるＨＴＭＬデータのＵＲＩとが付加される。なお、リクエストＩＤとは、GetRequestIDコマンドに応じてネットワークユニット３００とデバイスユニット４００との間で送受信されるデータを識別するための識別コードである。
【００４９】
ステップ[4]において、デバイスユニット４００は、GetRequestIDコマンドに対して応答（Reply）を行う。この応答には、ステップ[3]のGetRequestIDコマンドに応じてデバイスユニット４００が送信するＨＴＭＬデータ（返信データ）を識別するためのリクエストＩＤが含まれている。
【００５０】
ステップ[5]では、デバイスユニット４００が、GetRequestIDコマンドに応じて返信データを準備する。具体的には、デバイスユニット４００は、GetRequestIDコマンドのパラメータとして与えられたＵＲＩに従って種々の処理を行い、その結果としてＨＴＭＬデータを生成する。
【００５１】
ステップ[6]において、デバイスユニット４００は、UP-PRESENTATIONチャンネルを介して、返信メッセージＲ１をネットワークユニット３００に送出する。なお、返信メッセージＲ１中には、送信されるＨＴＭＬデータがステップ[3]で転送された要求に対応することを示すリクエストＩＤが含まれる。
【００５２】
ステップ[7]において、ネットワークユニット３００は、返信メッセージＲ１からＨＴＭＬデータを抽出する。そして、抽出されたＨＴＭＬデータにＨＴＴＰヘッダを付加する。このＨＴＴＰヘッダは、ＨＴＴＰリクエストの処理結果を示すステータスコードを含んでいる。例えば、処理結果がＯＫであればステータスコードが”２００”に設定され、エラーであれば”５００”に設定される。
【００５３】
ステップ[8]では、こうして作成されたＨＴＴＰのレスポンスメッセージＲ２がネットワークユニット３００からデジタルテレビ１１０に送信される。
【００５４】
Ｃ．ファームウェアの更新：
図８は、複合機２００のファームウェアの更新の際にデジタルテレビ１１０のブラウザ上に表示される表示画面を示す説明図である。ユーザは、デジタルテレビ１１０のブラウザを用いて複合機２００のメンテナンスページをブラウザ上に表示させることができる。具体的には、デジタルテレビ１１０は、メンテナンスページを表すＨＴＭＬデータの送信を要求するＧＥＴリクエストを複合機２００のネットワークユニット３００に送信する。デジタルテレビ１１０は、ネットワークユニット３００から返信されるＨＴＴＰレスポンス中のＨＴＭＬデータで表されるメンテナンスページをブラウザ上に表示する。
【００５５】
デジタルテレビ１１０が、メンテナンスページをブラウザ上に表示することにより、ブラウザには複合機２００の各種設定を行うためのユーザインタフェースが表示される。なお、デジタルテレビ１１０と複合機２００とのいずれもがＵＰｎＰ対応ネットワークデバイスとして構成されている場合、複合機２００がコントロールポイントに通知するプレゼンテーションページを用いて、デジタルテレビ１１０は、メンテナンスページをブラウザ上に表示することができる。
【００５６】
図８（ａ）は、複合機２００のメンテナンスページがデジタルテレビ１１０のブラウザ上に表示されている様子を示している。図８（ａ）に示すように、メンテナンスページにより形成されるユーザインタフェースＵＩ１には、プリンタのノズルの状態をチェックを指示するためのボタンＢＥＸ１と、プリンタのノズルのクリーニングを指示するためのボタンＢＥＸ２と、複合機２００のファームウェアの更新を指示するためのボタンＢＥＸ３と、メンテナンスの処理の中止を指示するための中止ボタンＢＣＮ１とが、表示されている。
【００５７】
ユーザがユーザインタフェースＵＩ１に表示されたボタンＢＥＸ１を操作すると、デジタルテレビ１１０は、複合機２００のネットワークユニット３００にプリンタのノズル状態をチェックするためのページの送信を要求するＨＴＴＰリクエストを送信する。複合機２００は、このＨＴＴＰリクエストに応じて、プリンタのノズル状態をチェックし、その結果を表すページをデジタルテレビ１１０に返信する。同様に、ボタンＢＥＸ２の操作により、デジタルテレビ１１０は、複合機２００のネットワークユニット３００にプリンタのノズルをクリーニングするためのページの送信を要求するＨＴＴＰリクエストを送信する。複合機２００は、このＨＴＴＰリクエストに応じて、ノズルのクリーニングのためのページをデジタルテレビ１１０に返信する。
【００５８】
ユーザがユーザインタフェースＵＩ１に表示されたボタンＢＥＸ３を操作すると、デジタルテレビ１１０は、複合機２００のネットワークユニット３００にファームウェア更新のためのページの送信を要求するＨＴＴＰリクエストを送信する。
【００５９】
図９は、デジタルテレビ１１０が複合機２００のネットワークユニット３００にファームウェア（ＦＷ）更新のためのページの送信を要求するＨＴＴＰリクエストを送信する際の処理の様子を示すシーケンス図である。
【００６０】
ステップ[CF1]において、デジタルテレビ１１０は、ネットワークユニット３００にファームウェア更新ページの送信を要求する。具体的には、デジタルテレビ１１０は、ページの送信を要求する内容を表すＧＥＴメソッドと、ファームウェア更新ページを指定するＵＲＩとを含むＨＴＴＰのリクエストメッセージをネットワークユニット３００に送信する。
【００６１】
ステップ[CF1]でＨＴＴＰリクエストがネットワークユニット３００に送信されると、ステップ[CF2]において、ネットワークユニット３００は、LOCAL-CONTROLチャンネルを介して、GetRequestIDコマンドをデバイスユニット４００に送出する。図９の例では、GetRequestIDコマンドには、リクエスト命令がＨＴＭＬデータの送信を要求するＧＥＴリクエストであることと、送信が要求されているＨＴＭＬデータがファームウェア更新ページを示すＵＲＩであることを表すパラメータが付加されている。ステップ[CF2]のGetRequestIDコマンドに対して、デバイスユニット４００は、ステップ[CF3]において、リクエストＩＤを含む応答を行うとともに、デバイスユニット４００をファームウェアの更新以外の処理要求を受け付けない状態にする。
【００６２】
ステップ[CF4]において、デバイスユニット４００は、ファームウェア更新ページの送信要求に対して、返信するＨＴＭＬデータを生成する。本実施例において、ステップ[CF4]では、ユーザにファームウェアの更新の実行可否を確認する更新確認ページを表すＨＴＭＬデータが生成される。更新確認ページを表すＨＴＭＬデータは、ステップ[CF5]でネットワークユニット３００に送出される。ネットワークユニット３００は、ステップ[CF6]において、更新確認ページを表すＨＴＭＬデータにＨＴＴＰヘッダを付加した後、ＨＴＴＰレスポンスとしてメッセージをデジタルテレビ１１０に送信する。
【００６３】
図８（ｂ）は、図９のステップ[CF6]においてデジタルテレビ１１０に送信された更新確認ページがデジタルテレビ１１０のブラウザ上に表示されている様子を示している。更新確認ページにより、デジタルテレビ１１０のブラウザ上には、ファームウェアの更新の実行可否を確認するためのユーザインタフェースＵＩ２が表示される。
【００６４】
図８（ｂ）に示すユーザインタフェースＵＩ２には、ファームウェア更新の開始を指示する開始ボタンＢＳＴと、ファームウェア更新の中止を指示する中止ボタンＢＣＮ２とが表示されている。ユーザが、中止ボタンＢＣＮを操作すると、デジタルテレビ１１０は、メンテナンスページを表示するため、メンテナンスページを表すＨＴＭＬデータ送信を要求するＨＴＴＰリクエストを複合機２００に送信する。これにより、デジタルテレビ１１０のブラウザには、図８（ａ）に示すメンテナンスページが表示される。
【００６５】
ユーザが、開始ボタンＢＳＴを操作すると、デジタルテレビ１１０は、複合機２００のネットワークユニット３００に対してファームウェア更新を開始する指示を送信する。本実施例においては、このファームウェア更新開始の指示も、ＨＴＴＰのリクエストとして複合機２００のネットワークユニット３００に送信される。
【００６６】
図１０は、デジタルテレビ１１０が複合機２００のネットワークユニット３００にファームウェア更新を開始する指示をＨＴＴＰリクエストとして送信する際の処理の様子を示すシーケンス図である。
【００６７】
ステップ[ST1]において、デジタルテレビ１１０は、ネットワークユニット３００にユーザによる指示を送信する。具体的には、デジタルテレビ１１０は、ファームウェア更新ＣＧＩ（Common Gateway Interface）にユーザの指示に関する情報を含むＨＴＭＬデータ（ファームウェア更新指示フォーム）を渡すように、ＨＴＴＰのＰＯＳＴリクエストをネットワークユニット３００に送信する。このＰＯＳＴリクエストには、ファームウェア更新指示フォームが含まれている。ここで、ファームウェア更新ＣＧＩとは、デバイスユニット４００上でユーザの指示を解析し、解析内容に応じて処理を実行する一種のコンピュータプログラムである。
【００６８】
ステップ[ST2]において、ネットワークユニット３００は、LOCAL-CONTROLチャンネルを介して、GetRequestIDコマンドをデバイスユニット４００に送出する。図１０の例では、GetRequestIDコマンドには、デジタルテレビ１１０からのＨＴＴＰリクエストがＰＯＳＴリクエストであることと、実行されるファームウェア更新ＣＧＩを示すＵＲＩとがパラメータとして付加されている。ステップ[ST2]のGetRequestIDコマンドに対して、デバイスユニット４００は、ステップ[ST3]において、リクエストＩＤを含む応答を行う。
【００６９】
ステップ[ST4]において、デバイスユニット４００は、ファームウェア更新ＣＧＩの実行を開始する。デバイスユニット４００は、ステップ[ST5]において、ネットワークユニット３００からファームウェア更新指示フォームを取得する。取得されたファームウェア更新指示フォームは、ファームウェア更新ＣＧＩにより解析される。ファームウェア更新指示フォームの解析により、ユーザの指示がファームウェア更新を中止する指示であると判定された場合には、処理は中止される。なお、ファームウェア更新処理が中止されると、デバイスユニット４００は、デバイスユニット４００をファームウェアの更新以外の処理要求を受け付ける状態にする。
【００７０】
一方、ユーザの指示がファームウェア更新を実行する指示であると判定された場合には、処理が続行される。この場合、デバイスユニット４００は、ユーザにファームウェア更新を開始したことを通知する更新開始ページを生成するとともに、ファームウェアの更新処理を開始する。なお、ＨＴＭＬで記述された更新開始ページには、ブラウザに定期的（例えば、１秒ごと）にファームウェア更新ページを取得させるための指示が含まれている。
【００７１】
ステップ[ST6]において、デバイスユニット４００は、生成された更新開始ページをネットワークユニット３００に送出する。そして、ステップ[ST7]において、ネットワークユニット３００は、ＨＴＴＰヘッダが付加された更新開始ページをデジタルテレビ１１０に送信する。
【００７２】
図８（ｃ）は、図１０のステップ[ST7]においてデジタルテレビ１１０に送信された更新開始ページがデジタルテレビ１１０のブラウザ上に表示されている様子を示している。図８（ｃ）に示すように、デジタルテレビ１１０のブラウザ上には、ファームウェアの更新を開始したことをユーザに通知するユーザインタフェースＵＩ３が表示される。
【００７３】
図１１は、更新開始ページに含まれる指示により、デジタルテレビ１１０のブラウザが定期的にファームウェア更新ページを取得する際のシーケンス図である。図１１に示すシーケンスは、ステップ[SM4]においてデバイスユニット４００で生成されるデジタルテレビに返信されるＨＴＭＬデータが更新確認ページから状態表示ページとなっている点で、図９に示すシーケンスと異なっている。他の点は、図９に示すシーケンスと同じであるので、ここではその説明は省略する。
【００７４】
図１２は、図１１に示すシーケンスにおいてデジタルテレビ１１０のブラウザに表示される状態表示ページを示している。ファームウェアの更新が開始されると、デジタルテレビ１１０のブラウザには、図１２（ａ）に示すファームウェアの更新中であることをユーザに通知するユーザインタフェースＵＩ４がデジタルテレビ１１０のブラウザに表示される。なお、図１２（ｂ）に示す複合機２００の電源をオフにすることをユーザに通知するユーザインタフェースＵＩ５がデジタルテレビ１１０のブラウザに表示される場合については、後述する。
【００７５】
図１３は、ファームウェアの更新を実行するファームウェア更新実行ルーチンを示すフローチャートである。なお、図１３に示すフローチャートの左側の各ステップＳ１１０〜Ｓ１４０は、デバイスユニット４００が実行を制御するステップを示し、右側のステップＳ２２０は、ネットワークユニット３００が実行を制御するステップを示している。
【００７６】
ステップＳ１１０において、デバイスユニット４００は、ファームウェア保管サーバ１３０（図１）からネットワークユニット３００のファームウェアデータを取得し、デバイスユニット４００のＲＡＭ４２０（図２）に格納する。
【００７７】
図１４は、ステップＳ１１０においてネットワークユニット３００のファームウェアデータを取得する様子を示すシーケンス図である。図１４に示すように、ステップＳ１１０では、ファームウェア保管サーバ１３０と、ネットワークユニット３００と、デバイスユニット４００と、の間でデータの転送が行われる。
【００７８】
ステップ[GN1]において、デバイスユニット４００は、LOCAL-EVENTチャンネルを介してネットワークユニット３００にGetRequestIDコマンドを送出する。ステップ[GN1]で送出されるGetRequestIDコマンドには、取得するネットワークユニット３００のファームウェアデータの所在を示すＵＲＩと、ネットワークユニット３００のファームウェアデータを取得するためのリクエスト命令（ＧＥＴ）が付加されている。
【００７９】
ステップ[GN2]において、ネットワークユニット３００は、ステップ[GN1]で受け取ったコマンドGetRequestIDに応答する。そして、ステップ[GN3]において、ネットワークユニット３００のファームウェアデータの送出を要求するＧＥＴリクエストをファームウェア保管サーバ１３０に送信する。通常、ネットワークユニット３００が稼働しているときのＲＡＭ３２０（図２）の空き容量は、ネットワークユニット３００のファームウェアデータよりも小さい。そのため、ステップ[GN3]で送信されるＧＥＴリクエストでは、レンジリクエストヘッダ(Range:bytes=xxxx-yyyy)により転送されるファームウェアデータの範囲が指定され、転送されるデータの大きさが制限されている。ファームウェア保管サーバ１３０は、ネットワークユニット３００のファームウェアデータのうちレンジリクエストヘッダで指定された範囲のデータを送信する。なお、本実施例では、ネットワークユニット３００がレンジリクエストヘッダをＧＥＴリクエストに付加することにより送信されるファームウェアデータの範囲を指定しているが、ファームウェア保管サーバ１３０が送信範囲を指定するものとしてもよい。
【００８０】
ステップ[GN4]において、ファームウェア保管サーバ１３０は、ステップ[GN3]で受け取ったＨＴＴＰリクエストに応じたＨＴＴＰレスポンスとして、ネットワークユニット３００のファームウェアデータをネットワークユニット３００に送信する。
【００８１】
ステップ[GN5]において、ネットワークユニット３００は、ステップ[GN4]でファームウェア保管サーバ１３０から受信したネットワークユニット３００のファームウェアデータをDOWN-CONTENTチャンネルを介してデバイスユニット４００に転送する。転送されたネットワークユニット３００のファームウェアデータは、ステップ[GN6]において、デバイスユニット４００のＲＡＭ４２０（図２）に格納される。
【００８２】
上述のように、ステップ[GN3]でファームウェア保管サーバ１３０に送信されるＧＥＴリクエストでは、レンジリクエストヘッダにより送信されるファームウェアデータの範囲が指定されている。ネットワークユニット３００は、ファームウェアデータの全体を順次デバイスユニット４００に転送するため、レンジリクエストヘッダのパラメータを適宜変更するとともに、ステップ[GN3]ないしステップ[GN5]を複数回繰り返し実行する。そのため、ファームウェアデータ全体は、複数に分割されて順次デバイスユニット４００に転送される。デバイスユニット４００は、ステップ[GN5]で転送されるデータを順次ＲＡＭ４２０に格納する。これにより、デバイスユニット４００のＲＡＭ４２０には、ネットワークユニット３００のファームウェアデータ全体が格納される。
【００８３】
図１３のステップＳ１２０において、デバイスユニット４００は、ＲＡＭ４２０に格納されたネットワークユニット３００のファームウェアデータをネットワークユニット３００に転送する。ステップＳ２２０において、ネットワークユニット３００は、ステップＳ１２０で転送されるファームウェアデータにより、ネットワークユニット３００のＥＰＲＯＭ３３０（図２）を更新する。なお、２つのステップＳ１２０，Ｓ２２０は、デバイスユニット４００とネットワークユニット３００とで並列に実行される。
【００８４】
図１５は、２つのステップＳ１２０，Ｓ２２０におけるネットワークユニット３００のファームウェアデータの転送と、ＥＰＲＯＭ３３０の更新の様子を示すシーケンス図である。
【００８５】
ステップ[WN1]において、デバイスユニット４００は、LOCAL-EVENTチャンネルを介してネットワークユニット３００にファームウェアの更新を指示するコマンドを送出する。ネットワークユニット３００は、ステップ[WN2]において、ステップ[WN1]で受け取ったコマンドに対する応答として、ファームウェアの更新が可能か否かをデバイスユニット４００に通知する。デバイスユニット４００は、ステップ[WN2]で受け取った応答から、ネットワークユニット３００のファームウェアの更新が不可能と判断した場合、ファームウェアの更新処理は終了する。
【００８６】
ネットワークユニット３００は、ファームウェアの更新が可能な場合、ステップ[WN3]において、ファームウェア更新デーモンの実行を開始する。ここで、ファームウェア更新デーモンとは、ＵＳＢのcontrol IN/OUTパイプ（図３）を介したデバイスユニット４００とのデータ転送と、転送されたデータによりＥＰＲＯＭ３３０の書き換えと、を行うコンピュータプログラムである。なお、control IN/OUTパイプを介したデータの転送は、一般に、コントロール転送と呼ばれる。なお、コントロール転送によるファームウェアの転送には、上述した標準デバイスリクエストとは異なるベンダリクエスト（Vendor Request）が使用される。
【００８７】
デバイスユニット４００は、ネットワークユニット３００のファームウェアの更新が可能と判断した場合、ステップ[WN4]において、ネットワークユニット３００のファームウェアデータをコントロール転送によりネットワークユニット３００に送出する。ステップ[WN5]において、ネットワークユニット３００は、ネットワークユニット３００のＥＰＲＯＭ３３０をステップ[WN4]で転送されたファームウェアデータに順次更新する。なお、ＥＰＲＯＭ３３０のデータの更新は、ＥＰＲＯＭ３３０のうちデータを書き込む領域を消去した後、消去した領域に新しいデータを記録することによって行われる。
【００８８】
ステップ[WN5]におけるデータの更新が終了すると、ステップ[WN6]において、ネットワークユニット３００は、ネットワークユニット３００のファームウェアの更新の終了をコントロール転送によりデバイスユニット４００に通知する。
【００８９】
図１３のステップＳ１３０において、デバイスユニット４００は、ファームウェア保管サーバ１３０（図１）からデバイスユニット４００のファームウェアデータを取得し、デバイスユニット４００のＲＡＭ４２０（図２）に格納する。なお、図１３のステップＳ１３０が終了すると、図１１のステップ[SM4]で生成される状態表示ページは、複合機２００の電源をオフにすることをユーザに通知するＨＴＭＬデータとなる。そのため、デジタルテレビ１１０（図１）のブラウザには、図１２（ｂ）に示すユーザインタフェースＵＩ５が表示される。
【００９０】
図１６は、ステップＳ１３０においてデバイスユニット４００のファームウェアデータを取得する様子を示すシーケンス図である。なお、図１６に示すシーケンスは、取得するファームウェアデータがネットワークユニット３００のファームウェアデータからデバイスユニット４００のファームウェアデータに置き換えられている点で図１４に示すシーケンスと異なっている。他の点は、図１４に示すネットワークユニット３００のファームウェアデータ取得のシーケンスと同じである。
【００９１】
図１３のステップＳ１４０において、デバイスユニット４００は、ＲＡＭ４２０に格納されたデバイスユニット４００のファームウェアデータにより、デバイスユニット４００のＥＰＲＯＭ４３０（図２）を更新する。
【００９２】
図１７は、図１３のステップＳ１４０において、デバイスユニット４００のＥＰＲＯＭ４３０を更新する様子を示すシーケンス図である。
【００９３】
ステップ[WD1]において、デバイスユニット４００は、LOCAL-EVENTチャンネルを介してネットワークユニット３００に停止コマンドを送出する。ネットワークユニット３００は、ステップ[WD2]において、ステップ[WD1]で受け取った停止コマンドに応答する。
【００９４】
ステップ[WD3]では、ネットワークユニット３００は、ネットワークユニット３００のシャットダウンの準備を行う。具体的には、ネットワークユニット３００によって実行される種々のネットワークプロトコルの処理機能を停止する。ネットワーププロトコルの処理機能が停止し、ネットワークユニット３００のシャットダウンが可能になると、ネットワークユニット３００は、ステップ[WD4]において、デバイスユニット４００にシャットダウンコマンドを送出する。デバイスユニット４００は、ステップ[WD5]において、ステップ[WD4]で受け取ったシャットダウンコマンドに対して応答する。
【００９５】
ステップ[WD6]において、デバイスユニット４００は、ＲＡＭ４２０からの再起動を行う。具体的には、デバイスユニット４００で実行される制御ソフトウェアが、ＥＰＲＯＭ４３０に記録されたファームウェアから、図１６のステップ[GD6]においてＲＡＭ４２０に格納されたファームウェアに切り替えられる。
【００９６】
ＲＡＭ４２０からの再起動により、ステップ[WD7]では、ＵＳＢの切断処理が行われる。ステップ[WD7]でＵＳＢの切断処理が行われると、ネットワークユニット３００は、ステップ[WD8]においてシャットダウンされてその機能が停止する。一方、デバイスユニット４００は、ステップ[WD9]において、ＥＰＲＯＭ４３０の更新を行う。
【００９７】
ステップ[WD9]でのＥＰＲＯＭ４３０の更新が完了すると、ステップ[WD10]において、デバイスユニット４００は、デバイスユニット４００自体のシャットダウン処理を行うとともに、電源制御部５２０（図２）から電源回路２１０（図２）にネットワークユニット３００およびデバイスユニット４００への電力の供給を停止する指示を送出する。電力供給停止の指示により、電源回路２１０は、ステップ[WD11]において、ネットワークユニット３００およびデバイスユニット４００への電力供給を停止し、複合機２００は電源ＯＦＦの状態となる。
【００９８】
このように、本実施例では、複合機２００がＬＡＮを介してファームウェアデータを取得する際に、ネットワークユニット３００は、ファームウェアデータの一部を取得し、デバイスユニット４００に転送する。そのため、更新のためのファームウェアデータの全てを格納するためにネットワークユニット３００のＲＡＭ３２０の容量が増大することを抑制することができる。
【００９９】
Ｄ．変形例：
なお、この発明は上記実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【０１００】
Ｄ１．変形例１：
上記実施例では、デバイスユニット４００は、ファームウェア更新ページの最初のＧＥＴリクエストに応答する図９のステップ[CF3]において、デバイスユニット４００をファームウェアの更新以外の処理要求を受け付けない状態にしているが、他のタイミングでファームウェアの更新以外の処理要求を受け付けない状態にするものとしてもよい。処理要求の受付可否の状態変更は、ネットワークユニット３００のファームウェア更新を開始する図１５のステップ[WN1]や、ネットワークユニット３００に停止コマンドを送出する図１７のステップ[WD1]等の、ファームウェア更新シーケンスの所定のタイミングで行うことができる。
【０１０１】
Ｄ２．変形例２：
上記実施例では、複合機２００のファームウェアの更新処理に関する指示が、ユーザが操作するデジタルテレビ１１０（図１）から提供されているが、更新処理に関する指示は、他の方法によって提供されるものしても良い。ファームウェアの更新処理に関する指示は、例えば、操作パネル制御部４９０（図２）がユーザによる操作パネル４９２（図２）の操作に応じて提供するものとしてもよく、ユーザによる第２のＵＳＢデバイス制御部４７２（図２）に接続されたパーソナルコンピュータＰＣの操作に応じてパーソナルコンピュータＰＣが提供するものとしてもよい。この場合、ビューワ５０２（図２）やパーソナルコンピュータＰＣの画面上には、ユーザによる指示を取得し、ユーザに複合機２００の状態を通知するためのユーザインタフェースＵＩ１〜ＵＩ５（図８，図１２）が表示される。
【０１０２】
ファームウェアの更新処理に関する指示を第２のＵＳＢデバイス制御部４７２に接続されたパーソナルコンピュータＰＣが提供する際、パーソナルコンピュータＰＣが更新に使用されるファームウェアデータを複合機２００に送出することが可能である。この場合、
ユーザによる指示の取得（図９，図１０）と、ユーザへの通知と（図１１）、ファームウェアデータの転送（図１４，図１６）とは、第１のＵＳＢデバイス制御部４６０に換えて第２のＵＳＢデバイス制御部４７０を用いて行われるが、これらはいずれもＵＳＢデバイス制御部であることには変わりがない。そのため、複合機２００は、使用するデバイス制御部を変更し上記実施例と同一の処理（プロトコル）を実行することでファームウェアの更新をすることができる。なお、パーソナルコンピュータＰＣから複合機２００に送出されるファームウェアデータとしては、パーソナルコンピュータＰＣがＬＡＮを介して取得したデータを順次転送するものとしてもよく、パーソナルコンピュータＰＣが備える記録媒体に予め格納されたデータを転送するものとしてもよい。
【０１０３】
Ｄ３．変形例３：
上記実施例では、本発明のファームウェアの更新を複合機２００（図２）に適用しているが、本発明は、他のネットワーク装置にも適用することができる。一般に、本発明は、互いに通信チャンネルにより接続された複数の制御部を備え、複数の制御部のうち少なくとも１つの制御部によりネットワークに接続されるネットワーク装置に適用することができる。本発明は、ネットワークプリンタやネットワークスキャナ等の単独でサービスを提供しうるネットワーク装置と、ネットワーク処理機能を持たない装置を接続しその装置の機能をサービスとしてＬＡＮに提供するネットワーク装置（例えば、ＵＰｎＰブリッジ）と、のいずれにも適用することができる。
【図面の簡単な説明】
【０１０４】
【図１】本発明の一実施例としてのネットワークシステム１００の構成を示す説明図。
【図２】複合機２００の内部構成を示すブロック図。
【図３】ネットワークユニット３００とデバイスユニット４００のファームウェア更新に関する機能の階層構造を示すブロック図。
【図４】ＵＳＢのインタフェース／エンドポイント構成と論理チャンネルの構成とを示す説明図。
【図５】ＵＳＢ転送に用いられるＤ４パケットの構成を示す説明図。
【図６】各論理チャンネルで転送されるＤ４パケットのボディ部分に格納される情報を示す表。
【図７】ネットワークユニット３００を介したデータ転送処理の一例を示すシーケンス図。
【図８】複合機２００のファームウェアの更新の際にデジタルテレビ１１０のブラウザ上に表示される表示画面を示す説明図。
【図９】デジタルテレビ１１０がファームウェア更新のためのページの送信を要求するＨＴＴＰリクエストを送出する際の処理の様子を示すシーケンス図。
【図１０】デジタルテレビ１１０が複合機２００のネットワークユニット３００にファームウェア更新を開始する指示をＨＴＴＰリクエストとして送信する際の処理の様子を示すシーケンス図。
【図１１】更新開始ページに含まれる指示により、デジタルテレビ１１０のブラウザが定期的にファームウェア更新ページを取得する際のシーケンス図。
【図１２】デジタルテレビ１１０のブラウザに表示される状態表示ページ。
【図１３】ファームウェアの更新を実行するファームウェア更新実行ルーチンを示すフローチャート。
【図１４】ステップＳ１１０においてネットワークユニット３００のファームウェアデータを取得する様子を示すシーケンス図。
【図１５】ネットワークユニット３００のファームウェアデータの転送と、ＥＰＲＯＭ３３０の更新の様子を示すシーケンス図。
【図１６】デバイスユニット４００のファームウェアデータを取得する様子を示すシーケンス図。
【図１７】デバイスユニット４００のＥＰＲＯＭ４３０を更新する様子を示すシーケンス図。
【符号の説明】
【０１０５】
１００…ネットワークシステム
１１０…デジタルテレビ
１２０…ルータ
１３０…ファームウェア保管サーバ
２００…複合機
２１０…電源回路
３００…ネットワークユニット
３０２…ネットワークプロトコル制御部
３１０…中央制御部
３２０…ＲＡＭ
３３０…ＥＰＲＯＭ
３４０…ネットワーク制御部
３４２…コネクタ
３５０…ＵＳＢホスト制御部
３５２…ルートハブ
３５４，３５６…ＵＳＢコネクタ
４００…デバイスユニット
４０２…デバイス制御部
４０４…プリンタ
４０６…スキャナ
４１０…中央制御部
４２０…ＲＡＭ
４３０…ＥＰＲＯＭ
４４０…印刷エンジン
４５０…スキャンエンジン
４６０，４７０…ＵＳＢデバイス制御部
４６２，４７２…ＵＳＢコネクタ
４８０…ＰＣカードインタフェース
４８２…スロット
４９０…操作パネル制御部
４９２…操作パネル
５００…ビューワ制御部
５０２…ビューワ
５１０…ＵＳＢホスト制御部
５１２…ルートハブ
５１４…ＵＳＢコネクタ
５２０…電源制御部
１０００…プロトコル変換部
２０００…ファームウェア更新処理部
【図１】
0004552815.tif 000002
【図２】
0004552815.tif 000003
【図３】
0004552815.tif 000004
【図４】
0004552815.tif 000005
【図５】
0004552815.tif 000006
【図６】
0004552815.tif 000007
【図７】
0004552815.tif 000008
【図８】
0004552815.tif 000009
【図９】
0004552815.tif 000010
【図１０】
0004552815.tif 000011
【図１１】
0004552815.tif 000012
【図１２】
0004552815.tif 000013
【図１３】
0004552815.tif 000014
【図１４】
0004552815.tif 000015
【図１５】
0004552815.tif 000016
【図１６】
0004552815.tif 000017
【図１７】
0004552815.tif 000018