(57)【要約】【課題】ユーザーフレンドリーに、組み込みデバイスに接続された外付けデバイスのファームウェアをアップデートする。【解決手段】サーバー装置は、クライアント装置のプロセッサーの構成を判断し、アップデートプログラムを実行可能な環境を仮想的に実現するバーチャルマシンを生成するためのバーチャルマシンソースを選択し、選択したバーチャルマシンソースを用いて、プロセッサーが環境を仮想的に実現するバーチャルマシンを生成し、生成したバーチャルマシン、ファームウェア及びアップデートプログラムを含むパッケージを生成し、パッケージと、パッケージをクライアント装置にインストールするための制御コマンドとを、ネットワークインターフェースを介してクライアント装置に送信して、クライアント装置に、バーチャルマシン上でアップデートプログラムを実行させて外付けデバイスへファームウェアをアップデートさせる。【選択図】図８
2019082902.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続された組み込みデバイスであるクライアント装置と通信するためのネットワークインターフェースと、
前記クライアント装置に接続された外付けデバイスのファームウェアと、
前記ファームウェアのアップデートプログラムと、
複数の異なる環境を仮想的に実現するバーチャルマシンを、それぞれ生成するために用いられる複数の異なるバーチャルマシンソースと、
リモートアップデートプログラムと
を記憶するメモリーと、
前記リモートアップデートプログラムを実行する第１のプロセッサーと、
を具備し、
前記第１のプロセッサーは、前記リモートアップデートプログラムを実行するとき、
前記ネットワークインターフェースを介して、前記クライアント装置のプロセッサーである第２のプロセッサーの構成を判断し、
前記アップデートプログラムを実行可能な環境を判断し、
判断した前記環境を仮想的に実現するバーチャルマシンを生成するためのバーチャルマシンソースを、前記メモリーが記憶する前記複数の異なるバーチャルマシンソースから選択し、
選択した前記バーチャルマシンソースを用いて、前記第２のプロセッサーが前記環境を仮想的に実現するバーチャルマシンを生成し、
生成した前記バーチャルマシン、前記ファームウェア及び前記アップデートプログラムを含むパッケージを生成し、
前記パッケージと、前記パッケージを前記クライアント装置にインストールするための制御コマンドとを、前記ネットワークインターフェースを介して前記クライアント装置に送信して、前記クライアント装置に、前記バーチャルマシン上で前記アップデートプログラムを実行させて前記外付けデバイスへ前記ファームウェアをアップデートさせる
サーバー装置。
【請求項２】
請求項１に記載のサーバー装置であって、
前記外付けデバイスは、ＵＳＢ（Universal Serial Bus）により前記クライアント装置に接続される
サーバー装置。
【請求項３】
請求項１又は２に記載のサーバー装置であって、
前記第１のプロセッサーが生成する前記パッケージは、前記クライアント装置が前記外付けデバイスへ前記ファームウェアをアップデートした後、前記パッケージを前記クライアント装置からアンインストールするよう構成される
サーバー装置。
【請求項４】
請求項１又は２に記載のサーバー装置であって、
前記第１のプロセッサーは、前記リモートアップデートプログラムを実行するとき、さらに、
前記ネットワークインターフェースを介して、前記クライアント装置に前記バーチャルマシンがインストールされているか否かを判断し、インストールされていると判断すると、
前記ファームウェア及び前記アップデートプログラムと、前記ファームウェア及び前記アップデートプログラムを前記クライアント装置にインストールするための制御コマンドとを、前記ネットワークインターフェースを介して前記クライアント装置に送信して、前記クライアント装置に、前記バーチャルマシン上で前記アップデートプログラムを実行させて前記外付けデバイスへ前記ファームウェアをアップデートさせる
サーバー装置。
【請求項５】
ネットワークに接続された組み込みデバイスであるクライアント装置と通信するためのネットワークインターフェースと、
前記クライアント装置に接続された外付けデバイスのファームウェアと、
前記ファームウェアのアップデートプログラムと、
複数の異なる環境を仮想的に実現するバーチャルマシンを、それぞれ生成するために用いられる複数の異なるバーチャルマシンソースと、
を記憶するメモリーと、
第１のプロセッサーと、
を有するサーバー装置の前記第１のプロセッサーにより実行されることで、前記第１のプロセッサーにより、
前記ネットワークインターフェースを介して、前記クライアント装置のプロセッサーである第２のプロセッサーの構成を判断し、
前記アップデートプログラムを実行可能な環境を判断し、
判断した前記環境を仮想的に実現するバーチャルマシンを生成するためのバーチャルマシンソースを、前記メモリーが記憶する前記複数の異なるバーチャルマシンソースから選択し、
選択した前記バーチャルマシンソースを用いて、前記第２のプロセッサーが前記環境を仮想的に実現するバーチャルマシンを生成し、
生成した前記バーチャルマシン、前記ファームウェア及び前記アップデートプログラムを含むパッケージを生成し、
前記パッケージと、前記パッケージを前記クライアント装置にインストールするための制御コマンドとを、前記ネットワークインターフェースを介して前記クライアント装置に送信して、前記クライアント装置に、前記バーチャルマシン上で前記アップデートプログラムを実行させて前記外付けデバイスへ前記ファームウェアをアップデートさせる
リモートアップデートプログラム。
【請求項６】
ネットワークに接続された組み込みデバイスであるクライアント装置と、
前記クライアント装置に接続された外付けデバイスと、
前記ネットワークに接続されたサーバー装置と
を具備するアップデートシステムであって、
前記サーバー装置は、
前記クライアント装置と通信するためのネットワークインターフェースと、
前記外付けデバイスのファームウェアと、
前記ファームウェアのアップデートプログラムと、
複数の異なる環境を仮想的に実現するバーチャルマシンを、それぞれ生成するために用いられる複数の異なるバーチャルマシンソースと、
リモートアップデートプログラムと
を記憶するメモリーと、
前記リモートアップデートプログラムを実行する第１のプロセッサーと、
を有し、
前記第１のプロセッサーは、前記リモートアップデートプログラムを実行するとき、
前記ネットワークインターフェースを介して、前記クライアント装置のプロセッサーである第２のプロセッサーの構成を判断し、
前記アップデートプログラムを実行可能な環境を判断し、
判断した前記環境を仮想的に実現するバーチャルマシンを生成するためのバーチャルマシンソースを、前記メモリーが記憶する前記複数の異なるバーチャルマシンソースから選択し、
選択した前記バーチャルマシンソースを用いて、前記第２のプロセッサーが前記環境を仮想的に実現するバーチャルマシンを生成し、
生成した前記バーチャルマシン、前記ファームウェア及び前記アップデートプログラムを含むパッケージを生成し、
前記パッケージと、前記パッケージを前記クライアント装置にインストールするための制御コマンドとを、前記ネットワークインターフェースを介して前記クライアント装置に送信して、前記クライアント装置に、前記バーチャルマシン上で前記アップデートプログラムを実行させて前記外付けデバイスへ前記ファームウェアをアップデートさせる
アップデートシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組み込みデバイスであるクライアント装置に接続された外付けデバイスのファームウェアをアップデートすることが可能なサーバー装置、アップデートプログラム及びアップデートシステムに関する。
【背景技術】
【０００２】
ファームウェアをアップデートするプログラムが知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−０９７４０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＵＳＢ（Universal Serial Bus）デバイス等の外付けデバイス（カードリーダー等）を、画像形成装置（Multifunction Peripheral、以下ＭＦＰと称する）等の組み込みデバイスに接続して使用することがある。この様な外付けデバイスは、日常的に使用頻度が高いことが予想される。このため、外付けデバイスのファームウェアをアップデートする技術は、ユーザーフレンドリーであることが望まれる。
【０００５】
以上のような事情に鑑み、本発明の目的は、ユーザーフレンドリーに、組み込みデバイスに接続された外付けデバイスのファームウェアをアップデートすることにある。
【課題を解決するための手段】
【０００６】
本発明の一形態に係るサーバー装置は、
ネットワークに接続された組み込みデバイスであるクライアント装置と通信するためのネットワークインターフェースと、
前記クライアント装置に接続された外付けデバイスのファームウェアと、
前記ファームウェアのアップデートプログラムと、
複数の異なる環境を仮想的に実現するバーチャルマシンを、それぞれ生成するために用いられる複数の異なるバーチャルマシンソースと、
リモートアップデートプログラムと
を記憶するメモリーと、
前記リモートアップデートプログラムを実行する第１のプロセッサーと、
を具備し、
前記第１のプロセッサーは、前記リモートアップデートプログラムを実行するとき、
前記ネットワークインターフェースを介して、前記クライアント装置のプロセッサーである第２のプロセッサーの構成を判断し、
前記アップデートプログラムを実行可能な環境を判断し、
判断した前記環境を仮想的に実現するバーチャルマシンを生成するためのバーチャルマシンソースを、前記メモリーが記憶する前記複数の異なるバーチャルマシンソースから選択し、
選択した前記バーチャルマシンソースを用いて、前記第２のプロセッサーが前記環境を仮想的に実現するバーチャルマシンを生成し、
生成した前記バーチャルマシン、前記ファームウェア及び前記アップデートプログラムを含むパッケージを生成し、
前記パッケージと、前記パッケージを前記クライアント装置にインストールするための制御コマンドとを、前記ネットワークインターフェースを介して前記クライアント装置に送信して、前記クライアント装置に、前記バーチャルマシン上で前記アップデートプログラムを実行させて前記外付けデバイスへ前記ファームウェアをアップデートさせる。
【０００７】
本実施形態によれば、サーバー装置が、クライアント装置に接続されている外付けデバイスにインストールされるファームウェアを、ネットワークＮを介してリモートでアップデートすることができる。これにより、外付けデバイスをクライアント装置から取り外すことなく、クライアント装置に接続されている外付けデバイスにインストールされるファームウェアをアップデートすることができる。
【０００８】
前記外付けデバイスは、ＵＳＢ（Universal Serial Bus）により前記クライアント装置に接続される。
【０００９】
本実施形態によれば、サーバー装置が、クライアント装置に接続されているＵＳＢデバイスにインストールされるファームウェアを、ネットワークＮを介してリモートでアップデートすることができる。これにより、ＵＳＢデバイスをクライアント装置から取り外すことなく、クライアント装置に接続されているＵＳＢデバイスにインストールされるファームウェアをアップデートすることができる。
【００１０】
前記第１のプロセッサーが生成する前記パッケージは、前記クライアント装置が前記外付けデバイスへ前記ファームウェアをアップデートした後、前記パッケージを前記クライアント装置からアンインストールするよう構成される。
【００１１】
これにより、ファームウェアのアップデート後に使用することのないパッケージがクライアント装置のストレージを消費せずにすむ。
【００１２】
あるいは、
前記第１のプロセッサーは、前記リモートアップデートプログラムを実行するとき、さらに、
前記ネットワークインターフェースを介して、前記クライアント装置に前記バーチャルマシンがインストールされているか否かを判断し、インストールされていると判断すると、
前記ファームウェア及び前記アップデートプログラムと、前記ファームウェア及び前記アップデートプログラムを前記クライアント装置にインストールするための制御コマンドとを、前記ネットワークインターフェースを介して前記クライアント装置に送信して、前記クライアント装置に、前記バーチャルマシン上で前記アップデートプログラムを実行させて前記外付けデバイスへ前記ファームウェアをアップデートさせる。
【００１３】
これにより、サーバー装置は、バーチャルマシンを新たに生成してクライアント装置に供給する必要なく、ファームウェアをリモートでアップデートすることができる。
【００１４】
本発明の一形態に係るリモートアップデートプログラムは、
ネットワークに接続された組み込みデバイスであるクライアント装置と通信するためのネットワークインターフェースと、
前記クライアント装置に接続された外付けデバイスのファームウェアと、
前記ファームウェアのアップデートプログラムと、
複数の異なる環境を仮想的に実現するバーチャルマシンを、それぞれ生成するために用いられる複数の異なるバーチャルマシンソースと、
を記憶するメモリーと、
第１のプロセッサーと、
を有するサーバー装置の前記第１のプロセッサーにより実行されることで、前記第１のプロセッサーにより、
前記ネットワークインターフェースを介して、前記クライアント装置のプロセッサーである第２のプロセッサーの構成を判断し、
前記アップデートプログラムを実行可能な環境を判断し、
判断した前記環境を仮想的に実現するバーチャルマシンを生成するためのバーチャルマシンソースを、前記メモリーが記憶する前記複数の異なるバーチャルマシンソースから選択し、
選択した前記バーチャルマシンソースを用いて、前記第２のプロセッサーが前記環境を仮想的に実現するバーチャルマシンを生成し、
生成した前記バーチャルマシン、前記ファームウェア及び前記アップデートプログラムを含むパッケージを生成し、
前記パッケージと、前記パッケージを前記クライアント装置にインストールするための制御コマンドとを、前記ネットワークインターフェースを介して前記クライアント装置に送信して、前記クライアント装置に、前記バーチャルマシン上で前記アップデートプログラムを実行させて前記外付けデバイスへ前記ファームウェアをアップデートさせる。
【００１５】
本発明の一形態に係るアップデートシステムは、
ネットワークに接続された組み込みデバイスであるクライアント装置と、
前記クライアント装置に接続された外付けデバイスと、
前記ネットワークに接続されたサーバー装置と
を具備するアップデートシステムであって、
前記サーバー装置は、
前記クライアント装置と通信するためのネットワークインターフェースと、
前記外付けデバイスのファームウェアと、
前記ファームウェアのアップデートプログラムと、
複数の異なる環境を仮想的に実現するバーチャルマシンを、それぞれ生成するために用いられる複数の異なるバーチャルマシンソースと、
リモートアップデートプログラムと
を記憶するメモリーと、
前記リモートアップデートプログラムを実行する第１のプロセッサーと、
を有し、
前記第１のプロセッサーは、前記リモートアップデートプログラムを実行するとき、
前記ネットワークインターフェースを介して、前記クライアント装置のプロセッサーである第２のプロセッサーの構成を判断し、
前記アップデートプログラムを実行可能な環境を判断し、
判断した前記環境を仮想的に実現するバーチャルマシンを生成するためのバーチャルマシンソースを、前記メモリーが記憶する前記複数の異なるバーチャルマシンソースから選択し、
選択した前記バーチャルマシンソースを用いて、前記第２のプロセッサーが前記環境を仮想的に実現するバーチャルマシンを生成し、
生成した前記バーチャルマシン、前記ファームウェア及び前記アップデートプログラムを含むパッケージを生成し、
前記パッケージと、前記パッケージを前記クライアント装置にインストールするための制御コマンドとを、前記ネットワークインターフェースを介して前記クライアント装置に送信して、前記クライアント装置に、前記バーチャルマシン上で前記アップデートプログラムを実行させて前記外付けデバイスへ前記ファームウェアをアップデートさせる。
【発明の効果】
【００１６】
本発明によれば、ユーザーフレンドリーに、組み込みデバイスに接続された外付けデバイスのファームウェアをアップデートすることができる。
【００１７】
なお、ここに記載された効果は必ずしも限定されるものではなく、本発明中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態に係るアップデートシステムを模式的に示す。
【図２】サーバー装置のハードウェア構成を示す。
【図３】クライアント装置のハードウェア構成を示す。
【図４】外付けデバイスのハードウェア構成を示す。
【図５】サーバー装置が保持するデータを模式的に示す。
【図６】アップデートシステムの動作の概要を示すフローチャートである。
【図７】データの流れを模式的に示す。
【図８】リモートアップデートパッケージ生成のサーバー装置の動作フローを示す。
【図９】リモートアップデートパッケージのインストールのサーバー装置の動作フローを示す。
【図１０】リモートアップデートパッケージのインストールのクライアント装置の動作フローを示す。
【図１１】ファームウェアのアップデートのクライアント装置の動作フローを示す。
【図１２】ファームウェアのアップデート時の、クライアント装置の全体的なソフトウェア構成を示す。
【図１３】ファームウェアのアップデート時の、クライアント装置の部分的なソフトウェア構成を示す。
【図１４】ファームウェアのアップデートの外付けデバイスの動作フローを示す。
【図１５】リモートアップデートパッケージのアンインストールのクライアント装置の動作フローを示す。
【発明を実施するための形態】
【００１９】
以下、図面を参照しながら、本発明の実施形態を説明する。
【００２０】
１．アップデートシステムの概要
図１は、本発明の一実施形態に係るアップデートシステムを模式的に示す。
【００２１】
アップデートシステム１は、サーバー装置１０と、クライアント装置２０と、外付けデバイス３０とを有する。サーバー装置１０とクライアント装置２０とは、インターネット又はＬＡＮ（Local Area Network）等のネットワークＮに接続され、相互に通信可能である。
【００２２】
サーバー装置１０は、ネットワークＮを介して、クライアント装置２０をリモート操作することが可能である。サーバー装置１０は、典型的には、パーソナルコンピューターである。サーバー装置１０は、クライアント装置２０を管理する立場のユーザー（クライアント装置２０のベンダーのエンジニアや、クライアント装置２０が設置されるオフィスの保守担当者等）が使用する。
【００２３】
クライアント装置２０は、典型的なパーソナルコンピューター以外の電子機器である。言い換えれば、クライアント装置２０は、組み込みシステム（Embedded System）を有する電子機器（所謂、組み込みデバイス）である。本実施形態では、クライアント装置２０は、画像形成装置（ＭＦＰ等）である。
【００２４】
外付けデバイス３０は、本実施形態では、汎用のＵＳＢ（Universal Serial Bus）デバイス（以下、ＵＳＢデバイス３０と称する）であり、より具体的には、カードリーダーである。ＵＳＢデバイス３０は、ＵＳＢによりクライアント装置２０に接続される。
【００２５】
カードリーダーの様なＵＳＢデバイス３０は、日常的に使用頻度が高いことが予想される。例えば、クライアント装置２０（ＭＦＰ）がオフィスに設置される場合、ユーザー（従業員）は、自分のＩＤカードを用いてＵＳＢデバイス３０（カードリーダー）を介してクライアント装置２０（ＭＦＰ）にログインしてから、クライアント装置２０（ＭＦＰ）を使用することが考えられる。
【００２６】
ところで、クライアント装置２０に接続されているＵＳＢデバイス３０にインストールされるファームウェアをアップデートする際、典型的には、次の手順で行う。ＵＳＢデバイス３０（汎用のＵＳＢデバイス）を、クライアント装置２０（ＭＦＰ）から取り外し、パーソナルコンピューター（図示せず）に接続する。パーソナルコンピューターが、アップデートプログラムを実行し、ＵＳＢデバイス３０へファームウェアをアップデートする。次に、ファームウェアがアップデートされたＵＳＢデバイス３０を、パーソナルコンピューターから取り外し、組み込みデバイスであるクライアント装置２０に接続する。しかしながら、この方法では、ＵＳＢデバイス３０の着脱がユーザーの手間となる上、ＵＳＢデバイス３０をクライアント装置２０から取り外している間は、クライアント装置２０に接続されたＵＳＢデバイス３０を使用不可能である。
【００２７】
以上のような事情に鑑み、ＵＳＢデバイス３０をクライアント装置２０から取り外すことなく、クライアント装置２０に接続されているＵＳＢデバイス３０にインストールされるファームウェアをアップデートすることが望まれる。そこで、本実施形態によれば、サーバー装置１０が、クライアント装置２０に接続されているＵＳＢデバイス３０にインストールされるファームウェアを、ネットワークＮを介してリモートでアップデートすることを図る。
【００２８】
２．サーバー装置のハードウェア構成
図２は、サーバー装置のハードウェア構成を示す。
【００２９】
サーバー装置１０は、ＣＰＵ（Central Processing Unit）１１（第1のプロセッサー）、ＲＯＭ（Read Only Memory）１２（メモリー）、ＲＡＭ（Random Access Memory）１３、記憶装置１４（メモリー）、ネットワークインターフェース１５、操作装置１６及び表示装置１７と、これらを相互に接続するバス１８とを有する。
【００３０】
ＣＰＵ１１（プロセッサー）は、ＲＯＭ１２が記憶する情報処理プログラム（リモートアップデートプログラム）をＲＡＭ１３にロードして実行する。ＲＯＭ１２は、ＣＰＵ１１が実行するプログラムやデータなどを固定的に記憶する。
【００３１】
記憶装置１４は、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等の大容量の記録媒体である。
【００３２】
ネットワークインターフェース１５は、ネットワークＮに接続するためのインターフェースである。
【００３３】
操作装置１６は、タッチパネル、キーボード、マウス及び各種スイッチ等を含む。操作装置１６は、ユーザーからの操作を検出してＣＰＵ１１に出力する。
【００３４】
表示装置１７は、ＬＣＤや有機ＥＬディスプレイ等を含む。表示装置１７は、ＣＰＵ１１から受け取った情報に基づいて演算処理を行い、生成した画像信号を画面に表示する。表示装置１７は外付けの表示装置でもよい。
【００３５】
３．クライアント装置のハードウェア構成
図３は、クライアント装置のハードウェア構成を示す。
【００３６】
クライアント装置２０は、ＣＰＵ２１（第２のプロセッサー）、ＲＯＭ２２（メモリー）、ＲＡＭ２３、記憶装置２４、ネットワークインターフェース２５、操作装置２６、表示装置２７及びＵＳＢインターフェース２９と、これらを相互に接続するバス２８とを有する。
【００３７】
ＣＰＵ２１（プロセッサー）は、ＲＯＭ２２が記憶する情報処理プログラムをＲＡＭ２３にロードして実行する。ＲＯＭ２２は、ＣＰＵ２１が実行するプログラムやデータなどを固定的に記憶する。
【００３８】
記憶装置２４は、ＨＤＤやＳＳＤ等の大容量の記録媒体である。
【００３９】
ネットワークインターフェース２５は、ネットワークＮに接続するためのインターフェースである。
【００４０】
操作装置２６は、タッチパネル及び各種スイッチ等を含む。操作装置２６は、ユーザーからの操作を検出してＣＰＵ２１に出力する。
【００４１】
表示装置２７は、ＬＣＤや有機ＥＬディスプレイ等を含む。表示装置２７は、ＣＰＵ２１から受け取った情報に基づいて演算処理を行い、生成した画像信号を画面に表示する。
【００４２】
ＵＳＢインターフェース２９は、ホスト機器であるクライアント装置２０にＵＳＢを介してＵＳＢデバイス３０等の周辺機器を接続するためのインターフェースである。
【００４３】
クライアント装置２０がＭＦＰの場合、クライアント装置２０は、イメージスキャナー及びプリンター等を有するが、本技術とは関係性が少ないため図示しない。
【００４４】
４．外付けデバイスのハードウェア構成
図４は、外付けデバイスのハードウェア構成を示す。
【００４５】
ＵＳＢデバイス３０（カードリーダー）は、ＣＰＵ３１（プロセッサー）、ＲＯＭ３２（メモリー）、ＲＡＭ３３、電磁発生部３４、リーダコイル３５、リーダ送受信部３６及びＵＳＢインターフェース３７と、これらを相互に接続するバス３８とを有する。
【００４６】
ＣＰＵ３１（プロセッサー）は、ＲＯＭ３２が記憶する情報処理プログラムをＲＡＭ３３にロードして実行する。ＲＯＭ３２は、ＣＰＵ３１が実行するプログラムやデータなどを固定的に記憶する。
【００４７】
電磁発生部３４は、リーダコイル３５に印加する交流電流を制御する。
【００４８】
リーダコイル３５は、電磁波を発生するループアンテナである。この電磁波は、ＩＣカード（図示せず）に受波される。
【００４９】
リーダ送受信部３６は、リーダコイル３５とは異なるアンテナを用いてＩＣカードと近距離通信することにより、ＩＣカードからデータ信号を受信する。
【００５０】
ＵＳＢインターフェース３７は、ホスト機器であるクライアント装置２０にＵＳＢを介して接続するためのインターフェースである。
【００５１】
５．サーバー装置が保持するデータ
図５は、サーバー装置が保持するデータを模式的に示す。
【００５２】
サーバー装置１０は、ＲＯＭ１２及び／又は記憶装置１４に、ファームウェア１０１と、アップデートプログラム１０２と、複数の異なるバーチャルマシンソース１０３と、リモートアップデートプログラム１０４とを記憶する。
【００５３】
ファームウェア１０１は、ＵＳＢデバイス３０の最新バージョンのファームウェアである。
【００５４】
アップデートプログラム１０２は、ＵＳＢデバイス３０へ、ファームウェア１０１をアップデートするためのプログラムである。アップデートプログラム１０２は、特定の環境（オペレーティングシステム（ＯＳ））のみをサポートする。言い換えれば、アップデートプログラム１０２は、特定の環境（ＯＳ）を実行可能なパーソナルコンピューター（図示せず）のみにより実行することが可能に構成される。具体例としては、アップデートプログラム１０２は、特定のバージョンのWindows（登録商標）ＯＳ及び／又は特定のバージョンのmacOS（登録商標）を実行可能なパーソナルコンピューター（図示せず）のみにより実行することが可能に構成される。詳しくは、パーソナルコンピューターがアップデートプログラム１０２を実行することにより、パーソナルコンピューターに接続されたＵＳＢデバイス３０へファームウェア１０１をアップデートすることが可能なように、アップデートプログラム１０２は構成される。
【００５５】
ＵＳＢデバイス３０のファームウェア１０１及びアップデートプログラム１０２は、ＵＳＢデバイス３０のベンダーより提供される。サーバー装置１０のＣＰＵ１１は、ファームウェア１０１及びアップデートプログラム１０２を、ネットワークＮを介してダウンロードし、ＲＯＭ１２及び／又は記憶装置１４に記録する。あるいは、サーバー装置１０のＣＰＵ１１は、ＣＤ−ＲＯＭ等の非一過性のコンピューター読み取り可能な記録媒体に記録されたファームウェア１０１及びアップデートプログラム１０２を読み取り、ＲＯＭ１２及び／又は記憶装置１４に記録する。
【００５６】
複数の異なるバーチャルマシンソース１０３は、複数の異なる環境（ＯＳ）を仮想的に実現する複数の異なるバーチャルマシンを、それぞれ生成するために用いられる。具体例としては、或るバーチャルマシンソース１０３は、特定のバージョンのWindows（登録商標）ＯＳを仮想的に実現するバーチャルマシンを生成するために用いられる。別のバーチャルマシンソース１０３は、特定のバージョンのmacOS（登録商標）を仮想的に実現するバーチャルマシンを生成するために用いられる。
【００５７】
リモートアップデートプログラム１０４は、サーバー装置１０が、クライアント装置２０に接続されたＵＳＢデバイス３０へファームウェア１０１をリモートでアップデートするためのプログラムである。
【００５８】
６．アップデートシステムの動作
図６は、アップデートシステムの動作の概要を示すフローチャートである。図７は、データの流れを模式的に示す。
【００５９】
サーバー装置１０のＣＰＵ１１は、リモートアップデートプログラム１０４を実行することにより、リモートアップデートパッケージ１０６を生成し（Ｓ１）、リモートアップデートパッケージ１０６をクライアント装置２０にリモートでインストールする（Ｓ２）。クライアント装置２０のＣＰＵ２１は、リモートアップデートパッケージ１０６を実行することにより、ＵＳＢデバイス３０へファームウェア１０１をアップデートする（Ｓ３）。サーバー装置１０のＣＰＵ１１は、リモートアップデートプログラム１０４を実行することにより、さらに、リモートアップデートパッケージ１０６をクライアント装置２０からリモートでアンインストールする（Ｓ４）。以下、各ステップＳ１〜Ｓ４をより詳細に説明する。
【００６０】
（１）リモートアップデートパッケージ生成（Ｓ１）
図８は、リモートアップデートパッケージ生成のサーバー装置の動作フローを示す。
【００６１】
サーバー装置１０のＣＰＵ１１は、ＲＯＭ１２及び／又は記憶装置１４が記憶する、アップデートすべきファームウェア１０１及びアップデートプログラム１０２を選択する（ステップＳ１０１）。
【００６２】
サーバー装置１０のＣＰＵ１１は、ネットワークインターフェース１５を介して、ファームウェア１０１をアップデートすべきＵＳＢデバイス３０が接続されているクライアント装置２０を選択する（ステップＳ１０２）。
【００６３】
サーバー装置１０のＣＰＵ１１は、ネットワークインターフェース１５を介して、ファームウェアをアップデートすべきＵＳＢデバイス３０が接続されたクライアント装置２０の、ＣＰＵ２１の構成を判断する（ステップＳ１０３）。クライアント装置２０のＣＰＵ２１の構成は、クライアント装置２０の機種に依存する。従って、例えば、サーバー装置１０のＣＰＵ１１は、クライアント装置２０の機種の情報を取得し、その機種に依存するＣＰＵ２１の構成を判断する。
【００６４】
サーバー装置１０のＣＰＵ１１は、選択（ステップＳ１０１）したアップデートプログラム１０２を実行可能な環境（アップデートプログラム１０２がサポートするＯＳ）を判断する（ステップＳ１０４）。
【００６５】
サーバー装置１０のＣＰＵ１１は、判断（ステップＳ１０４）した環境（アップデートプログラム１０２がサポートするＯＳ）を仮想的に実現するバーチャルマシンを生成するためのバーチャルマシンソース１０３を、ＲＯＭ１２及び／又は記憶装置１４が記憶する複数の異なるバーチャルマシンソース１０３から選択する（ステップＳ１０５）。
【００６６】
サーバー装置１０のＣＰＵ１１は、選択（ステップＳ１０５）したバーチャルマシンソース１０３を用いて、クライアント装置２０のＣＰＵ２１が上記環境（アップデートプログラム１０２がサポートするＯＳ）を仮想的に実現するプログラムであるバーチャルマシン１０５を生成する（ステップＳ１０６）。
【００６７】
サーバー装置１０のＣＰＵ１１は、生成したバーチャルマシン１０５と、ＲＯＭ１２及び／又は記憶装置１４が記憶するファームウェア１０１及びアップデートプログラム１０２とを含むリモートアップデートパッケージ１０６を生成する（ステップＳ１０７）。
【００６８】
（２）リモートアップデートパッケージのインストール（Ｓ２）
図９は、リモートアップデートパッケージのインストールのサーバー装置の動作フローを示す。図１０は、リモートアップデートパッケージのインストールのクライアント装置の動作フローを示す。
【００６９】
サーバー装置１０のＣＰＵ１１は、生成（ステップＳ１０７）したリモートアップデートパッケージ１０６のサイズを判断する（ステップＳ２０１）。サーバー装置１０のＣＰＵ１１は、リモートアップデートパッケージ１０６と、判断（ステップＳ２０１）したサイズのリモートアップデートパッケージ１０６をクライアント装置２０にインストールするための制御コマンドとを、ネットワークインターフェース１５を介してクライアント装置２０に送信する（ステップＳ２０２）。サーバー装置１０のＣＰＵ１１は、クライアント装置２０がリモートアップデートパッケージ１０６をインストールしている最中であることを、表示装置１７に表示する（ステップＳ２０３）。
【００７０】
クライアント装置２０のＣＰＵ２１は、リモートアップデートパッケージ１０６と、制御コマンドとを、ネットワークインターフェース２５を介してサーバー装置１０から受信する（ステップＳ２１１）。クライアント装置２０のＣＰＵ２１は、受信したリモートアップデートパッケージ１０６のサイズと、クライアント装置２０の利用可能なストレージ（ＲＯＭ２２又は記憶装置２４）のサイズとを比較する（ステップＳ２１２）。クライアント装置２０のＣＰＵ２１は、利用可能なストレージのサイズがリモートアップデートパッケージ１０６のサイズ以上であれば、リモートアップデートパッケージ１０６のダウンロードを開始する（ステップＳ２１３）。
【００７１】
クライアント装置２０のＣＰＵ２１は、リモートアップデートパッケージ１０６を展開し（ステップＳ２１４）、ストレージにインストールする（ステップＳ２１５）。クライアント装置２０のＣＰＵ２１は、リモートアップデートパッケージ１０６内のバーチャルマシン１０５をＲＡＭ２３にロードして実行する（ステップＳ２１６）。クライアント装置２０のＣＰＵ２１は、リモートアップデートパッケージ１０６のインストールの結果を、ネットワークインターフェース２５を介してサーバー装置１０に送信する（ステップＳ２１７）。
【００７２】
サーバー装置１０のＣＰＵ１１は、インストールの結果を受信すると、クライアント装置２０がリモートアップデートパッケージ１０６をインストール完了し、ファームウェア１０１のアップデートを開始することを、表示装置１７に表示する（ステップＳ２０４）。
【００７３】
（３）外付けデバイスへのファームウェアのアップデート（Ｓ３）
図１１は、ファームウェアのアップデートのクライアント装置の動作フローを示す。
【００７４】
クライアント装置２０のＣＰＵ２１は、リモートアップデートパッケージ１０６内のアップデートプログラム１０２をＲＡＭ２３にロードする。クライアント装置２０のＣＰＵ２１は、実行中（ステップＳ２１６）のバーチャルマシン１０５上で（図１２、図１３参照）、アップデートプログラム１０２を実行する（ステップＳ３０１）。
【００７５】
図１２は、ファームウェアのアップデート時の、クライアント装置の全体的なソフトウェア構成を示す。
図１２に示すように、インストールしたリモートアップデートパッケージ１０６は、拡張アプリケーションとして配置され、ＵＳＢデバイス３０を通常動作させるときの構成（図中、点線の矢印Ａ）と異なる、アップデートプログラム１０２を実行するための専用の構成（図中、点線の矢印Ｂ）で実行される。
【００７６】
図１３は、ファームウェアのアップデート時の、クライアント装置の部分的なソフトウェア構成を示す。
図１３に示すように、バーチャルマシン１０５は、ＵＳＢデバイス３０を制御するために必要となる４つの通信方式（コントロール転送、インタラプト転送、バルク転送、アイソクロナス転送）と、デバイス検知の機能を備える。バーチャルマシン１０５は、アップデートプログラム１０２がＵＳＢデバイス３０に対して実行する制御の仲介役として振る舞う。
【００７７】
クライアント装置２０のＣＰＵ２１は、ファームウェア１０１をＲＡＭ２３にロードする（ステップＳ３０２）。クライアント装置２０のＣＰＵ２１は、ＵＳＢインターフェース２９を介して、ＵＳＢデバイス３０をチェックする（ステップＳ３０３）。クライアント装置２０のＣＰＵ２１は、ＵＳＢインターフェース２９を介して、ファームウェアのアップデートリクエストをＵＳＢデバイス３０に送信し（ステップＳ３０４）、ファームウェア１０１をＵＳＢデバイス３０に送信する（ステップＳ３０５）。
【００７８】
図１４は、ファームウェアのアップデートの外付けデバイスの動作フローを示す。
ＵＳＢデバイス３０のＣＰＵ３０１は、アップデートリクエストと、ファームウェア１０１とを、ＵＳＢインターフェース３７を介してクライアント装置２０から受信する（ステップＳ３１１）。ＵＳＢデバイス３０のＣＰＵ３０１は、ファームウェア１０１をアップデートする（ステップＳ３１２）。ＵＳＢデバイス３０のＣＰＵ３０１は、ファームウェア１０１をアップデートした結果を、ＵＳＢインターフェース３７を介してクライアント装置２０に送信する（ステップＳ３１３）。
【００７９】
クライアント装置２０のＣＰＵ２１は、ＵＳＢインターフェース２９を介して、ファームウェア１０１をアップデートした結果を、ＵＳＢデバイス３０から受信する（ステップＳ３０６）。クライアント装置２０のＣＰＵ２１は、ファームウェア１０１をアップデートした結果を、ネットワークインターフェース２５を介して、サーバー装置１０に送信する（ステップＳ３０７）。
【００８０】
サーバー装置１０のＣＰＵ１１は、ネットワークインターフェース１５を介してクライアント装置２０から、アップデートの結果を受信すると、ファームウェア１０１のアップデートが完了したことを、表示装置１７に表示する。
【００８１】
（４）リモートアップデートパッケージのアンインストール（Ｓ４）
図１５は、リモートアップデートパッケージのアンインストールのクライアント装置の動作フローを示す。
【００８２】
サーバー装置１０のＣＰＵ１１が生成したリモートアップデートパッケージ１０６は、クライアント装置２０がＵＳＢデバイス３０へファームウェア１０１をアップデートした後、リモートアップデートパッケージ１０６をクライアント装置２０からアンインストールするよう構成されている。
【００８３】
クライアント装置２０のＣＰＵ２１は、実行中（ステップＳ３０１）のアップデートプログラム１０２を終了する（ステップＳ４０１）。クライアント装置２０のＣＰＵ２１は、実行中（ステップＳ２１６）のバーチャルマシン１０５を終了する（ステップＳ４０２）。クライアント装置２０のＣＰＵ２１は、リモートアップデートパッケージ１０６をストレージからアンインストールする（ステップＳ４０３）。クライアント装置２０のＣＰＵ２１は、リモートアップデートパッケージ１０６をアンインストールした結果を、ネットワークインターフェース２５を介して、サーバー装置１０に送信する（ステップＳ４０４）。
【００８４】
サーバー装置１０のＣＰＵ１１は、ネットワークインターフェース１５を介してクライアント装置２０から、アンインストールの結果を受信する。サーバー装置１０のＣＰＵ１１は、リモートアップデートパッケージ１０６のアンインストールが完了したことを、表示装置１７に表示し、その後、一連の表示を終了する。
【００８５】
７．変形例
（１）変形例１
ＵＳＢデバイス３０のベンダーが、アップデートプログラムのソースコードをオープンに提供する場合がある。この場合、バーチャルマシン１０５を生成する必要がない。代わりに、サーバー装置１０のＣＰＵ１１は、オープンなソースコードを利用して、クライアント装置２０のＣＰＵ２１が実行可能なアップデートプログラムを生成する。サーバー装置１０のＣＰＵ１１は、生成したアップデートプログラムと、ＵＳＢデバイス３０のベンダーが提供するファームウェア１０１とを含むパッケージを生成する。サーバー装置１０のＣＰＵ１１は、生成したパッケージを、クライアント装置２０に送信して、クライアント装置２０にアップデートプログラムを実行させて外付けデバイス３０へファームウェア１０１をアップデートさせる。
【００８６】
（２）変形例２
バーチャルマシン１０５がクライアント装置２０に、一時的にではなく恒久的に、インストールされていると仮定する。具体的には、クライアント装置２０が、バーチャルマシン１０５上で、何らかのアプリケーションプログラム（アンチウィルスプログラム等）を恒常的に実行する場合が考えられる。この場合、サーバー装置１０は、バーチャルマシン１０５を新たに生成する必要はない。サーバー装置１０は、クライアント装置２０に、ファームウェア１０１及びアップデートプログラム１０２を供給する。クライアント装置２０は、既にインストール済みのバーチャルマシン１０５で、アップデートプログラム１０２を実行すればよい。
【００８７】
具体的には、サーバー装置１０のＣＰＵ１１は、リモートアップデートプログラム１０４を実行するとき、さらに、ネットワークインターフェース１５を介して、クライアント装置２０にバーチャルマシン１０５がインストールされているか否かを判断する。サーバー装置１０のＣＰＵ１１は、インストールされていると判断すると、ファームウェア１０１及びアップデートプログラム１０２と、ファームウェア１０１及びアップデートプログラム１０２をクライアント装置２０にインストールするための制御コマンドとを、ネットワークインターフェース１５を介してクライアント装置２０に送信して、クライアント装置２０に、バーチャルマシン１０５上でアップデートプログラム１０２を実行させてＵＳＢデバイス３０へファームウェア１０１をアップデートさせる。
【００８８】
これにより、サーバー装置１０は、バーチャルマシン１０５を新たに生成してクライアント装置２０に供給する必要なく、ファームウェア１０１をリモートでアップデートすることができる。
【００８９】
８．結語
カードリーダーの様なＵＳＢデバイス３０は、日常的に使用頻度が高いことが予想される。例えば、クライアント装置２０（ＭＦＰ）がオフィスに設置される場合、ユーザー（従業員）は、自分のＩＤカードを用いてＵＳＢデバイス３０（カードリーダー）を介してクライアント装置２０（ＭＦＰ）にログインしてから、クライアント装置２０（ＭＦＰ）を使用することが考えられる。
【００９０】
ところで、クライアント装置２０に接続されているＵＳＢデバイス３０にインストールされるファームウェアをアップデートする際、典型的には、次の手順で行う。ＵＳＢデバイス３０（汎用のＵＳＢデバイス）を、クライアント装置２０（ＭＦＰ）から取り外し、パーソナルコンピューター（図示せず）に接続する。パーソナルコンピューターが、ＵＳＢデバイス３０へファームウェアをアップデートする。次に、ファームウェアがアップデートされたＵＳＢデバイス３０を、パーソナルコンピューターから取り外し、クライアント装置２０に接続する。
【００９１】
この方法を用いる理由は、以下の通りである。汎用のＵＳＢデバイス３０のベンダーは、特定の環境（典型的なパーソナルコンピューターのオペレーティングシステム（ＯＳ）。例えば、Windows（登録商標）ＯＳ及び／又は特定のバージョンのmacOS（登録商標））のみをサポートするアップデートプログラムを提供することが多い。ところが、ＭＦＰのような組み込みデバイスは、このようなＯＳをサポートしていないためである。
【００９２】
しかしながら、この方法では、ＵＳＢデバイス３０の着脱がユーザーの手間となる上、ＵＳＢデバイス３０をクライアント装置２０から取り外している間は、クライアント装置２０に接続されたＵＳＢデバイス３０を使用不可能である。
【００９３】
これに対して、本実施形態によれば、サーバー装置１０のＣＰＵ１１は、リモートアップデートプログラム１０４を実行することにより、バーチャルマシン１０５、ファームウェア１０１及びアップデートプログラム１０２を含むリモートアップデートパッケージ１０６を生成する（Ｓ１）。サーバー装置１０のＣＰＵ１１は、リモートアップデートパッケージ１０６をクライアント装置２０にリモートでインストールする（Ｓ２）。クライアント装置２０のＣＰＵ２１は、リモートアップデートパッケージ１０６を実行することにより、ＵＳＢデバイス３０へファームウェア１０１をアップデートする（Ｓ３）。
【００９４】
従って、本実施形態によれば、サーバー装置１０が、クライアント装置２０に接続されているＵＳＢデバイス３０にインストールされるファームウェアを、ネットワークＮを介してリモートでアップデートすることができる。これにより、ＵＳＢデバイス３０をクライアント装置２０から取り外すことなく、クライアント装置２０に接続されているＵＳＢデバイス３０にインストールされるファームウェアをアップデートすることができる。
【００９５】
さらに、本実施形態によれば、ＵＳＢデバイス３０が接続されているクライアント装置２０を操作する必要が一切ない。このため、クライアント装置２０が設置されたサイトの人間（エンドユーザー等）の作業を何ら必要としない。クライアント装置２０を管理する立場のユーザーが使用するサーバー装置１０の操作だけで、クライアント装置２０に接続されているＵＳＢデバイス３０にインストールされるファームウェアをリモートでアップデートすることができる。さらに、１台のサーバー装置１０により、複数のクライアント装置２０にそれぞれ接続されている複数のＵＳＢデバイス３０にインストールされるファームウェアをリモートでアップデートすることができる（具体例としては、同じ機種の複数のクライアント装置２０に、同じ機種の複数のＵＳＢデバイス３０がそれぞれ接続されているケース）。
【００９６】
さらに、本実施形態によれば、サーバー装置１０のＣＰＵ１１が生成するリモートアップデートパッケージ１０６は、クライアント装置２０がＵＳＢデバイス３０へファームウェア１０１をアップデートした後、リモートアップデートパッケージ１０６をクライアント装置２０からアンインストールするよう構成される。これにより、ファームウェア１０１のアップデート後に使用することのないリモートアップデートパッケージ１０６が、クライアント装置２０のストレージを消費せずにすむ。
【００９７】
本技術の各実施形態及び各変形例について上に説明したが、本技術は上述の実施形態にのみ限定されるものではなく、本技術の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【符号の説明】
【００９８】
１…アップデートシステム
１０…サーバー装置
２０…クライアント装置
３０…ＵＳＢデバイス
１０１…ファームウェア
１０２…アップデートプログラム
１０３…バーチャルマシンソース
１０４…リモートアップデートプログラム
１０５…バーチャルマシン
１０６…リモートアップデートパッケージ
【図１】
2019082902.tif 000003
【図２】
2019082902.tif 000004
【図３】
2019082902.tif 000005
【図４】
2019082902.tif 000006
【図５】
2019082902.tif 000007
【図６】
2019082902.tif 000008
【図７】
2019082902.tif 000009
【図８】
2019082902.tif 000010
【図９】
2019082902.tif 000011
【図１０】
2019082902.tif 000012
【図１１】
2019082902.tif 000013
【図１２】
2019082902.tif 000014
【図１３】
2019082902.tif 000015
【図１４】
2019082902.tif 000016
【図１５】
2019082902.tif 000017