[ 已放弃 ]Realtek rtl8192cu USB 无线网卡过几分钟就不能连接了

我用的是USB无线网卡,但是没过几分钟就会断网,具体表现为网络管理器显示网是连着的,但是实际上连不上,什么网站也ping不通,而且断开无限重新连接是会在验证是报错,提示连接失败,
只有将无线网卡拔掉重插才能够再次联网。
网卡型号:rtl8192cu
系统:openSUSE12.3
内核:3.7.10-1.1
错误代码:

2013-05-30T00:25:23.513381+08:00 eailfly nm-dispatcher.action: Script '/etc/NetworkManager/dispatcher.d/nfs' exited with error status 2.
2013-05-30T00:30:01.166031+08:00 eailfly /usr/sbin/cron[3696]: pam_unix(crond:session): session opened for user root by (uid=0)
2013-05-30T00:30:01.201867+08:00 eailfly /USR/SBIN/CRON[3696]: pam_unix(crond:session): session closed for user root
2013-05-30T00:30:32.828257+08:00 eailfly NetworkManager[489]: <info> (eth0): carrier now ON (device state 20)
2013-05-30T00:30:32.830635+08:00 eailfly NetworkManager[489]: <info> (eth0): device state change: unavailable -> disconnected (reason 'carrier-changed') [20 30 40]
2013-05-30T00:30:32.830657+08:00 eailfly NetworkManager[489]: <info> Auto-activating connection 'Wired connection 1'.
2013-05-30T00:30:32.830666+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) starting connection 'Wired connection 1'
2013-05-30T00:30:32.830675+08:00 eailfly NetworkManager[489]: <info> (eth0): device state change: disconnected -> prepare (reason 'none') [30 40 0]
2013-05-30T00:30:32.830940+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Stage 1 of 5 (Device Prepare) scheduled...
2013-05-30T00:30:32.832285+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Stage 1 of 5 (Device Prepare) started...
2013-05-30T00:30:32.834907+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Stage 2 of 5 (Device Configure) scheduled...
2013-05-30T00:30:32.835618+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Stage 1 of 5 (Device Prepare) complete.
2013-05-30T00:30:32.836130+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Stage 2 of 5 (Device Configure) starting...
2013-05-30T00:30:32.839979+08:00 eailfly NetworkManager[489]: <info> (eth0): device state change: prepare -> config (reason 'none') [40 50 0]
2013-05-30T00:30:32.840576+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Stage 2 of 5 (Device Configure) successful.
2013-05-30T00:30:32.841086+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Stage 3 of 5 (IP Configure Start) scheduled.
2013-05-30T00:30:32.841679+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Stage 2 of 5 (Device Configure) complete.
2013-05-30T00:30:32.842220+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Stage 3 of 5 (IP Configure Start) started...
2013-05-30T00:30:32.842771+08:00 eailfly NetworkManager[489]: <info> (eth0): device state change: config -> ip-config (reason 'none') [50 70 0]
2013-05-30T00:30:32.843359+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Beginning DHCPv4 transaction (timeout in 45 seconds)
2013-05-30T00:30:32.843907+08:00 eailfly NetworkManager[489]: <info> dhclient started with pid 3717
2013-05-30T00:30:32.845508+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Beginning IP6 addrconf.
2013-05-30T00:30:32.846156+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Stage 3 of 5 (IP Configure Start) complete.
2013-05-30T00:30:32.875068+08:00 eailfly NetworkManager[489]: <info> (eth0): DHCPv4 state changed nbi -> preinit
2013-05-30T00:30:37.906555+08:00 eailfly NetworkManager[489]: <info> (eth0): DHCPv4 state changed preinit -> bound
2013-05-30T00:30:37.906586+08:00 eailfly NetworkManager[489]: <info>   address 192.168.1.2
2013-05-30T00:30:37.906596+08:00 eailfly NetworkManager[489]: <info>   prefix 24 (255.255.255.0)
2013-05-30T00:30:37.906603+08:00 eailfly NetworkManager[489]: <info>   gateway 192.168.1.1
2013-05-30T00:30:37.906611+08:00 eailfly NetworkManager[489]: <info>   nameserver '8.8.8.8'
2013-05-30T00:30:37.907053+08:00 eailfly NetworkManager[489]: <info>   nameserver '8.8.4.4'
2013-05-30T00:30:37.907592+08:00 eailfly NetworkManager[489]: <info>   domain name 'router'
2013-05-30T00:30:37.908170+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Stage 5 of 5 (IPv4 Configure Commit) scheduled...
2013-05-30T00:30:37.909125+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Stage 5 of 5 (IPv4 Commit) started...
2013-05-30T00:30:38.906691+08:00 eailfly NetworkManager[489]: <info> (eth0): device state change: ip-config -> activated (reason 'none') [70 100 0]
2013-05-30T00:30:38.962685+08:00 eailfly NetworkManager[489]: <info> Clearing nscd hosts cache.
2013-05-30T00:30:51.366364+08:00 eailfly NetworkManager[489]: <info> Policy set 'Wired connection 1' (eth0) as default for IPv4 routing and DNS.
2013-05-30T00:30:51.366395+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) successful, device activated.
2013-05-30T00:30:51.366404+08:00 eailfly NetworkManager[489]: <info> Activation (eth0) Stage 5 of 5 (IPv4 Commit) complete.
2013-05-30T00:30:51.376110+08:00 eailfly NetworkManager[489]: <info> (wlan0): supplicant interface state: completed -> disconnected
2013-05-30T00:30:51.376514+08:00 eailfly NetworkManager[489]: <info> (wlan0): supplicant interface state: disconnected -> scanning
2013-05-30T00:30:51.378363+08:00 eailfly NetworkManager[489]: <info> (wlan0): supplicant interface state: scanning -> authenticating
2013-05-30T00:30:51.378388+08:00 eailfly NetworkManager[489]: <info> (wlan0): supplicant interface state: authenticating -> associating
2013-05-30T00:30:51.378397+08:00 eailfly NetworkManager[489]: <info> (wlan0): supplicant interface state: associating -> associated
2013-05-30T00:30:51.378815+08:00 eailfly NetworkManager[489]: <info> (wlan0): supplicant interface state: associated -> 4-way handshake
2013-05-30T00:30:51.379366+08:00 eailfly NetworkManager[489]: <info> (wlan0): supplicant interface state: 4-way handshake -> completed
2013-05-30T00:30:51.380265+08:00 eailfly NetworkManager[489]: <info> (wlan0): device state change: activated -> disconnected (reason 'user-requested') [100 30 39]
2013-05-30T00:30:51.410270+08:00 eailfly nm-dispatcher.action: Script '/etc/NetworkManager/dispatcher.d/nfs' exited with error status 2.

