気の向くままに辿るIT/ICT/IoT
webzoit.net
ハードウェア

USB WiFiで復活したRaspberry Pi 3B+内蔵無線LANの謎

ウェブ造ホーム前へ次へ
サイト内検索
カスタム検索
Raspberry Piって?

USB WiFiで復活したRaspberry Pi 3B+内蔵無線LANの謎

USB WiFiで復活したRaspberry Pi 3B+内蔵無線LANの謎

2018/12/11

BUFFALO 11n対応 11g/b 無線LAN子機 親機-子機デュアルモード対応モデル WLI-UC-GNM2

 ある日突然、その時はやってきました。

 Raspberry Pi 3 Model B+の内蔵無線LANが何をどうしても繋がらなくなったのです。

 起動メッセージを見ているとBluetoothやdhcpcd、hciuartもエラーになることがあります。

 ホントいろいろ確認しまくったし、試しまくりましたけど、いい加減疲れ切ったので諦めることにして、同じものが、2個も余っているUSB Wifiアダプタ(ドングル)を使ってみることにしました。

 やったことと言えば、このドングルに対応のファームウェアfirmware-iwlwifiをインストール、Wi-FiアダプタをラズパイのUSBポートに挿しただけです。

 そしたら、拍子抜けするほど、LANケーブルを挿す程度に、あまりに、あっさり、当たり前につながって脱力...してたら、なんとRaspberry Pi 3 Model B+の内蔵無線LANも復活・生還したという世にも奇妙な話。

但し書き

 ただし、WiFiアダプタは結構電流を消費する上、Raspberry Piの電源問題もあるのでUSB HDDからブートする場合は、WiFiアダプタは、起動後にラズパイのUSBポートに接続しないとそもそも起動しません。

 USBメモリブートの場合は、起動時からWiFiアダプタを付けていても大丈夫でしたが、無線アダプタの電流消費を考慮すると起動後に接続した方が、ラズパイに優しいかもしれません。

 尚、USBメモリブートなら起動時接続でも起動後接続でも、USB HDDブートだと起動後接続なら、単にラズパイのUSBポートから分岐しているだけと思われるUSBハブのバスパワーでもキーボードとマウスも併せて接続した状態で無線接続できましたが、USB HDDの場合、モニタをOFFして再度ONするとスクリーンセーバーが停止したまま、解除できなかったりしたので特にですが、USBメモリでもセルフパワーにするか、それよりも、ラズパイUSBポート直の方がよいような気がします。

raspi-config

 もちろん、raspi-configでWiFiを有効化、各種ローカライゼーション設定は済ませてありました。

wpa_supplicant

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
 
network={
  ssid="SSID"
  psk=PASSPHRASE
  scan_ssid=1
  key_mgmt=WPA-PSK
  pairwise=CCMP
  group=CCMP
}

 加えて、疲れ果てるほど試しまくった時にwpa_supplicant.conf(wpa_supplicant-wlan0.conf)は作っておいたんですけどね。

 WPA2でアクセスポイントはステルス設定している為、こんな感じでRaspberry Pi 3B/3B+固有なのは、[GROUP=netdev]と[country=JP]。

 systemctlも多用しましたが、wpa_supplicantに@デバイスを付けたwpa_supplicant@wlan0なんてサービスもあったのに気づき、wpa_supplicant.service含め、眺めていたら、[wpa_supplicant-wlan0.conf]がないなんて逆ギレしてて...。

 おいおい、と思いつつも、/etc/wpa_supplicant以下にwpa_supplicant.confをコピーしたwpa_supplicant-wlan0.confも置くも内蔵無線LANについては、それでもつながらずでしたが。

 尤も後述のように本来、不要な作業のようです。

これだけでいけるはず

 ラズパイ(Raspbian Stretch)がまともな状態なら、内蔵無線LANにせよ、USB WiFiアダプタにせよ、前段までの設定で十分なはずです。

 現に、後述の通り、Raspberry Pi 3 Model B+の内蔵無線LANで接続可能なRaspbian Stretchが入ったUSBメモリが1本あるのですが、前段以外の設定はなされていない状態で起動するとwlan0のみが、USB 無線アダプタ用のファームウェアをインストール、無線アダプタを接続して起動すると自動的に内蔵無線LAN用とUSB WiFiアダプタ用と思われるwlan0とwlan1が無線に接続され、IPアドレスも付与されています。

