コンテンツにスキップ

ネットワーク・無線・セルラー通信

1.1. ネットワーク設定の概要

本ドキュメントでは、システムの基本的なネットワーク設定について説明します。また、プログラム内でネットワーク設定を変更したいという要件に応えるため、yaml-cppライブラリを使用してネットワーク設定を変更する簡単なサンプルも提供します。

1.1.1 NetplanとYAMLファイル

1.1.1.1 背景

本分析システムの実行環境には、Ubuntu22.04システムを採用しています。Ubuntuは18.04バージョン以降、ネットワーク設定にifupdown を使用せず netplanを使用するようになったため、/etc/network/interfacesでの固定IP設定は無効となります。そのため、/etc/netplan/xxxx.yamlでネットワーク設定を行う必要があり、YAMLファイルの基本的な構文を理解する必要があります。

1.1.1.2 Netplanのネットワーク設定テクニック

構文の基礎や注意事項が詳細に説明されている「Netplanのネットワーク設定テクニック」をご一読ください。

1.1.2 イーサネットカードの操作方法

1.1.2.1 ネットワークポートの配線

ネットワークポートの配線

ネットワークポートの配線

1.1.2.2 イーサネット設定の変更

以下のコマンドを使用して開発ボードのネットワーク設定の保存パスを確認すると、4つの設定ファイルが見つかります。そのうち50-eth0-init.yamlは【NET0】に関連するnetplan設定であり、51-eth1-init.yamlは【NET1】に関連するnetplan設定です。

Terminal window
ls /etc/netplan/

イーサネット設定の変更

イーサネット設定の変更

内容は以下の通りです:

イーサネット設定の変更

イーサネット設定の変更

【DHCP】と【静的IP(Static IP)】それぞれの設定の詳細については、図をご参照ください。

イーサネット設定の変更

イーサネット設定の変更

💡 注意 :【DHCP】と【静的IP】のどちらの場合でも、設定を有効にするにはLANケーブルを接続する必要があります。接続後に初めてifconfigコマンドで割り当てられたIPアドレスを確認できます。

ネットワーク設定は個別のファイルに分けることも、同じYAMLファイルに記述することも可能です。以下は、NET0とNET1を1つのファイル(99_config.yaml)にまとめ、eth0をDHCP、eth1を静的IPとして設定する例です:

イーサネット設定の変更

イーサネット設定の変更

YAMLファイルを変更した場合は、以下のコマンドを実行して更新を適用する必要があります:

Terminal window
sudo netplan generate
sudo netplan apply

1.2. クイックスタート

1.2.1 開発環境の準備

PC側のUbuntuシステムで `run` スクリプトを実行し、EASY-EAIコンパイル環境に入ります。詳細は以下の通りです。

Terminal window
cd ~/develop_environment
./run.sh 2204

1.2.2 ソースコードのダウンロードとサンプルのコンパイル

まず、仮想マシンのバックグラウンドターミナルで以下のコマンドを実行し、周辺機器サンプルソースコードの管理ディレクトリを作成します:

Terminal window
cd /opt
mkdir -p EASY-EAI-Nano-TB/demo

例えば、サンプルプログラムを「PC\D:」(指定はありません。ユーザーの任意の場所で構いません)にダウンロードします。

その後、ダウンロードしたサンプルを仮想マシンのファイルシステムにコピーします。

ソースコードのダウンロードとサンプルのコンパイル

ソースコードのダウンロードとサンプルのコンパイル

最後に、該当するサンプルのディレクトリに移動してコンパイル操作を実行します。具体的なコマンドは以下の通りです:

Terminal window
cd EASY-EAI-Nano-TB/demo/01_network
./build.sh

💡 注意 :依存ライブラリはボード上に配置されているため、クロスコンパイル中は/mntのマウントを維持する必要があります。

ソースコードのダウンロードとサンプルのコンパイル

ソースコードのダウンロードとサンプルのコンパイル

もしエラーが発生した場合は、【開発ボード上】で libyaml-cpp-devライブラリをインストールする必要があります:

ソースコードのダウンロードとサンプルのコンパイル

