近年、IoTに対する関心の高まりに伴い、機器間の通信(Machine to Machine(M2M))に関する技術の開発が進められている。また、IoT/M2Mにおいて活用が期待されている技術として、省電力で広域エリアを対象とした、LPWA(Low Power Wide Area)と呼ばれる無線通信方式がある。そして、例えばLPWAにおけるような通信に好適な規格として、Open Mobile Alliance(OMA)によるOMA Lightweight M2M(LwM2M)が提案されている。
(参考URL http://openmobilealliance.org/iot/lightweight-m2m-lwm2m)
LwM2Mは、IoT/M2Mにおけるデバイス管理等のためにOMAにより標準化されている規格である。LwM2Mが想定している対象機器は、リソースに制限のあるものが多い。このため、LwM2Mは、軽量かつコンパクトなリソースデータモデルを採用している。また、LwM2Mは、様々なアプリケーションの要件に適合できるように、拡張性も備えている。LwM2Mは、管理対象リソースを「オブジェクト(Objects)」という単位でまとめて管理し、フラットなデータ構造を採用している。LwM2Mの仕様については、“Lightweight Machine to Machine Technical Specification, Approved Version 1.0 - 08 Feb 2017”(以下、「仕様書」と略記する)等に詳細に記述されている。
一方、例えばスマートフォンなどの通信デバイスのファームウェアを、無線で配信する技術(Firmware On-The-Air(FOTA))も知られている。FOTAによれば、例えばパーソナルコンピュータ(PC)などがなくても、スマートフォンなどの通信デバイス単体でファームウェアが更新可能になる。現在、FOTAを実現する無線網として、3G、LTE、及びWiFiなどを挙げることができる。
例えば、FOTAなどの、ソフトウェアを無線で配信及び/又は更新する技術を、LwM2Mのような規格に準拠した通信システムにおいても実現することができれば、例えばIoTデバイスのユーザにとって、また例えばIoTデバイスの供給業者にとっても、著しく利便性を高めることができる。
以下、LwM2Mのような規格に準拠した通信システムにおいて、FOTAを実現する通信システムについて説明する。
図1は、一実施形態に係る通信システム1を概略的に示す機能ブロック図である。
図1に示すように、一実施形態に係る通信システム1は、少なくとも1つの通信モジュール10と、サーバ20と、を含んで構成される。一実施形態に係る通信システム1は、例えばLwM2Mのような規格に準拠した通信システムとしてよい。通信システム1は、上記仕様書及びその改訂版等に記述されるLwM2Mの仕様に準拠し得る。図1に示す通信システム1は、通信モジュール10A、通信モジュール10B、及び通信モジュール10Cの3つの通信モジュールを含んで構成されている。しかしながら、一実施形態に係る通信システム1は、例えば通信モジュール10Aのように、少なくとも1つの通信モジュールを含んで構成されてよい。通信モジュール10A、通信モジュール10B、及び通信モジュール10Cは、それぞれ同様の構成としてもよいし、異なる構成としてもよい。以下、通信モジュール10A、通信モジュール10B、及び通信モジュール10Cをそれぞれ区別しない場合、単に「通信モジュール10」と総称する。
一実施形態に係る通信モジュール10は、無線通信をはじめとする各種の機能を実現することができる。通信モジュール10は、LPWA(Low Power Wide Area)技術に基づく通信を実現してよい。通信モジュール10は、LTE(Long Term Evolution)等の種々の通信方式による通信を実現してよい。以下、通信モジュール10は、ITU-T(International Telecommunication Union Telecommunication Standardization Sector)において通信方式が標準化されたモデムを含むものとして説明する。通信モジュール10は、例えばIoTモジュールとしてよい。通信モジュール10は、アンテナを介して、外部機器と無線通信してよい。
一実施形態に係る通信モジュール10は、例えばIoTユニットに内蔵されてもよい。ここで、通信モジュール10を含むIoTユニットは、例えば各種の情報を検出する少なくとも1つのセンサを備えてもよい。この場合、IoTユニットは、当該センサが検出した情報を、通信モジュール10によって、例えばサーバ20のような外部機器に送信することができる。
図1に示すように、通信モジュール10は、通信部11と、制御部12と、記憶部13とを備える。
通信部11は、一般的な無線通信において、信号の送受信の機能を実現する各種の部品とすることができる。例えば、通信部11は、例えばサーバ20などの外部機器と信号の送受信を行うアンテナを含んでよい。また、通信部11は、一般的なRF(radio frequency)部などを少なくとも含む部品で構成することができる。通信部11は、典型的には、ベースバンド部において処理された信号を変調してから、アンテナを経て送信することができる。また、通信部11は、例えばアンテナを経て受信した信号を復調してベースバンド部に受け渡すことができる。通信部11は、例えば、RFIC(Radio Frequency Integrated Circuit)、パワーアンプ、フィルタ、スイッチ素子等の少なくとも一部を含んでよい。
制御部12は、種々の機能を実行するための制御及び処理能力を提供するために、例えばCPU(Central Processing Unit)のような、少なくとも1つのプロセッサを含む。プロセッサは、単一の集積回路として実現されてよい。集積回路は、IC(Integrated Circuit)ともいう。プロセッサは、複数の通信可能に接続された集積回路及びディスクリート回路として実現されてよい。プロセッサは、他の種々の既知の技術に基づいて実現されてよい。一実施形態において、制御部12は、LwM2Mの規格に準拠したクライアント端末における動作を行ってよい。
記憶部13は、半導体メモリ又は磁気メモリ等で構成されてよい。記憶部13は、各種情報及び制御部12で実行されるプログラム等を記憶する。記憶部13は、制御部12のワークメモリとして機能してよい。また、記憶部13は、制御部12に含まれてもよい。一実施形態において、記憶部13は、LwM2Mの規格に準拠したクライアント端末における動作に必要な各種情報を記憶してよい。
上述ように、通信モジュール10がIoTユニットに内蔵される場合、制御部12には、少なくとも1つのセンサが接続されてよい。この場合、制御部12に接続されるセンサは、外部環境の情報を取得するために、例えば、気圧センサ、温度センサ、湿度センサ、及び照度センサなどの少なくとも1つを含んでよい。このようなセンサは、センサ自身の位置、動き、及び姿勢の少なくとも1つに関する情報を取得するために、例えば、加速度センサ、角速度センサ、及び地磁気センサの少なくとも1つを含んでよい。角速度センサは、センサが設けられている機器等の角速度を検出し得る。加速度センサは、センサが設けられている機器等に生じている加速度を検出し得る。地磁気センサは、地磁気の向きを検出し得る。センサは、位置センサを含んでよい。位置センサは、RFID(Radio Frequency Identifier)、IEEE802.11、Bluetooth(登録商標)等の近距離無線通信の電波等の検出結果に基づいて、センサが設けられている機器等の位置情報を検出してよい。このように、センサは、通信モジュール10を含むIoTユニットの状況に関する情報を検出してよい。また、センサは、IoT機器に使用されるセンサを少なくとも1つ含んでよい。
一実施形態において、上述のセンサに含まれるのは、加速度センサ、角速度センサ、及び地磁気センサに限定されない。一実施形態において、センサは、例えば、通信モジュール10を含むIoTユニットの周囲の温度を検出する温度センサとしてもよい。また、センサは、例えば、通信モジュール10を含むIoTユニットの周囲の湿度を検出する湿度センサとしてもよい。また、センサは、例えば、通信モジュール10を含むIoTユニットの所定部位における光の照度を検出する照度センサとしてもよい。一実施形態において、センサは、前述したセンサ以外の他のセンサを含んでもよい。また、センサは、通信モジュール10を含むIoTユニットに内蔵されるものに限定されず、通信モジュール10を含むIoTユニットに接続される外部機器に備えられてもよい。この場合、外部機器に備えられるセンサは、外部端子を介して、通信モジュール10の制御部12に接続されてよい。
また、通信モジュール10は、GNSS(Global Navigation Satellite System)技術等に基づいて、通信モジュール10の位置情報を取得してよい。つまり、通信モジュール10は、通信モジュール10を含むIoTユニットの位置情報を取得可能であってよい。GNSS技術は、例えばGPS(Global Positioning System)、GLONASS、Galileo、及び準天頂衛星(QZSS)等のいずれか衛星測位システムを含んでよい。通信モジュール10の位置情報は、緯度、経度、及び高度の少なくともいずれかの情報を含んでよい。通信モジュール10は、通信モジュール10以外の他の構成部によって、通信モジュール10を含むIoTユニットの位置に関する情報を取得してよい。例えば、通信モジュール10を含むIoTユニットは、GPSモジュールなどの位置情報所得デバイスを、センサとして内蔵してよい。また、通信モジュール10は、通信モジュール10を含むIoTユニットの位置に関する情報を取得する装置に搭載可能であってもよい。例えば、GPSモジュールなどの位置情報所得デバイスが、外部機器として、制御部12に接続されてもよい。この場合、外部機器としての位置情報所得デバイスは、外部端子を介して、制御部12に接続されてよい。
このように、制御部12は、センサの検出結果、又は、通信モジュール10の位置情報等を、通信モジュール10を介して例えばサーバ20のような外部機器に送信してよい。
一実施形態に係るサーバ20は、無線通信をはじめとする各種の機能を実現することができる。サーバ20は、LPWA(Low Power Wide Area)技術に基づく通信を実現してよい。サーバ20は、LTE(Long Term Evolution)等の種々の通信方式による通信を実現してよい。以下、サーバ20は、ITU-T(International Telecommunication Union Telecommunication Standardization Sector)において通信方式が標準化されたモデムを含むものとして説明する。サーバ20は、例えばIoTモジュールと無線通信を行うサーバとしてよい。サーバ20は、アンテナを介して、通信モジュール10のようなクライアント端末と無線通信してよい。
図1に示すように、サーバ20は、通信部21と、制御部22と、記憶部23とを備える。
通信部21は、一般的な無線通信において、信号の送受信の機能を実現する各種の部品とすることができる。例えば、通信部21は、例えば通信モジュール10などのクライアント端末と信号の送受信を行うアンテナを含んでよい。また、通信部21は、一般的なRF(radio frequency)部などを少なくとも含む部品で構成することができる。通信部21は、典型的には、ベースバンド部において処理された信号を変調してから、アンテナを経て送信することができる。また、通信部21は、例えばアンテナを経て受信した信号を復調してベースバンド部に受け渡すことができる。通信部21は、例えば、RFIC(Radio Frequency Integrated Circuit)、パワーアンプ、フィルタ、スイッチ素子等の少なくとも一部を含んでよい。
制御部22は、種々の機能を実行するための制御及び処理能力を提供するために、例えばCPU(Central Processing Unit)のような、少なくとも1つのプロセッサを含む。プロセッサは、単一の集積回路として実現されてよい。集積回路は、IC(Integrated Circuit)ともいう。プロセッサは、複数の通信可能に接続された集積回路及びディスクリート回路として実現されてよい。プロセッサは、他の種々の既知の技術に基づいて実現されてよい。一実施形態において、制御部22は、LwM2Mの規格に準拠したサーバにおける動作を行ってよい。
記憶部23は、半導体メモリ又は磁気メモリ等で構成されてよい。記憶部23は、各種情報及び制御部22で実行されるプログラム等を記憶する。記憶部23は、制御部22のワークメモリとして機能してよい。また、記憶部23は、制御部22に含まれてもよい。記憶部23は、サーバ20に接続される外部ストレージとしてもよい。また、記憶部23は、サーバ20と通信部21を経て通信する他のサーバの記憶部としてもよい。一実施形態において、記憶部23は、LwM2Mの規格に準拠したサーバにおける動作に必要な各種情報を記憶してよい。
次に、一実施形態に係る通信システム1の動作を説明する。
まず、一実施形態に係る通信システム1の動作を説明するために、LwM2Mのような規格において想定されるFOTAについて説明する。ここで、一実施形態に係る通信システム1において行われるFOTAは、通信モジュール10のファームウェアを、サーバ20から無線で配信する(Firmware On-The-Air)ことを意味する。通信モジュール10は、FOTAによってサーバ20から無線で配信されたファームウェアをダウンロードして、ファームウェアの更新を行うことができる。
LwM2Mにおいては、サーバ20からクライアントデバイスである通信モジュール10に対して発信される各種の要求が規定されている。すなわち、LwM2Mにおいては、サーバ20が主導して、通信モジュール10を制御することができる。一方、LwM2Mにおいては、通信モジュール10からサーバ20に対して送信される要求は規定されていない。すなわち、LwM2Mにおいては、通信モジュール10の主導により、サーバ20を制御する動作については、規定されていない。このため、FOTAを行う際には、サーバ20が主導することが想定される。
図2は、LwM2Mの規格に準拠した通信システムにおけるFOTAの例を説明する図である。図2は、通信システム1において、通信モジュール10とサーバ20との間のやりとりを説明するシーケンス図である。以下、図2を参照して、LwM2Mの規格に準拠した通信システム1におけるFOTAの例を説明する。
図2に示すように、通信システム1において、サーバ20は、FOTAを開始する。図2に示す動作が開始する時点において、サーバ20は、通信モジュール10のファームウェアのバージョン情報などを把握しており、通信モジュール10のファームウェアのアップデートが必要であると判断しているものとする。
以下の説明において、通信モジュール10が行う各種の動作は、通信モジュール10の制御部12が、対応する通信モジュール10の各機能部を制御することにより行う。特に、通信モジュール10が各種情報を送受信する動作は、通信モジュール10の制御部12が、通信部11を制御することにより行う。例えば、通信モジュール10の制御部12は、記憶部13に記憶された情報又はセンサによって検出された情報を、通信部11からサーバ20などに送信するように制御を行ってよい。また、例えば、通信モジュール10の制御部12は、通信部11によってサーバ20などから受信した情報を、記憶部13に記憶するように制御を行ってよい。
同様に、以下の説明において、サーバ20が行う各種の動作は、サーバ20の制御部22が、対応するサーバ20の各機能部を制御することにより行う。特に、サーバ20が各種情報を送受信する動作は、サーバ20の制御部22が、通信部21を制御することにより行う。例えば、サーバ20の制御部22は、記憶部23に記憶された情報などを、通信部21から通信モジュール10などに送信するように制御を行ってよい。また、例えば、サーバ20の制御部22は、通信部21によって通信モジュール10などから受信した情報を、記憶部23に記憶するように制御を行ってよい。
図2に示すように、FOTAが開始されると、サーバ20は、通信モジュール10に対して、ファームウェアの差分ファイルのダウンロードを開始するよう要求する(図2に示す(1))。(1)に示す差分ファイルのダウンロードの開始要求に続いて、サーバ20は、通信モジュール10にファームウェアの差分ファイルを送信し、通信モジュール10は、サーバ20からファームウェアの差分ファイルを受信する。すなわち、通信モジュール10は、サーバ20から、ファームウェアの差分ファイルをダウンロードする(図2に示す(2))。(2)においては、ファームウェアの1つ以上の差分ファイルがダウンロードされてもよい。(2)に示す差分ファイルのダウンロードが全て行われたら、通信モジュール10は、差分ファイルのダウンロードが完了した旨をサーバ20に通知する(図2に示す(3))。以上の動作によって、通信システム1の通信モジュール10におけるファームウェアのダウンロード処理が完了する。
(3)に示す差分ファイルのダウンロードが完了したら、サーバ20は、通信モジュール10に対して、ファームウェアの更新を開始する要求する(図2に示す(4))。(4)に示す更新の要求に応じて、通信モジュール10は、ファームウェアの更新処理を行う(図2に示す(5))。(5)に示すファームウェアの更新処理が行われたら、通信モジュール10は、ファームウェアの更新が完了した旨をサーバ20に通知する(図2に示す(6))。以上の動作によって、通信システム1の通信モジュール10におけるファームウェアの更新処理が完了する。
以上説明したように、サーバ20の主導によれば、LwM2Mの規格に準拠した通信システムにおいてもFOTAを行うことができる。しかしながら、上述のように、LwM2Mにおいては、通信モジュール10からサーバ20に対して送信される要求が規定されていない。このため、LwM2Mの規格に準拠した通信システム1において、通信モジュール10側の動作をトリガとしてFOTAを行うことはできない。
これに対し、LwM2M以外の規格に準拠した通信システム1において、通信モジュール10からサーバ20に対して送信される要求が規定されていれば、通信モジュール10側の動作をトリガとしてFOTAを行うことができる。以下、そのような場合について説明する。
図3は、LwM2M以外の規格に準拠した通信システムにおけるFOTAの例を説明する図である。図3は、図2と同様に、通信システム1において、通信モジュール10とサーバ20との間のやりとりを説明するシーケンス図である。以下、図3を参照して、LwM2M以外の規格におけるFOTAの例を説明する。LwM2M以外の規格とは、例えば、FUMO(Firmware Update Management Object)などとしてよい。FUMOは、無線経由(Over-the-air(OTA))でファームウェアの更新を可能にするOMAのデバイス管理仕様である。FUMOの仕様については、OMAによる“Firmware Update Management Object Architecture, Approved Version 1.0 - 09 Feb 2007”などに記載されている。図3に示す通信システムにおいては、通信モジュール10からサーバ20に対して送信される要求が規定されているものとする。
図3に示す動作が開始すると、まず、通信モジュール10は、FOTAを開始する(図3に示す(1))。これにより、通信モジュール10は、サーバ20から任意のタイミングでファームウェアをダウンロードすることができる。
(1)に示すFOTAが開始されると、通信モジュール10は、ファームウェアの差分ファイルの有無の確認を、サーバ20に要求する(図3に示す(2))。(2)に示す確認要求に応じて、サーバ20は、通信モジュール10のファームウェアのバージョン情報を、通信モジュール10に問い合わせる(図3に示す(3))。(3)に示す問合せに応じて、通信モジュール10は、通信モジュール10のファームウェアのバージョン情報を、サーバ20に通知する(図3に示す(4))。
(4)に示すバージョン情報の通知に基づいて、サーバ20は、通信モジュール10のファームウェアの更新が必要であるか否かを判定する。例えば、通信モジュール10から通知されたファームウェアのバージョン情報が、最新のファームウェアを示すものであれば、サーバ20は、通信モジュール10のファームウェアの更新は必要ないと判定する。この場合、サーバ20は、ダウンロードすべきファームウェアの差分ファイルがないことを、通信モジュール10に通知する(図3に示す(5))。そして、通信モジュール10は、ファームウェアのダウンロードを行わず、ファームウェアの更新処理も行わずに、図3に示す動作を終了してよい。
一方、(4)に示すバージョン情報の通知から、例えば通信モジュール10のファームウェアが最新でないと示された場合、サーバ20は、通信モジュール10のファームウェアの更新は必要であると判定する。この場合、サーバ20は、ダウンロードすべきファームウェアの差分ファイルがある旨を、通信モジュール10に通知する(図3に示す(5))。
(5)に示す差分ファイルがある旨を通知されると、通信モジュール10は、ファームウェアの差分ファイルのダウンロードを、サーバ20に要求する(図3に示す(6))。(6)に示す差分ファイルのダウンロードの要求に応じて、サーバ20は、通信モジュール10にファームウェアの差分ファイルの送信を開始し、通信モジュール10は、サーバ20からファームウェアの差分ファイルの受信を開始する。すなわち、通信モジュール10は、サーバ20から、ファームウェアの差分ファイルのダウンロードを開始する(図3に示す(7))。
(7)においてダウンロードが開始されると、サーバ20から通信モジュール10にファームウェアの差分ファイルがダウンロードされる(図3に示す(8)~(9))。(8)~(9)においては、ファームウェアの1つ以上の差分ファイルがダウンロードされてもよい。(8)~(9)に示す差分ファイルのダウンロードが全て行われたら、通信モジュール10は、差分ファイルのダウンロードが完了した旨を、サーバ20に通知する(図3に示す(10))。
(10)においてダウンロードの完了が通知されると、サーバ20は、ファームウェアの更新の開始を、通信モジュール10に要求する(図3に示す(11))。(11)に示す更新開始の要求に応じて、通信モジュール10は、ファームウェアの更新を行う(図3に示す(12))。(12)に示す更新が完了すると、通信モジュール10は、FOTAが完了した旨を、サーバ20に通知する(図3に示す(13))。(13)においてFOTA完了の旨を通知してから、通信モジュール10は、自装置のFOTAを完了する(図3に示す(14))。
なお、図3の(1)に示したFOTAの開始は、例えば通信モジュール10の制御部12が発するトリガに基づいてもよい。また、図3の(1)におけるFOTAの開始は、通信モジュール10を含むIoTユニットが発するトリガに基づいてもよいし、通信モジュール10に接続される他の機能部が発するトリガに基づいてもよい。
また、図3の(14)の後、通信モジュール10の制御部12は、例えば通信モジュール10に接続される他の機能部にFOTA中でないことを示すために、DM_IND信号をLowにしてもよい。
以上説明したように、LwM2M以外の例えばFUMOのような規格に準拠した通信システムにおいて、クライアントである通信モジュール10の主導で、FOTAを行うことも想定できる。しかしながら、上述のように、LwM2Mにおいては、通信モジュール10からサーバ20に対して送信される要求が規定されていない。このため、LwM2Mの規格に準拠した通信システム1においては、図3に示したような、通信モジュール10側の動作をトリガとしてFOTAを行うことはできない。
具体的には、例えば図3の(2)に示したファームウェアの差分ファイルの有無の確認を、通信モジュール10からサーバ20に要求するようなコマンドは、LwM2Mにおいて規定されていない。また、例えば図3の(6)に示した差分ファイルのダウンロードを、通信モジュール10からサーバ20に要求するようなコマンドも、LwM2Mにおいて規定されていない。さらに、例えば図3の(13)に示したFOTAが完了した旨を、通信モジュール10からサーバ20に通知するようなコマンドも、LwM2Mにおいて規定されていない。したがって、通常のLwM2Mのような規格に準拠したシステムにおいては、図3に示したような動作に従って、通信モジュール10側の動作をトリガとしてFOTAを行うことはできない。
通信モジュール10において、ファームウェアのアップデートを行った後、リセット処理又は再起動などが必要になることもある。このため、例えば通信モジュール10の動作中に再起動が実行されると、実行中の処理が中断されるなどの不都合も想定される。通信モジュール10にとって好適なタイミングで、通信モジュール10側からのトリガによってファームウェアのダウンロード及び/又はアップデートを行うことができれば、通信システムの利便性を高めることができる。
そこで、一実施形態に係る通信システム1は、LwM2Mのような規格に準拠していても、通信モジュール10側の動作をトリガとしてFOTAを行うことを可能にする。
上述したように、LwM2Mの仕様は、仕様書に詳細に記述されている。また、LwM2Mのイネーブラのプロトコルスタックなども、上記仕様書に記載されている。LwM2Mの情報報告(Information Reporting)のインタフェースにおいては、仕様書の5.5 Information Reporting Interfaceに規定されている。仕様書によれば、ダウンリンクの動作として規定された監視(Observe)及び監視取消(Cancel Observation)と、アップリンクの動作として規定された通知(Notify)とが規定されている。また、LwM2Mのサーバ及びLwM2Mのクライアントは、このインタフェースの全ての動作をサポートしなければならない旨が、仕様書において規定されている。
仕様書によれば、LwM2Mにおいては、クライアントからサーバに「要求」を送信することは規定されていない。しかしながら、LwM2Mにおいて、クライアントからサーバにNotifyのような「通知」を行うことはできる。そこで、一実施形態において、サーバ20は、通信モジュール10に対して所定のリソースの監視を要求し、当該監視を要求されたリソースに変化があった場合、当該変化を示す通知がサーバ20に送信されるようにする。なお、サーバ20が通信モジュール10に対して所定のリソースの監視を要求するとは、「サーバ20が通信モジュール10の所定のリソースを監視する」と読み替えることもできる。サーバ20は、通信モジュール10の所定のリソースを監視し、当該監視の対象となるリソースに変化があった場合、当該変化を示す通知が通信モジュール10からサーバ20に送信されるようにしてよい。ここで、「リソース」とは、LwM2Mの規格の仕様で規定されるものであってよい。また、リソースは、任意の値が持つ定義であって、通信モジュール10(クライアント)とサーバ20が認識可能な定義である、ということもできる。
このような動作を実現するために、通信システム1において、監視を要求するための所定のリソースを用意する。ここで、用意すべき所定のリソースは、新規リソースであってもよいし、既存リソースのうち空きリソースであってもよいし、既存リソースを規定しなおしてもよい。サーバ20と通信モジュール10との間で対応付けされているリソースであれば、任意のリソースを採用してよい。そして、サーバ20は、当該所定のリソースが通信モジュール10において監視されるように要求する(Observe)。
このような状況において、通信モジュール10は、ファームウェアを更新する際に、監視が要求されているリソースの値を変更する。LwM2Mにおいては、このようにリソースの値が変更されると、当該リソースにおける変化を示す通知が、クライアント端末からサーバに送信される(Notify)。したがって、サーバ20においては、このような通知を受信したタイミングで、ファームウェアの更新に関連する処理を実行することができる。
図4は、一実施形態に係る通信システム1において通信モジュール10側の動作をトリガとして行うFOTAの例を説明する図である。以下、図4を参照して、通信モジュール10側の動作をトリガとしたFOTAについて説明する。
図4に示す通信システム1において、通信モジュール10は、例えば、3GPP(3rd Generation Partnership Project)のRelease13仕様等に含まれる機能を有してもよい。3GPPのRelease13仕様は、UE(User Equipment)カテゴリM1でサポートされる機能と、NB-IoT(Narrow Band IoT)カテゴリでサポートされる機能とを含む。以下、3GPPで規定された通信機能の一部について説明する。
[DRX]
3GPPのRelease8から、通信装置による通信を省電力化する技術として、DRX(Discontinuous Reception)と呼ばれる間欠受信が規定された。以下、このような間欠受信(Discontinuous Reception)を、適宜、「DRX」と略記する。DRXは、間欠的に信号を受信することにより、受信していない期間はRF(Radio Frequency)機能部を停止させてスリープ状態とすることにより、消費電力を抑える技術である。DRXの動作は、RRC(Radio Resource Control)のアイドル状態(RRC_IDLE)及びRRCの接続状態(RRC_CONNECTED)において、下り制御チャネル(PDCCH:Physical Downlink Shared Channel)の信号を間欠的に受信する際に適用される。DRXサイクルは、最大2.56秒と規定されている。DRXについては、3GPPにおいて詳細に規定されているため、より詳細な説明は省略する。
一実施形態において、通信モジュール10は、3GPPの仕様で規定されているDRX技術に基づいて、アンテナから電波を送受信してよい。以下の説明において、DRX技術は、後述のeDRX(extended DRX)技術を含んでもよい。一実施形態において、DRX技術は、通信モジュール10に間欠的に電波を受信させることによって、通信モジュール10の消費電力を低減しうる技術である。通信モジュール10は、DRX技術に基づいて電波を送受信する場合、所定期間にわたって電波の送受信を停止することによって、間欠的な電波の送受信を実現しうる。通信モジュール10がDRXを開始し、DRXを終了するまでの期間は、DRX期間ともいう。以下、DRX技術に基づいて電波の送受信を停止する所定期間は、適宜、DRXにおけるスリープ期間ともいう。
[eDRX]
また、3GPPのRelease13から、DRXサイクルをさらに延長するため、信号の間欠受信の期間を大幅に延長した、拡張間欠受信(extended DRX)が規定された。以下、このような拡張間欠受信(extended DRX)を、適宜、eDRXと略記する。eDRXでは、バッテリの省電力化を向上させるために、スリープ状態の延長を実現している。RRC_CONNECTEDにおいては、最大のeDRXサイクルとして、10.24秒(LTE)を設定することができる。また、RRC_IDLEにおいては、最大のeDRXサイクルとして、カテゴリM1の場合は43.96分(eMTC)、NB-IoTの場合は2.91時間(NB-IoT)を設定することができる。eDRXについても、3GPPにおいて詳細に規定されているため、より詳細な説明は省略する。以下の説明において、eDRXについて、適宜、単にDRXと総称することがある。また、eDRX技術に基づいて電波の送受信を停止する所定期間は、適宜、eDRXにおけるスリープ期間ともいう。
[PSM]
さらに、3GPPにおいて、従来のアイドル状態及び接続状態の他に、省電力モード(Power Saving Mode)が規定された。以下、このような省電力モード(Power Saving Mode)を、適宜、PSMと略記する。PSMは、ネットワーク上への登録を維持しつつ、端末が一定時間擬似的に電源オフと同じ状態に遷移する動作である。このPSMにおいては、通信装置は基地局からのページングも受信しないスリープ状態にあるため、ネットワークからは見えなくなるが、データ送信はいつでも可能とすることができる。3GPPのRelease12で定められたCat1のPSMでは、1日1回、1KB程度のデータを送ると想定した場合、単3電池2本で10年以上利用可能としている。PSMについても、3GPPにおいて詳細に規定されているため、より詳細な説明は省略する。
図4に示すように、一実施形態に係る通信システム1においては、通信モジュール10からFOTAのトリガを発するために、サーバ20は、差分ファイル有無確認用のリソースを監視するように、通信モジュール10に要求する(Observe)。このような動作を行うために、通信システム1において、予め差分ファイル有無確認用のリソース(CheckUpdate)を追加する。そして、サーバ20は、当該リソースの監視を通信モジュール10に要求する(図4に示す(1))。
(1)においてリソースの監視が要求された後、通信モジュール10は、任意のタイミングでFOTAをトリガすることができる。そこで、例えば通信モジュール10に接続される他の機能部が、FOTA開始のATコマンドであるAT+KFOTAを発することにより、FOTAを開始してもよい。また、例えば通信モジュール10のユーザによる入力に基づいて、FOTAを開始してもよい。以下、通信モジュール10が、任意の方法により、通信モジュール10における任意のタイミングで、FOTAを開始するものとして説明する(図4に示す(2))。
(2)においてFOTAが開始されると、通信モジュール10は、例えば上述したeDRX(DRX)及び/又はPSMを停止してもよい(図4に示す(3))。ここで、通信システム1がeDRX(DRX)及び/又はPSMに対応していない場合、(3)に示す動作は行わなくてもよい。また、通信システム1がeDRX(DRX)及び/又はPSMに対応している場合であっても、(3)に示す動作を省略してもよい。
(2)に示すようにFOTAが開始されたら、又は(3)に示すようにeDRX(DRX)及び/又はPSMが停止されたら、通信モジュール10は、監視を要求されたリソースの値としてTRUEを設定する(図4に示す(4))。
また、(3)動作の後((3)の動作を行わない場合は(2)の動作の後)、例えば通信モジュール10に接続される他の機能部にFOTA中であることを示すために、通信モジュール10の制御部12は、DM_IND信号をHighにしてもよい。
(4)においてリソースの値が設定されると、通信モジュール10は、CheckUpdateのリソースの値がTRUEに変化した旨を、サーバ20に通知する(図4に示す(5))。上述のように、LwM2Mの仕様により、(4)においてリソースの値が変更されると、当該リソースにおける変化を示す旨が、クライアント端末からサーバに送信される(Notify)。
(5)において通知がされると、サーバ20は、図3の(3)で説明したのと同様に、通信モジュール10のファームウェアのバージョン情報を問い合わせる(図4に示す(6))。この場合、図4の(6)に示すように、サーバ20は、通信モジュール10のFirmware Versionのリソースの値を例えばReadコマンドを発することにより読み出してもよい。(6)に示すバージョンの問合せに応じて、通信モジュール10は、通信モジュール10のファームウェアのバージョン情報(Version)を、サーバ20に通知する(図4に示す(7))。
(7)に示すようにバージョン情報を受信すると、サーバ20は、図4の(8)に示すように、差分ファイル有無確認用のリソース(CheckUpdate)の監視を取り消す(Cancel Observation)ように、通信モジュール10に要求する。(1)において監視を要求したリソースの監視を(8)において取り消すことで、その後も通信モジュール10からNotifyのような通知がサーバ20に繰り返し送信されることを防ぐことができる。なお、サーバ20がリソースの監視を取り消すように、通信モジュール10に要求する、とは「サーバ20が通信モジュール10のリソースの監視を取り止める」と読み替えることもできる。
(8)においてリソースの監視が取り消されたら、サーバ20は、ダウンロード開始用のリソースを監視するように、通信モジュール10に要求する(Observe)。このような動作を行うために、通信システム1において予めダウンロード開始用のリソース(StartDownload)を追加する。そして、サーバ20は、当該リソースの監視を通信モジュール10に要求する(図4に示す(9))。(9)に示すようにリソースの監視が要求された後、通信モジュール10は、任意のタイミングでファームウェアのダウンロードをトリガすることができる。
(9)においてリソースの監視が要求されたら、サーバ20は、結果確認用のリソース(CheckUpdateResult)に対して、例えばWriteコマンドを発することにより、差分ファイルの有無の確認結果を、通信モジュール10に通知する(図4に示す(10))。(10)において差分ファイルがない旨の結果を受信したら、通信モジュール10は、ファームウェアのダウンロードを行わず、ファームウェアの更新処理も行わずに、図4に示す動作を終了してよい。
一方、(10)において差分ファイルがある旨の結果を受信したら、通信モジュール10は、監視を要求されたリソースの値としてTRUEを設定する(図4に示す(11))。(11)においてリソースの値が設定されると、通信モジュール10は、StartDownloadのリソースの値がTRUEに変化した旨を、サーバ20に通知(Notify)する(図4に示す(12))。
(12)においてサーバ20に通知がされたら、サーバ20は、図4の(13)に示すように、ダウンロード開始用のリソース(StartDownload)の監視を取り消す(Cancel Observation)ように、通信モジュール10に要求する。(9)において監視を要求したリソースの監視を(13)において取り消すことで、その後も通信モジュール10からNotifyのような通知がサーバ20に繰り返し送信されることを防ぐことができる。
(13)においてリソースの監視が取り消されたら、サーバ20は、アップデート結果通知用のリソースを監視するように、通信モジュール10に要求する(Observe)。このような動作を行うために、通信システム1において予めアップデート結果通知用のリソース(UpdateResult)を追加する。そして、サーバ20は、当該リソースの監視を通信モジュール10に要求する(図4に示す(14))。
(14)においてリソースの監視が要求されたら、サーバ20は、差分ファイルのパス指定用のリソース(Package/PackageURI)に対して、例えばWriteコマンドを発することにより、差分ファイルのパスを、通信モジュール10に通知する(図4に示す(15))。
(15)において差分ファイルのパスが通知されたら、サーバ20から通信モジュール10にファームウェアの差分ファイルがダウンロードされる(図4に示す(16)~(17))。(16)~(17)においては、ファームウェアの1つ以上の差分ファイルがダウンロードされてもよい。(16)~(17)に示す差分ファイルのダウンロードが全て行われたら、通信モジュール10は、差分ファイルのダウンロードが完了した旨を、サーバ20に通知する(図4に示す(18))。
(18)においてダウンロードの完了が通知されると、通信モジュール10は、ファームウェアの更新を行う(図4に示す(19))。(19)に示す更新が完了すると、通信モジュール10は、監視を要求されたリソースの値として更新の「結果」を設定する(図4に示す(20))。(20)においてリソースの値が設定されると、通信モジュール10は、UpdateResultのリソースの値が更新の「結果」に変化した旨を、サーバ20に通知(Notify)する(図4に示す(21))。
(21)において通知を行うと、通信モジュール10は、自装置のFOTAを完了する(図4に示す(22))。(22)に示す動作の後、通信モジュール10は、(3)において停止したeDRX(DRX)及び/又はPSMを再開してもよい(図4に示す(23))。eDRX(DRX)及び/又はPSMを再開した場合、通信モジュール10は、その後の電力の消費を低減することができる。
また、(23)動作の後((23)の動作を行わない場合は(22)の動作の後)、例えば通信モジュール10に接続される他の機能部にFOTA中でないことを示すために、通信モジュール10の制御部12は、DM_IND信号をLowにしてもよい。
図4の(2)におけるFOTAの開始は、例えば通信モジュール10に接続される他の機能部が発するATコマンドに基づいてもよい。以下、例えば通信モジュール10に接続される他の機能部が発するATコマンドによってFOTAを開始する場合について説明する。
図4の(2)におけるFOTAの開始をATコマンドによって行う場合、例えば通信モジュール10に接続される他の機能部が、FOTA開始のATコマンドであるAT+KFOTAを発してもよい。そして、通信モジュール10の制御部12は、FOTA開始のATコマンドであるAT+KFOTAに応じて、図4の(2)においてFOTAを開始してもよい。また、このようにしてFOTAを開始した場合、例えば通信モジュール10に接続される他の機能部にFOTA中であることを示すために、通信モジュール10の制御部12は、DM_IND信号をHighにしてもよい。
そして、図4の(15)において差分ファイルのパスが通知された際、通信モジュール10の制御部12は、例えば通信モジュール10に接続される他の機能部に対して、非請求リザルトのATコマンドである+FOTA:DLSTARTを発してもよい。これは、通信モジュール10に接続される他の機能部に対して、差分ファイルのダウンロードを開始したことを通知するための非請求リザルトである。
また、図4の(16)~(17)に示す差分ファイルのダウンロードが行われた際、通信モジュール10の制御部12は、例えば通信モジュール10に接続される他の機能部に対して、非請求リザルトのATコマンドである+FOTA:DLOKを発してもよい。これは、通信モジュール10に接続される他の機能部に対して、差分ファイルのダウンロードが正常に完了したことを通知するための非請求リザルトである。
また、図4の(19)において更新処理が開始される前に、通信モジュール10の制御部12は、例えば通信モジュール10に接続される他の機能部に対して、非請求リザルトのATコマンドである+FOTA:UPSTARTを発してもよい。これは、通信モジュール10に接続される他の機能部に対して、ファームウェアの更新処理が開始したことを通知するための非請求リザルトである。
また、(19)において更新処理が行われた後、通信モジュール10の制御部12は、通信モジュール10のリセット処理を行ってもよい。この場合、通信モジュール10の制御部12は、(19)に示す更新処理の後でリセット処理の前に、通信モジュール10に接続される他の機能部に対して、DM_IND信号を一度Lowにしてもよい。また、通信モジュール10の制御部12は、リセット処理の後で、通信モジュール10に接続される他の機能部に対して、DM_IND信号を再びHighにしてもよい。
その後、通信モジュール10の制御部12は、例えば通信モジュール10に接続される他の機能部に対して、非請求リザルトのATコマンドである+FOTA:UPOKを発してもよい。これは、通信モジュール10に接続される他の機能部に対して、ファームウェアの更新処理が正常に終了したことを通知するための非請求リザルトである。
また、図4の(21)において通知が行われた後、通信モジュール10の制御部12は、例えば通信モジュール10に接続される他の機能部に対して、非請求リザルトのATコマンドである+FOTA:OKを発してもよい。これは、通信モジュール10に接続される他の機能部に対して、FOTAの一連の処理が正常に終了したことを通知するための非請求リザルトである。
このように、一実施形態に係る通信システム1は、少なくとも1つの通信モジュール10と、サーバ20と、を含む。また、一実施形態に係る通信システム1は、通信モジュール10からサーバ20に送信する要求のリソースが規定されていない規格に準拠する。特に、このような規格は、通信モジュール10からサーバ20に送信する要求であってソフトウェアの更新の要求のリソースが規定されていない規格としてもよい。一実施形態に係る通信システム1において、通信モジュール10は、当該通信モジュール10におけるソフトウェアを更新する際、サーバ20によって監視を要求されたリソースにおける変化を示す通知をサーバ20に送信する。また、一実施形態に係る通信システム1において、サーバ20は、サーバ20によって監視を要求されたリソースにおける変化を示す通知の受信に基づいて、ソフトウェアの更新に関連する処理を実行する。
以上説明したように、一実施形態に係る通信システム1によれば、通信モジュール10にとって好適なタイミングで、通信モジュール10側からのトリガによってファームウェア等のソフトウェアのダウンロード及び/又はアップデートを行うことができる。このため、一実施形態に係る通信システム1によれば、例えば通信モジュール10の動作中に再起動が実行されて実行中の処理が中断されるなどの不都合は生じなくなる。したがって、一実施形態に係る通信システム1によれば、通信システムの利便性を高めることができる。
また、一実施形態に係る通信システム1において、通信モジュール10は、例えば例えばATコマンドのような所定のコマンドに基づいて、通信モジュール10におけるソフトウェアの更新を開始してもよい。特に、通信モジュール10は、例えば通信モジュール10に接続された電子機器から入力される所定のコマンド(例えばATコマンド)に基づいて、通信モジュール10におけるソフトウェアの更新を開始してもよい。
このような通信システム1によれば、通信モジュール10のユーザの所望するタイミングで、又は通信モジュール10に接続された電子機器のユーザの所望するタイミングで、通信モジュール10におけるソフトウェアの更新を開始することができる。このため、一実施形態に係る通信システム1によれば、通信システムの利便性を高めることができる。
また、一実施形態に係る通信システム1において、サーバ20は、リソースにおける変化を示す通知を受信する前に、リソースにおける変化を通信モジュール10が監視するように要求してもよい。
このような通信システム1によれば、例えばLwM2Mのような規格に準拠していても、通信モジュール10側の動作をトリガとしてソフトウェアの更新を開始することができる。このため、一実施形態に係る通信システム1によれば、通信システムの利便性を高めることができる。
また、一実施形態に係る通信システム1において、通信モジュール10は、ソフトウェアの更新の要否を確認するためのリソースにおける変化を示す通知をサーバ20に送信してもよい。また、サーバ20は、このような通知の受信に基づいて、ソフトウェアの更新の要否の確認に関連する処理を実行してもよい。また、一実施形態に係る通信システム1において、通信モジュール10は、ソフトウェアの更新に関連するプログラムをサーバ20からダウンロードするためのリソースにおける変化を示す通知を当該サーバに送信してもよい。この場合、サーバ20は、このような通知の受信に基づいて、プログラムを通信モジュール10に送信する処理を実行してもよい。また、一実施形態に係る通信システム1において、通信モジュール10は、通信モジュール10におけるソフトウェアの更新の結果を通知するためのリソースを利用して、その結果を前記サーバに送信してもよい。
このような通信システム1によれば、例えばLwM2Mのような規格に準拠していても、サーバ20は、通信モジュール10側の動作をトリガとして、ソフトウェアの更新に関連する処理を実行することができる。このため、一実施形態に係る通信システム1によれば、通信システムの利便性を高めることができる。
また、一実施形態に係る通信システム1において、サーバ20は、リソースにおける変化を示す通知を受信した後、リソースにおける変化の通信モジュール10による監視を取り消すように要求してもよい。
このような通信システム1によれば、通信モジュール10からサーバ20が要求した監視に応じた通知をサーバ20が受信した後、このような通知が繰り返し送信されることを防ぐことができる。このため、一実施形態に係る通信システム1によれば、通信システムの利便性を高めることができる。
また、一実施形態に係る通信システム1において、通信モジュール10は、ソフトウェアを更新する際、通信モジュール10による間欠受信(DRX)を停止してもよい。また、一実施形態に係る通信システム1において、通信モジュール10は、ソフトウェアを更新する際、通信モジュール10による通信の省電力モード(PSM)を停止してもよい。
このような通信システム1によれば、ソフトウェアを更新する際には適切に通信が行われるようにしつつ、ソフトウェアを更新しない際には通信モジュール10の消費電力を低減することができる。このため、一実施形態に係る通信システム1によれば、通信システムの利便性を高めることができる。上述の実施形態においては、LwM2Mのような規格に準拠した通信システムにおいて、FOTAを実現する例を主に説明してきたが、一実施形態は、このような態様に限定されない。ソフトウェア全般の無線による配信及び当該ソフトウェアに基づく更新を実現する技術(On-The-Air(OTA))において、上述の実施形態を適用できる。
本開示を諸図面及び実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形又は修正を行うことが容易であることに注意されたい。従って、これらの変形又は修正は本開示の範囲に含まれることに留意されたい。例えば、各機能部に含まれる機能などは論理的に矛盾しないように再配置可能である。複数の機能部等は、1つに組み合わせられたり、分割されたりしてよい。上述した本開示に係る各実施形態は、それぞれ説明した各実施形態に忠実に実施することに限定されるものではなく、適宜、各特徴を組み合わせたり、一部を省略したりして実施されうる。
例えば、上述した実施形態は、通信モジュール10及びサーバ20を含む通信システム1としての実施に限定されない。例えば、上述した実施形態は、通信システム1のようなシステムに含まれる通信モジュールとして実施してもよいし、通信システム1のようなシステムに含まれるサーバとして実施してもよい。また、例えば、上述した実施形態は、通信モジュール10のような通信モジュールの制御方法として実施してもよいし、サーバ20のようなサーバの制御方法として実施してもよい。さらに、例えば、上述した実施形態は、通信モジュール10のような通信モジュールの制御プログラムとして実施してもよいし、サーバ20のようなサーバの制御プログラムとして実施してもよい。