本文主要介绍如何在 Ubuntu Server 2204 上配置无线网卡,以及如何安装驱动。
环境描述
- System: Ubuntu 22.04.3 LTS
- USB Network Adapter: Realtek Semiconductor Corp. RTL8192EU 802.11b/g/n WLAN Adapter
查看网卡信息
这一步是为了确认网卡型号,以及是否被系统识别。
这里应该会列出一大堆硬件设备,无需理会其他的,我们只关注 WLAN Adapter 结尾的,如下图所示:
如果没有找到,那么有三种可能:一是 USB 口的问题,换一下 USB 口;二是网卡损坏了,这个换台 Windows 机器就能判断;三是网卡模式不对,这个可以 切换网卡模式。
接下来,我们需要查看各个网卡的名称,等下在配置网络的时候会用到。
结果如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:60:6e:45:c1:64 brd ff:ff:ff:ff:ff:ff inet 192.168.1.106/24 brd 192.168.1.255 scope global enp4s0 valid_lft forever preferred_lft forever inet6 fe80::a60:6eff:fe45:c164/64 scope link valid_lft forever preferred_lft forever 3: enp5s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether 08:60:6e:45:c1:65 brd ff:ff:ff:ff:ff:ff 4: enp6s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether 08:60:6e:45:c1:66 brd ff:ff:ff:ff:ff:ff 5: enp7s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether 08:60:6e:45:c1:67 brd ff:ff:ff:ff:ff:ff 6: wlx30b49eb80805: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether 30:b4:9e:b8:08:05 brd ff:ff:ff:ff:ff:ff
|
查看驱动信息
找到描述为 description: Wireless interface
的一项,然后看 configuration -> driver 是否显示为 rtl8xxxu
,如果是的话,说明系统已经自动加载了驱动,可以跳过下面的步骤,直接进行 网络配置。
网络配置
编辑网络配置文件
1
| sudo vim /etc/netplan/00-installer-config.yaml
|
将文件内容修改为如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| network: version: 2 renderer: networkd wifis: wlx30b49eb80805: dhcp4: yes optional: true access-points: "wifi-name": password: "wifi-password" enp4s0: dhcp4: no dhcp6: no optional: true addresses: - 192.168.1.106/24 nameservers: addresses: - 223.5.5.5 - 223.6.6.6 - 192.168.1.1 routes: - to: default via: 192.168.1.1 enp5s0: dhcp4: no dhcp6: no optional: true enp6s0: dhcp4: no dhcp6: no optional: true enp7s0: dhcp4: no dhcp6: no optional: true
|
重启网络服务
先进行配置检查
没问题的话直接敲回车确认,然后会自动应用新配置。
查看网络状态
等待一会儿,再次查看网络状态
如果看到 wlx30b49eb80805
这个网卡的状态为 UP
,并且有 inet
的地址,说明配置成功了,那么到这里就结束了。
但是
如果没有 inet
的地址,可以尝试重启网络服务,或者重启系统。
但是如果在重启之后,还是没有 inet
的地址,那么大概率是驱动的问题,可以尝试安装驱动。
安装驱动
安装依赖
1
| sudo apt-get install git linux-headers-generic build-essential dkms
|
下载驱动
1
| git clone https://github.com/Mange/rtl8192eu-linux-driver
|
编译并安装
1 2 3
| cd rtl8192eu-linux-driver sudo dkms add . sudo dkms install rtl8192eu/1.0
|
将系统自带驱动加入黑名单
1
| echo "blacklist rtl8xxxu" | sudo tee /etc/modprobe.d/rtl8xxxu.conf
|
系统启动时自动加载 rtl8192eu 驱动
1
| echo -e "8192eu\n\nloop" | sudo tee /etc/modules
|
避免新版系统热插拔后失效
1
| echo "options 8192eu rtw_power_mgnt=0 rtw_enusbss=0" | sudo tee /etc/modprobe.d/8192eu.conf
|
更新Grub和initramfs
1
| sudo update-grub && sudo update-initramfs -u
|
重启 systemctl 以重新生成 initramfs
查看驱动是否被正确加载
找到描述为 description: Wireless interface
的一项,然后看 configuration -> driver 是否显示为 8192eu
,如果是的话,说明驱动加载成功,直接进行 网络配置。
一些其他的问题
无法连接到wifi
需要检查下无线网卡是否启用,可以通过 ip a show
查看,如果没有 UP
的状态,可以通过 sudo ip link set wlx30b49eb80805 up
启用。
切换网卡模式
通过 lsusb -t
查看,如果是 Mass Storage
模式,那么就需要切换模式了,这个可以通过 sudo usb_modeswitch -KW -v 0bda -p 1a2b
来切换,其中 0bda
和 1a2b
是网卡的厂商ID和产品ID,可以通过 lsusb
查看。
重启后失效,可以通过修改 /usr/lib/udev/rules.d/40-usb_modeswitch.rules
文件来解决。
1 2
| # Realtek RTL8192EU Wifi AC USB ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="/usr/sbin/usb_modeswitch -KW -v 0bda -p 1a2b"
|