ソースコードのダウンロードとサンプルのコンパイル

Terminal window
sudo apt-get install libyaml-cpp-dev

1.2.3 サンプルの実行

シリアルポートデバッグまたはSSH経由でボードのバックグラウンドにアクセスし、サンプルが配置されているディレクトリに移動します:

Terminal window
cd /userdata

サンプルの実行

サンプルの実行

サンプルを実行するコマンドは以下の通りです:

Terminal window
./test-ethernet

このデモの動作は、eth0の設定を【静的IP:192.168.1.170】に変更するというものです。もしコンパイル環境でeth0をマウントしている場合、またはSSH経由でデバッグを行っており、変更前のDHCPで取得したIPが192.168.1.170でなかった場合、このサンプルコードの実行完了後にすべての接続が切断されます

1.2.4 実行結果

実行結果は図の通りです。

実行結果

実行結果

設定ファイルも同時に変更されます。

実行結果

実行結果

1.3 操作例程

サンプルコードは 01_network/test-ethernet/main.cpp にあります。

1.3.1 サンプルソースコード

以下のコードは、eth0のIPアドレス、DNS、ゲートウェイパラメータを設定する使用例です。コーディングの参考にしてください:

int main() {
// YAMLファイルをロードする
YAML::Node config = YAML::LoadFile("/etc/netplan/50-eth0-init.yaml");
// =====================eth0のパラメータを変更==========================
// DHCPを無効にする
config["network"]["ethernets"]["eth0"]["dhcp4"] = "false";
// eth0のIPアドレスを変更
// 方法1:最初の位置に固定で書き込む
config["network"]["ethernets"]["eth0"]["addresses"][0] = "192.168.1.170/24";
// 方法2:追加で挿入する
// IPアドレスとサブネットマスクを入力
// std::string eth0_ip_str = "192.168.1.171";
// std::string eth0_mask_str = "255.255.255.0";
// std::string eth0_cidr = mask_transition_cidr(eth0_ip_str, eth0_mask_str);
// config["network"]["ethernets"]["eth0"]["addresses"].push_back(eth0_cidr);
// eth0のDNSアドレスを変更
YAML::Node addresses_eht0_dns = YAML::Load("[8.8.8.8,8.8.4.4]"); // [8.8.8.8, 8.8.4.4] はシーケンスであるため、変換が必要
config["network"]["ethernets"]["eth0"]["nameservers"]["addresses"] = addresses_eht0_dns;
// eth0のルート(routes)アドレスを変更
config["network"]["ethernets"]["eth0"]["routes"][0]["to"] = "0.0.0.0/0";
config["network"]["ethernets"]["eth0"]["routes"][0]["via"] = "192.168.1.1";
config["network"]["ethernets"]["eth0"]["routes"][0]["metric"] = "100";
#if 0
// =====================eth1のパラメータを変更=========================
config["network"]["ethernets"]["eth1"]["dhcp4"] = "false";
// 方法1:最初の位置に固定で書き込む
config["network"]["ethernets"]["eth1"]["addresses"][0] = "192.168.1.172/24";
// 方法2:追加で挿入する
// std::string eth1_ip_str = "192.168.1.171";
// std::string eth1_mask_str = "255.255.255.0";
// std::string eth1_cidr = mask_transition_cidr(eth1_ip_str,eth1_mask_str);
// config["network"]["ethernets"]["eth1"]["addresses"].push_back(eth1_cidr);
YAML::Node addresses_eht1_dns = YAML::Load("[8.8.8.8,8.8.4.4]");
config["network"]["ethernets"]["eth1"]["nameservers"]["addresses"] = addresses_eht1_dns;
config["network"]["ethernets"]["eth1"]["routes"][0]["to"] = "0.0.0.0/0";
config["network"]["ethernets"]["eth1"]["routes"][0]["via"] = "192.168.1.1";
config["network"]["ethernets"]["eth1"]["routes"][0]["metric"] = "150";
#endif
// ==============変更後のYAMLドキュメントをファイルに書き戻す==================
std::ofstream fout("/etc/netplan/50-eth0-init.yaml");
fout << config;
fout.close();
// =======================ネットワークカードの再起動===============================
system("sudo netplan generate");
system("sudo netplan apply");
return 0;
}

