Armadilloフォーラム

wifiの接続状況について

inokuchi

2024年12月13日 16時16分

==========
製品型番:AGL3100-C13Z
Debian/ABOSバージョン:Debian12(bookworm)
カーネルバージョン:6.1.91-at5
3G/LTE モジュール情報 (Debianのみ):
その他:
==========

armadillo内にWEBサーバーを作成し、wifi経由でPCからarmadilloにIPアドレスとポート番号を指定してダッシュボードアクセスするシステムを遠隔地で動作させています。
1,2か月ほど動作せていましたが途中でダッシュボードにアクセスできなくなり、ある日アクセスできるようになるという事例が発生しました。
アクセスできるようになった要因は、再起動をさせるソフトを入れていてそれが動作したからなのかなと思っています。

NetworkManagerのログを添付しますので、アクセスできなくなった原因をご教授いただきたく存じます。

ファイル ファイルの説明
NetworkManagerログ.txt
コメント

太田です。

提供していただいたログをみると、NetworkManagerの状態がDISCONNECTEDになる直前に以下のパターンがあるようです。

省略...
[時間] armadillo	NetworkManager[1390]: <info>  [1730604765.1576] device (wlan0): state change: activated -> failed (reason 'supplicant-timeout', sys-iface-state: 'managed')
[時間] armadillo	NetworkManager[1390]: <info>  [1730604765.1647] manager: NetworkManager state is now DISCONNECTED
省略...
[時間] armadillo	NetworkManager[1390]: <info>  [1730605064.1611] device (wlan0): state change: activated -> failed (reason 'ssid-not-found', sys-iface-state: 'managed')
[時間] armadillo	NetworkManager[1390]: <info>  [1730605064.1632] manager: NetworkManager state is now DISCONNECTED
省略...
[時間] armadillo	NetworkManager[1427]: <info>  [1731050338.0650] device (wlan0): state change: need-auth -> failed (reason 'no-secrets', sys-iface-state: 'managed')
[時間] armadillo	NetworkManager[1427]: <info>  [1731050338.0673] manager: NetworkManager state is now DISCONNECTED
省略...

そのため、DISCONNECTEDしている理由としては、'supplicant-timeout'と'ssid-not-found'と'no-secrets'の3つがあるようにみえます。

以下の3点を状況確認していただいてもよろしいでしょうか?

1. WEBサーバーにアクセスするタイミングとModemManagerのログでDISCONNECTEDになっているタイミングは一致するでしょうか?
こちらはArmadilloに対してデバイスからpingした内容のログをとってみる、反対にArmadilloからデバイスにpingした内容のログをとるなどの方法が考えれます。

2. wifiとのリンクの状態をログとして記録して頂けますでしょうか?
以下のコマンドで受信信号強度(signal)を確認できます。

iw dev wlan0 link

3. カーネル側が何かしらエラーを出力している可能性もあるので、その内容も確認して頂けますでしょうか?
journalctl -k 実行するとカーネルログが出力されます。
DISCONNECTEDになったタイミングの前後で何かしらのトラブルが発生していないか確認して頂ければ幸いです。

どうぞよろしくお願いいたします。

> 1. WEBサーバーにアクセスするタイミングとModemManagerのログでDISCONNECTEDになっているタイミングは一致するでしょうか?
> こちらはArmadilloに対してデバイスからpingした内容のログをとってみる、反対にArmadilloからデバイスにpingした内容のログをとるなどの方法が考えれます。

$logFilePath = "C:\pinglog.txt"
$targetIP = "192.168.128.103"
 
try {
    while ($true) {
        $pingResult = ping $targetIP -n 1 | Select-Object -Last 1
        $timestamp = (Get-Date -Format 'yyyy/MM/dd HH:mm:ss')
        $responseTime = ($pingResult -split 'time=')[1] -replace 'ms', ''
        $ttl = ($pingResult -split 'TTL=')[1] -replace ' ', ''
 
        # 文字列の結合部分に注意
        Add-Content -Path $logFilePath -Value "$timestamp $targetIP $responseTime ms TTL=$ttl"
 
        Start-Sleep -Seconds 1
    }
} catch {
    Write-Warning "処理が中断されました。"
}

windowsPCで上記スクリプトを作成して、powershellで実行したら問題なくログは保存されますか。

>
> 2. wifiとのリンクの状態をログとして記録して頂けますでしょうか?
> 以下のコマンドで受信信号強度(signal)を確認できます。
>

