複数のWi‑Fiアクセスポイントを事前登録し、移動先で自動接続

Raspberry Pi Zero Wには、複数のWi‑Fiアクセスポイントを事前登録し、移動先で自動接続させられます。


Raspberry Pi Zero WやRaspberry Pi Zero 2W等は超小型で運びやすいのですが、面倒な事に有線LANポートは無く、MicroUSBしかなく、2つあるうち一つは電源。もう一つあるが間隔が狭く、USBメモリ等直差し出来ない。結局USBポートやUSBーLANに有線LANを持ってウロウロする。ついでにUSBマウスにUSBキーボード・・・これじゃ、モバイルなんて言えない。
また、行った先で、上記の付帯品を持っていなかったらWIFIにも接続できず・・・お手上げ。そんな代物(ポンコツ)を事前にWFIアクセスポイントとパスワードが分かってたら、登録しておいてポンと接続。これが理想です。兎に角毎回イライラするzero系は、ストレスが溜まる代物ですけど、何故か沢山あるので使いたい!使うのであれば便利に効率よくしたい!という願望があります。で、今回は自宅で設定したRaspberry Pi Zero Wを別の場所に持って行くので、事前に分かっていたAPとPWを登録しておいたのに接続できなくて、自宅とその場所を何度も往復した事を書いています。(アー糞長かったな)


最初に起動して、Wifi接続できず・・・起動して、IP探すも無し。画面無い、マウス無い、キーボド無いの3重苦状態からどうしたのか?


一度戻ってモニターを持ってきます。微妙な時間が過ぎるくらいの距離だったわけで。モニター接続して「起動」・・・IP:127.0.0.1・・・よく見る奴です。自分自身のIPです。(ループバックアドレス)

うぅ!USBLAN接続(MicroUSB端子接続できる奴)を取りにまた戻ります。・・・・その時に有線LAN(長い奴15m)も一緒に。

今度は、接続できたようです。事前にこの場所のAPとPWを登録しておいたのに、何故接続できなかったのか?疑問です。


起動時に登録済APへ接続できなかった理由

登録済みでも、自動接続が有効とは限りません。また、登録済みというだけでは接続成功は保証されません。

考えられる原因:

  • connection.autoconnectが無効
  • 保存されたパスワードが違う
  • 起動時にアクセスポイントへ到達できなかった
  • Wi‑Fiがブロックされていた
  • WPA方式が一致しなかった
  • Wi‑Fi地域が未設定だった
  • 別の登録済みWi‑Fiが優先された

当時の正確な原因はログで確認します

sudo journalctl -b -u NetworkManager --no-pager |
  grep -iE 'TP-LINK|wlan0|wifi|fail|error|auth|secret'

アホみたいにLOGが出てきます。アホみたいに記録されています。

前回起動時:

~ $ sudo journalctl -b -1 -u NetworkManager --no-pager |   grep -iE 'TP-LINK|wlan0|wifi|fail|error|auth|secret'
Specifying boot ID or boot offset has no effect, no persistent journal was found.

『ブートIDまたはブートオフセットを指定しても効果はありません。永続ジャーナルが見つかりませんでした。』
何言っているのか?わかりません。解らないことは無駄です。

複数のWi‑Fiを自動接続対象にする

複数の接続設定に実行できます。

sudo nmcli connection modify "アクセスポイントを書く" \
  connection.autoconnect yes \
  connection.autoconnect-priority 10 \
  connection.autoconnect-retries 0

こうやって、複数のAPを登録していきます。
autoconnect-retries 0は継続的に接続を再試行する設定です。
これですと0回、アホなWIFI-APには一万回ぐらい書いてやりたくなりますが、無駄ですので、そこそこに。

設定確認:

nmcli -f NAME,TYPE,AUTOCONNECT,AUTOCONNECT-PRIORITY connection show

NAME                        TYPE      AUTOCONNECT  AUTOCONNECT-PRIORITY
Wired connection 1          ethernet  yes          -999
Buffalo-G-3270 1            wifi      yes          10
lo                          loopback  no           0
netplan-wlan0-*****  wifi      yes          0
TP-*******                wifi      yes          10
WAV****-****             wifi      yes          10

こんな感じで登録してあるAP一覧が出てきます。ここで安心してはダメです。

接続先の選択基準

NetworkManagerは、必ずしも電波が強い順だけで選びません。

  • 到達可能な登録済みWi‑Fiが候補
  • autoconnect-priorityが高い接続を優先
  • 優先度が同じ場合は、最近使った接続なども考慮

優先順位を指定する例:

sudo nmcli connection modify "**-****_****" \
  connection.autoconnect-priority 100

sudo nmcli connection modify "*****-G-*** *" \
  connection.autoconnect-priority 50

ブルー文字の所の数値が大きい方が優先されます。場所ごとに接続先が1つしか届かない場合は、全て同じ優先度でも構いません。

移動先のWi‑Fiを事前登録する

アクセスポイントが現在届かない場所でも、SSIDとパスワードが分かっていれば登録できます。

sudo nmcli connection add \
  type wifi \
  ifname wlan0 \
  con-name "移動先WiFi" \
  ssid "SSID名"

sudo nmcli connection modify "移動先WiFi" \
  wifi-sec.key-mgmt wpa-psk \
  wifi-sec.psk "パスワード" \
  connection.autoconnect yes \
  connection.autoconnect-priority 10 \
  connection.autoconnect-retries 0 \
  ipv4.method auto

移動先でPiの電源を入れると、その場所で受信可能な登録済みWi‑Fiへの自動接続を試みます。

ipv4.method autoは、自動接続を有効にします。最重要項目です。
connection.autoconnect-priority 10 \は、複数のWi‑Fiが利用できる場合の優先順位です。数値が大きい接続が優先されます。
connection.autoconnect-retries 0 \は、接続失敗後も継続して再試行します。移動してWi‑Fi圏内に入った際の接続に有効です。

なお、実際に接続するには、次の設定も正確である必要があります。

ssid "SSID名"
wifi-sec.key-mgmt wpa-psk
wifi-sec.psk "パスワード"

autoにしてなかったのよ。だから事前登録しても自動に接続できなかったのよ。登録したら自動接続位しなきゃならんの解れよ。って機械に言っても、猫に言っても無駄ですけど。猫なんか丁寧に説明しても理解してないからな。

zero

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です