Linux
 Computer >> コンピューター >  >> システム >> Linux

LinuxでWi-Fiが繋がらない?原因の切り分けと修正方法を徹底解説

LinuxでWi-Fiが繋がらない?原因の切り分けと修正方法を徹底解説

Linuxユーザーが直面しがちな大きな課題の一つがWi-Fiです。Wi-Fiドライバはカーネルに含まれていないことが多く、Intel製以外のWi-FiモジュールをLinuxで正常に動作させる際にはさまざまなトラブルが発生しがちです。この記事では、LinuxでWi-Fiが動作しないときに何が起きているのか、そしてその修正方法について詳しく解説します。

Wi-Fiの問題:ハードウェアかソフトウェアかを見分ける

Wi-Fi接続の問題には、ハードウェア起因とソフトウェア起因の2種類があります。ハードウェアの問題は比較的簡単に診断できます。ターミナルを開いて次のコマンドを入力するだけです。

ping localhost
LinuxでWi-Fiが繋がらない?原因の切り分けと修正方法を徹底解説

これは物理的なハードウェアが正常に動作しているかを確認するシンプルな方法です。localhostはNIC(ネットワークインターフェースカード)の回路をチェックするためのアドレスとして機能します。これが失敗する場合は、自分で修理するか専門業者に依頼するなど、ハードウェア側の対応が必要かもしれません。

pingが正常に返ってくるのにWi-Fiカードが表示されない場合は、おそらくソフトウェア側の問題でしょう。

Ubuntu ISOからドライバをインストールする

ディストリビューションがWi-Fiネットワークをまったく検出しない場合やエラーが出る場合は、Ubuntu ISOファイルからWi-Fiドライバをインストール(または再インストール)してみましょう。まず、使用しているUbuntuのバージョンに対応したISOをダウンロードします。別のデバイスでダウンロードするか、有線接続を使う必要があるでしょう。

ダウンロードしたISOをホームディレクトリに配置します。次にターミナルで以下のコマンドを実行し、ISOを仮想ドライブとしてマウントします。

sudo mkdir /media/cdrom
sudo mount -o loop ubuntu-*.iso /media/cdrom

ダッシュボードから「ソフトウェアとアップデート」を開き、新しいウィンドウで「CDrom with [ディストリ名とバージョン]」のチェックボックスにチェックを入れます。パスワードの入力を求められたら入力してください。

「追加のドライバー」タブをクリックし、「Wireless Network Adapter(無線ネットワークアダプター)」オプションを選択して「変更の適用」をクリックします。

問題1:デバイスが検出されない

無線デバイスがUbuntu(または他のディストリビューション)に認識されない場合は、ターミナルを開いて次のコマンドを入力します。

sudo lsusb

これはUSBタイプの無線カードやドングルを使用している場合のコマンドです。内蔵無線カードの場合は以下を使用します。

LinuxでWi-Fiが繋がらない?原因の切り分けと修正方法を徹底解説
sudo lspci

これらのコマンドの出力がスクリーンショットのような結果を返せば、Ubuntuがカードを認識できています。通常は「Network Controller」や「Ethernet Controller」という名前で識別されます。

かつては多くのLinuxディストリビューションで無線カードの認識に苦労していましたが、現在ではサポートが大幅に改善され、こうしたケースは珍しくなっています。

追加のコマンド

マシンが無線デバイスを認識しているかをテストするには、次のコマンドも使えます。あらかじめlshwのインストールが必要な場合があります。

sudo lshw -C network
LinuxでWi-Fiが繋がらない?原因の切り分けと修正方法を徹底解説

出力は次のようになります。

*-network
description: Wireless interface
product: PRO/Wireless 3945ABG [Golan] Network Connection
vendor: Intel Corporation

このようにシステムが無線カードを検出できていれば、後述の手順に従ってドライバ/モジュールをインストールできます。

問題2:ドライバモジュールが存在しない

lsusblspciコマンドが成功し、ディストリビューションが無線カードを認識しているなら、ファームウェアは動作しており、システムがカードの扱い方を知らないだけだと考えられます。ここで必要になるのがドライバ(モジュール)です。

再びターミナルに戻り、次のコマンドを入力します。

sudo lsmod

使用中のモジュール一覧が表示されます。モジュールを有効化するには、「modulename」の部分をチップセット名に置き換えて次のコマンドを実行します。

sudo modprobe modulename

たとえば無線チップセットが「RT2870」なら、次のように実行します。

sudo modprobe rt2800usb
LinuxでWi-Fiが繋がらない?原因の切り分けと修正方法を徹底解説

その後、再度lsmodコマンドを実行して、モジュールが正しくロードされたかどうかを確認しましょう。

起動時に自動的にモジュールを読み込む

稀なケースですが、モジュールが再起動後も保持されないことがあります。その場合は、永続的に読み込ませるよう設定できます。ターミナルに以下のコマンドを入力してください。

sudo nano /etc/modules

