我是一名 Ubuntu 新手,我的 wifi 卡有点问题。这是我的设置:我在一台第 7 代 Thinkpad X1 Carbon 上安装了 Windows 10 和 Ubuntu 18.04 双启动系统。2020 年 1 月,我第一次在机器上安装 Ubunutu 时,它无法检测到无线网卡。我尝试安装正确的驱动程序,但没有任何效果,所以我的一位朋友自己编写了一个驱动程序,让 wifi 正常工作。(不幸的是,我没有他编写的副本。)
上周末,我尝试将蓝牙键盘连接到笔记本电脑,但这似乎干扰了 wifi 连接,使其速度大大降低。我没有想到我的朋友编写了一些奇怪的驱动程序,而是尝试按照以下帖子修复蓝牙问题:wifi 和蓝牙不能同时工作。具体来说,我尝试过
sudo tee /etc/modprobe.d/iwlwifi-opt.conf <<< "options iwlwifi bt_coex_active=N"
然后重启。这似乎没用,所以我通过以下方式删除了它
sudo rm /etc/modprobe.d/iwlwifi-opt.conf
这些命令导致互联网连接非常不稳定——连接会断断续续地恢复。经过一番搜索,我偶然发现了这篇文章 升级到 15.04 后,Intel 7260 + iwlwifi 的无线不稳定,这似乎与我的问题几乎完全吻合。因此,我尝试从 [wireless.wiki.kernel.org/en/users/drivers/iwlwifi] 安装适当的驱动程序,但没有解决任何问题。但是,那篇帖子让我想到https://forum.ubuntu-fr.org/viewtopic.php?pid=22251520#p22251520——当我跑步的时候
sudo apt install git build-essential
git clone https://git.kernel.org/pub/scm/linux/kernel/git/iwlwif/backport-iwlwifi.git
cd backport-iwlwifi
make defconfig-iwlwifi-public
sed -i 's/CPTCFG_IWLMVM_VENDOR_CMDS=y/# CPTCFG_IWLMVM_VENDOR_CMDS is not set/' .config
make -j4
sudo make install
cd /lib/firmware
sudo wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/iwlwifi-9000-pu-b0-jf-b0-38.ucode
sudo wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/iwlwifi-9260-th-b0-jf-b0-38.ucode
Ubuntu 完全停止检测任何 wifi 适配器,所以现在我不知道该怎么办。
以下是通过查看类似帖子发现的一些重要的命令的输出:
输出自lspci -knn | grep Net -A3; rfkill list
:
00:14.3 Network controller [0280]: Intel Corporation Device [8086:02f0]
Subsystem: Intel Corporation Device [8086:0030]
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi
0: tpacpi_bluetooth_sw: Bluetooth
Soft blocked: no
Hard blocked: no
1: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
输出自dmesg | grep iwl
:
[ 5.317830] Loading modules backported from iwlwifi
[ 5.317831] iwlwifi-stack-public:master:8324:9176b151
[ 5.385415] iwlwifi 0000:00:14.3: enabling device (0000 -> 0002)
[ 5.401853] iwlwifi 0000:00:14.3: Direct firmware load for iwl-dbg-cfg.ini failed with error -2
[ 5.402022] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-jf-b0-55.ucode failed with error -2
[ 5.402116] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-jf-b0-54.ucode failed with error -2
[ 5.402211] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-jf-b0-53.ucode failed with error -2
[ 5.402222] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-jf-b0-52.ucode failed with error -2
[ 5.402232] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-jf-b0-51.ucode failed with error -2
[ 5.402454] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-jf-b0-50.ucode failed with error -2
[ 5.402465] iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-jf-b0-49.ucode failed with error -2
[ 5.404064] iwlwifi 0000:00:14.3: TLV_FW_FSEQ_VERSION: FSEQ Version: 43.2.23.17
[ 5.404066] iwlwifi 0000:00:14.3: Found debug destination: EXTERNAL_DRAM
[ 5.404067] iwlwifi 0000:00:14.3: Found debug configuration: 0
[ 5.404286] iwlwifi 0000:00:14.3: loaded firmware version 48.13675109.0 QuZ-a0-jf-b0-48.ucode op_mode iwlmvm
[ 5.404304] iwlwifi 0000:00:14.3: Direct firmware load for iwl-debug-yoyo.bin failed with error -2
[ 5.442441] RIP: 0010:iwl_op_mode_mvm_start+0xa8/0xb50 [iwlmvm]
[ 5.442479] _iwl_op_mode_start.isra.6+0x47/0x80 [iwlwifi]
[ 5.442489] iwl_opmode_register+0x88/0xe0 [iwlwifi]
[ 5.442510] __init_backport+0x3d/0x1000 [iwlmvm]
[ 5.442565] Modules linked in: iwlmvm(OE+) snd_soc_core aesni_intel(+) snd_compress ac97_bus snd_pcm_dmaengine btusb crypto_simd mac80211(OE) btrtl cryptd libarc4 btbcm glue_helper drm_kms_helper fjes(-) uvcvideo btintel iwlwifi(OE) intel_cstate snd_hda_intel videobuf2_vmalloc drm bluetooth videobuf2_memops snd_intel_dspcfg videobuf2_v4l2 snd_hda_codec videobuf2_common snd_hda_core snd_seq_midi videodev snd_seq_midi_event thinkpad_acpi(+) snd_hwdep processor_thermal_device i2c_algo_bit intel_lpss_pci(+) ecdh_generic cfg80211(OE) fb_sys_fops intel_lpss nvram intel_wmi_thunderbolt serio_raw wmi_bmof input_leds mc ledtrig_audio ecc snd_pcm snd_rawmidi intel_rapl_common mei_me idma64 syscopyarea compat(OE) virt_dma mei sysfillrect ucsi_acpi sysimgblt intel_soc_dts_iosf typec_ucsi snd_seq typec snd_seq_device snd_timer snd int3403_thermal soundcore int340x_thermal_zone mac_hid int3400_thermal acpi_thermal_rel acpi_pad acpi_tad sch_fq_codel parport_pc ppdev lp parport ip_tables x_tables autofs4
[ 5.442623] RIP: 0010:iwl_op_mode_mvm_start+0xa8/0xb50 [iwlmvm]
输出自lspci -nnk | grep 0280 -A3
:
00:14.3 Network controller [0280]: Intel Corporation Device [8086:02f0]
Subsystem: Intel Corporation Device [8086:0030]
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi
我很乐意发布修复此问题所需的更多输出,但目前我不确定什么才是有用的,所以请告诉我。感谢您的帮助。
答案1
在我们找到更多信息之前,这只是部分答案。
Ubuntu 完全停止检测任何 wifi 适配器,所以现在我不知道该怎么办。
让我们撤消禁用无线的步骤。从终端:
cd backport-iwlwifi
sudo make uninstall
重启。现在无线网络可以正常工作了,尽管不太稳定?
sudo tee /etc/modprobe.d/iwlwifi-opt.conf <<< “选项 iwlwifi bt_coex_active=N”
我认为这个想法是为了让无线驱动程序和蓝牙共存。请尝试:
sudo tee /etc/modprobe.d/iwlwifi-opt.conf <<< "options iwlwifi bt_coex_active=Y"
也就是说,“是的,我确实希望 Wi-Fi 和蓝牙共存。”然后:
sudo modprobe -r iwlwifi
sudo modprobe iwlwifi bt_coex_active=Y
有沒有改善?
编辑:由于蓝牙频率与 2.4 gHz wifi 信道重叠,您可能会发现在 wifi 中仅使用 5 gHz 信道可以提高性能。由于大多数消费级路由器默认设置为对两个段使用相同的 SSID 或路由器名称,并且还启用了信道的自动选择,因此您的 wifi 很可能在 2.4 和 5 gHz 信道之间漫游。您可以通过将段重命名为不同的名称(例如 chili2.4 和 chili5 等)来避免这种情况。进行此更改后,连接到 chili5;也就是说,仅使用 5 gHz 信道。
您还可以采取几个步骤来优化无线连接。首先,检查路由器中的设置。首选 WPA2-AES;而不是任何 WPA 和 WPA2 混合模式,当然也不是 TKIP。其次,如果您的路由器支持 N 速度,那么在 2.4 GHz 频段使用 20 MHz 的信道宽度(而不是自动 20/40 MHz)可能会获得更好的连接,尽管它可能会影响 N 速度。我建议使用固定信道,1、6 或 11,而不是自动信道选择。此外,请确保路由器未设置为仅使用 N 速度;首选自动 B、G 和 N。进行这些更改后,重新启动路由器。
接下来,我建议明确设置你的监管范围。检查你的:
sudo iw reg get
如果您选择 00,则这是一个通用的设置。请在此处查找您的设置:http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2然后暂时设置一下:
sudo iw reg set IS
当然,如果不是冰岛,请替换您的国家代码。永久设置它:
sudo nano /etc/default/crda
将最后一行改为:
REGDOMAIN=IS
仔细校对,保存并关闭文本编辑器。
编辑2:让我们尝试更新固件文件。从终端:
wget http://mirrors.kernel.org/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.189_all.deb
sudo dpkg -i linux-*.deb
重新启动并让我们看到另一段粘贴内容:
ping -c10 www.ubuntu.com
dmesg | grep -e wlp -e iwl
编辑3:我建议您删除经常被证明会带来麻烦的 backport 包:
sudo apt purge backport-iwlwifi-dkms
重新启动并让我们听到结果。