Armadilloフォーラム

WiFi APモードでのWiFi接続設定(Stationモード接続設定)について

satoshi.sa.aoki

2022年8月22日 12時11分

お世話になっております。青木と申します。

Armadillo IoT G3のWiFiネットワーク設定について技術調査しております。

"実施したいこと"は、WiFi APモードでArmadillo IoT G3の実機に接続して、Stationモードで動かすためのWiFi設定を行うです。
(TeraTerm等のシリアル通信のターミナルソフトやシリアル通信ケーブルを使わずにネットワーク設定できるようにしたいため)

以下の記事を参考にしつつAPモードでの動作はできたのですが、
https://armadillo.atmark-techno.com/blog/615/9563

以下のコマンドでWiFiの電波を検索しても検索ができなく、(おそらく、wlan0をNetwork Managerの管理対象からはずしているため!?)
$ nmcli device wifi list

以下の記事を参考に、wlan0の仮想ネットワーク(sta0, MACアドレスは以下の記事を参考に00:11:22:33:44:55のまま)を追加すると、検索できるようにはなったのですが、
https://armadillo.atmark-techno.com/forum/armadillo/2278

sta0でWiFiネットワーク接続したら上手く接続されない(以下のauthenticateを繰り返して先に進まない)といった状況です。

"実施したいこと"を実現するための方法についてアプローチ方法はあってますでしょうか?
より良いやり方等があればご教授いただけませんでしょうか?

以上、よろしくお願いいたします。

コメント

at_syunya.ohshio

2022年8月22日 17時56分

大塩です。

> Armadillo IoT G3のWiFiネットワーク設定について技術調査しております。
>
> "実施したいこと"は、WiFi APモードでArmadillo IoT G3の実機に接続して、Stationモードで動かすためのWiFi設定を行うです。
> (TeraTerm等のシリアル通信のターミナルソフトやシリアル通信ケーブルを使わずにネットワーク設定できるようにしたいため)
>
> 以下の記事を参考にしつつAPモードでの動作はできたのですが、
> https://armadillo.atmark-techno.com/blog/615/9563
>
> 以下のコマンドでWiFiの電波を検索しても検索ができなく、(おそらく、wlan0をNetwork Managerの管理対象からはずしているため!?)
> $ nmcli device wifi list
>
> 以下の記事を参考に、wlan0の仮想ネットワーク(sta0, MACアドレスは以下の記事を参考に00:11:22:33:44:55のまま)を追加すると、検索できるようにはなったのですが、
> https://armadillo.atmark-techno.com/forum/armadillo/2278
>
> sta0でWiFiネットワーク接続したら上手く接続されない(以下のauthenticateを繰り返して先に進まない)といった状況です。
>
> "実施したいこと"を実現するための方法についてアプローチ方法はあってますでしょうか?
> より良いやり方等があればご教授いただけませんでしょうか?

実施したいこととしては、以下であると認識しています。
・APとSTAを同時に使用した状態で、「PCからAP経由でArmadilloにログイン」「STAで他APに接続する」を実現したい
hostapd を用いたAPを作成する前に、仮想インターフェースを作成しても同じエラーとなりますでしょうか。

その他の方法として
APを設定した状態からSTAに切り替える場合であれば、制御用スクリプトの作成とsystemd での実行にて実現できるとは思います。
しかし、AP設定が消えるためその後のメンテナンスが難しくなるデメリットがあります。

以上です。

satoshi.sa.aoki

2022年8月23日 15時40分

お世話になっております。青木です。
早速のご返信ありがとうございます。

> 実施したいこととしては、以下であると認識しています。
> ・APとSTAを同時に使用した状態で、「PCからAP経由でArmadilloにログイン」「STAで他APに接続する」を実現したい

説明が不足しておりすみません。シナリオベースで書き出しますと、実施したいことは、以下のようになります。

========================================================================
前提:通常はArmadilloのWiFiはStationモードのみで動く想定
STEP①:ユーザがArmadilloのボタンを長押ししてAPモードで起動する。 → これはOK(〇)
STEP②:ユーザがスマホやタブレットの設定アプリからArmadilloにWiFi接続する。 → これもOK(〇)
STEP③:ユーザがArmadillo上に立てたWebアプリにアクセスし画面(index.html)取得する → これもOK(〇)
STEP④:Webアプリは、ArmadilloにWiFi SSID検索('nmcli device wifi list'を使用)を行いスマホ画面にWiFi SSIDリストを表示する
 → これがNG(検索ヒットしない)(×)。このため、NetworkManger.confにwlan0をunmanaged(管理対象外)にしたのが原因かなと思い、wlan0の仮想NIC(sta0)を追加しましたところ、検索ヒットはするようになりました。が、sta0のWiFi接続は、sta0: authenticate with {WiFiルータのMACアドレス}が表示され接続が成功しません。