nanoテキストエディタが開くので、ファイルの最下部にモジュール名を追記して保存します。その後再起動し、無線カードがネットワークを検出できるか、通常どおり接続できるかを確認してください。

うまくいかない場合は、手順を繰り返してみてください。また、Ubuntuのオンラインドキュメントには役立つヘルプページが多数あります。さらに、ターミナル内蔵のヘルプも利用できます。

man lsusb
man lspci

問題3:DNS

DNSが原因となることはまれですが、それでも接続に問題が残る場合は調査する価値があります。ターミナルから次のコマンドを入力し、DNSがどこから取得されているかを確認します。

nmcli device show wlan1 | grep IP4.DNS

これによりルーターのLANアドレスが表示されます。表示されない場合は、「wlan1」をお使いの環境の無線インターフェース名に変更する必要があるかもしれません。次のコマンドでも名称を確認できます。

ip a s

情報が得られたら、次はルーターのLANアドレスへpingを送信します。成功したら、GoogleのDNSサーバーへのpingも試してみましょう。

ping 8.8.8.8

これらの結果から、DNSの問題箇所を特定できます。家庭やオフィス内のすべてのデバイスでページ読み込みエラーが発生しているなら、ルーターのDNSをGoogle DNSやOpenDNSに変更しましょう。具体的な手順はルーターメーカーに確認が必要ですが、一般的には管理ページ(多くの場合192.168.0.1など)にログインして行います。

DNSの問題がUbuntuだけで発生している場合は、NetworkManagerのGUIから次の手順で対処できます。

  • NetworkManagerを右クリック
  • 「接続の編集」を選択
  • 該当するWi-Fi接続を選択
  • 「IPv4設定」タブを開く
  • 方式を「DHCPアドレスのみ」に変更
  • DNSサーバーの欄に「8.8.8.8, 8.8.4.4」を追加(IPはカンマで区切り、スペースは入れない)
  • 保存して閉じる

最後に、マシンを再起動するか、ターミナルからNetworkManagerを再起動します。

sudo service network-manager restart

問題4:NetworkManagerが存在しない

NetworkManagerを削除してしまった、あるいは誤ってアンインストールしてしまったとしましょう。インターネットにもNetworkManagerにもアクセスできない非常に厄介な状況ですが、対処方法はあります。

パッケージがまだキャッシュに残っている場合は、ターミナルで次のコマンドを実行できます。

# Debian/Ubuntu
sudo apt install network-manager

# Fedora
sudo dnf install network-manager

# Arch Linux
sudo pacman -Syu network-manager

キャッシュをすでに削除済みの場合は、Ethernetケーブルをポートに差し込んで有線接続し、上記のコマンドを再度実行すればOKです。

最終手段として、上記のいずれもうまくいかない場合は、設定ファイルを直接編集する必要があります。ここではgeditを例にしていますが、お好みのエディタに置き換えてコマンドを調整しても構いません。

sudo gedit /etc/network/interfaces

以下のように内容を書き換えます。

auto lo
iface lo inet loopback

auto wlan0
iface wlan0 inet dhcp
wpa-essid myssid
wpa-psk mypasscode

そして、次のコマンドでインターフェースを再起動します。

sudo ifdown wlan0 && sudo ifup -v wlan0

Linux Wirelessサブシステムについてさらに詳しく知りたい方は、kernel.orgのWikiを参照してください。

Wi-Fiが正常に動作するようになったら、WindowsゲームをLinuxで遊ぶベストな方法をチェックしたり、Linuxでのファイル名変更のさまざまな手法を紹介したガイドを読んでみるのもおすすめです。


  1. Dellワイヤレスキーボードが動作しないときの直し方【原因別の対処法を徹底解説】

    ワイヤレスキーボードを使用中に突然動かなくなると、作業に遅れが生じてしまいます。Dellワイヤレスキーボードがパソコンで認識されない・動作しない場合、どうすればよいのでしょうか。 物理的に確認できる原因は数多くあり、それらを一つずつチェックすることで問題を解決できるケースも少なくありません。しかし、考えられる対策をすべて試しても改善しない場合は、デバイスドライバーに問題がある可能性が高いです。Windowsのドライバーが古いままだとキーボードにトラブルが起こり、デバイス自体や一部の機能を認識しなくなることがあります。 本記事では、Dellワイヤレスキーボードが動作しない問題の恒久的な解決策をご

  2. Windows 11でワイヤレスディスプレイが動作しないときの対処法

    Windowsには「ワイヤレスディスプレイ」という便利な機能が標準搭載されていることをご存じでしょうか。この機能を使えば、HDMIケーブル不要で、無線ネットワーク経由でPCの画面をサブディスプレイに映し出すことができます。大きな画面に簡単にコンテンツをキャストできるので、非常に重宝します。 スマホやタブレットの画面をテレビなどの対応デバイスにミラーリングできるように、Windows PCでも「ワイヤレスディスプレイ」機能を使えば同じことが可能です。 関連記事: Windows 10でセカンドモニターが認識されないときの直し方(2022年版) Windows 11にワイヤレスディスプレイを追加