我感觉问题应该出在这一行:

2013-05-30T00:30:51.410270+08:00 eailfly nm-dispatcher.action: Script '/etc/NetworkManager/dispatcher.d/nfs' exited with error status 2.

但是就是不知道status 2代表什么。

Hi,

Welcome to openSUSE community!

这里是我参考的资料:

forums.opensuse.org/english/get-technical-help-here/network-internet/458439-networkmanager-doesnt-update-resolv-conf-2.html

forums.opensuse.org/english/get-technical-help-here/wireless/456760-wireless-realtek-card-not-working-3.html

blog.csdn.net/hongguochao2360/article/details/7488218

blog.sina.com.cn/s/blog_4888f88101012nur.html

tieba.baidu.com/p/1920229076

纵览了一下,可能是 DNS 的问题也可能是内核驱动的问题。


所以先来侦察是不是 DNS 的问题:

lsmod | grep rtl8192cu

确保是 load 了这个模块的。

然后:

  1. 建两个无线连接,其中 DNS 的设置要不同,然后连接 A,连上之后去看 /etc/resolv.conf,记下里面的 DNS。然后打开终端(konsole/gnome terminal),执行:

nslookup www.google.com.hk

看返回那个 server 是什么。

关掉 A 连接 B,再看再记,要确认两次的 DNS 是相同还是不同(NM 里肯定是不同的,resolv.conf 可能不改,实际结果也可能不改),主要是为了确认 NM 是否成功设置了 DNS,毕竟你是几分钟后能联着但上不了网,有可能是 DNS 冲突或者怎样。

  1. 把你的 Google DNS 写到 resolv.conf,然后 NM 里用不设置 DNS 设置自动,然后看问题是否依然存在。

  2. 打开 YaST -sysconfig 编辑器 - Network - General - NETCONFIG_DNS_POLICY 是不是设置的 auto。