STEP⑤:ユーザは、検索でヒットしたWiFi SSIDリストのうち接続したいWiFiルータのSSIDを選択し、パスワードを入力して接続する
STEP⑥:Webアプリは、ArmadilloにStationモードでの接続を試行する
STEP⑦:ユーザは、WiFiルータの管理画面でArmadilloのIPアドレスを確認する(できれば、Webアプリが設定されたIPアドレスを表示できたらよいのですが、APモードからStationモードに移行してしまったらそれができない)
STEP⑦:以降、ArmadilloはStationモードでWiFiルータに接続してインターネット接続する
========================================================================

> hostapd を用いたAPを作成する前に、仮想インターフェースを作成しても同じエラーとなりますでしょうか。
hostapdを用いたAPを作成するというのは、以下のコマンドのことであっていますでしょうか?

$ ip link set wlan0 down
$ ip addr flush dev wlan0
$ ip link set wlan0 up
$ ip addr add 192.168.100.1/24 dev wlan0
$ service hostapd start

上記よりも前に以下を実行を試してみましたがsta0: authenticate with {WiFiルータのMACアドレス}が繰り返しでてWiFi接続が失敗する現象は変わらずでした。

$ systemctl stop NetworkManager.service
$ iw dev wlan0 interface add sta0 type managed
$ ip link set dev sta0 address 00:11:22:33:44:55
$ systemctl start NetworkManager.service

> その他の方法として
> APを設定した状態からSTAに切り替える場合であれば、制御用スクリプトの作成とsystemd での実行にて実現できるとは思います。
ありがとうございます。単純にAPからSTAの切り替えはできましたが、以下のイメージであってますでしょうか?

sed -i -e '$d' /etc/NetworkManager/NetworkManager.conf  // 末尾のunmanaged-devices=interface-name:wlan0を消す
service NetworkManager restart

> しかし、AP設定が消えるためその後のメンテナンスが難しくなるデメリットがあります。
はい、おっしゃる通りと思っており、より良い方法があればと調査しているところです。
例えば、wlan0をStationモードで、仮想の方をAPモードで必要な時に追加してwlan0のStationモードの設定を行うといったことはできますでしょうか?

長文で失礼致しました。
以上、よろしくお願いいたします。

satoshi.sa.aoki

2022年8月23日 18時34分

お世話になっております。青木です。

以下の件につきまして、原因がわかりました。

> NetworkManger.confにwlan0をunmanaged(管理対象外)にしたのが原因かなと思い、wlan0の仮想NIC(sta0)を追加しましたところ、検索ヒットはするようになりました。が、sta0のWiFi接続は、sta0: authenticate with {WiFiルータのMACアドレス}が表示され接続が成功しません

仮想インタフェースのsta0の/etc/hostapd/hostapd.confのchannelが10だったのですが、WiFiルータのSSIDのchannelは4でした。
channelを4に合わせたらWiFi接続ができました。

sta0をローカルエリア内のWiFi (任意のchannel) に接続できるようにしたいですが、設定方法ございますでしょうか?

以上、宜しくお願いします。

satoshi.sa.aoki

2022年8月24日 16時08分

お世話になっております。青木です。

> sta0をローカルエリア内のWiFi (任意のchannel) に接続できるようにしたいですが、設定方法ございますでしょうか?
上記につきまして、調査しましたところ、

$ iw list

上記をArmadillo IoT G3上で実行すると、以下の出力になっており、

・・・・・・・
        valid interface combinations:
                 * #{ managed } <= 2048, #{ AP, mesh point } <= 8, #{ P2P-client, P2P-GO } <= 1,
                   total <= 2048, #channels <= 1, STA/AP BI must match, radar detect widths: { 20 MHz (no HT), 20 MHz, 40 MHz }
 
                 * #{ WDS } <= 2048,
                   total <= 2048, #channels <= 1, STA/AP BI must match
・・・・・・・

「channels <= 1」は、「ソフトウェア AP が Wi-Fi クライアント接続と同じチャンネルを使わなくてはいけない」という情報があったんですが、
これが正しいとすると、STA(任意のchannel)とAP(hostapd.confに設定したchannel)の同時動作は難しいのでしょうか??

以上、宜しくお願いします。

at_syunya.ohshio

2022年8月26日 10時33分

大塩です。

> 「channels <= 1」は、「ソフトウェア AP が Wi-Fi クライアント接続と同じチャンネルを使わなくてはいけない」という情報があったんですが、
> これが正しいとすると、STA(任意のchannel)とAP(hostapd.confに設定したchannel)の同時動作は難しいのでしょうか??

最初にご参考いただいているフォーラム内でも回答されていますが、
仰る通りClientとAPは同一チャネルでなければ同時に動作させることが出来ません。
https://armadillo.atmark-techno.com/forum/armadillo/2278
よって、STA(任意のchannel)とAP(hostapd.confに設定したchannel)のチャネルが違う場合は同時動作が難しいということになります。