2. Wi-Fi STA

2.1 ネットワーク設定の概要

本ドキュメントでは、システムの基本的なネットワーク設定について説明します。また、プログラム内でネットワーク設定を変更したいという要件に応えるため、yaml-cppライブラリを使用してネットワーク設定を変更する簡単なサンプルも提供します。

2.1.1 NetplanとYAMLファイル

2.1.1.1 背景

本分析システムの実行環境には、Ubuntu22.04システムを採用しています。Ubuntuは18.04バージョン以降、ネットワーク設定にifupdownを使用せずnetplanを使用するようになったため、/etc/network/interfacesでの固定IP設定は無効となります。そのため、/etc/netplan/ディレクトリ内でYAMLファイルを使用してネットワーク設定を行う必要があり、YAMLファイルの基本的な構文を理解する必要があります。

2.1.1.2 Netplanのネットワーク設定テクニック

2.1.2 Wi-Fiの操作方法

2.1.2.1 Wi-Fiアンテナの接続

Wi-Fiアンテナの接続

Wi-Fiアンテナの接続

2.1.2.2 Wi-Fiネットワーク設定の変更

以下のコマンドを使用して開発ボードのネットワーク設定の保存パスを確認すると、4つの設定ファイルが見つかります。そのうち 52-wlan0-init.yamlは【Wi-Fiネットワークカード】に関連するnetplan設定です。

Terminal window
ls /etc/netplan/

Wi-Fiネットワーク設定の変更

Wi-Fiネットワーク設定の変更

以下は、wlan0をDHCPとして設定する例です:

Wi-Fiネットワーク設定の変更

Wi-Fiネットワーク設定の変更

ネットワークカード設定の各部分の詳細については、下図をご参照ください:

Wi-Fiネットワーク設定の変更

Wi-Fiネットワーク設定の変更

YAMLファイルを変更した場合は、以下のコマンドを実行して更新を適用する必要があります:

Terminal window
sudo netplan generate
sudo netplan apply

2.2 クイックスタート

2.2.1 開発環境の準備

PC側のUbuntuシステムで runスクリプトを実行し、EASY-EAIコンパイル環境に入ります。詳細は以下の通りです。

Terminal window
cd ~/develop_environment
./run.sh 2204

2.2.2 ソースコードのダウンロードとサンプルのコンパイル

まず、仮想マシンのバックグラウンドターミナルで以下のコマンドを実行し、周辺機器サンプルソースコードの管理ディレクトリを作成します:

Terminal window
cd /opt
mkdir -p EASY-EAI-Nano-TB/demo

例えば、サンプルプログラムを「PC\D:」(指定はありません。ユーザーの任意の場所で構いません)にダウンロードします。

その後、ダウンロードしたサンプルを仮想マシンのファイルシステムにコピーします。手順は下図をご参照ください。

ソースコードのダウンロードとサンプルのコンパイル

ソースコードのダウンロードとサンプルのコンパイル

最後に、該当するサンプルのディレクトリに移動してコンパイル操作を実行します。具体的なコマンドは以下の通りです:

Terminal window
cd EASY-EAI-Nano-TB/demo/01_network
./build.sh

💡 注意 : 依存ライブラリはボード上に配置されているため、クロスコンパイル中は/mntのマウントを維持する必要があります。

ソースコードのダウンロードとサンプルのコンパイル

ソースコードのダウンロードとサンプルのコンパイル

もし以下のエラーが発生した場合は、【開発ボード上】で libyaml-cpp-devライブラリをインストールする必要があります:

ソースコードのダウンロードとサンプルのコンパイル

ソースコードのダウンロードとサンプルのコンパイル

Terminal window
sudo apt-get install libyaml-cpp-dev

2.2.3 サンプルの実行

シリアルポートデバッグまたはSSH経由でボードのバックグラウンドにアクセスし、サンプルが配置されているディレクトリに移動します:

