動作確認方法

6.1. 動作確認を行う前に

Armadillo には、 OS として Debian がインストールされています。基本的には PC Linux と同じように動作します。ここではネットワークの設定やストレージのように一般的な動作に加え、GPIO や LED などについて説明します。

[注記]

工場出荷状態でフラッシュメモリに書き込まれているイメージファイルは、最新版でない可能性があります。最新版のイメージファイルはArmadilloサイトからダウンロード可能です。最新版のイメージファイルに書き換えてからのご使用を推奨します。

イメージファイルの書き換えについては、12章イメージファイルの書き換え方法を参照してください。

6.2. ネットワーク

ここでは、ネットワークの設定方法やネットワークを利用するアプリケーションについて説明します。

6.2.1. 接続可能なネットワーク

Armadillo-IoT ゲートウェイ A6は、 LTE と Ethernet に対応しています。Linuxからは、ppp0eth0 に見えます。

表6.1 ネットワークとネットワークデバイス

ネットワーク ネットワークデバイス 出荷時の設定

LTE

ppp0

DHCP

Ethernet

eth0

DHCP


6.2.2. 有線 LAN の設定方法

ここでは有線LANの使用方法について説明します。Armadillo-IoT ゲートウェイ A6では、通常のLinuxシステムと同様にネットワーク設定を行います。出荷状態では eth0 が DHCP [6] でネットワークの設定を行います。 DHCP が無い環境の場合は、 「固定IPアドレスに設定する」 を参照し設定してください。

6.2.3. 基本的な使い方

最近の GNU/Linux OSでは、古くから使われてきた ifconfig (net-tools) に代り iproute2 を使用します。 ifconfig は Deprecated されています。本書でも ifconfig ではなく、 iproute2 に含まれている ip コマンドなどを使用します。

6.2.3.1. IPアドレスの一覧

IPアドレスの一覧を確認するには、次のようにコマンドを実行します。

[armadillo ~]# ip address
ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group defaul
t qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP gr
oup default qlen 1000
    link/ether 00:11:0c:00:07:a4 brd ff:ff:ff:ff:ff:ff
    inet 172.16.2.107/16 brd 172.16.255.255 scope global eth0
       valid_lft forever preferred_lft forever

図6.1 インターフェースの一覧確認


ネットワークデバイスの一覧を確認するには link を使います。

[armadillo ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
 group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mo
de DEFAULT group default qlen 1000
    link/ether 00:11:0c:00:07:a4 brd ff:ff:ff:ff:ff:ff

図6.2 ネットワークデバイスの一覧確認


他にも ip コマンドではルーティングテーブルの表示やトンネルの設定などもできます。詳しくは ip コマンドの man ページを参照してください。

6.2.3.2. インターフェースの有効化・無効化

インターフェースを有効化するには、次のようにコマンドを実行します。 ifup コマンドは Debian 特有のコマンドで ifupdown パッケージに含まれています。 ifconfig とは関係なく抽象的にネットワークを操作するためのコマンドです。設定は /etc/network/interfaces で行います。

[armadillo ~]# ifup eth0

図6.3 インターフェースの有効化


インターフェースを無効化するには、次のようにコマンドを実行します。

[armadillo ~]# ifdown eth0

図6.4 インターフェースの無効化


[注記]

ネットワーク接続に関する不明な点については、ネットワークの管理者へ相談してください。

[注記]

/etc/network/interfaces の変更は、インターフェースを無効化した状態で行ってください。 DHCP が動作している場合など、設定が反映されない場合があります。

6.2.3.3. 固定IPアドレスに設定する

表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


[armadillo ~]# vi /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)

auto lo eth0
iface lo inet loopback
iface eth0 inet static
    address 192.0.2.10
    netmask 255.255.255.0
    network 192.0.2.0
    broadcast 192.0.2.255
    gateway 192.0.2.1

図6.5 固定IPアドレス設定


6.2.3.4. DHCPに設定する

DHCPに設定する例を以下にに示します。

[armadillo ~]# vi /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)

auto lo
iface lo inet loopback
iface eth0 inet dhcp

図6.6 DHCP設定


6.2.3.5. DNSサーバーを指定する

固定 IP時、または DHCP で DNS情報が取得できない場合は、DNSサーバーを指定する必要があります。DNSサーバーを指定する例を、以下に示します。

[armadillo ~]# vi /etc/resolv.conf
domain local-network
search local-network
nameserver 192.0.2.1

図6.7 DNSサーバーの指定


6.2.3.6. インターフェースの修正を反映する

有効化されているインターフェースは、修正しないでください。必ず無効化してから設定を変更してください。

[armadillo ~]# ifdown eth0
[armadillo ~]# vi /etc/network/interfaces
  :
[armadillo ~]# ifup eth0

6.2.3.7. 有線LANの接続を確認する

有線LANで正常に通信が可能か確認します。設定を変更した場合、必ず変更したインターフェースを再度有効化してください。

同じネットワーク内にある通信機器とPING通信を行います。以下の例では、通信機器が「192.0.2.20」というIPアドレスを持っていると想定しています。

[armadillo ~]# ping 192.0.2.20
ping -c 3 192.0.2.20
PING 192.0.2.20 (192.0.2.20) 56(84) bytes of data.
64 bytes from 192.0.2.20: icmp_seq=1 ttl=63 time=1.39 ms
64 bytes from 192.0.2.20: icmp_seq=2 ttl=63 time=1.35 ms
64 bytes from 192.0.2.20: icmp_seq=3 ttl=63 time=1.34 ms

--- 192.0.2.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.343/1.365/1.395/0.021 ms

図6.8 有線LANのPING確認


[注記]

有線LAN以外のインターフェースが有効化されている場合、ルーティングの設定などにより、ネットワーク通信に有線LANが使用されない場合があります。設定を必ず確認してください。確実に有線LANの接続確認をする場合は、有線LAN以外のインターフェースを無効化してください。

6.2.4. LTE の設定

ここでは、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カード) の切り欠きを挿入方向に向け、刻印面を上にして挿入してください。 向きと上下を間違えると挿入できませんので、無理に挿入しないでください。破損する可能性があります。

