ある日突然、その時はやってきました。
Raspberry Pi 3 Model B+の内蔵無線LANが何をどうしても繋がらなくなったのです。
起動メッセージを見ているとBluetoothやdhcpcd、hciuartもエラーになることがあります。
ホントいろいろ確認しまくったし、試しまくりましたけど、いい加減疲れ切ったので諦めることにして、同じものが、2個も余っているUSB Wifiアダプタ(ドングル)を使ってみることにしました。
やったことと言えば、LANケーブルつないで、このドングルに対応のファームウェアfirmware-iwlwifi(firmware-ralinkか、firmware-realtekだったかも)をインストール、Wi-FiアダプタをラズパイのUSBポートに挿しただけです。
そしたら、拍子抜けするほど、LANケーブルを挿す程度に、あまりに、あっさり、当たり前につながって脱力...してたら、なんとRaspberry Pi 3 Model B+の内蔵無線LANも復活・生還したという世にも奇妙な話。
ん?また、内蔵無線LANがつながらなくなった...同じ方法で...。
と思ったら、LANケーブルつないでapt update/upgradeしてrebootしただけで内蔵無線LANが復活しました...。
当時もこの方法でいけたのかどうかについては当然ながら、今となっては確認しようもありません。
あ?また、内蔵無線LANがつながらなくなった...なぜ?
と思ったら、気づけば、室内34度前後、今度は、暑すぎた模様で他に何をせずとも冷房をつけて31度あたりになった時点でつながるようになりました。
尚、先週も今回もネットにつながらなくなったのは、リビングにおいてある自作スマートスピーカー(Raspberry Pi 3 Model B+の内蔵無線LAN)です。
他方、今回は、つながるにはつながっていたものの、部屋でノートPCと共にPCとしているラズパイ(3B+)も使っていたのですが、ノートPCは大丈夫も、ラズパイPCについては、こちらにも異変がありました。
というのも内蔵無線LAN、有線LANともにgoogleなど検索サイトまではそこそこながら、任意のサイト表示がことごとく異様に遅くなったり、一時的にリポジトリが見つからないなどでapt update/upgradeに失敗したりする症状に見舞われました。
これもクーラーが効いてきた時点で回復しました。
ネットワーク系もさることながら、どうやらラズパイ自体、酷暑、猛暑は苦手な様子、人間、動植物共々、外だけではなく、室内での熱中症にも気をつけた方がよさそうです。
久々にまた、内蔵無線LANがつながらなくなった...今度は逝ったかも...。
しかもラズパイ3B+が2台...。
更にこの2台、複雑怪奇な状況に...。
幸いUSB WiFi子機が2つあったので、つないだら、2台とも、これでつながった...、が、ssh接続すると1台は、接続はできるものの、すぐにフリーズ、端末を閉じて再度、sshするとつながる感じのとぎれとぎれ、もう1台は、それ以上に頻度が高く、切れたり、つながったりを頻繁に繰り返す...。
この時、ラズパイ内蔵WiFiについては、前者は、全くつながらず、後者は、つながらないことが大半も、たまーにつながり、IPが振られることもある程度...。
前者をスマートスピーカーで使い、後者をサブのデスクトップパソコンとして使っていた(滅多に使っていなかった)が、どっちもどっちも、これらを入れ替えてみることにしたのですが、後者はLANケーブルをつないで有線で使っている為、問題ない一方、内蔵無線LANにのみ依存してきたスマートスピーカー用途の方は、当然、どちらにせよ、まともに機能しません。
ん?一方は、しばらく時間が経ってから見てみたら、USBドングルなしで内蔵無線LANが機能していてIPも振られた状態になっているが、復活したか!?と思いきや、次に確認した時には、落ちている...。
ちなみに、デスクトップPC用途の方は、SSDブートで今のところ、WiFi以外、システムに不調はなさ気。
尚、ラズパイ3B+を買ったのは、2018年11月と12月、共に約2年、やはり、ラズパイの内蔵無線LANはウィークポイントっぽい。
3B+も、それ以外は大丈夫みたいですし、無線LANは装備されていないものの、約5年、常時接続ではないながらもサーバとして使っているRaspberry Pi 2 Model Bも、今尚快調で健在。
他方、タイミング的には、アクセスポイントにしていた無線LANルータが壊れたかに見え、新たに買ったものの、対応台数が足りなかったのか、mDNS周りに起因するのか、全てつながらなかったことから、対応台数を増やすことができそうだとの思いから、実際には壊れていなかったので新旧2台を別個のSSIDでアクセスポイントとしたあたりから、おかしくなった気がしなくもない...。
が、どれも一方にしか接続させていないため、関係ないか。
あ、WiFiドングルでの接続は安定しました...。
いろいろやりすぎた結果、スクショも撮ってなければ、状況もメモってなかったので、うまく説明はつきませんが...。
記憶にあるのは、killall wpa_supplicantした途端フリーズしたこと、しかし、端末を閉じて改めて開き、WiFiがつながることを祈りつつ、ssh接続をできるまで試みた、それまでsshできていたなら、WiFiさえつながれば、sshはできるはず。
自身が、その間、無駄に何度もUSBメモリを他のパソコンでマウントしてboot以下に空のsshファイルを作成したり、起動後、どうにかつながる状態でraspi-configを実行、SSHを有効にしたりしたことは内緒。
systemctl status wpa_supplicantから、新たにwpa_suppicant -B -iwlan0 -c /etc/wpa_suppicant/wpa_suppicant.confするためには、どうやら/var/run/wpa_supplicantにあるwlan0を消す必要がありそうだったのでrm。
/etc/wpa_suppicantに相応のwpa_suppicant.confがある状態でwpa_suppicant -B -iwlan0 -c /etc/wpa_suppicant/wpa_suppicant.confした後、(dhcpcdでもdhcpcd5でもなく)dhclient wlan0してIPを割り当てました。
尤も、これをやったところで一時的にIPが振られるだけで不調の内蔵無線LANの完全復活には至りませんでしたが...。
自身は、/var/run/wpa_supplicantのp2pなんちゃらも消してしまったのですが、それでなのか、systemctl statusで、その件について文句言われれてる気もしますが、今までそんなp2pなんちゃらなんて見たことなかったので無視することにしました。
そんなこんなでwlan0(内蔵無線LAN)じゃなくてwlan1(USB WiFiアダプタ)が安定するようになったのですが、WiFiがつながりにくくなり、結果、ssh接続もなかなかできずハマった感もいっぱいも、killall wpa_supplicantが功を奏した可能性が高い?
尚、外国語圏の情報では、以前からファームウェアのバグがあったようで過去バージョンにしたら大丈夫だったみたない話もあるみたいなので内蔵無線LANそのものが逝ったのではない、ファームウェアのバグであることを祈りつつ、更新を待ってみることにします。
完全復活ではないものの、Raspbianが勝手に喋りだした原因はOrca!?なんてこともあってデスクトップ用の方をイメージから焼き直したら、WiFiドングルなしでもLANケーブルなし、もしくは接続すれば、内蔵無線LANにIPが振られることが多くなってきました。
このことから、内蔵無線LANが壊れているというよりは、ファームウェアに起因する可能性が高いような気もします。
尚、焼き直したイメージは、Raspberry Pi OSのRaspberry Pi OS Lite(Release date: January 11th 2021/Kernel version: 5.4/Size: 438MBです。
ふと確認してみるとfirmware-brcm80211というラズパイの内蔵無線LAN用っぽいファームウェアがアップグレードできるようだったのでしてみましたが、やはり、内蔵無線LAN wlan0は、つながらず...。
先日のようにやってみてもダメ、が、ちなみにp2p-dev-wlan0は復活していました...。
更に、が、これとwlan0を/var/run/wpa_supplicantから削除してもダメだったものが、何度かやる内、p2p-dev-wlan0でなく、p2p-dev-wlan1がある(自動生成された)ことがあり、この時にwlan0を削除、wpa_supplicant -B -iwlan0...してdhclient wlan0したらいけました。
と言っても、やはり、IPが割り振られるのは一時的なものですが...。
sshログインした後、何もしなくてもフリーズ、そのフリーズ画面をさておき、改めて端末をタブで開いたり、新規で開いたりすれば、すんなりssh接続できるという謎な現象も出てくるようになりましたが、一体、なぜ...。
(無線LANドングルは外し、)LANケーブルを接続しつつ、killall wpa_supplicant、sudo wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.confし、再起動すれば、安定してwlan0にもIPが振られるようになりました。
LANケーブルを外して再起動するとwlan0にIPが振られず、ssh接続できないという状況に。
というか、別途、無線LAN USBドングルを使ってもそっちもつながらなくなりました...。
あー、スマートスピーカーだけに無線だけで運用したい...。
あ、これは必要かどうかわからないけど、一応、LANケーブルを接続しつつ、killall wpa_supplicant、sudo wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.confしておきます。
次に/etc/network/interfaces.d/に任意の名称のファイルwlan0.confを置いて、このように書いてラズパイを再起動したら、LANケーブルも他のWi-Fiドングルも接続せずに内蔵無線LANだけでいけたっぽい。(2回再起動して2回ともIPが振られました)。
この方法があるのもinterfacesファイルからinterfaces.dディレクトリに移行したののも知ってたけど...、あー、/etc/network/interfacesには、書いてたか...、これが、/etc/network/interfaces.dに移行したことで有線は要らないけど無線については、ファイルの追加が必須になったってことっぽい?
でも、この方式になったの極々最近ってわけじゃないよね?
謎だけど、内蔵無線LANだけでできたからいっか。
ただし、WiFiアダプタは結構電流を消費する上、Raspberry Piの電源問題もあるのでUSB HDDからブートする場合は、WiFiアダプタは、起動後にラズパイのUSBポートに接続しないとそもそも起動しません。
USBメモリブートの場合は、起動時からWiFiアダプタを付けていても大丈夫でしたが、無線アダプタの電流消費を考慮すると起動後に接続した方が、ラズパイに優しいかもしれません。
尚、USBメモリブートなら起動時接続でも起動後接続でも、USB HDDブートだと起動後接続なら、単にラズパイのUSBポートから分岐しているだけと思われるUSBハブのバスパワーでもキーボードとマウスも併せて接続した状態で無線接続できましたが、USB HDDの場合、モニタをOFFして再度ONするとスクリーンセーバーが停止したまま、解除できなかったりしたので特にですが、USBメモリでもセルフパワーにするか、それよりも、ラズパイUSBポート直の方がよいような気がします。
もちろん、raspi-configでWiFiを有効化、各種ローカライゼーション設定は済ませてありました。
加えて、疲れ果てるほど試しまくった時に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アドレスも付与されています。
何をやっても内蔵無線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(firmware-ralinkか、firmware-realtekだったかも)がいるのか...とも思いましたが、内蔵無線LANにつながるUSBメモリでは、入っていない...。
あ”USB WiFiアダプタを外しておいてもRaspberry Pi 3 Model B+内蔵無線LANでつながった!...なんだこの挙動...。
なんだか、やはり、firmware-iwlwifi(firmware-ralinkか、firmware-realtekだったかも)の動きに引っ張られてラズパイ内蔵無線LANも生き返った模様...。
尚、現在メインで使っている64bit無線LAN内蔵ノートパソコンは、買ってすぐWindows入りのHDDを使うことなく、先代ノートパソコンで換装して使っていたFreeDOS/NetBSD/Debian Stretch(何れも32bit)入りのSSDに換装、BIOS設定で無線LANを有効にし、内蔵無線LAN用ファームウェアは、今回のドングル同様、[firmware-iwlwifi(firmware-ralinkか、firmware-realtekだったかも)]をインストール、wpa_supplicant.confを書いただけで、あっさりつながりました。
その後、なぜかネットワークの相性があわなそうなNetBSDを削除、追加インストールした64bitのDebianもファームウェアのインストールと32ビットのDebianからコピーしたwpa_supplicant.confで、あっけないほどに、あっさり内蔵無線LANでつながった記憶があります。
そんな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が復活してる...事態収拾中か...?)
他方で解決したという情報やこれまでの手順でなんともないという情報もありますが...ハマった身からすると、にわかには信じがたい...。
ぬぬ...何の問題もなかった自作スマートスピーカーで今日までいけていたラズパイ3B+内蔵無線LAN、apt update/apt upgradeしてみたのが原因か、タイミング的に以後、つながらなくなりました。
仕方なく先のUSB無線LANアダプタを装着しているのですが...
当初、WiFiが落ちているとは気づかず、何度かあれあれ?と再起動を繰り返したからか、iwconfigを確認するとwlan0/wlan1がちゃんとアクセスポイントに接続されている...。
つまり、冒頭のBUFFALO USB WiFIアダプタもRaspberry Pi 3 Model B+内蔵無線LANも繋がっている...。
が、そういえば、このUSBメモリには、firmware-iwlwifi(firmware-ralinkか、firmware-realtekだったかも)パッケージを入れていない...確認しても入っていない...のにBUFFALO USB WiFiアダプタも生きている...。
その状態でUSB WiFiアダプタを外すと...つながる...、そのままスマートスピーカーを再起動してみると...内蔵無線LANでつながった...。
もしかして、もはやRaspbian/DebianにおいてBUFFALO WLI-UC-GNM2には、firmware-iwlwifi(firmware-ralinkか、firmware-realtekだったかも)パッケージは要らない?内蔵無線LANと組み合わせると要らなくなる?お互い持ちつ持たれつ!?
まぁ、2度も再現したとなると、内蔵無線LANが繋がらない時は、完全に壊れていなければ、やっぱり、USB WiFiアダプタを使うと、その内、内蔵無線LANも復帰するってことで良さげ...。
って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側の問題だった...?