====== LTE モジュール (KYM11/KYM12) の管理 ======
MA-E350/KL(AD) には、京セラ製 LTE モジュール [[https://biz.kddi.com/service/iot-lte/product/|KYM11/KYM12]] を搭載しています。\\
AT コマンドが標準的な規格に準拠しておらず独自コマンド体系なため、モジュールの各種情報を取得するライブラリおよびそれを利用するコマンドを準備してあります。
[[http://www.kddi.com/business/mobile/m2m-solution/domestic-m2m/product/kym11/|{{http://media3.kddi.com/extlib/business/mobile/m2m-solution/cdma-module/product/index/img_05.jpg|KYM11}}]]
\\
===== 使用方法 (コマンド) =====
user1@plum:~$ sudo kym11util
usage: kym11util [command] [args..]
command:
get_datetime: get date/time from KYM11 (AT$31?)
get_pktstat: get packet status (AT$36?)
get_tempprotect: get Temperature Protection status (AT$39?)
get_version: get module version (AT+GMR)
get_simstat: get SIM registration status (AT$20?)
get_telno: get SIM telephone number (AT$21?)
get_iccid: get module ICCID (AT$19?)
get_imei: get module IMEI (AT$10?)
select_sim [0|1]: select SIM (0: internal / 1: external) (AT$18=m)
OTA: perform OTASP (AT@30)
get_status: get all status
user1@plum:~$
※ v4.4.8rc3 から
usage: kym_util [command] [args..]
command:
get_datetime: get date/time from KYM1x (AT$31?)
get_pktstat: get packet status (AT$36?)
get_tempprotect: get Temperature Protection status (AT$39?)
get_version: get module version (AT+GMR)
get_simstat: get SIM registration status (AT$20?)
get_telno: get SIM telephone number (AT$21?)
get_iccid: get SIM ICCID (AT$19?)
get_imei: get module IMEI (AT$10?)
get_reason: get disconnect reason (ATS86?) ※ 追加
get_error_report: get error report from module (AT$59) ※ 追加
select_sim [0|1]: select SIM (0: internal / 1: external) (AT$18=m)
get_sim: get selected SIM information (AT$18?) ※ 追加
OTA: perform OTASP (AT@30)
firmup: perform Firmware Update (AT@40) ※ 追加
get_status: get all status
\\
|<60em 7em 20em 10em 15em>|
^ Command ^ 動作 ^ 発行する AT コマンド ^ 備考 |
|get_datetime|現在の日付情報の表示| AT$31? | |
|get_pktstat|パケットステータスの表示| AT$36? | |
|get_tempprotect|温度プロテクション状態表示| AT$39? | |
|get_version|モジュールのファームウェアバージョンの表示| AT+GMR | |
|get_simstat|顧客登録状態の表示| AT$20? | |
|get_telno|電話番号の表示| AT$21? | |
|get_iccid|ICCID 表示| AT$19? | |
|select_sim|SIM カード、組込 SIM 優先モード切替| AT$18=[m] | |
|OTA|OTASP 起動要求 (利用開始登録)| AT@30 | |
※ 通信中は使用できません((コマンドが 『ATコマンドモード』 でないと動作せず、『ATコマンドモード』か確認およびモードを変更するコマンドがモデムポート(通信に使用)でしか動作しないため、通信中は使用できません ))
\\
==== 現在の日付情報の表示 ====
user1@plum:~$ sudo kym11util get_datetime
2014/09/19 15:52:53
user1@plum:~$
※ LTE 網へアタッチが完了し、基地局から時刻情報の取得ができるまでは不正な日時(2000/01/01 00:00:00)が返ります。
\\
==== パケットステータスの表示 ====
モジュールの通信状態の表示を行います。
user1@plum:~$ sudo kym11util get_pktstat
Idle (3)
user1@plum:~$
|<33em 7em 22em>|
^ Result ^ Information |
|Detached (1)|LTE Detach 状態 (システムに在圏していない状態)|
|Idle (3)|LTE Attach 状態、かつ無線接続なし|
|Connected (4)|LTE Attach 状態、かつ無線接続あり|
\\
==== 温度プロテクション状態表示 ====
温度プロテクション機能によりプロテクション状態となっているかを表示します。
user1@plum:~$ sudo kym11util get_tempprotect
Normal (0)
user1@plum:~$
|<33em 7em 22em>|
^ Result ^ Information |
|Normal (0)|通常状態|
|Protected (1)|温度プロテクション状態|
\\
==== モジュールのファームウェアバージョンの表示 ====
user1@plum:~$ sudo kym11util get_version
010101
user1@plum:~$
\\
==== 顧客登録状態の表示 ====
モジュールの契約状態および電波送受信可能な状態であるか否かの表示を行います。
user1@plum:~$ sudo kym11util get_simstat
Registered, Ready (1)
user1@plum:~$
|<38em 15em 22em>|
^ Result ^ Information |
|Not registered (0)|未登録 (灰ロム状態)|
|Registered, Ready (1)|登録 (黒ロム) + 電波送受信可能状態|
|Registered, Not ready (2)|登録 (黒ロム) + 電波送受信不可能状態|
\\
==== 電話番号の表示 ====
モジュールの電話番号を表示します。
user1@plum:~$ sudo kym11util get_telno
08065xxxxxx
user1@plum:~$
\\
==== ICCID 表示 ====
ICCID の表示を行います。
user1@plum:~$ sudo kym11util get_iccid
898xxxxxxxxxxxxxxxx
user1@plum:~$
\\
==== SIM カード、組込 SIM 優先モード切替 ====
SIM カード、組込 SIM 優先モードの切替を行います。
user1@plum:~$ sudo kym11util select_sim 1
OK
user1@plum:~$
|<33em 7em 22em>|
^ Parameter ^ Info |
| 0 |組込 SIM 専用|
| 1 |SIM カード優先|
\\
==== OTASP 起動要求 (利用開始登録) ====
無線を介して加入者情報を書き込む OTASP の起動を行います。\\
本コマンドは、灰ロム状態でのみ実行可能です。
=== 成功 ===
user1@plum:~$ sudo kym11util OTA
OTASP started.
OTA progress: 1
OTA progress: 2
OTA progress: 3
OTA progress: 4
OTASP completed.
OK
user1@plum:~$ echo $?
0
user1@plum:~$
\\
=== 失敗 ===
user1@plum:~$ sudo kym11util OTA
OTASP started.
OTA progress: 1
OTA progress: 2
Commit Response message not received.
Fail
user1@plum:~$ echo $?
1
user1@plum:~$
\\
=== 利用開始済み ===
user1@plum:~$ sudo kym11util OTA
Already activated.
OK
user1@plum:~$ echo $?
0
user1@plum:~$
\\
===== TIPS =====
==== 通信前に各種情報を取得しておく ====
前述したとおり、現在のモードを取得・変更するのがモデムポート経由でしかできないため、通信中に各種情報を取得することができません。\\
回避策として、デバイス発見時に情報を取得し、ファイルへ出力しておくという方法が考えられます。
下記のようなファイルを準備、変更します。
* /usr/local/sbin/kym11info((chmod で 実行ビットを立てておく必要があります))
#! /bin/bash
(sleep 10; /usr/bin/python3 /usr/local/lib/python3.4/dist-packages/kym11lib.py &> /tmp/kym11info) &
\\
* /etc/udev/rules.d/10-mae3xx.rules
# ublox LISA-2xx
SUBSYSTEM=="tty", ATTRS{modalias}=="usb:v1546p1102d1676dcEFdsc02dp01ic02isc02ip01in00", ACTION=="add", SYMLINK+="ttyLISA0"
SUBSYSTEM=="tty", ATTRS{modalias}=="usb:v1546p1102d1676dcEFdsc02dp01ic02isc02ip01in02", ACTION=="add", SYMLINK+="ttyLISA1"
SUBSYSTEM=="tty", ATTRS{modalias}=="usb:v1546p1102d1676dcEFdsc02dp01ic02isc02ip01in04", ACTION=="add", SYMLINK+="ttyLISA2", RUN+="/usr/bin/touch /tmp/.lisa_found"
SUBSYSTEM=="usb", ENV{ID_VENDOR}=="u-blox", ACTION=="remove", RUN+="/bin/rm -f /tmp/.lisa_found"
# Kyocera KYM11
SUBSYSTEM=="tty", ATTRS{modalias}=="usb:v0482p0848d0100dc02dsc00dp00ic02isc02ip01in02", ACTION=="add", SYMLINK+="ttyKYM11", RUN+="/usr/bin/touch /tmp/.kym11_found", RUN+="/usr/local/sbin/kym11info"
SUBSYSTEM=="usb", ENV{ID_VENDOR}=="KYOCERA", ACTION=="remove", RUN+="/bin/rm -f /tmp/.kym11_found"
SUBSYSTEM=="net", DRIVERS=="cdc_ncm", KERNEL=="usb*", ACTION=="add", NAME="wwan0"
# Hitachi Kokusai UM03-KO
SUBSYSTEM=="tty", ATTRS{modalias}=="usb:v0949p0001d1344dc02dsc00dp00ic02isc02ip01in02", ACTION=="add", SYMLINK+="ttyUM03KO0"
SUBSYSTEM=="tty", ATTRS{modalias}=="usb:v0949p0001d1344dc02dsc00dp00ic02isc02ip01in04", ACTION=="add", SYMLINK+="ttyUM03KO1", RUN+="/usr/bin/touch /tmp/.um03ko_found"
SUBSYSTEM=="usb", ENV{ID_MODEL}=="FOMA_UM03-KO", ACTION=="remove", RUN+="/bin/rm -f /tmp/.um03ko_found"
# AMTelecom AMP520
SUBSYSTEM=="tty", ATTRS{modalias}=="usb:v1ECBp0202d0232dc02dsc00dp00ic02isc02ip01in00", ACTION=="add", SYMLINK+="ttyAMP0"
SUBSYSTEM=="tty", ATTRS{modalias}=="usb:v1ECBp0202d0232dc02dsc00dp00icFFiscFFip04in03", ACTION=="add", SYMLINK+="ttyAMP1", RUN+="/usr/bin/touch /tmp/.amp520_found"
SUBSYSTEM=="usb", ENV{ID_MODEL}=="AMP520", ACTION=="remove", RUN+="/bin/rm -f /tmp/.amp520_found"
# OMAP RTC
SUBSYSTEM=="rtc", KERNEL=="rtc1", RUN+="/sbin/hwclock -f /dev/rtc1 --systohc"
# Atheros/MediaTek WiFi
SUBSYSTEM=="ieee80211", ACTION=="add", ATTRS{busnum}=="2", RUN+="/usr/local/sbin/set_trigger %s{name} %s{idVendor} %s{idProduct}"
# USB-SATA bridge
KERNEL=="sd?", SUBSYSTEM=="block", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="9261", RUN+="/usr/local/sbin/update_scheduler %k"
KYM11 を見つけたとき(("# Kyocera KYM11" の次の行))に実行するコマンドに、 **RUN+="/usr/local/sbin/kym11info"** を追加しています。
\\
この変更により、モジュール検出時に情報を取得し、ファイルへ出力しておくことができます。
# cat /tmp/kym11info
== KYM11 status ==
Date/Time: 0000/00/00 00:00:00
Packet Status: Detached
Temp Protection: Normal
Module version: 010300
SIM status: Registered, Ready
Telephone No: 0806xxxxxxx
ICCID: 8981xxxxxxxxxxxxxxx
\\
===== モジュール使用開始の流れ =====
\\