images/aiot-a6u-sim.svg

図6.9 nano SIM の取り付け


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 モデムに設定します。

全てのパラメーターに関して、設定項目が存在しない場合、該当する項目は設定しませんので、独自のアプリケーションなどで設定したい、もしくは設定をしたくない項目はコメントにしてください。

  1. 全て パラメーター=値 の形式で記載してください。
  2. 値にはダブルクオテーションを含めて最大102文字設定可能です。それ以上長い値は無視します。
  3. 1行の最大文字数はコメントを含めて256文字です。それ以降の文字列は無視します。
  4. スペース及びタブは無視します。
  5. 行内 # 以降はコメントとみなします。
apn=APN名
username=ユーザー名
password=パスワード
auth_prot=pap or chap or none
create_wvdial_conf=true
operator_id=オペレーターID
fix_profile=プロファイル名
sleep=シリアル(RTS)が指定時間アクティブにならなければスリープする
suspend=サスペンドの有効無効
psm=PSMの設定
edrx=eDRXの設定
auto_dial=true
register_check_interval=監視周期(秒)

図6.10 /etc/aiot-modem-control/startup.conf のフォーマット


  • 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 を直接編集してご利用ください。

    [Dialer Defaults]
    Init1 = ATZ
    Init2 = AT+CFUN=1
    Init3 = AT+COPS?
    Modem Type = Analog Modem
    Dial Command = ATD
    Baud = 460800
    Modem = /dev/ttymxc1
    New PPPD = yes
    Dial Attemps = 0
    ISDN = 0
    APN = apn
    Phone = *99***1#
    Password = password の値
    Username = username の値
    Carrier Check = yes
    Auto DNS = 1
    Check Def Route = 1
    Stupid Mode = yes
    Check DNS = 1

    図6.11 自動生成される /etc/wvdial.conf


    [Dialer Defaults]
    Init1 = ATZ
    Init2 = AT+CFUN=1
    Init3 = AT+COPS?
    Modem Type = Analog Modem
    Dial Command = ATD
    Baud = 460800
    Modem = /dev/ttymxc1
    New PPPD = yes
    Dial Attemps = 0
    ISDN = 0
    APN = apn
    Phone = *99***1#
    Password = ''
    Username = ''
    Carrier Check = yes
    Auto DNS = 1
    Check Def Route = 1
    Stupid Mode = yes
    Check DNS = 1

    図6.12 自動生成される /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 接続を確立する必要があります。