/etc/network/interfaces.d/

auto lo
iface lo inet loopback
 
auto eth0
allow-hotplug eth0
iface eth0 inet manual
 
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf  /etc/wpa_supplicant.conf

 何をやっても内蔵無線LANに接続できないUSBメモリとUSB HDDも同様かとは思うものの、もしかしたら、直前に/etc/network/interfaces.d/に任意の名称の[myconf]をRaspbian Stretchで"iface...のStretch版に倣って追記したままですが、もしかしたら結構重要なのかも?

 この記事を書いてから、もう1つのUSB HDDでもUSB WiFiアダプタを使うべく、確認すると既に設定していた内容は、少し違って、こんな風に書いてありますが、一応、wpa_supplicant-wlan0.confも作成したものの、wpa_supplicant.confでいけている...ので、やはり、これ自体なくてもいけそう?

 !!!なんと気づいてみれば、不思議なことに問題のUSB HDDもUSBメモリも何れもUSB WiFiアダプタが機能したのに釣られたかのように内蔵無線LANも機能した模様で、やはり、wlan0とwlan1が同じSSIDに接続、別々のIPが振られています。

 何れもwlan1の設定はしていないのに。

 もしかしてラズパイ3B+内蔵無線LANには、firmware-iwlwifiがいるのか...とも思いましたが、内蔵無線LANにつながるUSBメモリでは、入っていない...。

 あ”USB WiFiアダプタを外しておいてもRaspberry Pi 3 Model B+内蔵無線LANでつながった!...なんだこの挙動...。

 なんだか、やはり、firmware-iwlwifiの動きに引っ張られてラズパイ内蔵無線LANも生き返った模様...。

 尚、現在メインで使っている64bit無線LAN内蔵ノートパソコンは、買ってすぐWindows入りのHDDを使うことなく、先代ノートパソコンで換装して使っていたFreeDOS/NetBSD/Debian Stretch(何れも32bit)入りのSSDに換装、BIOS設定で無線LANを有効にし、内蔵無線LAN用ファームウェアは、今回のドングル同様、[firmware-iwlwifi]をインストール、wpa_supplicant.confを書いただけで、あっさりつながりました。

 その後、なぜかネットワークの相性があわなそうなNetBSDを削除、追加インストールした64bitのDebianもファームウェアのインストールと32ビットのDebianからコピーしたwpa_supplicant.confで、あっけないほどに、あっさり内蔵無線LANでつながった記憶があります。

...
...
 
