web-dev-qa-db-ja.com

RTL8821CE wifiドライバー-Ubuntu 18.04(カーネル4.15)でネットワークを一時停止または変更した後、接続できません

HPノートブックでUbuntu 18.04を使用しています。次を使用してドライバーをダウンロードしました。

git clone https://github.com/tomaspinho/rtl8821ce.git

インストールのREADMEファイルの指示に従いました。

コンピューターの再起動後、ドライバーは正常に機能しましたが、ワイヤレスネットワークを変更しようとしたり、コンピューターがサスペンド状態になると、network-managerが接続できなくなります。ネットワーク管理者はWi-Fiのssidを空中で見ますが、接続に失敗します。つまり、最初の接続でのみ機能します。

ネットワークマネージャーを再起動し、アンインストールして再インストールしようとしましたが、問題は解決しません。唯一の解決策はUbuntuを再起動することであり、それは私にとって非常に迷惑です。

この問題を解決するにはどうすればよいですか?

1
Seb

編集:ubuntu 18.10(uefi)の新規インストールは問題を永久に解決します。以下の手順に従う必要はありません。ubuntu18.10をインストールしてwifiモジュールをビルドするだけで問題なく動作するはずです。 、バージョン18.10で修正されたubuntu 18.04 LTSバージョンのいくつかのバグ

主な問題は、dkmsによってインストールされたwifiドライバーが、何らかの不明な理由で一時停止した後、自動的にリロードしないことです。

私のWIFIチップとしてRTL8821CEを持っていますSOマイカーネルモジュールIS名前付きAS8821ce

コマンドSudo -sを発行してrootとして端末ログインを開き、次のコマンドを発行します(Sudoとしてログインする代わりにrootを使用することもできます)

modprobe -r 8821ceおよび

modprobe -i 8821ce

これらのコマンドは、wifiモジュールをリロードし、一時停止後にwifiが再び機能します。

一時停止から再開するたびにこれらのコマンドを発行しないように、一時的な回避策を見つけました。

注意:

  1. この回避策は時々機能し、時々機能しない

  2. これは中断/再開を中断する可能性がありますが、サービスを無効にしてファイルを削除することで、以前の状態に簡単に戻ることができます。

手順は次のとおりです。

  1. 上記のコマンドを再開時に(一時停止ではなく)発行するスクリプトを作成します。

Sudo nano /etc/pm/sleep.d 20_anyname.sh(任意の名前を任意の名前に置き換えます)

スクリプトに次の行を入力します

#!/bin/sh

# This script Restarts rtl8821ce kernel modules
# Use this if your wifi not working after suspend/resume

case "${1}" in
        resume|thaw)
               Sudo modprobe -r 8821ce
               Sudo modprobe -i 8821ce
;;
esac

次にCTRL + Xを押し、yesと入力して変更を保存します

適切な権限が付与されていることを確認してください

Sudo chown root:root /etc/pm/sleep.d/20_anyname.sh

Sudo chmod 755 /etc/pm/sleep.d/20_anyname.sh

  1. Systemdサービスを作成するには

Sudo nano /etc/systemd/system/somename.service

次のテキストを入力してください

[Unit]
Description=Wifi Resume Service
After=sleep.target
After=hibernate.target
After=hybrid-sleep.target

[Service]
Type=oneshot
ExecStart=/path/to/your/script

[Install]
WantedBy=sleep.target
WantedBy=hibernate.target
WantedBy=hybrid-sleep.target

CTRL + Xで保存し、yesと入力してから入力します。

次に、適切な権限が付与されていることを確認してください

Sudo chown root:root /etc/systemd/system/somename.service

Sudo chmod 755 /etc/systemd/system/somename.service

  1. Sudo systemctl enable somenameを使用してスクリプトを有効にします

  2. 再起動して楽しむ

前に言ったように、いつかは機能し、いつかは機能しません。なぜそうなのか本当に分かりません。完全に機能するWi-Fiを使用するには、rtl8821ceはまだ新しいチップであるため、開発者が今後のカーネルにバグのないモジュールを追加するのを待つ必要があります。

最初にローカルWiFiネットワークを有効にしてから、ラップトップを一時停止します。さて、スクリプトが成功したかどうかを確認するには、再開直後に右上隅が表示され、どのような種類の無線LANサインも表示されない場合は行っても構いませんし、一目で無線LANサインが表示されたらスクリプトは失敗します。

エラーを表示するにはjournctl -u somename.service

1
Saurabh Singh

私はパビリオンでも同じ問題を抱えており、受け入れられた答えは私にはうまくいきません。

Ubuntu 18.04で、スクリプトを作成します。

Sudo vim /lib/systemd/system-sleep/wifi.sh

次をコピーして貼り付けます。

#!/bin/sh
case $1/$2 in
  pre/*)
    echo "Going to $2..."
    # Place your pre suspend commands here, or `exit 0` if no pre suspend action required
    ;;
  post/*)
    echo "Waking up from $2..."
    # Place your post suspend (resume) commands here, or `exit 0` if no post suspend action required
    modprobe -r 8821ce && modprobe -i 8821ce
    ;;
esac

次に、ユーザーに許可を与えます。

Sudo chmod a + x /lib/systemd/system-sleep/wifi.sh

準備完了.

0

Lenovo Ideapad330でも同じ問題が発生しました。同じワイヤレスチップセット、およびサスペンド後に再開するときの同じ問題。

GitHubの8821ceドライバーのREADME を読むとき、tomaspinhoは考えられる問題、特に「PCIe Activate State Power Management」について話します。

私は彼の推奨事項に従い、次のパラメーターをgrubコマンドラインに追加しました

pci=noaer

これで、サスペンド後にワイヤレスの問題はなくなりました。

0
benoit mordac