Terminal window
cd /userdata

サンプルの実行

サンプルの実行

サンプルを実行するコマンドは以下の通りです:

Terminal window
./test-wifi

このデモの動作は、wlan0の設定をWi-Fi Stationに変更し、「HUAWEI-0H1YW8」という名前のWi-Fi AP(アクセスポイント)に接続するというものです。

2.2.4 実行結果

実行後、正常に接続されると、アクセスポイントから開発ボードにIPアドレスが割り当てられます。結果は下図の通りです。

実行結果

実行結果

2.3 操作例程

サンプルコードは 01_network/test-wifi/main.cppにあります。

2.3.1 サンプルソースコード

以下のコードは、wlan0のアクセスポイント接続を設定する使用例です。コーディングの参考にしてください:

int main() {
// YAMLファイルをロードする
YAML::Node config = YAML::LoadFile("/etc/netplan/52-wlan0-init.yaml");
// =====================Wi-Fiパラメータの変更===========================
config["network"]["wifis"]["wlan0"]["dhcp4"] = "true";
config["network"]["wifis"]["wlan0"]["dhcp4-overrides"]["route-metric"] = "200";
config["network"]["wifis"]["wlan0"]["access-points"]["HUAWEI-0H1YW8"]["password"] = "lmo12345678";
// =============================================================
// 変更後のYAMLドキュメントをファイルに書き戻す
std::ofstream fout("/etc/netplan/52-wlan0-init.yaml");
fout << config;
fout.close();
// =======================ネットワークカードの再起動===============================
system("sudo netplan generate");
system("sudo netplan apply");
return 0;
}

3.Wi-Fi AP

3.1. 本ドキュメントの概要

3.1.1 Wi-Fi APモードの重要な意義

Wi-Fi AP(アクセスポイント)モードの主な価値は、デバイス(組み込み開発ボードなど)をワイヤレスアクセスポイントに変え、複数のワイヤレスデバイスの集中接続とネットワーク相互通信を実現することにあります。EASY-EAIシリーズの開発ボードにとって、このモードはルーターへの依存をなくし、スマートフォン、PC、タブレットなどのデバイスに直接ワイヤレスネットワーク機能を提供します。デバイス間のデータ共有、リモートデバッグ、協調作業などのシナリオをサポートし、特にルーターのない環境での一時的なネットワーク構築や、組み込みデバイスのワイヤレス管理のニーズに適しています。

3.2. Wi-Fi APモードの設定

3.2.1 wlan1インターフェースの有効化

  1. 以下のコマンドを実行し、APモード構築用の wlan1インターフェースを作成します:
Terminal window
sudo echo "Featureid0 create wlan1 ap" \> /sys/ccsys/ccpriv
  1. wlan1 インターフェースのステータスを確認します: ifconfig を実行し、wlan1 が表示されれば有効になっています。表示されない場合は ifconfig -aを実行します。存在する場合は起動していないことを意味します。

  2. wlan1 インターフェースを起動します(起動していない場合に実行):

Terminal window
sudo ifconfig wlan1 up

💡 注意 : ネットワーク設定の変更によるSSH接続の切断を避けるため、以降の操作はADBまたはシリアルポートデバッグを使用して行ってください。

3.2.2 hostapdサービスの設定

hostapd はAPモードを実現するためのコアサービスであり、ワイヤレスネットワークのSSID、暗号化方式、チャネルなどのパラメータを管理します。

  1. hostapd設定ファイルの保存ディレクトリを作成します(存在しない場合):
Terminal window
sudo mkdir -p /etc/wireless
  1. hostapd 設定ファイルを編集します:
Terminal window
sudo vim /etc/wireless/hostapd.conf
  1. 以下の設定内容を記述します(重要なパラメータには説明が付けられています):
