如何让 USB wifi 在重启后正常工作?

use*_*012 7 wireless wireless-access-point

我有一台装有 Win 7 和 Ubuntu 12.04 以及默认 GRUB 的台式电脑,此外,我还插入了一个 WiFi USB 适配器,它会自动连接到我的个人 WiFi。

\n

我的问题是这样的:

\n

当我启动到 Win 7 时,wifi 工作正常,然后我重新启动到 ubuntu,wifi 不会自动工作。如果我拔出并再次插入 USB-wifi,问题就解决了。

\n

奇怪的是,如果我从 Ubuntu 重新启动到 Ubuntu(并且 wifi 工作正常),它会自动连接。如果我从 ubuntu 重新启动到 ubuntu 并且 wifi 不工作,它不会自动连接。

\n

因此,在我通过 GRUB 启动到 Windows 7 的那一刻,似乎有“东西”把事情弄乱了。

\n

\xc2\xbf如何解决这个问题?我经常从一个系统更换到另一个系统,所以每次插入和拔出 USB 是相当烦人的。

\n

硬件信息: \nUSB WiFi 适配器:TP-Link TL-WN321G V4 使用芯片组:“ID 148f:2070 Ralink Technology, Corp. RT2070 无线适配器”(从 $ lsusb 获取)它通过驱动程序工作:rt2800usb

\n

这是 2013 年 1 月 23 日全新安装,完全是最新的。自从 12.04 发布以来我就遇到了这个问题,12.10 无法解决它。

\n

当 USB wifi 不工作时,它仍然检测到它:

\n
$ lsusb\nBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub\nBus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub\nBus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub\nBus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub\nBus 002 Device 003: ID 046d:c52f Logitech, Inc. Wireless Mouse M305\nBus 002 Device 004: ID 4971:ce04 SimpleTech \nBus 002 Device 005: ID 04cf:0022 Myson Century, Inc. OCZ Alchemy Series Elixir II Keyboard\nBus 002 Device 006: ID 148f:2070 Ralink Technology, Corp. RT2070 Wireless Adapter\n
Run Code Online (Sandbox Code Playgroud)\n

然后我拔掉插头并再次插入:

\n
$ lsusb\nBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub\nBus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub\nBus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub\nBus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub\nBus 002 Device 003: ID 046d:c52f Logitech, Inc. Wireless Mouse M305\nBus 002 Device 004: ID 4971:ce04 SimpleTech \nBus 002 Device 005: ID 04cf:0022 Myson Century, Inc. OCZ Alchemy Series Elixir II Keyboard\nBus 002 Device 007: ID 148f:2070 Ralink Technology, Corp. RT2070 Wireless Adapter\n    \n
Run Code Online (Sandbox Code Playgroud)\n

还有一点小小的变化。

\n

编辑1

\n

经过一番阅读后,我得到了更多信息:(当 wifi 无法连接时会发生这种情况)

\n
$ sudo ifup wlan0\n[sudo] password for marcos: \nIgnoring unknown interface wlan0=wlan0.\n$ iwconfig\nlo        no wireless extensions.\n\nwlan0     IEEE 802.11bg  ESSID:off/any  \n          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   \n          Retry  long limit:7   RTS thr:off   Fragment thr:off\n          Power Management:on\n      \neth0      no wireless extensions.\n$ ifconfig wlan0\nwlan0     Link encap:Ethernet  direcci\xc3\xb3nHW <hidden MAC address>  \n          ACTIVO DIFUSI\xc3\x93N MULTICAST  MTU:1500  M\xc3\xa9trica:1\n          Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0\n          Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0\n          colisiones:0 long.colaTX:1000 \n          Bytes RX:0 (0.0 B)  TX bytes:0 (0.0 B)\n
Run Code Online (Sandbox Code Playgroud)\n

这是我拔掉并重新插入 USB wifi 后的变化