auto lo
iface lo inet loopback

 そんな32ビットと64ビットDebian Stretchを確認してみると/etc/network/interfaces.d/以下にファイルはなく、/etc/network/interfacesには、[source /etc/network/interfaces.d/*]行以外に加えてこの2行がありましたが、追記した覚えはありませんし、無線接続してifconfigで確認するとwlan0ではなく、wlp1s0となっているものの、wlp1s0を別途指定した記憶はなく、自動的に割り当てられたようです。

 ん...?/etc/dhcpcd.confなんてないな.../etc/dhcp/dhclient.confはあるも、デフォルトでいじった形跡はなし...Raspbian Stretchも内蔵無線LANが機能するUSBメモリでは、前者、後者ともにあるも、どちらも、やはり、編集した形跡はなく、デフォルトのまま。

憶測

 一応解決はしたものの...。

 起動メッセージを見ているとdhcpcd関連でコケることも多いような...そこにはdbusも1枚噛んでいるような...。

 自身は、経験的にラズパイと相性が良かったシリコンパワーのUltima U02シリーズのUSBメモリ2本、古いパソコンの内蔵HDDとHDDケースから成るUSB HDDにRaspbian Stretchを入れていますが、何れも内蔵無線LANに接続できていたように思います。

 ところが、USBメモリ1本とUSB HDDが内蔵無線LANがつながらない一方で残るUSBメモリ1本は、今尚、内蔵無線LANにも、難なくつながります。

 このUSB HDDは、結構前に準備したものでしたが、不調かな?との思いから、イメージから入れ直し、USBメモリ1本はつい先日買って届いたので、やはり、イメージには、2018-11-13-raspbian-stretch-lite.imgを使っています。

 11/18に届いたラズパイ3B+セットよりも前に仕込んでおいた残るUSBメモリ1本のRaspbian Stretch(自作スマートスピーカー用)は、今尚、内蔵無線LANでもあっさりつながるので覚えてはいないのですが、先のバージョンの直前のイメージだった可能性大です。

 これらを考え合わせるとイメージファイルのバージョンの違いか?と思わなくもありませんが、今、内蔵無線LANにつながらない2つも当初は、確かつながっていた気がするのでapt update/apt upgradeに起因するのか...。

 ただ、今尚、内蔵無線LANにつながるUSBメモリのStretchもすっかり習慣づいているapt update/apt upgradeはしたはず...、これが気のせいか、イメージのバージョン間で何か変更があり、両イメージでは、apt update/apt upgradeした際の挙動が異なるとか...。

 さすがに、現在、内蔵無線LANにつながるUSBメモリのStretchで改めてapt update/apt upgradeしてみる気にはなれませんが...。

 となるとdhcpcdに起因するのか...以前、Stretchのクリーンインストールしても、JessieからStretchにアップグレードしてもDHCPクライアントがなくなったことがあってdhcpcd5をインストールすることで解決したことがあり、apt-cache searchしてもdhclientやdhcpcdパッケージはなく、dhcpcd5だったことでちょっと悩んだのですが、dhcpcdが鬼門か...?([2018/12/13追記]あ、いつの間にかリポジトリにdhcpcdが復活してる...事態収拾中か...?)

 他方で解決したという情報やこれまでの手順でなんともないという情報もありますが...ハマった身からすると、にわかには信じがたい...。

2019/01/17

 ぬぬ...何の問題もなかった自作スマートスピーカーで今日までいけていたラズパイ3B+内蔵無線LAN、apt update/apt upgradeしてみたのが原因か、タイミング的に以後、つながらなくなりました。

 仕方なく先のUSB無線LANアダプタを装着しているのですが...

 当初、WiFiが落ちているとは気づかず、何度かあれあれ?と再起動を繰り返したからか、iwconfigを確認するとwlan0/wlan1がちゃんとアクセスポイントに接続されている...。

 つまり、冒頭のBUFFALO USB WiFIアダプタもRaspberry Pi 3 Model B+内蔵無線LANも繋がっている...。

 が、そういえば、このUSBメモリには、firmware-iwlwifiパッケージを入れていない...確認しても入っていない...のにBUFFALO USB WiFiアダプタも生きている...。

 その状態でUSB WiFiアダプタを外すと...つながる...、そのままスマートスピーカーを再起動してみると...内蔵無線LANでつながった...。

 もしかして、もはやRaspbian/DebianにおいてBUFFALO WLI-UC-GNM2には、firmware-iwlwifiパッケージは要らない?内蔵無線LANと組み合わせると要らなくなる?お互い持ちつ持たれつ!?

 まぁ、2度も再現したとなると、内蔵無線LANが繋がらない時は、完全に壊れていなければ、やっぱり、USB WiFiアダプタを使うと、その内、内蔵無線LANも復帰するってことで良さげ...。

 ってUSB WiFiアダプタならどれでもいけるのだろうか...?

 謎は深まるばかりなり...。

Stretch1台はRaspberry Pi 3B+内蔵無線LAN、2台はUSB WiFiアダプタ

 結果、Raspbian Stretchを入れてある3台の内、USBメモリ1本はRaspberry Pi 3 Model B+内蔵無線LANに、もう1本のUSBメモリとUSB HDDの2つはUSB WiFiアダプタを使って接続するに至っています。

 と思いきや、前述の通り、他の無線用ファームウェアに引っ張られる恰好でRaspberry Pi 3 Model B+内蔵無線LANでつながりました。

 ここのところ、すっかり、Debian、Raspbianづいてる自身も、さすがに他のディストロを検討しようかと思ったくらい、疲れたし、バグだとは思いますが、原因がハッキリしていなさそうな点が気になります...。

 内蔵無線LANと言い、USB HDDブートと言い、これだけ2転3転すると記事まとめにくっ...。

おまけ

 ちなみにパソコンで使っていた時は、結構、熱くなってたWLI-UC-GNM2もラズパイでは、別に...もしかしてPC側の問題だった...?

ウェブ造ホーム前へ次へ