| | Armadillo には、 OS として Debian がインストールされています。基本的には PC Linux と同じように動作します。ここではネットワークの設定やストレージのように一般的な動作に加え、GPIO や LED などについて説明します。 | |
---|
工場出荷状態でフラッシュメモリに書き込まれているイメージファイルは、最新版でない可能性があります。最新版のイメージファイルはArmadilloサイトからダウンロード可能です。最新版のイメージファイルに書き換えてからのご使用を推奨します。 イメージファイルの書き換えについては、12章イメージファイルの書き換え方法を参照してください。 |
ここでは、ネットワークの設定方法やネットワークを利用するアプリケーションについて説明します。 Armadillo-IoT ゲートウェイ A6は、 LTE と Ethernet に対応しています。Linuxからは、ppp0 と eth0 に見えます。 表6.1 ネットワークとネットワークデバイス ネットワーク | ネットワークデバイス | 出荷時の設定 |
---|
LTE | ppp0
| DHCP | Ethernet | eth0
| DHCP |
ここでは有線LANの使用方法について説明します。Armadillo-IoT ゲートウェイ A6では、通常のLinuxシステムと同様にネットワーク設定を行います。出荷状態では eth0 が DHCP [] でネットワークの設定を行います。 DHCP が無い環境の場合は、 「固定IPアドレスに設定する」 を参照し設定してください。 最近の GNU/Linux OSでは、古くから使われてきた ifconfig (net-tools) に代り iproute2 を使用します。 ifconfig は Deprecated されています。本書でも ifconfig ではなく、 iproute2 に含まれている ip コマンドなどを使用します。 IPアドレスの一覧を確認するには、次のようにコマンドを実行します。 ネットワークデバイスの一覧を確認するには link を使います。 他にも ip コマンドではルーティングテーブルの表示やトンネルの設定などもできます。詳しくは ip コマンドの man ページを参照してください。 6.2.3.2. インターフェースの有効化・無効化インターフェースを有効化するには、次のようにコマンドを実行します。 ifup コマンドは Debian 特有のコマンドで ifupdown パッケージに含まれています。 ifconfig とは関係なく抽象的にネットワークを操作するためのコマンドです。設定は /etc/network/interfaces で行います。 インターフェースを無効化するには、次のようにコマンドを実行します。 | |
---|
ネットワーク接続に関する不明な点については、ネットワークの管理者へ相談してください。 |
| |
---|
/etc/network/interfaces の変更は、インターフェースを無効化した状態で行ってください。 DHCP が動作している場合など、設定が反映されない場合があります。
|
表6.2「固定IPアドレス設定例」の内容に設定する例を、以下に示します。 表6.2 固定IPアドレス設定例 項目 | 設定 |
---|
IPアドレス | 192.0.2.10 | ネットマスク | 255.255.255.0 | ネットワークアドレス | 192.0.2.0 | ブロードキャストアドレス | 192.0.2.255 | デフォルトゲートウェイ | 192.0.2.1 |
固定 IP時、または DHCP で DNS情報が取得できない場合は、DNSサーバーを指定する必要があります。DNSサーバーを指定する例を、以下に示します。 6.2.3.6. インターフェースの修正を反映する有効化されているインターフェースは、修正しないでください。必ず無効化してから設定を変更してください。 [armadillo ~]# ifdown eth0
[armadillo ~]# vi /etc/network/interfaces
:
[armadillo ~]# ifup eth0 有線LANで正常に通信が可能か確認します。設定を変更した場合、必ず変更したインターフェースを再度有効化してください。 同じネットワーク内にある通信機器とPING通信を行います。以下の例では、通信機器が「192.0.2.20」というIPアドレスを持っていると想定しています。 | |
---|
有線LAN以外のインターフェースが有効化されている場合、ルーティングの設定などにより、ネットワーク通信に有線LANが使用されない場合があります。設定を必ず確認してください。確実に有線LANの接続確認をする場合は、有線LAN以外のインターフェースを無効化してください。 |
ここでは、Armadillo-IoT ゲートウェイ A6 に搭載されている LTE モジュールの使用方法について説明します。 Armadillo-IoT ゲートウェイの初期イメージには、 LTE モデムを制御するサービス (aiot-modem-controld) とそのサービスを制御するためのアプリケーション(aiot-modem-control) がインストールされています。
aiot-modem-controld は、 ppp コネクションの確立と IP アドレスの取得に関して、 wvdial というアプリケーションを用いて実行しています。 6.2.4.1. LTE データ通信設定を行う前にLTE データ通信を利用するには、通信事業者との契約が必要です。契約時に通信事業者から貸与された nanoSIM(UIMカード) と APN 情報を準備します。 | |
---|
Armadillo-IoT ゲートウェイ A6 の電源が切断されていることを確認してから nanoSIM(UIMカード) を取り付けてください。 |
nanoSIM(UIMカード) の切り欠きを挿入方向に向け、刻印面を上にして挿入してください。
向きと上下を間違えると挿入できませんので、無理に挿入しないでください。破損する可能性があります。 APNの設定を行うには、次に示す情報が必要です。 -
APN(最大 99 文字)
-
ユーザー名(最大 64 文字)
-
パスワード(最大 64 文字)
-
認証方式(PAP または CHAP)
6.2.4.2. LTE 設定ファイル (/etc/aiot-modem-control/startup.conf) の編集標準イメージを利用されている場合、Armadillo-IoT ゲートウェイ A6 起動時、自動的に LTE の通信設定を行うサービスが起動します。
このサービスは、 /etc/aiot-modem-control/startup.conf の設定内容を参照し、設定内容に応じた値を LTE モデムに設定します。 全てのパラメーターに関して、設定項目が存在しない場合、該当する項目は設定しませんので、独自のアプリケーションなどで設定したい、もしくは設定をしたくない項目はコメントにしてください。 -
全て
パラメーター=値 の形式で記載してください。
-
値にはダブルクオテーションを含めて最大102文字設定可能です。それ以上長い値は無視します。
-
1行の最大文字数はコメントを含めて256文字です。それ以降の文字列は無視します。
-
スペース及びタブは無視します。
-
行内 # 以降はコメントとみなします。
apn: APN 名設定
APN を設定します。
ご利用になられる SIM カードの提供事業者から指定された APN 名を、ダブルクオテーションで囲んで設定してください。
auth_prot: ppp 認証方式設定
PPP 認証方式を設定します。
ご利用になられる SIM カードの提供事業者から指定された ppp 認証方式を、ダブルクオテーションで囲んで設定してください。
"pap"、"chap" または "none" (認証不要) が設定可能です。
ユーザー名とパスワードが不要な SIM の場合、 "none" を設定してください。
username: ユーザー名設定
ユーザー名を設定します。
ご利用になられる SIM カードの提供事業者から指定された ユーザー名を、ダブルクオテーションで囲んで設定してください。
auth_prot が "none" の場合設定は不要です。
password: パスワード設定
パスワードを設定します。
ご利用になられる SIM カードの提供事業者から指定された パスワードを、ダブルクオテーションで囲んで設定してください。
auth_prot が "none" の場合設定は不要です。
create_wvdial_conf: wvdial.conf 自動生成設定
ppp 接続を実行するアプリケーション wvdial が参照する設定ファイル /etc/wvdial.conf を自動生成する場合、 true を設定してください。
true 以外の文字列が設定された場合、 /etc/wvdial.conf の自動生成を行いません。
自動生成されるファイルの内容は以下の通りです。
これ以外の設定にしたい場合は、本パラメーターを無効にし、/etc/wvdial.conf を直接編集してご利用ください。
operator_id: オペレーターID 設定
オペレーターID を指定します。ローミング対応 SIM などオペレーター自動選択では接続できない場合、本パラメーターを設定することで接続できることがあります。
設定値は、SIM を提供している事象者に確認ください。
例として、 NTT DoCoMo の網を利用している SIM の場合 "44010" になります。
自動設定を指定する場合は、本パラメーターに "auto" を設定してください。
ダブルクォテーションで囲んで設定してください。
fix_profile: プロファイル指定設定
LTE モデムで使用するプロファイルを指定します。
通常は LTE モデムが自動でプロファイルを選択する為、設定する必要はありませんが、
ローミング対応 SIM など上手く接続出来ない場合に設定することで接続できることがあります。 表6.3 fix_profile 設定可能パラメーター 設定値 | 概要 |
---|
"docomojp" | NTT DoCoMo のプロファイルを使用する | "none" | 自動選択 |
sleep: Sleep 設定
LTE モデムとのシリアルインタフェースが指定時間通信がない時に Sleep モードへ遷移します。
"disable" を設定した場合、この設定が無効となります。
以下の表に示す値以外を設定した場合、LTE モデムへの設定を行いません。 表6.4 sleep 設定可能パラメーター 設定値 | 概要 |
---|
100 … 5000 | Sleep モードへ移行する時間(ミリ秒) | "disable" | 無効 |
suspend: Suspend 設定
Suspend の有効・無効を設定します。 LTE モデムの Suspend を有効にすると、LTE モデムは省電力・間欠動作機能のスリープモードに該当する動作となります。詳細は、「スリープモード」を参照ください。 表6.5 suspend 設定可能パラメーター 設定値 | 概要 |
---|
"enable" | 有効 | "disable" | 無効 |
psm: PSM 設定
PSM(Power Saving Mode) の設定を行います。
"disable" を設定すると PSM が無効になります。
有効にする場合、tau(periodic Tracking Area Update) と act-time(ACTive TIME) の組み合わせを設定します。 表6.6 psm 設定可能パラメーター 設定値 | 概要 |
---|
tau,act-time | 有効
例: psm=3m,1m | "disable" | 無効 |
表6.7 psm tau,act-time 設定可能パラメーター パラメーター | 設定可能値 (s:秒、m:分、h:時間) |
---|
tau | 2s,4s,6s…62s,90s,120s,150s…930s
1m,2m,3m…31m,40m,50m,60m…310m
1h,2h,3h…31h,40h,50h,60h…310h | act-time | 2s,4s,6s…62s
1m,2m,3m…31m,36m,42m,48m…186m |
edrx: eDRX 設定
eDRX の設定を行います。
"disable" を設定すると eDRX が無効になります。
有効にする場合、 pcl(Paging Cycle Length) と ptw(Paging Time Window eDRX) の組み合わせを設定します。 表6.8 edrx 設定可能パラメーター 設定値 | 概要 |
---|
pcl,ptw | 有効 (例: edrx=20.48,5.12) | "disable" | 無効 |
表6.9 edrx pcl,ptw 設定可能パラメーター パラメーター | 設定可能値 |
---|
pcl | 5.12, 10.24, 20.48, 40.96, 61.44, 81.92, 102.4, 122.88, 143.36, 163.84, 327.68, 655.36, 1310.72, 2621.44 (秒) | ptw | 1.28, 2.56, 5.12, 6.40, 7.68, 8.96, 10.24, 11.52, 12.80, 14.08, 15.36, 16.64, 17.92, 19.20, 20.48 (秒) |
auto_dial: 自動 ppp 接続設定
このパラメーターに true が設定されていると、ppp コネクションを自動確立し、確立出来た後 IP アドレスが付与されると IP 通信が可能となります。
true 以外の値が設定されている場合、何もしません。
作成されたアプリケーションのタイミングで ppp 接続を行いたい場合などは、 true を設定しないでください。
register_check_interval: ネットワーク登録確認周期設定
指定された間隔(秒)でネットワーク登録を確認します。
suspend が "enable" に設定されている場合、確認を実行しません。
また、ネットワーク登録が確認された後、auto_dial の設定が true であれば、自動的に ppp 接続を試みます。
確認周期は 30 秒から 300 秒の間で設定可能です。 表6.10 register_check_interval 設定可能パラメーター 設定値 | 概要 |
---|
30 … 300 | ネットワーク登録確認周期(秒) |
| 設定ファイルを更新した場合 |
---|
LTE 設定ファイル (/etc/aiot-modem-control/startup.conf) を更新した場合、設定を適用するにはArmadillo-IoT ゲートウェイ A6 の再起動または LTE モデムを制御するサービスの再起動が必要です。必要に応じて実施してください。 [armadillo ~]# reboot # Armadillo-IoT ゲートウェイ A6 を再起動する [armadillo ~]# systemctl restart aiot-modem-controld.service # LTE モデムを制御するサービスの再起動を行う 設定ファイルで自動 ppp 接続設定を有効 (auto_dial=true) にしていない場合、図6.15「aiot-modem-control dial コマンド」を使用して ppp 接続を確立する必要があります。 |
アットマークテクノの Web サーバーと PING 通信を行います。VPN 接続を利用するなどインターネットに接続できない場合は、ネットワーク内の通信機器に読み替えてください。 [armadillo ~]# ping www.atmark-techno.com 6.2.4.4. コマンドによる LTE モデム制御コマンド aiot-modem-control を使用することで LTE モデムの制御を実行できます。
コマンド書式とコマンド一覧を以下に示します。
LTE モデムを制御するシリアルインタフェースが 1 本のため、wvdial 実行中または他のアプリケーションなどでシリアル使用中は実行できないコマンドがあります。 表6.11 aiot-modem-control コマンド一覧 command | 概要 | ppp コネクション確立中実行可否 |
---|
set-apn | APN 設定 | 不可 | dial | ppp コネクション確立 | 不可 | hangup | ppp コネクション切断 | 可 | get-phone-number | 電話番号取得 | 不可 | get-signal-quality | 電波品質(RSRQ)取得 | 不可 | wwan-force-restart | LTE モデム再起動 | 可 | poweron | LTE モデム 電源オン | 可 | poweroff | LTE モデム 電源オフ | 可 | set-psm | PSM 設定 | 不可 | set-edrx | eDRX 設定 | 不可 | set-sleep | Sleep 設定 | 不可 | set-suspend | Suspend 設定 | 不可 | activate | LTE モデム活性化 | 可 | deactivate | LTE モデム非活性化 | 可 | send-at | AT コマンド送信 | 不可 | send-at-echo | AT コマンド送信(応答表示) | 不可 | status | 簡易状態表示 | 可 | help | コマンドヘルプ表示 | 可 |
set-apn: APN 設定
パラメーターに指定した APN を LTE モデムに設定します。
APN はダブルクオテーションで囲んでください。
dial: ppp コネクション確立
wvdial を使用して ppp コネクションの確立を試みます。
既に wvdial が動作しているときは何もせずコマンドを終了します。
hangup: ppp コネクション切断
wvdial を停止して ppp コネクションを切断します。
既に wvdial が動作していないときは何もせずコマンドを終了します。
切断後、 /etc/aiot-modem-control/startup.conf で auto_dial に true を設定、かつ register_check_interval に有効な値を設定している場合、次の確認周期でネットワーク登録が出来ている場合、自動的に ppp の接続を行います。
get-phone-number: 電話番号取得
SIM カードに設定されている電話番号を取得します。
get-signal-quality: 電波品質(RSRQ)取得
現在の電波品質(RSRQ: Reference Signal Received Quality)を取得します。
Sleep 中などは 255 になります。
表6.12 get-signal-quality 戻り値の意味 戻り値 | 意味 | 戻り値 | 意味 |
---|
0 | -19.5 dB 未満 | 18 | -11 dB 以上 -10.5 dB 未満 | 1 | -19.5 dB 以上 -19 dB 未満 | 19 | -10.5 dB 以上 -10 dB 未満 | 2 | -19 dB 以上 -18.5 dB 未満 | 20 | -10 dB 以上 - 9.5 dB 未満 | 3 | -18.5 dB 以上 -18 dB 未満 | 21 | - 9.5 dB 以上 - 9 dB 未満 | 4 | -18 dB 以上 -17.5 dB 未満 | 22 | - 9 dB 以上 - 8.5 dB 未満 | 5 | -17.5 dB 以上 -17 dB 未満 | 23 | - 8.5 dB 以上 - 8 dB 未満 | 6 | -17 dB 以上 -16.5 dB 未満 | 24 | - 8 dB 以上 - 7.5 dB 未満 | 7 | -16.5 dB 以上 -16 dB 未満 | 25 | - 7.5 dB 以上 - 7 dB 未満 | 8 | -16 dB 以上 -15.5 dB 未満 | 26 | - 7 dB 以上 - 6.5 dB 未満 | 9 | -15.5 dB 以上 -15 dB 未満 | 27 | - 6.5 dB 以上 - 6 dB 未満 | 10 | -15 dB 以上 -14.5 dB 未満 | 28 | - 6 dB 以上 - 5.5 dB 未満 | 11 | -14.5 dB 以上 -14 dB 未満 | 29 | - 5.5 dB 以上 - 5 dB 未満 | 12 | -14 dB 以上 -13.5 dB 未満 | 30 | - 5 dB 以上 - 4.5 dB 未満 | 13 | -13.5 dB 以上 -13 dB 未満 | 31 | - 4.5 dB 以上 - 4 dB 未満 | 14 | -13 dB 以上 -12.5 dB 未満 | 32 | - 4 dB 以上 - 3.5 dB 未満 | 15 | -12.5 dB 以上 -12 dB 未満 | 33 | - 3.5 dB 以上 - 3 dB 未満 | 16 | -12 dB 以上 -11.5 dB 未満 | 34 | - 3 dB 以上 | 17 | -11.5 dB 以上 -11 dB 未満 | 255 | 不明、計測不能 |
wwan-force-restart :LTE モデム再起動
LTE モデムを再起動します。
再起動後、 /etc/aiot-modem-control/startup.conf に記載された設定を実行します。
/etc/aiot-modem-control/startup.conf の設定によっては、コマンドが終了するまでに時間がかかります。
poweron: LTE モデム 電源オン
LTE モデムを起動します。
起動後、 /etc/aiot-modem-control/startup.conf に記載された設定を実行します。
/etc/aiot-modem-control/startup.conf の設定によっては、コマンドが終了するまでに時間がかかります。
既に起動している場合、何もせずにコマンドを終了します。
poweroff: LTE モデム 電源オフ
LTE モデムの電源をオフします。
既にオフされている場合、何もせずにコマンドを終了します。
set-psm: PSM 設定
PSM の設定を行います。
パラメーターに enable を指定した場合、 その後ろに tau(periodic Tracking Area Update) と act-time(ACTive TIME) の順に値を指定します。
disable を指定すると、 PSM が無効になります。
default を指定すると、 PSM が無効になり、tau と act-time が初期値に設定されます。
初期値は、 tau が 3 分、 act-time が 1 分です。
表6.13 set-psm tau act-time 設定可能パラメーター パラメーター | 設定可能値(s:秒、m:分、h:時間) |
---|
tau | 2s,4s,6s…62s,90s,120s,150s…930s
1h,2h,3h…31h,40h,50h,60h…310h | act-time | 2s,4s,6s…62s
1m,2m,3m…31m,36m,42m,48m…186m |
set-edrx: eDRX 設定
eDRX の設定を行います。
パラメーターに enable を指定した場合、 その後ろに pcl(Paging Cycle Length) と ptw(Paging Time Window eDRX) の値を指定します。
disable を指定すると、 eDRX が無効になります。
default を指定すると、 eDRX が無効になり、pcl と ptw が初期値に設定されます。
初期値は、 pcl が 20.48 秒、 ptw が 5.12 秒です。
表6.14 set-edrx pcl ptw 設定可能パラメーター パラメーター | 設定可能値 |
---|
pcl | 5.12, 10.24, 20.48, 40.96, 61.44, 81.92, 102.4, 122.88, 143.36, 163.84, 327.68, 655.36, 1310.72, 2621.44 (秒) | ptw | 1.28, 2.56, 5.12, 6.40, 7.68, 8.96, 10.24, 11.52, 12.80, 14.08, 15.36, 16.64, 17.92, 19.20, 20.48 (秒) |
set-sleep: Sleep 設定
パラメーターに enable を指定した場合、その後ろに LTE モデムとのシリアルインタフェースが指定時間通信がない時に Sleep モードへ遷移する時間(ミリ秒)を指定します。100ミリ秒から5000ミリ秒の間の値を指定可能です。
disable を設定した場合、この設定が無効となります。
set-suspend: Suspend 設定
LTE モデムの Suspend 設定を行います。enable または disable を指定可能です。 LTE モデムの Suspend を有効にすると、LTE モデムは省電力・間欠動作機能のスリープモードに該当する動作となります。詳細は、「スリープモード」を参照ください。
activate: LTE モデム活性化
LTE モデムを suspned 状態へ移行させます。
suspend を有効に設定しているときのみ有効なコマンドです。
データー通信中など suspend 状態へ即座に移行出来ないこともあります。
deactivate: LTE モデム非活性化
LTE モデムを suspned 状態から復帰させます。
suspend を有効に設定しているときのみ有効なコマンドです。
send-at: AT コマンド送信
パラメーターに指定した AT コマンドを送信します。
AT コマンドはダブルクオテーションで囲んでください。
send-at-echo: AT コマンド送信(応答表示)
パラメーターに指定した AT コマンドを送信します。
LTE モデムからの応答が標準出力に表示されます。
AT コマンドはダブルクオテーションで囲んでください。
status: 簡易状態表示
LTE モデムの状態を表示します。
最新の状態ではなく、それぞれ最後に取得できた値のキャッシュになります。
特に rsrq と rsrp は ppp コネクション確立中は更新できませんので、最新の値にはなりません。
表6.15 status 表示内容 項目 | 値の説明 |
---|
manufacturer | LTE モデム製造者 | model | LTE モデムのモデル | revision | REVISION 04.014 | app revison | LTE モデムもF/W バージョン | port(s) | 使用しているシリアルポート | status | LTE モデムの動作状態
nosim: SIM カード未挿入
not registered: ネットワーク未登録
registerd: ネットワーク登録済み
dial: ppp コネクション確立中・済み | phone number | SIM カードの電話番号 | imei | LTE モデムの IMEI(International Mobile Equipment Identifier) | rsrq | 電波品質(Reference Signal Received Quality) | rsrp | 電波強度(Reference Signal Received Power) | sim slot | 使用している SIM スロット | operator id | ネットワーク登録しているオペレーター ID |
aiot-modem-control 処理結果
aiot-modem-control の戻り値と意味を表6.16「aiot-modem-control 処理結果」に示します。 表6.16 aiot-modem-control 処理結果 戻り値 | エラーメッセージ | 意味 |
---|
0 | | 正常終了 | 2 | on Calling | wvdial 動作中 | 3 | Command Failed | コマンド失敗 | 4 | Socket Error | 通信エラー | 5 | Command Not Found | 指定のコマンドが存在しない | 6 | Memory Error | メモリ不足 | 7 | Serial In Use | 他アプリシリアル使用中 | 8 | Serial Error | シリアルエラー | 9 | Timeout | タイムアウト | 10 | Parameter Error | パラメーターエラー |
ネットワーク登録が完了した時点で、自動的に LTE の NITZ(Network Identity and Time Zone) による日時同期を実行します。 手動での日時の設定・参照に関しては、「RTC」 を参照ください。 Armadillo-IoT ゲートウェイ A6 では、ファイアーウォールの実現に iptables を使用しています。
工場出荷状態の Armadillo-IoT ゲートウェイ A6 では、開発時の利便性のために、すべての通信(送信・受信・転送)を許可する設定になっています。 Armadillo を製品として運用する際には、最低限、踏み台として利用されない程度のファイアーウォールを設定しておかなければいけません。 ここでは、iptables のポリシーの設定と、Armadillo がネットワークに接続される前に自動的に設定を適用する方法を紹介します。 6.2.5.1. iptables のポリシーの設定送信はすべて許可、受信・転送はすべて破棄するように設定します。 [armadillo ~]# iptables --policy INPUT DROP
[armadillo ~]# iptables --policy FORWARD DROP
[armadillo ~]# iptables --policy OUTPUT ACCEPT | iptablesのポリシーの設定で受信と転送を許可する |
---|
iptables のポリシーの設定をもとに戻す(受信・転送を許可する)には次のコマンドを実行します。 [armadillo ~]# iptables --policy INPUT ACCEPT
[armadillo ~]# iptables --policy FORWARD ACCEPT |
6.2.5.2. lo (ローカルループバックインターフェース)の許可[armadillo ~]# iptables --append INPUT --in-interface lo --jump ACCEPT 設定されている内容を参照するには、次のコマンドを実行します。 | |
---|
図6.37「iptables設定確認」の設定では受信パケットが全て破棄されます。これが最も安全で最小の設定です。 この設定をベースに、SSHやHTTPSなどの通信プロトコルから利用するものだけを許可していくことをおすすめします。 |
6.2.5.4. iptables の設定を保存し自動的に適用するここまでの手順で行った iptables の設定は、Armadillo を再起動すると失われてしまいます。そこで、Armadillo-IoT ゲートウェイ A6 では iptables-persistent パッケージを利用して、あらかじめ保存しておいた設定を自動的に適用します。 iptables の設定を保存するには、次のコマンドを実行します。 次回起動時から、Armadillo がネットワークに接続される前のタイミングで、自動的にiptables の設定が適用されます。 Armadillo-IoT ゲートウェイ A6 でストレージとして使用可能なデバイスを次に示します。 表6.17 ストレージデバイス デバイス種類 | ディスクデバイス | 先頭パーティション | インターフェース |
---|
オンボード eMMC | /dev/mmcblk0
| /dev/mmcblk0p1
| オンボード | オンボード eMMC (GPP) | /dev/mmcblk0gp2
| なし | オンボード | オンボード eMMC (GPP) | /dev/mmcblk0gp3
| なし | オンボード | SD/SDHC/SDXCカード | /dev/mmcblk1
| /dev/mmcblk1p1
| microSDスロット(CON1) | USBメモリ | /dev/sd* []
| /dev/sd*1
| USB ホストインターフェース (CON5) |
| GPP(General Purpose Partition)について |
---|
GPP は、eMMC の通常の記憶領域を割譲して eMMC 内部に作られた記憶領域です。 eMMC の通常の記憶領域とはアドレス空間が異なるため、/dev/mmcblk0 および /dev/mmcblk0p* に対してどのような書き込みを行っても /dev/mmcblk0gp* のデータが書き換わることはありません。 Armadillo-IoT ゲートウェイ A6 では、8 MiB の GPP を4つ作成しています。各領域の用途を表6.18「eMMCのGPPの用途」に示します。 表6.18 eMMCのGPPの用途 ディスクデバイス | 用途 |
---|
/dev/mmcblk0gp0
| ライセンス情報等の保存 | /dev/mmcblk0gp1
| 予約領域 | /dev/mmcblk0gp2
| ユーザー領域 | /dev/mmcblk0gp3
| ユーザー領域 |
|
ここでは、SDHCカードを接続した場合を例にストレージの使用方法を説明します。以降の説明では、共通の操作が可能な場合に、SD/SDHC/SDXCカードをSDカードと表記します。 | |
---|
SDXC/microSDXCカードを使用する場合は、事前に「ストレージのパーティション変更とフォーマット」を参照してフォーマットを行う必要があります。これは、LinuxカーネルがexFATファイルシステムを扱うことができないためです。通常、購入したばかりのSDXC/microSDXCカードはexFATファイルシステムでフォーマットされています。 |
Linuxでは、アクセス可能なファイルやディレクトリは、一つの木構造にまとめられています。あるストレージデバイスのファイルシステムを、この木構造に追加することを、マウントするといいます。マウントを行うコマンドは、 mount です。 mount コマンドの典型的なフォーマットは、次の通りです。
-t オプションに続く fstype には、ファイルシステムタイプを指定します。ファイルシステムタイプの指定は省略可能です。省略した場合、mount コマンドはファイルシステムタイプを推測します。この推測は必ずしも適切なものとは限りませんので、事前にファイルシステムタイプが分かっている場合は明示的に指定してください。FAT32ファイルシステムの場合は vfat 、EXT3ファイルシステムの場合はext3を指定します。
| |
---|
通常、購入したばかりのSDHCカードはFAT32 または exFATファイルシステムでフォーマットされています。 |
device には、ストレージデバイスのデバイスファイル名を指定します。microSDカードのパーティション1の場合は /dev/mmcblk1p1 、パーティション2の場合は /dev/mmcblk1p2 となります。
dir には、ストレージデバイスのファイルシステムをマウントするディレクトリを指定します。
microSDスロット (CON1) にSDHCカードを挿入し、以下に示すコマンドを実行すると、 /media ディレクトリにSDHCカードのファイルシステムをマウントすることができます。microSDカード内のファイルは、/media ディレクトリ以下に見えるようになります。 ストレージを安全に取り外すには、アンマウントという作業が必要です。アンマウントを行うコマンドは、 umount です。オプションとして、アンマウントしたいデバイスがマウントされているディレクトリを指定します。 6.3.2. ストレージのパーティション変更とフォーマット通常、購入したばかりのSDHCカードやUSBメモリは、一つのパーティションを持ち、FAT32ファイルシステムでフォーマットされています。 パーティション構成を変更したい場合、 fdisk コマンドを使用します。 fdisk コマンドの使用例として、一つのパーティションで構成されている microSDカードのパーティションを、2つに分割する例を図6.43「fdiskコマンドによるパーティション変更」に示します。一度、既存のパーティションを削除してから、新たにプライマリパーティションを二つ作成しています。先頭のパーティションには100MByte、二つめのパーティションに残りの容量を割り当てています。先頭のパーティションは /dev/mmcblk1p1 、二つめは /dev/mmcblk1p2 となります。 fdisk コマンドの詳細な使い方は、manページ等を参照してください。 FAT32ファイルシステムでストレージデバイスをフォーマットするには、 mkfs.vfat コマンドを使用します。また、EXT2やEXT3、 EXT4ファイルシステムでフォーマットするには、mkfs.ext2 や mkfs.ext3 、 mkfs.ext4 コマンドを使用します。microSDカードのパーティション1をEXT4ファイルシステムでフォーマットするコマンド例を、次に示します Armadillo-IoT ゲートウェイ A6 の LED は GPIO で接続されているため、ソフトウェアで制御することができます。 利用しているデバイスドライバはLEDクラスとして実装されているため、LEDクラスディレクトリ以下のファイルによってLEDの制御を行うことができます。LEDクラスディレクトリと各LEDの対応を次に示します。 表6.19 LEDクラスディレクトリとLEDの対応 LEDクラスディレクトリ | インターフェース | デフォルトトリガ |
---|
/sys/class/leds/red/
| ユーザーLED赤 | default-on
| /sys/class/leds/green/
| ユーザーLED緑 | default-on
|
以降の説明では、任意のLEDを示すLEDクラスディレクトリを /sys/class/leds/[LED]/ のように表記します。 [LED] の部分を適宜読みかえてください。 LEDクラスディレクトリ以下の brightness ファイルへ値を書き込むことによって、LEDの点灯/消灯を行うことができます。 brightness に書き込む有効な値は 0〜255です。 brightness に 0 以外の値を書き込むとLEDが点灯します。
| |
---|
Armadillo-IoT ゲートウェイ A6 のLEDには輝度制御の機能がないため、0(消灯)、1〜255(点灯)の2つの状態のみ指定することができます。 |
brightness に0を書き込むとLEDが消灯します。
brightness を読み出すとLEDの状態が取得できます。
Linux では、LED をある特定のタイミングで光らせることができます。これを「トリガ」と呼びます。LEDクラスディレクトリ以下の trigger ファイルへ値を書き込むことによってLEDの点灯/消灯にトリガを設定することができます。 trigger でサポートされている値は以下の通りです。 表6.20 LEDトリガの種類 設定 | 説明 |
---|
none
| トリガを設定しません | mmc0
| eMMCのアクセスランプにします | mmc1
| microSDスロットのアクセスランプにします | timer
| 任意のタイミングで点灯/消灯を行います。この設定にすることにより、LEDクラスディレクトリ以下にdelay_on, delay_offファイルが出現し、それぞれ点灯時間, 消灯時間をミリ秒単位で指定します | heartbeat
| 心拍のように点灯/消灯を行います | default-on
| 主にLinuxカーネルから使用します。LEDが点灯します |
trigger ファイルを読み出すとサポートしているトリガと、現在有効のトリガが表示されます。 [] が付いているものが現在のトリガです。
以下のコマンドを実行すると、LEDが2秒点灯、1秒消灯を繰り返します。 Armadillo-IoT ゲートウェイ A6 のユーザースイッチのデバイスドライバは、インプットデバイスとして実装されています。インプットデバイスのデバイスファイルからボタンプッシュ/リリースイベントを取得することができます。 ユーザースイッチのインプットデバイスファイルと、各スイッチに対応したイベントコードを次に示します。 表6.21 インプットデバイスファイルとイベントコード ユーザースイッチ | インプットデバイスファイル | イベントコード |
---|
SW1 | /dev/input/event0
| 28 (KEY_ENTER) |
| |
---|
インプットデバイスは検出された順番にインデックスが割り振られます。USBデバイスなどを接続してインプットデバイスを追加している場合は、デバイスファイルのインデックスが異なる可能性があります。 |
ユーザースイッチのボタンプッシュ/リリースイベントを確認するために、ここでは evtest コマンドを利用します。 evtest を停止するには、Ctrl-c を入力してください。 |
SW1のボタン プッシュ イベントを検出したときの表示
| |
SW1のボタン リリース イベントを検出したときの表示
|
Armadillo-IoT ゲートウェイ A6は、サブボード上に温度補償高精度リアルタイムクロック(RTC) 機能を利用しています。 Linuxの時刻には、Linuxカーネルが管理するシステムクロックと、RTCが管理するハードウェアクロックの2種類があります。RTCに時刻を設定するためには、まずシステムクロックを設定します。その後に、ハードウェアクロックをシステムクロックと一致させる手順となります。 システムクロックは、dateコマンドを用いて設定します。dateコマンドの引数には、設定する時刻を [MMDDhhmmCCYY.ss] というフォーマットで指定します。時刻フォーマットの各フィールドの意味を次に示します。 表6.22 時刻フォーマットのフィールド フィールド | 意味 |
---|
MM | 月 | DD | 日(月内通算) | hh | 時 | mm | 分 | CC | 年の最初の2桁(省略可) | YY | 年の最後の2桁(省略可 | ss | 秒(省略可) |
2021年3月2日12時34分56秒に設定する例を次に示します。 | |
---|
Armadillo-IoT ゲートウェイ A6では、標準でsystemd-timesyncd.serviceが動作しています。
systemd-timesyncd.serviceは、自身が正しいと考えている時刻となるように、自動でシステムクロックおよびハードウェアクロックを設定します。 そのため、dateコマンドで過去の時刻を設定しても、すぐにsystemd-timesyncd.serviceによって変更前の正しい時刻に再設定されてしまいます。
これを避けるため、システムクロックを設定する前にsystemd-timesyncd.serviceを停止する必要があります。 [armadillo ~]# systemctl stop systemd-timesyncd.service |
| |
---|
Armadillo-IoT ゲートウェイ A6 のタイムゾーンはデフォルトで JST に設定されています。timedatectl コマンドで、これを変更することができます。 タイムゾーンを UTC に変更するには次のようにコマンドを実行します。 root@armadillo:~# date
Tue Feb 12 10:32:07 JST 2019
root@armadillo:~# timedatectl set-timezone Etc/UTC
root@armadillo:~# date
Tue Feb 12 01:32:10 UTC 2019 |
システムクロックを設定後、ハードウェアクロックを hwclock コマンドを用いて設定します。 |
現在のハードウェアクロックを表示します。
| |
ハードウェアクロックを協定世界時(UTC)で設定します。
| |
ハードウェアクロックが UTC で正しく設定されていることを確認します。
|
Armadillo-IoT ゲートウェイ A6 の GPIO は、generic GPIO として実装されています。GPIO クラスディレクトリ以下のファイルによって GPIO の制御を行うことができます。 表6.23「サブユニット CON3 ピンと GPIO 番号の対応」の各ピンはGPIOとして利用することができます。 表6.23 サブユニット CON3 ピンと GPIO 番号の対応 ピン番号 | ピン名 | GPIO番号 |
---|
9 | GPIO1_IO16 | 16 | 11 | GPIO1_IO17 | 17 | 7 | GPIO4_IO06 | 102 | 8 | GPIO4_IO07 | 103 | 5 | GPIO4_IO08 | 104 | 6 | GPIO4_IO09 | 105 |
| |
---|
GPIO番号は次の式より導くことができます。 GPIOx_IOy -> (x - 1) * 32 + y 例えば、GPIO4_IO8(サブユニット CON3 5ピン)の場合は、以下のようになります。 (4 - 1) * 32 + 8 = 104 |
6.7.1. GPIO クラスディレクトリを作成するGPIOを利用するには、まずGPIOディレクトリを作成する必要があります。 GPIO クラスディレクトリは、 /sys/class/gpio/export に GPIO 番号を書き込むことによって、作成することができます。 以降の説明では、任意の GPIO を示す GPIO クラスディレクトリを "/sys/class/gpio/[GPIO]" のように表記します。 | |
---|
作成済みの GPIO クラスディレクトリを削除するには、 /sys/class/gpio/unexport に GPIO 番号を書き込みます。 [armadillo ~]# echo 17 > /sys/class/gpio/unexport
[armadillo ~]# ls /sys/class/gpio/gpio17/
ls: cannot access '/sys/class/gpio/gpio17/': No such file or directory |
GPIO ディレクトリ以下の direction ファイルへ値を書き込むことによって、入出力方向を変更することができます。 direction に書き込む有効な値を次に示します。 表6.24 direction の設定 設定 | 説明 |
---|
high | 入出力方向を OUTPUT に設定します。出力レベルの取得/設定を行うことができます。出力レベルは HIGH レベルになります。 | out | 入出力方向を OUTPUT に設定します。出力レベルの取得/設定を行うことができます。出力レベルは LOW レベルになります。 | low | out を設定した場合と同じです。 | in | 入出力方向を INPUT に設定します。入力レベルの取得を行うことができますが設定はできません。 |
GPIO ディレクトリ以下の value ファイルから値を読み出すことによって、入力レベルを取得することができます。"0"は LOW レベル、"1"は HIGH レベルを表わします。入力レベルの取得は入出力方向がINPUT, OUTPUT のどちらでも行うことができます。 GPIO ディレクトリ以下の value ファイルへ値を書き込むことによって、出力レベルを設定することができます。"0"は LOW レベル、"0"以外は HIGH レベルを表わします。出力レベルの設定は入出力方向がOUTPUT でなければ行うことはできません。 | |
| | | |
| |