(57)【特許請求の範囲】
【請求項１】
端末装置と接続されるデバイスであって、
当該デバイスにインストールされている第１ファームウェアを記憶するデバイス記憶部と、
前記端末装置から送信される送信情報を受信する第１受信制御部と、
前記第１ファームウェアが、更新の際に前記送信情報の必要な第１種のファームウェアである場合に、前記第１受信制御部が前記送信情報を受信したことに応じて前記デバイス記憶部に記憶される前記第１ファームウェアを第２ファームウェアに更新する第１更新処理と、前記第１ファームウェアが、更新の際に前記送信情報の不要な第２種のファームウェアである場合に、前記第１受信制御部が前記送信情報を受信したかにかかわらず前記第１ファームウェアを前記第２ファームウェアに更新する第２更新処理と、を実行する更新制御部と、
を備えるデバイス。
【請求項２】
請求項１に記載のデバイスであって、
前記送信情報は、当該デバイスを識別するための識別情報であり、
前記送信情報を前記端末装置に送信する第１送信制御部と、
をさらに備えるデバイス。
【請求項３】
請求項２に記載のデバイスであって、
前記更新制御部は、前記第１更新処理を実行する際に、前記第１送信制御部が前記送信情報を前記端末装置に送信してから所定期間内に前記送信情報を受信した場合には、前記第１ファームウェアを前記第２ファームウェアに更新し、前記所定時間外に前記送信情報を受信した場合には、前記第１ファームウェアを前記第２ファームウェアに更新しない、デバイス。
【請求項４】
請求項２または請求項３に記載のデバイスであって、
前記デバイス記憶部に記憶される前記第１ファームウェアから所定のハッシュ関数により第１ハッシュ値を算出する算出部と、
前記第１ファームウェアに基づく第２ハッシュ値を外部から受信する第２受信制御部と、
前記第１ハッシュ値と前記第２ハッシュ値とが一致する場合に、前記送信情報を生成する生成部と、
をさらに備え、
前記第１ハッシュ値と前記第２ハッシュ値とが一致しない場合に、前記第１送信制御部が前記送信情報を送信しない、デバイス。
【請求項５】
請求項４に記載のデバイスと接続される端末装置であって、
前記第２ファームウェアを記憶する端末記憶部と、
前記デバイス記憶部に記憶される前記第１ファームウェアが前記第１種のファームウェアであるか否かを判断する判断部と、
前記判断部で判断された前記第１ファームウェアが前記第１種のファームウェアであることに応じて、前記デバイスに対し、前記第２ハッシュ値と前記第２ファームウェアとを送信し、前記判断部で判断された前記第１ファームウェアが前記第１種のファームウェアでないことに応じて、前記第２ハッシュ値を送信せずに前記第２ファームウェアを送信する、第２送信制御部と、
を備える端末装置。
【請求項６】
請求項５に記載の端末装置と接続されるサーバであって、
前記第１ファームウェアを含む複数のファームウェアの識別情報と、前記各ファームウェアに基づくハッシュ値と、を対応付けて記憶するハッシュ値記憶部と、
前記端末装置から前記デバイス記憶部に記憶される前記第１ファームウェアの識別情報を受信する第３受信制御部と、
前記ハッシュ値記憶部から前記第１ファームウェアの識別情報に対応するハッシュ値を取得し、前記第２ハッシュ値として前記端末装置に送信する第３送信制御部と、
を備えるサーバ。
【請求項７】
請求項１から請求項３のいずれか一項に記載のデバイスと接続される端末装置であって、
前記第２ファームウェアを記憶する端末記憶部と、
前記デバイス記憶部に記憶される前記第１ファームウェアが前記第１種のファームウェアであるか否かを判断する判断部と、
前記判断部で判断された前記第１ファームウェアが前記第１種のファームウェアであることに応じて、前記デバイスに対し、前記送信情報と前記第２ファームウェアとを送信し、前記判断部で判断された前記第１ファームウェアが前記第１種のファームウェアでないことに応じて、前記送信情報を送信せずに前記第２ファームウェアを送信する、第４送信制御部と、
を備える端末装置。
【請求項８】
端末装置と接続されたデバイスのファームウェアを更新する方法であって、
前記デバイスにインストールされる第１ファームウェアが、更新の際に送信情報の必要な第１種のファームウェアであるか否かを判断する判断ステップと、
前記判断された第１ファームウェアが前記第１種のファームウェアであることに応じて、第１更新方法を実行し、前記判断された第１ファームウェアが前記第１種のファームウェアでないことに応じて、第２更新方法を実行する、実行ステップと、
を有し、
前記第１更新方法は、
前記第１ファームウェアから所定のハッシュ関数により第１ハッシュ値を算出する算出ステップと、
前記端末装置から前記第１ファームウェアに基づく第２ハッシュ値を前記デバイスに送信する第１送信ステップと、
前記第１ハッシュ値と前記第２ハッシュ値とが一致する場合に前記デバイスを識別するための識別情報である前記送信情報を生成する生成ステップと、
前記送信情報を前記端末装置に送信する第２送信ステップと、
前記端末装置から前記送信情報と第２ファームウェアとを前記デバイスに送信する第３送信ステップと、
前記デバイスにおいて前記送信情報を受信した場合に前記第１ファームウェアを前記第２ファームウェアに更新する第１更新ステップと、
を有し、
前記第２更新方法は、
前記端末装置から前記第２ファームウェアを前記デバイスに送信する第４送信ステップと、
前記端末装置から前記送信情報を受信したかにかかわらず前記第１ファームウェアを前記第２ファームウェアに更新する第２更新ステップと、
を有する、ファームウェアの更新方法。
【請求項９】
デバイスと接続され、前記デバイスにインストールされた第１ファームウェアを第２ファームウェアに更新させる端末装置であって、
前記デバイスは、前記第１ファームウェアから所定のハッシュ関数により算出される第１ハッシュ値と前記端末装置から受信した第２ハッシュ値とが一致する場合に識別情報である送信情報を前記端末装置に送信し、その後、前記第１ファームウェアが、更新の際に前記送信情報の必要な第１種のファームウェアである場合に、前記第２ファームウェアと前記送信情報とを受信したことに応じて前記第１ファームウェアを更新する第３更新処理と、前記第１ファームウェアが、更新の際に前記送信情報の不要な第２種のファームウェアである場合に、前記第２ファームウェアを受信したことに応じて前記送信情報を受信したかにかかわらず前記第１ファームウェアを更新する第４更新処理と、を実行するものであって、
前記第１ファームウェアが前記第１種のファームウェアであるか否かを判断する判断部と、
前記判断部で判断された前記第１ファームウェアが前記第１種のファームウェアであることに応じて、前記デバイスに対し、前記第２ハッシュ値を送信して返信された前記送信情報と前記第２ファームウェアとを送信し、前記判断部で判断された前記第１ファームウェアが前記第１種のファームウェアでないことに応じて、前記第２ハッシュ値を送信せずに前記第２ファームウェアを送信する、第５送信制御部と、
を備えた端末装置。
【請求項１０】
デバイスと接続された端末装置によって前記デバイスにインストールされた第１ファームウェアを第２ファームウェアに更新させるためのプログラムであって、
前記デバイスは、前記第１ファームウェアから所定のハッシュ関数により算出される第１ハッシュ値と前記端末装置から受信した第２ハッシュ値とが一致する場合に識別情報である送信情報を前記端末装置に送信し、その後、前記第１ファームウェアが、更新の際に前記送信情報の必要な第１種のファームウェアである場合に、前記第２ファームウェアと前記送信情報とを受信したことに応じて前記第１ファームウェアを更新する第３更新処理と、前記第１ファームウェアが、更新の際に前記送信情報の不要な第２種のファームウェアである場合に、前記第２ファームウェアを受信したことに応じて前記送信情報を受信したかにかかわらず前記第１ファームウェアを更新する第４更新処理と、を実行するものであって、
前記端末装置に、
前記第１ファームウェアが前記第１種のファームウェアであるか否かを判断する判断処理と、
前記判断処理で判断された前記第１ファームウェアが前記第１種のファームウェアであることに応じて、前記デバイスに対し、前記第２ハッシュ値を送信して返信された前記送信情報と前記第２ファームウェアとを送信し、前記判断処理で判断された前記第１ファームウェアが前記第１種のファームウェアでないことに応じて、前記第２ハッシュ値を送信せずに前記第２ファームウェアを送信する、送信制御処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイスのファームウェアを更新するための技術に関する。
【背景技術】
【０００２】
従来より、プリンタ、スキャナ等のデバイスにインストールされたファームウェアを更新する技術が知られている。例えば、特許文献１には、デバイスに接続された端末装置によってデバイスメーカーのウェブサーバから最新のファームウェアをダウンロードし、そのファームウェアをデバイスに送信してファームウェアを書き換える技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−９２３２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このようなファームウェアの更新作業は、通常はユーザが簡易に行うことができるようにすることが望ましい。
【０００５】
ところで、デバイスには、その用途に応じて、標準仕様とは異なる仕様に設定されたものがある（例えば、印刷枚数を制限する機能が追加されたプリンタなど）。こうした特殊な仕様のデバイスには、標準のファームウェアと異なる種類の特殊なファームウェアがインストールされることがある。
【０００６】
このような特殊なファームウェアがインストールされているデバイスにおいて、一般のユーザが特殊なファームウェアを元の通常のファームウェアで書き換えると、それまで特殊なファームウェアで実現されていた機能が消失してしまうなどの問題があった。
【０００７】
本発明は上記のような事情に基づいて完成されたものであって、ファームウェアの種類に応じてファームウェアの更新を制限する技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本明細書によって開示されるデバイスは、端末装置と接続されるデバイスであって、当該デバイスにインストールされている第１ファームウェアを記憶するデバイス記憶部と、前記端末装置から送信される送信情報を受信する第１受信制御部と、前記第１ファームウェアが、更新の際に前記送信情報の必要な第１種のファームウェアである場合に、前記第１受信制御部が前記送信情報を受信したことに応じて前記デバイス記憶部に記憶される前記第１ファームウェアを第２ファームウェアに更新する第１更新処理と、前記第１ファームウェアが、更新の際に前記送信情報の不要な第２種のファームウェアである場合に、前記第１受信制御部が前記送信情報を受信したかにかかわらず前記第１ファームウェアを前記第２ファームウェアに更新する第２更新処理と、を実行する更新制御部と、を備える。
【０００９】
また、上記デバイスは、前記送信情報が、当該デバイスを識別するための識別情報であり、前記送信情報を前記端末装置に送信する第１送信制御部と、をさらに備える構成でもよい。
【００１０】
また、上記デバイスは、前記更新制御部が、前記第１更新処理を実行する際に、前記第１送信制御部が前記送信情報を前記端末装置に送信してから所定期間内に前記送信情報を受信した場合には、前記第１ファームウェアを前記第２ファームウェアに更新し、前記所定時間外に前記送信情報を受信した場合には、前記第１ファームウェアを前記第２ファームウェアに更新しない構成でもよい。
【００１１】
また、上記デバイスは、前記デバイス記憶部に記憶される前記第１ファームウェアから所定のハッシュ関数により第１ハッシュ値を算出する算出部と、前記第１ファームウェアに基づく第２ハッシュ値を外部から受信する第２受信制御部と、前記第１ハッシュ値と前記第２ハッシュ値とが一致する場合に、前記送信情報を生成する生成部と、をさらに備え、前記第１ハッシュ値と前記第２ハッシュ値とが一致しない場合に、前記第１送信制御部が前記送信情報を送信しない、構成でもよい。
【００１２】
また、本明細書によって開示される端末装置は、上記デバイスと接続される端末装置であって、前記第２ファームウェアを記憶する端末記憶部と、前記デバイス記憶部に記憶される前記第１ファームウェアが前記第１種のファームウェアであるか否かを判断する判断部と、前記判断部で判断された前記第１ファームウェアが前記第１種のファームウェアであることに応じて、前記デバイスに対し、前記第２ハッシュ値と前記第２ファームウェアとを送信し、前記判断部で判断された前記第１ファームウェアが前記第１種のファームウェアでないことに応じて、前記第２ハッシュ値を送信せずに前記第２ファームウェアを送信する、第２送信制御部と、を備える。
【００１３】
また、本明細書によって開示されるサーバは、上記端末装置と接続されるサーバであって、前記第１ファームウェアを含む複数のファームウェアの識別情報と、前記各ファームウェアに基づくハッシュ値と、を対応付けて記憶するハッシュ値記憶部と、前記端末装置から前記デバイス記憶部に記憶される前記第１ファームウェアの識別情報を受信する第３受信制御部と、前記ハッシュ記憶部から前記第１ファームウェアの識別情報に対応するハッシュ値を取得し、前記第２ハッシュ値として前記端末装置に送信する第３送信制御部と、を備える。
【００１４】
また、本明細書によって開示される端末装置は、上記デバイスと接続される端末装置であって、前記第２ファームウェアを記憶する端末記憶部と、前記デバイス記憶部に記憶される前記第１ファームウェアが前記第１種のファームウェアであるか否かを判断する判断部と、前記判断部で判断された前記第１ファームウェアが前記第１種のファームウェアであることに応じて、前記デバイスに対し、前記送信情報と前記第２ファームウェアとを送信し、前記判断部で判断された前記第１ファームウェアが前記第１種のファームウェアでないことに応じて、前記送信情報を送信せずに前記第２ファームウェアを送信する、第４送信制御部と、を備える。
【００１５】
なお、この発明は、デバイス、制御装置、サーバ、これらの装置を備えた更新システム、更新方法、これらの装置またはシステムの機能または方法を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体等の種々の態様で実現することができる。
【発明の効果】
【００１６】
本発明によれば、端末装置からの送信情報を受信した場合にファームウェアを更新する第１更新処理と、送信情報の受信にかかわらずファームウェアを更新する第２更新処理とをファームウェアの種類に応じて切り替えて実行するため、ファームウェアの種類に応じて更新を制限することができる。
【図面の簡単な説明】
【００１７】
【図１】実施形態１におけるシステムの構成を示すブロック図
【図２】実施形態１におけるファームウェアの更新動作の例を示すシーケンス図
【図３】実施形態１における更新管理処理のフローチャート
【図４】実施形態１におけるプリンタメイン処理のフローチャート
【図５】実施形態１における制限付き更新処理のフローチャート
【図６】実施形態１における非制限更新処理のフローチャート
【図７】実施形態１におけるサーバメイン処理のフローチャート
【図８】実施形態２における手動更新処理のフローチャート
【図９】実施形態２における第１ファイル指定画面を示す図
【発明を実施するための形態】
【００１８】
＜実施形態１＞
次に本発明の実施形態１について図１から図７を参照して説明する。
【００１９】
（システムの構成）
図１は、ファームウェアの更新システムの構成を示すブロック図である。同図に示すように、このシステムは、プリンタ１０と、端末装置３０と、サーバ５０とを備えている。
【００２０】
プリンタ１０（デバイスの一例）は、ＣＰＵ１１、ＲＡＭ１２、ＥＥＰＲＯＭ１３、ネットワークインターフェース１４、印刷部１５、操作部１６、及び表示部１７を備えている。
【００２１】
ＥＥＰＲＯＭ１３（デバイス記憶部の一例）は、書き換え可能な不揮発性のメモリであって、ファームウェア２０と、更新制御プログラム２１とを記憶している。ファームウェア２０は、印刷機能などプリンタ１０の主要な機能を実現するためのプログラムであり、更新制御プログラム２１は、後述するようにファームウェア２０を更新するためのプログラムである。ＣＰＵ１１（第１受信制御部、更新制御部、生成部、第１送信制御部、算出部、第２受信制御部の一例）は、ＥＥＰＲＯＭ１３からファームウェアまたは更新制御プログラム２１をＲＡＭ１２上に読み出して実行することにより、プリンタ１０の各種動作を制御する。
【００２２】
なお、以下の説明においては、ファームウェアの更新を行う前にＥＥＰＲＯＭ１３に記憶されている（インストールされている）更新対象のファームウェアを第１ファームウェア２０といい、ファームウェアの更新によって第１ファームウェア２０に替えてＥＥＰＲＯＭ１３に書き込まれる（インストールされる）更新用のファームウェアを第２ファームウェア６０という（図１は、ファームウェアの更新前の状態を示している）。
【００２３】
ネットワークインターフェース１４は、ＬＡＮ等のネットワーク回線７０に接続されている。印刷部１５は、端末装置３０等から供給された印刷データに基づいて用紙等のシートに画像を印刷する。操作部１６は、複数のボタンを備え、ユーザによる各種の指示の入力を受け付ける。表示部１７は、ディスプレイやランプ等を備え、各種の設定画面や装置の動作状態等を表示する。
【００２４】
端末装置３０は、汎用のクライアントコンピュータであって、ＣＰＵ３１、ＲＯＭ３２、ＲＡＭ３３、ＨＤＤ（ハードディスクドライブ）３４、ネットワークインターフェース３５、操作部３６、表示部３７を備えている。
【００２５】
ＲＯＭ３２は、ＢＩＯＳ等のプログラムを記憶している。ＨＤＤ３４（端末記憶部の一例）は、ＯＳや、プリンタドライバ、後述する更新管理処理等を実行する管理アプリケーション４０（プログラムの一例）などを記憶している。ＣＰＵ３１（判断部、第２送信制御部、第４送信制御部、第５送信制御部の一例）は、ＲＯＭ３２やＨＤＤ３４からＲＡＭ３３上に読み出したプログラムに従って各部の制御を行う。
【００２６】
ネットワークインターフェース３５は、既述のネットワーク回線７０に接続されており、同じくネットワーク回線７０に接続されたプリンタ１０との間で通信が可能である。また、ネットワーク回線７０は、図示しないルーターを介してインターネット７１に接続されており、ネットワークインターフェース３５は、同じくインターネット７１に接続されたサーバ５０との間で通信が可能である。
【００２７】
操作部３６は、キーボードやポインティングデバイスを備えており、ユーザによる各種の指示の入力を受け付ける。表示部３７は、ディスプレイを備え、ＣＰＵ３１の制御により様々な画像を表示する。
【００２８】
サーバ５０は、サーバ用のコンピュータであって、ＣＰＵ５１、ＲＯＭ５２、ＲＡＭ５３、ＨＤＤ５４、ネットワークインターフェース５５、操作部５６、表示部５７を備えている。ＨＤＤ５４（ハッシュ値記憶部の一例）は、サーバ用ＯＳのほか、後に詳述するように、サーバメイン処理等を実行するサーバプログラム６１や、ファームウェアの更新情報６２、第２ファームウェア６０を含む更新用ファームウェア６３、ハッシュ値データ６４、更新結果データ６５等を記憶している。ＣＰＵ５１（第３受信制御部、第３送信制御部の一例）は、ＲＯＭ５２やＨＤＤ５４からプログラムをＲＡＭ５３上に読み出して各種の制御を行う。
【００２９】
（ファームウェアの更新動作）
次に本システムにおけるプリンタ１０のファームウェアの更新動作について説明する。図２は、本システムにおけるファームウェアの更新動作の例を示すシーケンス図である。図３は、端末装置３０において実行される更新管理処理のフローチャートであり、図４から図６は、プリンタ１０において実行されるプリンタメイン処理のフローチャート、図７は、サーバ５０において実行されるサーバメイン処理のフローチャートである。
【００３０】
最初に端末装置３０において、ユーザが操作部３６から管理アプリケーション４０の起動の指示を入力すると、ＣＰＵ３１は、管理アプリケーション４０を起動する。なお、このとき、予め設定された管理者用のパスワードの入力をユーザに要求するようにしても良い。
【００３１】
ＣＰＵ３１は、管理アプリケーション４０を起動すると、ネットワークインターフェース３５にネットワーク回線７０を介して接続されたプリンタを検索する。そして、見つかったプリンタの中から管理アプリケーション４０が対応する機種のプリンタを表示部３７にリスト表示する。ユーザは、操作部３６を用いてリストの中から更新管理処理を実行する対象のプリンタ（ここではプリンタ１０）を選択し、更新管理処理の実行指示を入力する。この実行指示を受けてＣＰＵ３１は、管理アプリケーション４０の機能により図３に示す更新管理処理を実行する。
【００３２】
ＣＰＵ３１は、更新管理処理を開始すると、まずネットワークインターフェース３５を介してプリンタ１０に対しファームウェア情報の要求を送信する（Ｓ１０１）。ファームウェア情報とは、ファームウェアを識別するための情報であって、ここでは、プリンタ１０の機種名とファームウェア名とそのバージョンである。
【００３３】
一方、プリンタ１０では、ＣＰＵ１１が更新制御プログラム２１の機能により図４に示すプリンタメイン処理を繰り返し実行する。このプリンタメイン処理において、ＣＰＵ１１は、まずファームウェア情報の要求を受けたかを判断し（Ｓ２０１）、ファームウェア情報の要求を受けていない場合（Ｓ２０１：ＮＯ）にはプリンタメイン処理を終了する。また、ファームウェア情報の要求を受けた場合（Ｓ２０１：ＹＥＳ）には、ネットワークインターフェース１４により端末装置３０に第１ファームウェア２０のファームウェア情報を送信する（Ｓ２０２）。
【００３４】
端末装置３０のＣＰＵ３１は、図３のＳ１０１において、ネットワークインターフェース３５を介してプリンタ１０からファームウェア情報を受信すると、続いてサーバ５０にログイン要求を送信する（Ｓ１０２）。このログイン要求には、例えば、管理アプリケーション４０に予め設定されたログインユーザ名とパスワードとが含まれる。
【００３５】
ＣＰＵ３１は、サーバ５０からログイン要求の応答としてログイン成功通知を受けると、続いてプリンタ１０のファームウェア情報をサーバ５０に送信する（Ｓ１０３）。なお、サーバ５０からログイン失敗通知を受信した場合には、ログインユーザ名及びパスワードをユーザに操作部３６から入力させ、入力されたものを含んだログイン要求を再度送信してもよい。
【００３６】
サーバ５０のＣＰＵ５１は、ログイン要求を受信したときにサーバプログラム６１の機能によって図７に示すサーバメイン処理を実行する。ＣＰＵ５１は、サーバメイン処理において、まずログインが成功したか、即ちログインユーザ名及びパスワードが予め登録されたものと一致するか、を判断する（Ｓ５０１）。
【００３７】
そして、ＣＰＵ５１は、ログインに失敗した場合（Ｓ５０１：ＮＯ）には、ログイン失敗通知を端末装置３０に送信し（Ｓ５０２）、このサーバメイン処理を終了する。ログインが成功した場合（Ｓ５０１：ＹＥＳ）には、ログイン成功通知を端末装置３０に送信し（Ｓ５０３）、続いてプリンタ１０から送信されるファームウェア情報を受信する（Ｓ５０４）。
【００３８】
ここで、ＨＤＤ５４には、更新情報６２として、様々な機種のプリンタに対応する各種のファームウェアについて、その最新のバージョン（番号）を記録したテーブルが記憶されており、さらに更新用ファームウェア６３として、それら各種のファームウェアの最新のバージョン（ファームウェアプログラム）が記憶されている。
【００３９】
ＣＰＵ５１は、受信したファームウェア情報と更新情報６２とから、第１ファームウェア２０の新しいバージョンが存在するかを判断する（Ｓ５０５）。第１ファームウェア２０の新しいバージョンが存在しない場合（Ｓ５０５：ＮＯ）には、更新不要通知を端末装置３０に送信し（Ｓ５０６）、このサーバメイン処理を終了する。
【００４０】
ここで、ＨＤＤ５４には、ハッシュ値データ６４として、更新用ファームウェア６３に含まれるファームウェアの更新対象となる全てのバージョンのファームウェアについて、ファームウェア名、バージョン、ハッシュ値のデータが対応付けて記憶されている。ハッシュ値とは、任意の長さのデータからハッシュ関数を用いて算出される固定長のデータである。ハッシュ関数とは、ハッシュ値から元のデータを算出することが困難な一方向関数であり、ＭＤ５、ＳＨＡ−１等が知られている。
【００４１】
ここでは、各ファームウェアのバイナリデータを所定のハッシュ関数に入力して得られたハッシュ値がハッシュ値データ６４として記憶されている。例えば、ファームウェア名「ＡＡ００１」の最新バージョンが「１．３」であって、その古いバージョン「１．０」「１．１」「１．２」が更新対象であるとすると、それら３つのバージョンのファームウェアからそれぞれ算出されたハッシュ値が記憶されている。
【００４２】
ＣＰＵ５１は、第１ファームウェア２０の新しいバージョンが存在する場合（Ｓ５０５：ＹＥＳ）には、ハッシュ値データ６４から第１ファームウェア２０のハッシュ値を取得し、さらに更新用ファームウェア６３から第１ファームウェア２０の新バージョンである第２ファームウェア６０を取得し、取得したハッシュ値及び第２ファームウェア６０を端末装置３０に送信し（Ｓ５０７）、このサーバメイン処理を終了する。以下、このときサーバ５０から送信されたハッシュ値を第２ハッシュ値という。
【００４３】
端末装置３０のＣＰＵ３１は、図３のＳ１０３において、サーバ５０にファームウェア情報を送信した後、サーバ５０から更新不要通知を受信した場合（Ｓ１０４：ＹＥＳ）には、第１ファームウェア２０が最新バージョンであるため更新が不要である旨のメッセージを更新結果として表示部３７に表示し（Ｓ１０５）、この更新管理処理を終了する。また、更新不要通知を受信しない場合（Ｓ１０４：ＮＯ）には、サーバ５０から送信されるハッシュ値と第２ファームウェア６０とを受信する（Ｓ１０６）。
【００４４】
続いて、ＣＰＵ３１は、ファームウェアの更新の実行をユーザに確認させる実行確認画面を表示部３７に表示する（Ｓ１０７）。そして、ユーザにより操作部３６から更新の実行をキャンセルする指示が入力された場合（Ｓ１０７：ＮＯ）には、実行がキャンセルされた旨のメッセージを更新結果として表示部３７に表示し（Ｓ１０５）、この更新管理処理を終了する。
【００４５】
また、ＣＰＵ３１は、更新を実行する指示が入力された場合（Ｓ１０７：ＹＥＳ）には、第１ファームウェア２０が、更新の際に後述の更新ＩＤ（送信情報の一例）の必要な第１種のファームウェアか、更新ＩＤの不要な第２種のファームウェアかを判断する（Ｓ１０８）。ここで、第２種のファームウェアは、標準のファームウェアであり、第１種のファームウェアは、標準のファームウェアに対し例えば印刷枚数を制限するなど特別な機能を加えた特殊なファームウェアである。
【００４６】
なお、本プリンタ１０に対しては、第１種のファームウェアと第２種のファームウェアとのいずれもインストール可能であって、製造時に仕様に応じて第１種と第２種のいずれか一方のファームウェアがインストールされる。
【００４７】
各ファームウェアには、例えばファームウェア名に、そのファームウェアが第１種と第２種とのいずれであるかを識別するための識別子が付与されている。ＣＰＵ３１は、ファームウェア情報に含まれるファームウェア名の識別子から、第１ファームウェア２０が第１種のファームウェアか第２種のファームウェアかを判断する。ＣＰＵ３１は、第１ファームウェア２０が第１種のファームウェアである場合（Ｓ１０８：ＹＥＳ）には、プリンタ１０に更新指令を送信し、続いてサーバ５０から受け取った第２ハッシュ値を送信する（Ｓ１０９）。
【００４８】
一方、プリンタ１０のＣＰＵ１１は、図４のＳ２０２において、端末装置３０にファームウェア情報を送信した後、端末装置３０から更新指令を受信したかを判断し（Ｓ２０３）、受信していない場合（Ｓ２０３：ＮＯ）には、このプリンタメイン処理を終了する。更新指令を受信した場合（Ｓ２０３：ＹＥＳ）には、第１ファームウェア２０が第１種のファームウェアか第２種のファームウェアかを、既述の端末装置３０と同様に判断する（Ｓ２０４）。
【００４９】
そして、ＣＰＵ１１は、第１ファームウェア２０が第１種のファームウェアである場合（Ｓ２０４：ＹＥＳ）には、制限付き更新処理（第１更新処理、第３更新処理の一例）を実行する（Ｓ２０５）。
【００５０】
ＣＰＵ１１は、図５に示す制限付き更新処理において、まず端末装置３０から更新指令に続いて送信される第２ハッシュ値を受信する（Ｓ３０１）。続いて、ＥＥＰＲＯＭ１３に記憶される第１ファームウェア２０からハッシュ値（第１ハッシュ値）を算出する（Ｓ３０２）。このとき、ハッシュ関数として、サーバ５０に記憶された第２ハッシュ値を算出するために用いられたハッシュ関数と同一のものを用いる。
【００５１】
続いて、ＣＰＵ１１は、算出された第１ハッシュ値と、端末装置３０から受信した第２ハッシュ値とを比較する（Ｓ３０３）。そして、両ハッシュ値が一致しない場合（Ｓ３０３：ＮＯ）には、更新不許可通知を端末装置３０に送信し（Ｓ３０４）、ファームウェアの更新を行わずにこの制限付き更新処理を終了する。
【００５２】
また、ＣＰＵ１１は、第１ハッシュ値と第２ハッシュ値とが一致する場合（Ｓ３０３：ＹＥＳ）には、確認許可通知を端末装置３０に送信する（Ｓ３０５）。続いて、ＣＰＵ１１は、プリンタ１０を識別するための識別情報として、更新ＩＤ（送信情報の一例）を生成し、端末装置３０に送信する（Ｓ３０６）。この更新ＩＤは、例えば、プリンタ１０のシリアル番号等のプリンタ１０の固有値を用いて生成しても良く、あるいは乱数等を用いて生成してもよい。
【００５３】
端末装置３０のＣＰＵ３１は、図３のＳ１０９にて、プリンタ１０に第２ハッシュ値を送信した後、プリンタ１０から更新許可通知を受けたかを判断し（Ｓ１１０）、更新不許可通知を受けた場合（Ｓ１１０：ＮＯ）には、更新が許可されなかった旨のメッセージを更新結果として表示部３７に表示し（Ｓ１０５）、この更新管理処理を終了する。
【００５４】
また、ＣＰＵ３１は、更新許可通知を受けた場合（Ｓ１１０：ＹＥＳ）には、続いてプリンタ１０から送信される更新ＩＤを受信する（Ｓ１１１）。続いて、ＣＰＵ１１は、受信した更新ＩＤとともに第２ファームウェア６０をプリンタ１０に送信する（Ｓ１１２）。
【００５５】
一方、プリンタ１０のＣＰＵ１１は、図５のＳ３０６にて、更新ＩＤを送信した後、端末装置３０から第２ファームウェア６０と更新ＩＤとを受信したかを判断し（Ｓ３０７）、受信していない場合（Ｓ３０７：ＮＯ）には、更新ＩＤの送信後から所定のタイムアウト時間が経過したかを判断する（Ｓ３０８）。
【００５６】
ＣＰＵ１１は、タイムアウト時間が経過していない場合（Ｓ３０８：ＮＯ）には、Ｓ３０７に戻って同様の処理を繰り返すことにより第２ファームウェア６０及び更新ＩＤの受信を待機する。第２ファームウェア及び更新ＩＤを受信しないままタイムアウト時間が経過した場合（Ｓ３０８：ＹＥＳ）には、この制限付き更新処理を終了する。
【００５７】
ＣＰＵ１１は、端末装置３０から第２ファームウェア６０と更新ＩＤとを受信した場合（Ｓ３０７：ＹＥＳ）、受信した更新ＩＤがＳ３０６にて送信した更新ＩＤと一致するかを判断する（Ｓ３０９）。そして、両更新ＩＤが互いに一致しない場合（Ｓ３０９：ＮＯ）には、更新失敗通知を端末装置３０に送信し（Ｓ３１０）、この制限付き更新処理を終了する。
【００５８】
また、ＣＰＵ１１は、両更新ＩＤが互いに一致する場合（Ｓ３０９：ＹＥＳ）には、ＥＥＰＲＯＭ１３に記憶されている第１ファームウェア２０を第２ファームウェア６０に書き換える（Ｓ３１１）。そして、更新完了通知を端末装置３０に送信し（Ｓ３１２）、この制限付き更新処理を終了する。
【００５９】
端末装置３０のＣＰＵ３１は、図３のＳ１０８にて、第１ファームウェア２０が第２種のファームウェアであると判断した場合（Ｓ１０８：ＮＯ）には、第２ファームウェア６０をプリンタ１０に送信する（Ｓ１１３）。即ち、この場合には、第２ハッシュ値及び更新ＩＤが端末装置３０からプリンタ１０に送信されない。
【００６０】
一方、プリンタ１０のＣＰＵ１１は、図４のＳ２０４にて第１ファームウェア２０が第２種のファームウェアであると判断した場合（Ｓ２０４：ＮＯ）には、非制限更新処理（第２更新処理、第４更新処理の一例）を実行する（Ｓ２０６）。
【００６１】
ＣＰＵ１１は、図６に示す非制限更新処理において、端末装置３０から第２ファームウェアを受信したかを判断し（Ｓ４０１）、受信していない場合（Ｓ４０１：ＮＯ）には、この非制限更新処理を開始してから所定のタイムアウト時間が経過したかを判断する（Ｓ４０２）。タイムアウト時間が経過していない場合（Ｓ４０２：ＮＯ）には、Ｓ４０１に戻って同様の処理を繰り返すことにより、第２ファームウェアの受信を待機する。第２ファームウェアを受信する前にタイムアウト時間が経過した場合（Ｓ４０２：ＹＥＳ）には、この非制限更新処理を終了する。
【００６２】
ＣＰＵ１１は、第２ファームウェア６０を受信した場合（Ｓ４０１：ＹＥＳ）には、その第２ファームウェア６０が第１種のファームウェアであるか第２種のファームウェアであるかを判断する（Ｓ４０３）。受信した第２ファームウェア６０が第１種のファームウェアである場合（Ｓ４０３：ＹＥＳ）には、何らかの事情で第１ファームウェア２０と対応しないファームウェアを受信したと考えられる。このため、更新を行わずに、更新失敗通知を端末装置３０に送信し（Ｓ４０４）、この非制限更新処理を終了する。
【００６３】
また、ＣＰＵ１１は、第２ファームウェア６０が第２種のファームウェアである場合（Ｓ４０３：ＮＯ）には、ＥＥＰＲＯＭ１３に記憶される第１ファームウェア２０を第２ファームウェア６０に書き換える（Ｓ４０５）。そして、更新完了通知を端末装置３０に送信し（Ｓ４０６）、この非制限更新処理を終了する。なお、Ｓ４０３及びＳ４０４を省略し、第２ファームウェア６０を受信した場合（Ｓ４０１：ＹＥＳ）に常にファームウェアの更新を行う（Ｓ４０５）ようにしてもよい。
【００６４】
端末装置３０では、図３のＳ１１２またはＳ１１３にて第２ファームウェアをプリンタ１０に送信した後、図５または図６のＳ３１０，Ｓ３１２，Ｓ４０４，またはＳ４０６におけるプリンタ１０から更新結果（更新完了通知または更新失敗通知）を受信する（Ｓ１１４）。そして、その更新結果を第１ファームウェア２０、第２ファームウェア６０のファームウェア情報やプリンタ１０の識別情報等とともにサーバ５０に送信する（Ｓ１１５）。サーバ５０のＣＰＵ５１は、端末装置３０から更新結果を受信すると、その更新結果を更新結果管理データ６４に記録し、正常に記録できたか否かを示すＯＫまたはＮＧの情報を端末装置３０に送信する。
【００６５】
端末装置３０のＣＰＵ３１は、サーバ５０に更新結果を送信した後、プリンタ１０から受信した更新結果に基づいて表示部３７に更新の成功または失敗を表示部３７に表示し（Ｓ１０５）、この更新管理処理を終了する。
【００６６】
（実施形態１の効果）
以上のように本実施形態によれば、端末装置３０からの更新ＩＤを受信した場合にファームウェアを更新する制限付き更新処理（第１更新処理）と、更新ＩＤの受信にかかわらずファームウェアを更新する非制限更新処理（第２更新処理）と、を第１ファームウェア２０の種類に応じて切り替えて実行するため、ファームウェアの種類に応じて更新を制限することができる。第１ファームウェア２０が第１種のファームウェアである場合には、その更新に更新ＩＤが必要となるため、よりセキュリティ性を高めることができる。
【００６７】
また、更新ＩＤがプリンタ１０によって生成された認証情報であって、その更新ＩＤを受信した場合にファームウェアを更新することによって、ファームウェアの更新の制限を行うことができる。例えば、プリンタ１０が別の更新ＩＤを受信したときにファームウェアが更新されることが防止される。
【００６８】
また、制限付き更新処理を実行する際に、プリンタ１０が更新ＩＤを端末装置３０に送信してから所定期間内に更新ＩＤを受信した場合にファームウェアを更新し、所定期間外に受信した場合には更新しない。これにより、ファームウェアの更新のために更新ＩＤを受信する期間が限定されるため、セキュリティ性をより高めることができる。
【００６９】
また、第１ファームウェア２０から算出した第１ハッシュ値と外部から受信した第２ハッシュ値とが一致しないと更新ＩＤがプリンタ１０から送信されないため、ファームウェアの更新が実行される条件を制限することができる。
【００７０】
即ち、第１ファームウェア２０が第１種のファームウェアである場合に、第１ファームウェア２０を更新するには、端末装置３０がサーバ５０から第２ファームウェア６０とともに取得した第２ハッシュ値が必要になる。従って、第１ファームウェア２０が、第１ファームウェア２０と対応しない別の種類のファームウェアに書き換えられる可能性を低減できる。
【００７１】
また、端末装置３０において、プリンタ１０にインストールされた第１ファームウェア２０が第１種のファームウェアか否かを判断し、第１種のファームウェアと判断した場合に第２ハッシュ値をプリンタ１０に送信する。これにより、第１ファームウェアの種類に応じて、第２ハッシュ値がプリンタ１０において更新のために必要な場合にのみ第２ハッシュ値を送信することができる。
【００７２】
また、端末装置３０において、プリンタ１０にインストールされた第１ファームウェア２０が第１種のファームウェアか否かを判断し、第１種のファームウェアと判断した場合に更新ＩＤをプリンタ１０に送信する。これにより、第１ファームウェアの種類に応じて、更新ＩＤがプリンタ１０において更新のために必要な場合にのみ更新ＩＤを送信することができる。
【００７３】
また、サーバ５０において、複数のファームウェアの識別情報と、各ファームウェアのハッシュ値とを対応付けて記憶し、端末装置３０から受信したファームウェア情報に対応する第２ハッシュ値を端末装置３０に送信する。これにより、端末装置３０が第２ハッシュ値を取得し、プリンタ１０に送信することができる。
【００７４】
＜実施形態２＞
次に本発明の実施形態２について図８及び図９を参照して説明する。
上記実施形態では、端末装置３０の管理アプリケーション４０によって、サーバ５０から第２ファームウェア６０及び第２ハッシュ値を取得して更新を行うものを示したが、本実施形態では、第２ファームウェア６０や第２ハッシュ値をユーザが別途入手して更新を行うものを示す。
【００７５】
（ファームウェアの更新動作）
図８は、本実施形態における更新管理処理のフローチャートであり、図９は、ファイル指定画面８０を示す図である。
本実施形態におけるプリンタ１０及び端末装置３０の構成は、図１と同様であり、以下の説明において、図１と同一の構成には同一の符号を付して説明を省略する。なお、本実施形態では、サーバ５０を設けなくてもよい。また、プリンタ１０のＣＰＵ１１は、図４から図６とほぼ同様の処理を実行するため、説明を省略する。
【００７６】
端末装置３０において、ユーザが管理アプリケーションを起動させ、プリンタ１０のファームウェアの更新を指示すると、ＣＰＵ３１は、図８に示す手動更新処理を実行する。この手動更新処理により更新を行うには、ユーザが第２ファームウェア６０と、必要に応じて第１ファームウェア２０のハッシュ値とを用意する。第２ファームウェア６０やハッシュ値は、サーバ５０からダウンロードできるようにしても良く、ＣＤ−ＲＯＭ等の記憶媒体に記録したものを配布してもよいが、少なくともハッシュ値については、管理権限のある者しか入手できないようにダウンロードや配布を制限することが望ましい。
【００７７】
ＣＰＵ３１は、手動更新処理を開始すると、まずプリンタ１０にファームウェア情報の要求を送信し、その応答として第１ファームウェア２０のファームウェア情報を受信する（Ｓ６０１）。続いて、受信したファームウェア情報から第１ファームウェア２０が第１種のファームウェアであるか第２種のファームウェアであるかを判断する（Ｓ６０２）。
【００７８】
ＣＰＵ３１は、第１ファームウェア２０が第１種のファームウェアである場合（Ｓ６０２：ＹＥＳ）には、図９に示す第１ファイル指定画面８０を表示部３７に表示する（Ｓ６０３）。この第１ファイル指定画面８０は、第１種のファームウェアを更新するために必要なファイルを指定するための画面であって、ファームウェア指定部８１、ハッシュ値指定部８２、ＯＫボタン８３等を備えている。
【００７９】
ファームウェア指定部８１及びハッシュ値指定部８２では、それぞれユーザが操作部３６を用いて、ファームウェアファイル、ハッシュ値ファイルのアドレス（格納場所と名称）を指定することができる。これらのファイルの格納場所としては、例えば、ＨＤＤ３４上やネットワーク回線７０に接続された他の端末装置や記憶媒体（図示せず）上のディレクトリを指定することができる。また、端末装置３０に例えばＵＳＢインターフェース（図示せず）を設けた場合に、そのＵＳＢインターフェースに接続したＵＳＢメモリ等の記憶媒体上を格納場所として指定してもよい。
【００８０】
ユーザが上記２つのファイルのアドレスを指定した後、操作部３６により第１ファイル指定画面８０のＯＫボタン８３をクリックすると、ＣＰＵ３１は、ハッシュ値指定部８２で指定されたハッシュ値ファイルを読み込み、そのハッシュ値ファイルのハッシュ値を第２ハッシュ値として更新指令とともにプリンタ１０に送信する（Ｓ６０４）。
【００８１】
プリンタ１０のＣＰＵ１１は、既述のように、更新指令を受信し、第１ファームウェア２０が第１種のファームウェアと判断すれば、第１ファームウェア２０から算出した第１ハッシュ値と端末装置３０から受信した第２ハッシュ値とが一致するかを判断する。そして、両者が一致する場合に更新許可通知を、一致しない場合に更新不許可通知を送信する（図４、図５）。
【００８２】
端末装置３０のＣＰＵ３１は、プリンタ１０から更新不許可通知を受けた場合（Ｓ６０５：ＮＯ）には、更新が許可されなかった旨の更新結果を表示部３７に表示して（Ｓ６０６）、この手動更新処理を終了する。また、更新許可通知を受けた場合（Ｓ６０５：ＹＥＳ）には、続いてプリンタ１０から送信される更新ＩＤを受信する（Ｓ６０７）。
【００８３】
そして、ＣＰＵ３１は、ファームウェア指定部８１で指定されるファームウェアファイルを読み込み、そのファームウェアファイルを第２ファームウェア６０として更新ＩＤとともにプリンタ１０に送信する（Ｓ６０８）。
【００８４】
また、ＣＰＵ３１は、Ｓ６０２において、第１ファームウェア２０が第２種のファームウェアである場合（Ｓ６０２：ＮＯ）には、第２種のファームウェアを更新するために必要なファイルを指定する第２ファイル指定画面（図示せず）を表示部３７に表示する（Ｓ６０９）。この第２ファイル指定画面は、前述の第１種のファームウェアを更新するための第１ファイル指定画面８０からハッシュ値指定部８２を除いたものであり、他は同様である。
【００８５】
ユーザがファームウェア指定部８１にファームウェアファイルのアドレスを指定した後、操作部３６により第２ファイル指定画面のＯＫボタン８３をクリックすると、ＣＰＵ３１は、ファームウェア指定部８１で指定されたファームウェアファイルを読み込み、そのファームウェアファイルを第２ファームウェア６０として更新指令とともにプリンタ１０に送信する（Ｓ６１０）。
【００８６】
Ｓ６０８またはＳ６１０にて、プリンタ１０に第２ファームウェア６０を送信した後、ＣＰＵ３１は、プリンタ１０から送信される更新結果を受信し（Ｓ６１１）、更新結果を表示部３７に表示し（Ｓ６０６）、この手動更新処理を終了する。
【００８７】
（実施形態２の効果）
以上のように本実施形態によれば、第１ファームウェア２０が第２種のファームウェアである場合には、第２ファームウェア６０のみを用いて更新を行うことができるのに対し、第１ファームウェア２０が第１種のファームウェアである場合には、第２ファームウェア６０と第１ファームウェア２０のハッシュ値とが必要になる。これにより、ファームウェアの種類に応じて更新を制限することができる。
【００８８】
即ち、第１種のファームウェアを更新する場合には、制限を加えることでセキュリティ性を高めることができ、第２種のファームウェアを更新する場合には、より簡易に行うことができる。
【００８９】
また、端末装置３０がサーバ５０に接続されていない環境でもファームウェアの更新を実行することができる。
【００９０】
＜他の実施形態＞
本発明は上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような実施形態も本発明の技術的範囲に含まれる。
【００９１】
（１）上記実施形態では、端末装置３０からプリンタ１０に第２ファームウェア６０を送信するものを示したが、本発明によれば、プリンタ１０に例えばＵＳＢメモリやメモリカード等の可搬記憶媒体を接続可能なインターフェースを設けて、そこに第２ファームウェア６０を記憶した可搬記憶媒体を接続し、ＣＰＵ１１が、端末装置３０から送信情報を受信したことに応じて可搬記憶媒体から第２ファームウェア６０を読み出して、第１ファームウェア２０を第２ファームウェア６０に書き換えてもよい。尚、この場合も、第１のファームウェアが第１種のファームウェアであるときは、上記実施形態と同様にハッシュ値が必要である。
【００９２】
（２）上記実施形態では、プリンタ１０及び端末装置３０の両方で第１ファームウェア２０が第１種のファームウェアであるかを判断するものを示したが、端末装置３０ではファームウェアの種類を判断しない構成としてもよい。この場合、例えば、端末装置３０から第１ファームウェアの種類にかかわらずプリンタ１０にハッシュ値を送信し、プリンタ１０側で受信したハッシュ値から更新ＩＤを生成するか否かを切り替える構成としてもよい。
【００９３】
また、サーバ５０において、ＣＰＵ５１がファームウェア情報から第１ファームウェア２０が第１種か第２種かを判断し、第１種である場合にのみハッシュ値を端末装置３０に送信する構成としてもよい。
【００９４】
また、プリンタ１０及び端末装置３０のうちいずれか一方のＣＰＵ（１１または３１）が第１ファームウェアの種類を判断して、その判断結果を他方側に伝達し、他方側のＣＰＵ（１１または３１）は、その判断結果に従って動作を行ってもよい。
【００９５】
（３）上記実施形態では、第１種のファームウェアを更新するための送信情報として、プリンタ１０が生成した更新ＩＤを用いるものを示したが、本発明によれば、デバイスが生成していない送信情報を用いてもよく、例えば、デバイスに予め記憶された所定の識別情報を含む情報を送信情報としてもよい。また、端末装置３０やサーバ５０にデバイスに対応しデバイスを識別するための識別情報を記憶しておき、それを送信情報としてデバイスに送信してもよい。
【００９６】
（４）上記実施形態では、１台のプリンタ１０に対してファームウェアの更新を行うものを示したが、端末装置３０から複数台のプリンタの更新を行うようにしてもよい。例えば、端末装置３０のＣＰＵ３１が、１台のプリンタ１０の更新の際にサーバ５０から取得したファームウェアやハッシュ値をＨＤＤ３４に記憶しておき、同じファームウェアまたはハッシュ値を適用できる他のプリンタの更新を行う際には、それらを再度サーバ５０から取得せずに、ＨＤＤ３４から読み出して各プリンタに送信するようにしてもよい。但し、ファームウェアの更新を終了した後は、ＨＤＤ３４からハッシュ値を消去することが望ましい。
【００９７】
（５）上記実施形態では、プリンタ１０において、第１受信制御部、更新制御部、生成部、第１送信制御部、算出部、第２受信制御部をいずれも同じＣＰＵ１１によって実現するものを示したが、本発明によれば、これらは、互いに別のＣＰＵ、若しくはＡＳＩＣやその他の回路によって構成することができる。
【００９８】
同様に、上記実施形態では、端末装置３０において、判断部、第２送信制御部、第４送信制御部、第５送信制御部をいずれも同じＣＰＵ３１によって実現し、サーバ５０において、第３受信制御部、第３送信制御部をいずれも同じＣＰＵ５１によって実現するものを示したが、これらは、それぞれ互いに別のＣＰＵ、若しくはＡＳＩＣやその他の回路によって構成することができる。
【００９９】
（６）上記実施形態では、プリンタのファームウェアを更新する例を示したが、本発明は、例えば、スキャナ装置、ファクシミリ装置、デジタルカメラなどの各種のデバイスのファームウェアを更新する技術に適用することができる。
【０１００】
（７）上記実施形態では、端末装置３０でプリンタ１０のファームウェアが第１種ファームウェアであるか第２種ファームウェアであるかを判断して、その判断結果に応じて、プリンタ１０に送信する情報を切り替えている。端末装置３０は、プリンタのファームウェアの種別を判断しなくてもよい。端末装置３０は、プリンタ１０のファームウェアの種別にかかわらず、プリンタ１０に第２ファームウェアと第２ハッシュ値や更新ＩＤを送信すればよい。
【０１０１】
プリンタ１０は、端末装置３０から第２ファームウェア等を受信すると、インストールされているファームウェアが第１種ファームウェアであるか第２種のファームウェアであるかを判断し、判断の結果、第１種ファームウェアであれば、受信した第２ハッシュ値や更新ＩＤに基づく判断結果に応じて、受信した第２ファームウェアに更新するかを決定してもよい。
【０１０２】
（８）更新ＩＤは、プリンタ１０の固有値と時刻情報を用いて生成したワンタイムパスワードであってもよい。例えば、端末装置３０からユーザの操作により所定のタイミングにてファームウェアが更新できる場合であっても、プリンタ１０に更新ＩＤと第２ファームウェアとを送信すべきタイミングにて過去に取得した更新ＩＤを第２ファームウェアとともに送信した場合であっても、適切にファームウェアの更新を制限することができる。
【符号の説明】
【０１０３】
１０…プリンタ、１１…ＣＰＵ、１３…ＥＥＰＲＯＭ、２０…第１ファームウェア、３０…端末装置、３１…ＣＰＵ、３４…ＨＤＤ３４、４０…管理アプリケーション、５０…サーバ、５１…ＣＰＵ、５４…ＨＤＤ、６０…第２ファームウェア
【図１】
0005472086.tif 000002
【図２】
0005472086.tif 000003
【図３】
0005472086.tif 000004
【図４】
0005472086.tif 000005
【図５】
0005472086.tif 000006
【図６】
0005472086.tif 000007
【図７】
0005472086.tif 000008
【図８】
0005472086.tif 000009
【図９】
0005472086.tif 000010