6.2.4.3. LTE の接続を確認する

アットマークテクノの Web サーバーと PING 通信を行います。VPN 接続を利用するなどインターネットに接続できない場合は、ネットワーク内の通信機器に読み替えてください。

[armadillo ~]# ping www.atmark-techno.com

6.2.4.4. コマンドによる LTE モデム制御

コマンド aiot-modem-control を使用することで LTE モデムの制御を実行できます。 コマンド書式とコマンド一覧を以下に示します。 LTE モデムを制御するシリアルインタフェースが 1 本のため、wvdial 実行中または他のアプリケーションなどでシリアル使用中は実行できないコマンドがあります。

[armadillo ~]# aiot-modem-control [コマンド] [パラメーター]

図6.13 aiot-modem-control コマンド書式


表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 はダブルクオテーションで囲んでください。

    [armadillo ~]# aiot-modem-control set-apn "exsample.com"

    図6.14 aiot-modem-control set-apn コマンドの例


  • dial: ppp コネクション確立

    wvdial を使用して ppp コネクションの確立を試みます。 既に wvdial が動作しているときは何もせずコマンドを終了します。

    [armadillo ~]# aiot-modem-control dial

    図6.15 aiot-modem-control dial コマンド


  • hangup: ppp コネクション切断

    wvdial を停止して ppp コネクションを切断します。 既に wvdial が動作していないときは何もせずコマンドを終了します。

    [armadillo ~]# aiot-modem-control hangup

    図6.16 aiot-modem-control hangup コマンド


    切断後、 /etc/aiot-modem-control/startup.conf で auto_dial に true を設定、かつ register_check_interval に有効な値を設定している場合、次の確認周期でネットワーク登録が出来ている場合、自動的に ppp の接続を行います。

  • get-phone-number: 電話番号取得

    SIM カードに設定されている電話番号を取得します。

    [armadillo ~]# aiot-modem-control get-phone-number
    123456789012

    図6.17 aiot-modem-control get-phone-number コマンド


  • get-signal-quality: 電波品質(RSRQ)取得

    現在の電波品質(RSRQ: Reference Signal Received Quality)を取得します。 Sleep 中などは 255 になります。

    [armadillo ~]# aiot-modem-control get-signal-quality
    21

    図6.18 aiot-modem-control get-signal-quality コマンド


    表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 の設定によっては、コマンドが終了するまでに時間がかかります。

    [armadillo ~]# aiot-modem-control wwan-force-restart

    図6.19 aiot-modem-control wwan-force-restart コマンド


  • poweron: LTE モデム 電源オン

    LTE モデムを起動します。 起動後、 /etc/aiot-modem-control/startup.conf に記載された設定を実行します。 /etc/aiot-modem-control/startup.conf の設定によっては、コマンドが終了するまでに時間がかかります。 既に起動している場合、何もせずにコマンドを終了します。

    [armadillo ~]# aiot-modem-control poweron

    図6.20 aiot-modem-control poweron コマンド


  • poweroff: LTE モデム 電源オフ

    LTE モデムの電源をオフします。 既にオフされている場合、何もせずにコマンドを終了します。

    [armadillo ~]# aiot-modem-control poweroff

    図6.21 aiot-modem-control poweroff コマンド


  • 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 分です。

    [armadillo ~]# aiot-modem-control set-psm enable 3m 1m

    図6.22 aiot-modem-control set-psm enable コマンド


    表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


    [armadillo ~]# aiot-modem-control set-psm disable

    図6.23 aiot-modem-control set-psm disable コマンド


    [armadillo ~]# aiot-modem-control set-psm default

    図6.24 aiot-modem-control set-psm default コマンド


  • 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 秒です。

    [armadillo ~]# aiot-modem-control set-edrx enable 20.48 5.12

    図6.25 aiot-modem-control set-edrx enable コマンド


    表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 (秒)


    [armadillo ~]# aiot-modem-control set-edrx disable

    図6.26 aiot-modem-control set-edrx disable コマンド


    [armadillo ~]# aiot-modem-control set-edrx default

    図6.27 aiot-modem-control set-edrx default コマンド


  • set-sleep: Sleep 設定

    パラメーターに enable を指定した場合、その後ろに LTE モデムとのシリアルインタフェースが指定時間通信がない時に Sleep モードへ遷移する時間(ミリ秒)を指定します。100ミリ秒から5000ミリ秒の間の値を指定可能です。 disable を設定した場合、この設定が無効となります。

    [armadillo ~]# aiot-modem-control set-sleep enable 5000

    図6.28 aiot-modem-control set-sleep enable コマンド例


    [armadillo ~]# aiot-modem-control set-sleep disable

    図6.29 aiot-modem-control set-sleep disable コマンド


  • set-suspend: Suspend 設定

    LTE モデムの Suspend 設定を行います。enable または disable を指定可能です。

    LTE モデムの Suspend を有効にすると、LTE モデムは省電力・間欠動作機能のスリープモードに該当する動作となります。詳細は、「スリープモード」を参照ください。

    [armadillo ~]# aiot-modem-control set-suspend enable

    図6.30 aiot-modem-control set-suspend enable コマンド


    [armadillo ~]# aiot-modem-control set-suspend disable

    図6.31 aiot-modem-control set-suspend disable コマンド


  • activate: LTE モデム活性化

    LTE モデムを suspned 状態へ移行させます。 suspend を有効に設定しているときのみ有効なコマンドです。 データー通信中など suspend 状態へ即座に移行出来ないこともあります。

    [armadillo ~]# aiot-modem-control activate

    図6.32 aiot-modem-control activate コマンド


  • deactivate: LTE モデム非活性化

    LTE モデムを suspned 状態から復帰させます。 suspend を有効に設定しているときのみ有効なコマンドです。

    [armadillo ~]# aiot-modem-control deactivate

    図6.33 aiot-modem-control deactivate コマンド


  • send-at: AT コマンド送信

    パラメーターに指定した AT コマンドを送信します。 AT コマンドはダブルクオテーションで囲んでください。

    [armadillo ~]# aiot-modem-control send-at "AT"

    図6.34 aiot-modem-control send-at の例


  • send-at-echo: AT コマンド送信(応答表示)

    パラメーターに指定した AT コマンドを送信します。 LTE モデムからの応答が標準出力に表示されます。 AT コマンドはダブルクオテーションで囲んでください。

    [armadillo ~]# aiot-modem-control send-at-echo "AT"
    AT
    OK

    図6.35 aiot-modem-control send-at-echo の例


  • status: 簡易状態表示

    LTE モデムの状態を表示します。 最新の状態ではなく、それぞれ最後に取得できた値のキャッシュになります。 特に rsrq と rsrp は ppp コネクション確立中は更新できませんので、最新の値にはなりません。

    [armadillo ~]# aiot-modem-control status
        manufacturer: Cinterion
               model: EMS31-J
            revision: REVISION 04.014
         app revison: A-REVISION 01.000.17
             port(s): /dev/ttymxc1
              status: registerd
        phone number: 01234567890
                imei: 012345678900123
    signale quality
                rsrq: 19 [-10.5 dB <= rsrq < -10.0 dB]
                rsrp: 44 [-97 dBm <= rsrq < -96 dBm]
            sim slot: 1
         operator id: "12345"

    図6.36 aiot-modem-control status コマンド


    表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

    パラメーターエラー