实在不行后面还有:

  • 编译最新内核 backport 过来的 rtl8192cu
  • 编译 Realtek 提供的 Linux 驱动并修改一些地方。

慢慢来你先试验着我说的那些。行不行给回复。

已经进行了尝试,目前初步判断应该不是 DNS 的因素,因为 /etc/resolv.conf 中会正常显示 dns 服务器地址,nslookup 也会显示正常的 dns 地址,而且网络不通后直接 ping IP 也不通,所以基本上应该不是 dns 的问题,下一步看看是不是驱动的原因吧

好的。稍等我做下 backports.wiki.kernel.org 的新 compat-drivers 的软件包给你装下看看最新的内核驱动能否解决问题。

sorry,最近两天在做这个包:

build.opensuse.org/package/show?package=compat-drivers&project=home%3AMargueriteSu

你等它弄好了安装一下看看还有没有问题。有的话就是内核开发者也暂时没解决,那就要去看 Realtek 提供的驱动和一些权宜之计了。

万分感谢,辛苦了,不过我真的觉得有可能是官方驱动就有的问题,网上这个芯片碰见问题的一大堆一大堆的,各个发行版都有。
我试试看结果如何,然后在过来反馈

我也是这个网卡,还是内置的。

这个网卡经常出问题。

我觉得应该是驱动问题。

好吧,我的错,我轻率的排除了 DNS 的原因,但是今天基本可以确定就是 DNS 的原因。
装了女王大人的驱动后,我又连接上了无线,照样过了几分钟就不能上网了,具体表现是
ping qq.com会 unknown,但是 ping 8.8.8.8 就可以 ping 通,运行 nslookup google.com后输出如下

nslookup www.google.com   
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   www.google.com
Address: 74.125.128.104
Name:   www.google.com
Address: 74.125.128.99
Name:   www.google.com
Address: 74.125.128.105
Name:   www.google.com
Address: 74.125.128.147
Name:   www.google.com
Address: 74.125.128.106
Name:   www.google.com
Address: 74.125.128.103

连接 74.125.128.105 时就可以上 Google 了,所以基本确定是 DNS 出了问题。

但是我不解的是为什么会这样,我的 resolv.conf 内容如下:

### /etc/resolv.conf file autogenerated by netconfig!
#
# Before you change this file manually, consider to define the
# static DNS configuration using the following variables in the
# /etc/sysconfig/network/config file:
#     NETCONFIG_DNS_STATIC_SEARCHLIST
#     NETCONFIG_DNS_STATIC_SERVERS
#     NETCONFIG_DNS_FORWARDER
# or disable DNS configuration updates via netconfig by setting:
#     NETCONFIG_DNS_POLICY='
#
# See also the netconfig(8) manual page and other documentation.
#
# Note: Manual change of this file disables netconfig too, but
# may get lost when this file contains comments or empty lines
# only, the netconfig settings are same with settings in this
# file and in case of a "netconfig update -f" call.
#
### Please remove (at least) this line when you modify the file!
nameserver 8.8.8.8

以下是 NETCONFIG_DNS_POLICY 的值和 NetworkManager 的设置




把 NETCONFIG_DNS_POLICY 改成 auto。

另外把 DNS 改成 OpenDNS 试试,可能是 Google DNS 的问题:

NM 那里设置为自动 DHCP。

编辑 resolv.conf

nameserver 208.67.222.222
nameserver 208.67.220.220

根据女王的办法,现在目测已经正常,再测试两天,如果没有问题的话就标记已解决。

此芯片驱动烂的一塌糊涂,官方驱动也只支持到内核 3.0.8,编译等一通麻烦,我还是放弃了