コンテンツにスキップ

WiFi (wlan0) 設定

CanMV K230 の WiFi を有効化し、アクセスポイントに接続する手順です。

前提条件

  • ボードが起動済みで、シリアルコンソールにアクセスできること
  • 接続先の WiFi が 2.4GHz 帯であること(K230 は 5GHz 非対応)

2.4GHz のみ対応

K230 の WiFi チップ (bcmdhd) は 2.4GHz (ch1-13) のみ 対応しています。 5GHz の SSID には接続できません。

1. 現状の確認

初期状態では wlan0 は存在するが DOWN 状態で、ifconfig(引数なし)には表示されません。

確認コマンド

expect -c '
  log_user 1
  set timeout 10
  set serial [open /dev/ttyACM0 r+]
  fconfigure $serial -mode 115200,n,8,1 -translation binary -buffering none
  spawn -open $serial

  send "\r"
  expect "]#"

  send "ifconfig -a\r"
  expect "]#"

  send "ip link show wlan0\r"
  expect "]#"

  send "lsmod\r"
  expect "]#"

  send "ps | grep wpa_supplicant\r"
  expect "]#"

  send "cat /etc/network/interfaces\r"
  expect "]#"

  send "cat /etc/wpa_supplicant.conf\r"
  expect "]#"
'

初期状態

項目 状態
wlan0 存在するが DOWN (qdisc noop)
bcmdhd ドライバ ロード済み
wpa_supplicant 未起動
/etc/network/interfaces loeth0 のみ
/etc/wpa_supplicant.conf key_mgmt=NONE、SSID 未設定

2. 設定ファイルの編集

/etc/wpa_supplicant.conf

wpa_passphrase を使い、パスワードをハッシュ化して設定します。

# ヘッダー作成
cat > /etc/wpa_supplicant.conf << 'EOF'
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
EOF

# ハッシュ化 PSK を生成して追記(平文行は除外)
wpa_passphrase "YourSSID" "YourPassword" | grep -v '#psk=' >> /etc/wpa_supplicant.conf

# 確認
cat /etc/wpa_supplicant.conf

設定後の内容:

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1

network={
    ssid="YourSSID"
    psk=abcdef1234567890...    ← 256bit ハッシュ化 PSK
}

wpa_passphrase について

wpa_passphraseSSID + パスワード の組み合わせから PSK を生成します。 SSID を変更した場合は、必ず PSK を再生成してください。

/etc/network/interfaces

wlan0 の自動起動設定を追加します。

K230 のシリアルコンソールで以下を実行:

cat > /etc/network/interfaces << 'EOF'
# interface file auto-generated by buildroot

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto wlan0
iface wlan0 inet dhcp
  pre-up wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
  post-down killall -q wpa_supplicant
EOF

3. WiFi 起動

ifup wlan0

/etc/network/interfaces の設定により、以下が自動実行されます:

  1. wpa_supplicant が起動し WiFi AP に接続
  2. DHCP で IP アドレスを取得

接続確認

# WPA の接続状態(COMPLETED になること)
wpa_cli -i wlan0 status

# IP アドレスが表示されること
ifconfig wlan0

# インターネット接続確認
ping -c 3 8.8.8.8

4. トラブルシューティング

AP が見つからない(SCANNING のまま)

# 検出可能な AP を確認
iwlist wlan0 scan 2>&1 | head -30

# 対応周波数帯を確認
iwlist wlan0 frequency 2>&1

CanMV K230 搭載の WLAN は 2.4GHz のみ対応です。5GHz の SSID を設定していないか確認してください。

Buffalo ルーターの場合

SSID パターン 周波数帯 K230 対応
Buffalo-A-xxxx 5GHz 非対応
Buffalo-G-xxxx 2.4GHz 対応

4-way ハンドシェイク失敗(DEAUTH reason 15)

dmesg | grep -iE "assoc|auth|4way|eapol|reason|handshake" | tail -20

WLC_E_DEAUTH_IND reason 15 が表示される場合、PSK が正しくありません

よくある原因:

  • パスワードの入力ミス
  • SSID を変更したが PSK を再生成していない(wpa_passphrase の出力は SSID に依存するため)

修正:

cat > /etc/wpa_supplicant.conf << 'EOF'
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
EOF

# 正しい SSID で PSK を再生成
wpa_passphrase "YourSSID" "YourPassword" | grep -v '#psk=' >> /etc/wpa_supplicant.conf

# WiFi 再起動
ifdown wlan0
ifup wlan0

# 確認
wpa_cli -i wlan0 status
ifconfig wlan0
ping -c 3 8.8.8.8

再起動後に自動接続されない

/etc/network/interfacesauto wlan0 があることを確認してください。 起動スクリプト /etc/init.d/S40networkifup -a を実行するため、 auto wlan0 が記述されていれば自動起動します。

デバッグログの確認

# wpa_supplicant の詳細ログ
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -d

# WiFi 関連の dmesg
dmesg | grep -i -E "wifi|wlan|wireless|sdio|mmc|cfg80211|bcmdhd"