6.2.4.5. LTEによる時刻同期

ネットワーク登録が完了した時点で、自動的に LTE の NITZ(Network Identity and Time Zone) による日時同期を実行します。

手動での日時の設定・参照に関しては、「RTC」 を参照ください。

6.2.5. ファイアーウォール

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.2.5.3. iptables の設定確認

設定されている内容を参照するには、次のコマンドを実行します。

[armadillo ~]# iptables --list --verbose
Chain INPUT (policy DROP 1 packets, 72 bytes)
 pkts bytes target     prot opt in     out     source               destination

    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere


Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination


Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

図6.37 iptables設定確認


[ティップ]

図6.37「iptables設定確認」の設定では受信パケットが全て破棄されます。これが最も安全で最小の設定です。

この設定をベースに、SSHやHTTPSなどの通信プロトコルから利用するものだけを許可していくことをおすすめします。

6.2.5.4. iptables の設定を保存し自動的に適用する

ここまでの手順で行った iptables の設定は、Armadillo を再起動すると失われてしまいます。そこで、Armadillo-IoT ゲートウェイ A6 では iptables-persistent パッケージを利用して、あらかじめ保存しておいた設定を自動的に適用します。

iptables の設定を保存するには、次のコマンドを実行します。

[armadillo ~]# iptables-save > /etc/iptables/rules.v4