Terminal window
# 使用する無線インターフェースを指定(例:wlan0)
interface=wlan1
# nl80211ドライバを使用(大部分の最新システムはnl80211を採用)
driver=nl80211
# ソフトウェアAPの名前(SSID)を設定
ssid=EASY-EAI-TEST
# 無線モード:g は 2.4GHz 802.11g を表す(5GHzの場合は a モードを使用できるが、設定が若干異なる場合がある)
hw_mode=g
# 無線チャネルを設定(6のような干渉の少ないチャネルを選択)
channel=6
# MACアドレスフィルタリング:0 はフィルタリングを使用しないことを表す
macaddr_acl=0
# 認証アルゴリズム(1 はオープンシステム認証のみを使用することを表す)
auth_algs=1
# SSIDを隠蔽するかどうか:0 はSSIDをブロードキャストすることを表す
ignore_broadcast_ssid=0
# WPA暗号化を有効化。WPA2の使用を推奨(wpa=2 はWPA2のみをサポートすることを表す)
wpa=2
# WPA2事前共有キーを設定(長さは8から63文字)
wpa_passphrase=12345678
# キー管理方式をWPA-PSKに指定
wpa_key_mgmt=WPA-PSK
# 暗号化アルゴリズムを指定。通常はより高い安全性を提供するためにCCMP (AES) のみの使用を推奨する。
# TKIPは一部の古いデバイスとの互換性があるが、安全性は低い。ここでは互換性のために複数のアルゴリズムを同時に列挙できる。
wpa_pairwise=CCMP TKIP
rsn_pairwise=CCMP

4) 設定ファイルを保存してVimを終了します(ESCキーを押し、:wqと入力してEnterキーを押します)。

3.2.3 udhcpdサービスの設定

udhcpd は軽量なDHCPサーバーであり、APに接続されたデバイスに自動的にIPアドレスを割り当て、デバイス間のネットワーク相互通信を保証するために使用されます。

1) udhcpd 設定ファイルを編集します:

Terminal window
sudo vim /etc/wireless/udhcpd.conf

2) 以下の設定内容を記述します(IPアドレスの範囲は必要に応じて調整できます):

Terminal window
# Sample udhcpd configuration file (/etc/udhcpd.conf)
# The start and end of the IP lease block
#割り当て可能なIPアドレスの範囲を設定
start 192.168.123.20 #default: 192.168.0.20
end 192.168.123.254 #default: 192.168.0.254
# The interface that udhcpd will use
# DHCPサーバーがリッスンするポート(インターフェース)を指定
interface wlan1 #default: eth0
#Examles
#ネットワーク関連のパラメータ情報を設定
opt dns 223.5.5.5
option subnet 255.255.255.0
opt router 192.168.123.1
opt wins 192.168.123.1
#option dns 129.219.13.81 # appened to above DNS servers for a total of 3
option domain local
option lease 864000 # 10 days of seconds

udhcpdサービスの設定

udhcpdサービスの設定

udhcpdサービスの設定

udhcpdサービスの設定

  1. wlan1の静的IPを設定します(DHCPアドレス範囲と同じサブネット内である必要があります):

💡 注意 : IPアドレスの競合を避けるため、静的IPはDHCP範囲外のアドレスに設定する必要があります。

3.2.4 Wi-Fi APサービスの起動

  1. hostapd サービスをバックグラウンドで起動します(&はバックグラウンド実行を意味します):
Terminal window
sudo hostapd /etc/wireless/hostapd.conf &
  1. udhcpd サービスを起動します(-Sはフォアグラウンド実行を意味し、ログの確認に便利です):
Terminal window
sudo udhcpd -S /etc/wireless/udhcpd.conf
  1. udhcpdサービスをバックグラウンドで実行する必要がある場合は、以下のコマンドを実行します:
Terminal window
sudo udhcpd /etc/wireless/udhcpd.conf &
  1. コマンドが見つからない場合は、以下のコマンドを使用してツールをインストールしてください。
Terminal window
sudo apt-add-repository universe sudo apt update sudo apt install hostapd udhcpd

3.3 機能テスト

3.3.1 基本接続テスト

  1. スマートフォン、PCなどのワイヤレスデバイスのWi-Fi機能をオンにします。

  2. SSIDを検索します(本ドキュメントの例では:EASY-EAI-TEST)。

  3. 設定したパスワードを入力します(本ドキュメントの例では:12345678)。

  4. 接続の確認:接続が成功すると、デバイスは 192.168.123.x ネットワークのIPアドレスを取得します。相互にpingが通るか試してください。