> iw dev wlan0 link
> 

本現象が起こった機体をいま操作できない状況にあるため、ログの抽出を行った際に「nmcli dev wifi」で電波強度を確認した際の結果を添付いたします。

>
> 3. カーネル側が何かしらエラーを出力している可能性もあるので、その内容も確認して頂けますでしょうか?
> journalctl -k 実行するとカーネルログが出力されます。
> DISCONNECTEDになったタイミングの前後で何かしらのトラブルが発生していないか確認して頂ければ幸いです。

本現象が起こったものと同じシステムのものを準備して社内で動作確認を行っています。
社内で動作確認を行っているものでも2024/12/20 14:12:58,14:13:00で「~~ -> DISCONNECTED」の表記になっており、その時間の「journalctl -k」の結果を確認しましたが、特にトラブルが発生しているようには見えませんでした。
「journalctl -k」の結果も添付します。

以上、ご確認よろしくお願いいたします

ファイル ファイルの説明
nmcli dev wifi結果.txt
journalctl-k.txt

太田です。

ログを添付していただきありがとうございます。

> windowsPCで上記スクリプトを作成して、powershellで実行したら問題なくログは保存されますか。

実際に実行してみて、pinglog.txtの中身はどうなっているでしょうか?
実行結果例を教えて頂ければ幸いです。

> 本現象が起こった機体をいま操作できない状況にあるため、ログの抽出を行った際に「nmcli dev wifi」で電波強度を確認した際の結果を添付いたします。

通信状況のログをありがとうございます。このコマンドを実行したタイミングでは通信状況は悪くないように見えます。
こちらも、NetworkManagerにおいてDISCONNECTED('supplicant-timeout'と'ssid-not-found'と'no-secrets')になっているタイミングで通信状況のログが取れると分かりやすいのではないかと思います。
社内で動作確認を行っているArmadilloに対して、例えば、以下の内容を記載したシェルスクリプトを実行してログをとるのも一つ手かと思います。

#!/bin/sh
 
log_file="./log.txt"
# ネットワーク接続を確認できるIPアドレス
ip_address="8.8.8.8"
log_interval_sec=5
 
[ -f $log_file ] || touch $log_file
 
while : ;do
    date="$(date "+%Y/%m/%d %H:%M:%S")"
    signal="$(iw dev wlan0 link | grep "signal")" 2>/dev/nul
    signal="${signal:-none}"
    echo "$date iw dev wlan0 link: $signal" >> "$log_file"
    ping_result="$(ping -c 1 $ip_address | grep "time=")"
    ping_result="${ping_result:-DISCONNECTED}"
    echo "$date ping: $ping_result" >> "$log_file"
    sleep "$log_interval_sec"
done

例えば、wifi接続したArmadillo上で上記のスクリプトを作成して実行した結果を以下に示します。

root@armadillo:~# vi log.sh
root@armadillo:~# chmod +x log.sh
root@armadillo:~# ./log.sh
^C
root@armadillo:~# cat ./log.txt
2024/12/23 15:19:26 iw dev wlan0 link:  signal: -48 dBm
2024/12/23 15:19:26 ping: 64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=16.6 ms
2024/12/23 15:19:31 iw dev wlan0 link:  signal: -47 dBm
2024/12/23 15:19:31 ping: 64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=16.5 ms

Armadilloからのpingとiw dev wlan0 linkの結果をlog.txtに書き込んでいます。

こちらとNetworkManagerのログを比較して、NetworkManagerで'supplicant-timeout'と'ssid-not-found'と'no-secrets'が理由でDISCONNECTEDになっている期間と比較することで状況が少し見えてくるかもしれません。

> 本現象が起こったものと同じシステムのものを準備して社内で動作確認を行っています。
> 社内で動作確認を行っているものでも2024/12/20 14:12:58,14:13:00で「~~ -> DISCONNECTED」の表記になっており、その時間の「journalctl -k」の結果を確認しましたが、特にトラブルが発生しているようには見えませんでした。
> 「journalctl -k」の結果も添付します。

journalctl -kの結果も特にerrorやfailedもなくトラブルがないように見えます。
社内で準備したシステムでDISCONNECTEDになった時のNetworkManagerのログは同様に、'supplicant-timeout'と'ssid-not-found'と'no-secrets'が理由でDISCONNECTEDになっているのでしょうか?

どうぞよろしくお願いいたします。