図6.38 iptables設定保存


[ティップ]

iptables-persistent がインストールされていなかった場合は、/etc/iptables/ ディレクトリが存在しないため、図6.38「iptables設定保存」 が失敗します。 次のコマンドを実行して iptables-persistent をインストールし、再度 図6.38「iptables設定保存」 を行ってください。

[armadillo ~]# iptables --policy INPUT ACCEPT
[armadillo ~]# apt-get update && apt-get install iptables-persistent

図6.39 iptablesのポリシー設定(受信許可)とiptables-persistentのインストール


次回起動時から、Armadillo がネットワークに接続される前のタイミングで、自動的にiptables の設定が適用されます。

6.3. ストレージ

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* [a]

/dev/sd*1

USB ホストインターフェース (CON5)

[a] USBハブを利用して複数のUSBメモリを接続した場合は、認識された順に sdasdbsdc … となります。


[ティップ]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

ユーザー領域


[ティップ]

GPPのユーザー領域を使用する例を「eMMC の GPP(General Purpose Partition) を利用する」に記載しています。

6.3.1. ストレージの使用方法

ここでは、SDHCカードを接続した場合を例にストレージの使用方法を説明します。以降の説明では、共通の操作が可能な場合に、SD/SDHC/SDXCカードをSDカードと表記します。

[ティップ]

SDXC/microSDXCカードを使用する場合は、事前に「ストレージのパーティション変更とフォーマット」を参照してフォーマットを行う必要があります。これは、LinuxカーネルがexFATファイルシステムを扱うことができないためです。通常、購入したばかりのSDXC/microSDXCカードはexFATファイルシステムでフォーマットされています。

Linuxでは、アクセス可能なファイルやディレクトリは、一つの木構造にまとめられています。あるストレージデバイスのファイルシステムを、この木構造に追加することを、マウントするといいます。マウントを行うコマンドは、 mount です。

mount コマンドの典型的なフォーマットは、次の通りです。

mount [-t fstype] device dir

図6.40 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 ディレクトリ以下に見えるようになります。

[armadillo ~]# mount -t vfat /dev/mmcblk1p1 /media
[armadillo ~]# ls /media
  :
  :

図6.41 ストレージのマウント


ストレージを安全に取り外すには、アンマウントという作業が必要です。アンマウントを行うコマンドは、 umount です。オプションとして、アンマウントしたいデバイスがマウントされているディレクトリを指定します。

[armadillo ~]# umount /media

図6.42 ストレージのアンマウント


6.3.2. ストレージのパーティション変更とフォーマット

通常、購入したばかりのSDHCカードやUSBメモリは、一つのパーティションを持ち、FAT32ファイルシステムでフォーマットされています。

パーティション構成を変更したい場合、 fdisk コマンドを使用します。 fdisk コマンドの使用例として、一つのパーティションで構成されている microSDカードのパーティションを、2つに分割する例を図6.43「fdiskコマンドによるパーティション変更」に示します。一度、既存のパーティションを削除してから、新たにプライマリパーティションを二つ作成しています。先頭のパーティションには100MByte、二つめのパーティションに残りの容量を割り当てています。先頭のパーティションは /dev/mmcblk1p1 、二つめは /dev/mmcblk1p2 となります。 fdisk コマンドの詳細な使い方は、manページ等を参照してください。

[armadillo ~]# fdisk /dev/mmcblk1

Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-7744511, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-7744511, default 7744511): +100M

Created a new partition 1 of type 'Linux' and of size 100 MiB.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (206848-7744511, default 206848):
Last sector, +sectors or +size{K,M,G,T,P} (206848-7744511, default 7744511):

Created a new partition 2 of type 'Linux' and of size 3.6 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
[  447.905671]  mmcblk1: p1 p2
Syncing disks.

図6.43 fdiskコマンドによるパーティション変更