基本接続テスト

基本接続テスト

3.3.2 データ転送テスト

  1. 開発ボード側:/userdata ディレクトリにテストファイルを作成します。
Terminal window
sudo echo "WIFI AP Test File" \> /userdata/test_ap.txt
  1. クライアント側(PCなど):SSHまたはSCP経由で開発ボードに接続し、ファイルをダウンロードします。
Terminal window
scp root@192.168.123.1:/userdata/test_ap.txt ./
  1. 逆方向のテスト:クライアントから開発ボードにファイルをアップロードし、双方向通信が正常であることを確認します。

3.3.3 注意事項

  1. SSIDやパスワードを変更する場合は、hostapd.confを編集した後にサービスを再起動する必要があります:
Terminal window
sudo pkill hostapd && sudo hostapd /etc/wireless/hostapd.conf &
  1. 開発ボードを再起動した後は、起動コマンドを再度実行する必要があります(起動時の自動実行スクリプトを作成することも可能です)。

  2. インターフェースの競合を防ぐため、複数のワイヤレスサービスを同時に有効にしないでください。

  3. 5GHz帯域(hw_mode=a)を使用する場合は、開発ボードのハードウェアが該当帯域をサポートしているか確認する必要があります。

4 4G

4.1 4Gモジュールの使用概要

4GモジュールはSIMカード(【通常のSIMカード】または【IoT SIMカード】)と組み合わせて使用する必要があるため、ATコマンドを通じてダイヤルアップ接続を行う必要があります。また、Linuxシステムではネットワークカードデバイスとして扱われるため、ネットワーク設定の管理も必要になります。ATコマンドはネットワークカードの初期化時にのみ使用されるため、本ドキュメントでは4Gモジュール関連のネットワーク設定に重点を置いて説明します。

4.1.1 NetplanとYAMLファイル

4.1.1.1 背景

本分析システムの実行環境には、Ubuntu 22.04システムを採用しています。Ubuntuは18.04バージョン以降、ネットワーク設定に ifupdown を使用せず netplan を使用するようになったため、/etc/network/interfaces での固定IP設定は無効となります。そのため、/etc/netplan/ ディレクトリ内でYAMLファイルを使用してネットワーク設定を行う必要があり、YAMLファイルの基本的な構文を理解する必要があります。

4.1.1.2 Netplanのネットワーク設定テクニック

4.1.2 ATコマンド

ATコマンド:4Gモジュールは、ATコマンドを通じてその動作ステータスや一部のパラメータを設定する必要があります。ATコマンドは本質的にシリアル通信であり、すべて「AT」で始まり、「(すなわちキャリッジリターン)」で終わります。モジュール起動後、シリアルポートのデフォルト設定は、データビット:8ビット、ストップビット:1ビット、パリティ:なし、ハードウェアフロー制御(CTS/RTS)となります。ATコマンドを送信する際、シリアルターミナルの要件として最後に「(すなわちラインフィード)」を追加する必要があることに注意してください。Linuxシステムでは、/dev/ttyUSB*デバイスノードを通じて送受信を行います。ATコマンドの送信については、「AT」の2文字を除き、最大1056文字(最後のNull文字を含む)を受信できます。その分類とコマンドフォーマットは下図の通りです。

ATコマンド

ATコマンド

4.1.3 ハードウェアインターフェースの説明

4.1.3.1 MINI-PCIE

MINI-PCIE

MINI-PCIE

4.1.3.2 SIMカードインターフェース
  • 通常のSIMカード:普段私たちが使用している電話用のSIMカードです。この種のSIMカードは4Gモジュールとの紐付け(バインディング)関係はありません。

  • IoT SIMカード:4Gモジュールとの紐付けが必要です。1枚のIoT SIMカードは1つの4Gモジュールとしか紐付けることができませんが、同一の4Gモジュールに対しては複数のIoT SIMカードを同時に紐付けることが可能です。