\n
$ iwconfig wlan0\nwlan0     IEEE 802.11bg  ESSID:"Red de Lourdes"  \n          Mode:Managed  Frequency:2.412 GHz  Access Point: <hidden MAC address>   \n          Bit Rate=54 Mb/s   Tx-Power=20 dBm   \n          Retry  long limit:7   RTS thr:off   Fragment thr:off\n          Power Management:on\n          Link Quality=59/70  Signal level=-51 dBm  \n          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0\n          Tx excessive retries:145  Invalid misc:96   Missed beacon:0\n$ ifconfig wlan0\nwlan0     Link encap:Ethernet  direcci\xc3\xb3nHW <hidden MAC address>  \n          Direc. inet:<hidden IP address>  Difus.:<hidden IP address>  M\xc3\xa1sc:<hidden IP address>\n          Direcci\xc3\xb3n inet6: <hidden IPv6 address> Alcance:Enlace\n          ACTIVO DIFUSI\xc3\x93N FUNCIONANDO MULTICAST  MTU:1500  M\xc3\xa9trica:1\n          Paquetes RX:2108 errores:0 perdidos:0 overruns:0 frame:0\n          Paquetes TX:2259 errores:0 perdidos:0 overruns:0 carrier:0\n          colisiones:0 long.colaTX:1000 \n          Bytes RX:845327 (845.3 KB)  TX bytes:395596 (395.5 KB)\n
Run Code Online (Sandbox Code Playgroud)\n

有什么方法可以制作 Bash 脚本来让无线工作吗?还有其他解决方案吗?GRUB 出问题了吗?

\n

Wen*_*ang 2

您可以通过以下命令激活 wlan,而不用重新插入:

sudo modprobe -r 8192eu
sudo modprobe 8192eu
Run Code Online (Sandbox Code Playgroud)

您需要将 8192eu 更改为您自己的 wlan 名称。如果您不知道名称,请在 google 上使用关键字搜索ID 148f:2070(您的 USB 无线局域网的 id 可以通过命令找到lsusb)。

或者您可以将 wlan 名称添加到/etc/modules

sudo -i
echo 8192eu >> /etc/modules
exit
Run Code Online (Sandbox Code Playgroud)

然后系统启动时就会自动激活WLAN。


小智 1

首先,您需要识别 USB WiFi 适配器的驱动程序。执行以下命令以获取网络适配器列表 lshw -C network 以下是您可能会注意到的输出类型

  *-network:0
       description: Wireless interface
       physical id: 1
       bus info: usb@3:5
       logical name: wlx542aa25b496d
       serial: 54:2a:a2:5b:49:6d
       capabilities: ethernet physical wireless
       configuration: broadcast=yes driver=rtl8xxxu driverversion=5.0.0-32-generic firmware=N/A ip=172.16.61.0 link=yes multicast=yes wireless=IEEE 802.11

Run Code Online (Sandbox Code Playgroud)

检查驱动程序并记下来。假设是这样rtl8xxxu,您可以使用以下命令通过命令拔出或插入适配器

sudo modprobe -r rtl8xxxu
sudo modprobe rtl8xxxu
Run Code Online (Sandbox Code Playgroud)

/etc/rc.local 由于这又是手动调用,因此您可以在之前添加以下代码中添加命令exit 0

modprobe -r rtl8xxxu
sleep 1
modprobe rtl8xxxu
Run Code Online (Sandbox Code Playgroud)

在 Ubuntu 18.04 中,该rc.local文件不存在,因此您可以通过sudo nano /etc/rc.local 添加以下部分来创建,该部分取自 Ubuntu 16.04 的库存/etc/rc.local文件,以便在系统启动时自动执行该操作

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0
Run Code Online (Sandbox Code Playgroud)

然后在前面添加uplug/plug代码exit 0。您需要使该文件可执行sudo chmod +x /etc/rc.local。重新启动并查看是否有效