FAT32ファイルシステムでストレージデバイスをフォーマットするには、 mkfs.vfat コマンドを使用します。また、EXT2やEXT3、 EXT4ファイルシステムでフォーマットするには、mkfs.ext2mkfs.ext3mkfs.ext4 コマンドを使用します。microSDカードのパーティション1をEXT4ファイルシステムでフォーマットするコマンド例を、次に示します

[armadillo ~]# mkfs.ext4 /dev/mmcblk1p1

図6.44 EXT4ファイルシステムの構築


6.4. LED

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] の部分を適宜読みかえてください。

6.4.1. LEDを点灯/消灯する

LEDクラスディレクトリ以下の brightness ファイルへ値を書き込むことによって、LEDの点灯/消灯を行うことができます。 brightness に書き込む有効な値は 0〜255です。

brightness に 0 以外の値を書き込むとLEDが点灯します。

[armadillo ~]# echo 1 > /sys/class/leds/[LED]/brightness

図6.45 LEDを点灯させる


[注記]

Armadillo-IoT ゲートウェイ A6 のLEDには輝度制御の機能がないため、0(消灯)、1〜255(点灯)の2つの状態のみ指定することができます。

brightness に0を書き込むとLEDが消灯します。

[armadillo ~]# echo 0 > /sys/class/leds/[LED]/brightness

図6.46 LEDを消灯させる


brightness を読み出すとLEDの状態が取得できます。

[armadillo ~]# cat /sys/class/leds/[LED]/brightness

図6.47 LEDの状態を表示する


6.4.2. トリガを使用する

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 ファイルを読み出すとサポートしているトリガと、現在有効のトリガが表示されます。 [] が付いているものが現在のトリガです。

[armadillo ~]# cat /sys/class/leds/[LED]/trigger
[none] rc-feedback kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shif
tlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-c
trlllock kbd-ctrlrlock mmc0 mmc1 timer oneshot heartbeat default-on

図6.48 対応している LEDトリガを表示


以下のコマンドを実行すると、LEDが2秒点灯、1秒消灯を繰り返します。

[armadillo ~]# echo timer > /sys/class/leds/[LED]/trigger
[armadillo ~]# echo 2000 > /sys/class/leds/[LED]/delay_on
[armadillo ~]# echo 1000 > /sys/class/leds/[LED]/delay_off

図6.49 LEDのトリガにtimerを指定する


6.5. ユーザースイッチ

Armadillo-IoT ゲートウェイ A6 のユーザースイッチのデバイスドライバは、インプットデバイスとして実装されています。インプットデバイスのデバイスファイルからボタンプッシュ/リリースイベントを取得することができます。

ユーザースイッチのインプットデバイスファイルと、各スイッチに対応したイベントコードを次に示します。

表6.21 インプットデバイスファイルとイベントコード

ユーザースイッチインプットデバイスファイルイベントコード

SW1

/dev/input/event0

28 (KEY_ENTER)


[警告]

インプットデバイスは検出された順番にインデックスが割り振られます。USBデバイスなどを接続してインプットデバイスを追加している場合は、デバイスファイルのインデックスが異なる可能性があります。

6.5.1. イベントを確認する

ユーザースイッチのボタンプッシュ/リリースイベントを確認するために、ここでは evtest コマンドを利用します。 evtest を停止するには、Ctrl-c を入力してください。

[armadillo ~]# evtest /dev/input/event0
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "gpio-keys"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 28 (KEY_ENTER)
Properties:
Testing ... (interrupt to exit)
Event: time 1523249446.289965, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0  1
Event: time 1523249446.289965, -------------- SYN_REPORT ------------
Event: time 1523249446.349969, type 1 (EV_KEY), code 28 (KEY_ENTER), value 1  2
Event: time 1523249446.349969, -------------- SYN_REPORT ------------

図6.50 ユーザースイッチ: イベントの確認


1

SW1のボタン プッシュ イベントを検出したときの表示

2

SW1のボタン リリース イベントを検出したときの表示

6.6. RTC

Armadillo-IoT ゲートウェイ A6は、サブボード上に温度補償高精度リアルタイムクロック(RTC) 機能を利用しています。

6.6.1. 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 ~]# date
Sat Jan  1 09:00:00 JST 2000
[armadillo ~]# systemctl stop systemd-timesyncd.service
[armadillo ~]# date 030212342018.56
Fri Mar  2 12:34:56 JST 2021
[armadillo ~]# date
Fri Mar  2 12:34:57 JST 2021