SIMカードインターフェース

SIMカードインターフェース

4.2. ダイヤルアップ接続

4.2.1 YAML設定の確認

以下のコマンドを使用して開発ボードのネットワーク設定の保存パスを確認すると、4つの設定ファイルが見つかります。そのうち 61-mobile0-init.yaml は【4Gネットワークカード】に関連するnetplan設定です。

Terminal window
ls /etc/netplan/

YAML設定の確認

YAML設定の確認

存在しない場合は、手動で作成する必要があります。以下は、mobile0 をDHCPとして設定する例です:

Terminal window
YAML
network:
version: 2
renderer: networkd
ethernets:
mobile0:
optional: true
dhcp4: true
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
dhcp4-overrides:
route-metric: 250

YAMLファイルを変更した場合は、以下のコマンドを実行して更新を適用する必要があります:

Terminal window
sudo netplan generate
sudo netplan apply

4.2.2 4Gネットワークカードの正常な認識の確認

コマンド lsusb を実行します。正常に認識されていれば、下図のように Quectel Wireless が表示されます。

4Gネットワークカードの正常な認識の確認

4Gネットワークカードの正常な認識の確認

次にコマンド ifconfig を実行します。正常に認識されていれば、下図のように mobile0 が表示されます。

Terminal window
ifconfig

4Gネットワークカードの正常な認識の確認

4Gネットワークカードの正常な認識の確認

4.2.3 ダイヤルアップ操作

システムと4Gモジュール間の制御のやり取りは、通常USBシリアルポートを通じて実現されます。具体的な制御のやり取り方法は、USBシリアルポートを利用してATコマンドを送信することです。そのため、まずはどのようなUSBシリアルポートリソースがあるかを確認する必要があります。

ダイヤルアップ操作

ダイヤルアップ操作

モジュールメーカーに問い合わせて「USBドライバ開発ガイド」を入手し、対応するモジュールが【Modem(モデム)】として使用するUSBシリアルポートを調べます。このシリアルポートを通じてダイヤルアップ操作を行います。詳細は図の通りです。

ダイヤルアップ操作

ダイヤルアップ操作

ダイヤルアップコマンドはそのATコマンドの1つであり、具体的なコマンドはAT+QNETDEVCTL=3,1,1 です。EC200N-CN (CAT1) のダイヤルアップコマンドは/dev/ttyUSB2 を通じて送信されます。

開発ボード上で実行するコマンドは以下の通りです:

Terminal window
echo -ne "AT+QNETDEVCTL=3,1,1\n" \> /dev/ttyUSB2
  • 自動ダイヤルアップ:“AT+QNETDEVCTL=3,1,1\n”

  • 手動ダイヤルアップ(再起動後に再度ダイヤルアップが必要):“AT+QNETDEVCTL=1,1,1\n”

root以外のユーザーでログインしている場合は、以下のコマンドでATコマンドを /dev/ttyUSB2 に送信できます:

Terminal window
echo -ne "AT+QNETDEVCTL=3,1,1\n" \| sudo tee /dev/ttyUSB2

4.3 ネットワーク接続テスト

ifconfig コマンドを実行し、4GネットワークカードにIPアドレスが正常に割り当てられているか確認します。

Terminal window
ifconfig

ネットワーク接続テスト

ネットワーク接続テスト

IPアドレスが正常に割り当てられている場合は、以下のコマンドを実行して、外部ネットワークにアクセスできるか確認します:

Terminal window
ping 8.8.8.8 -I mobile0

サーバーからデータが返ってくれば、アクセス成功です。

ネットワーク接続テスト

ネットワーク接続テスト

💡 注意 :外部ネットワークにアクセスできない場合は以下を確認してください:

  • アンテナが正しく接続されているか

  • デバイスの設置場所の4G電波状況が良好か

  • SIMカードが挿入されているか

  • SIMカードがIoT SIMカードの場合、そのカードの有効期限が切れていないか、また他のデバイスに紐付けされたことがないか

  • カード内のデータ通信量(トラフィック)や残高などが十分か