図6.51 システムクロックを設定


[注記]

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 コマンドを用いて設定します。

[armadillo ~]# hwclock  1
2000-01-01 00:00:00.000000+0900
[armadillo ~]# hwclock --utc --systohc  2
[armadillo ~]# hwclock --utc  3
2018-03-02 12:35:08.213911+0900

図6.52 ハードウェアクロックを設定


1

現在のハードウェアクロックを表示します。

2

ハードウェアクロックを協定世界時(UTC)で設定します。

3

ハードウェアクロックが UTC で正しく設定されていることを確認します。

6.7. GPIO

Armadillo-IoT ゲートウェイ A6 の GPIO は、generic GPIO として実装されています。GPIO クラスディレクトリ以下のファイルによって GPIO の制御を行うことができます。

表6.23「サブユニット CON3 ピンと GPIO 番号の対応」の各ピンはGPIOとして利用することができます。

表6.23 サブユニット CON3 ピンと GPIO 番号の対応

ピン番号 ピン名 GPIO番号

3

GPIO1_IO17

17

5

GPIO1_IO16

16

7

GPIO4_IO06

102

8

GPIO4_IO07

103

9

GPIO4_IO08

104

10

GPIO4_IO09

105


[警告]

表6.23「サブユニット CON3 ピンと GPIO 番号の対応」の 3, 5, 7~10 ピンは初期出荷状態では GPIO として利用することができません。 これらのピンを GPIO として利用する場合は、 at-dtweb を用います。

at-dtweb の利用方法については「Device Treeをカスタマイズする」を参照してください。

[ティップ]

GPIO番号は次の式より導くことができます。

GPIOx_IOy -> (x - 1) * 32 + y

例えば、GPIO4_IO8(サブユニット CON3 9ピン)の場合は、以下のようになります。

  (4 - 1) * 32 + 8 = 104

6.7.1. GPIO クラスディレクトリを作成する

GPIOを利用するには、まずGPIOディレクトリを作成する必要があります。

GPIO クラスディレクトリは、 /sys/class/gpio/export に GPIO 番号を書き込むことによって、作成することができます。

[armadillo ~]# echo 17 > /sys/class/gpio/export
[armadillo ~]# ls /sys/class/gpio/gpio17/
active_low device direction edge subsystem uevent value

図6.53 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

6.7.2. 入出力方向を変更する

GPIO ディレクトリ以下の direction ファイルへ値を書き込むことによって、入出力方向を変更することができます。 direction に書き込む有効な値を次に示します。

表6.24 direction の設定

設定 説明

high

入出力方向を OUTPUT に設定します。出力レベルの取得/設定を行うことができます。出力レベルは HIGH レベルになります。

out

入出力方向を OUTPUT に設定します。出力レベルの取得/設定を行うことができます。出力レベルは LOW レベルになります。

low

out を設定した場合と同じです。

in

入出力方向を INPUT に設定します。入力レベルの取得を行うことができますが設定はできません。


[armadillo ~]# echo in > /sys/class/gpio/[GPIO]/direction

図6.54 GPIO の入出力方向を設定する(INPUT に設定)


[armadillo ~]# echo out > /sys/class/gpio/[GPIO]/direction

図6.55 GPIO の入出力方向を設定する(OUTPUT に設定)


6.7.3. 入力レベルを取得する

GPIO ディレクトリ以下の value ファイルから値を読み出すことによって、入力レベルを取得することができます。"0"は LOW レベル、"1"は HIGH レベルを表わします。入力レベルの取得は入出力方向がINPUT, OUTPUT のどちらでも行うことができます。

[armadillo ~]# cat /sys/class/gpio/[GPIO]/value
0

図6.56 GPIO の入力レベルを取得する


6.7.4. 出力レベルを設定する

GPIO ディレクトリ以下の value ファイルへ値を書き込むことによって、出力レベルを設定することができます。"0"は LOW レベル、"0"以外は HIGH レベルを表わします。出力レベルの設定は入出力方向がOUTPUT でなければ行うことはできません。

[armadillo ~]# echo 1 > /sys/class/gpio/[GPIO]/value

図6.57 GPIO の出力レベルを設定する




[6] Dynamic Host Configuration Protocol