我有一台运行 Windows XP 的台式机和一台运行 Ubuntu 12.04 的笔记本电脑。
最近我设置了一个无线路由器,以便能够通过 wifi 在笔记本电脑上访问互联网。笔记本电脑可以轻松连接到 wifi,但无法传输任何数据。只有当我第一次打开笔记本电脑时,它才能传输一些数据,但只持续了几分钟,之后甚至无法 ping 通路由器。
对路由器进行 ping 操作显示:“ping:sendmsg:没有可用的缓冲区空间”,但 wifi 仍然显示已连接。
请帮忙!
答案1
我和许多其他人(根据我的 Google 搜索)在使用 Ubuntu 11.10 时也遇到了同样的问题,而我使用 10.x 甚至 11.04 时也从未遇到过任何与网络驱动程序相关的问题。
编辑:问题的原因毕竟没有解决:'(。以下内容可能仍然以某种方式涉及,所以我将其留在这里供其他人参考。但结果并没有解决问题。恢复到 2.6.x 内核也没有用。
我的系统正在使用 r8169 驱动程序作为 Realtek 8168 芯片以太网端口(在我的情况下是在主板上。注意:8168 - 而不是 8169!)
当我发现这个帖子。我通过运行以下命令快速确认我的 8168 卡正在使用 r8169 驱动程序...
sudo lshw -class network
...,这需要一段时间 - 请耐心等待。:-)
您可以在配置中看到正在使用的驱动程序:行...示例:...
configuration: autonegotiation=on broadcast=yes driver=r8168 driverversion=8.026.00-NAPI ...
然后我主要按照这个帖子安装并激活正确的驱动程序,根据需要更改特定路径以匹配我的系统。请注意,驱动程序下载站点未提及 v3.xx 内核(仅 2.4.x 和 2.6.x)但无论如何它都可以正常工作。
如果您只有一个网络接口,那么您应该在此阶段完成所有设置。
不幸的是,对我来说事情没那么简单,因为我还安装了第二张卡,做过有一个真正的 8169 芯片!:-/ 所以,我不能只是禁用 r8169 驱动程序。
为了解决这个问题,我将 /lib/module/your-kernel-version/drivers/net/r8169.bak 文件(autorun.sh 驱动程序安装程序脚本将其重命名)重命名回 r8169.ko,并按如下方式编辑 /etc/modules...
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
loop
lp
r8168
r8169
... [最后添加了两行] 希望这会强制以相同的顺序加载模块,从而避免 modprobe 为错误的卡选择 r8169 驱动程序。成功了!
致原发帖人... 我更新此内容是为了让其他正在搜索解决方案的人受益,因为它在 Google 搜索结果中排名很高。希望您不介意。
答案2
可能是 IP 地址重复了?
可能是其他软件影响了您的连接,请尝试停止 Ubuntu 防火墙。
sudo service ufw stop
检查日志。
cat /var/log/syslog | less
尝试调整缓冲区大小。
echo 83886080 |sudo tee /proc/sys/net/core/wmem_max
问题出在路由器上。
答案3
我在 Centrino Ultimate-N 6300 8086:4238 无线接口上看到过这种情况(在 Thinkpad X201 上)。据我所知,这是无线驱动程序或其固件中的一个已知错误,可能与错误 #836250。我问过这条信息到底是什么意思““ping:sendmsg:没有可用的缓冲区空间”是什么意思?“。
解决方法
由于我只是偶尔遇到这种情况,因此解决方法是彻底重置无线网络每当问题发生时:
sudo modprobe -r iwlwifi sudo modprobe iwlwifi
另一个可能的解决方法是将路由器切换到仅 802.11g 模式(我认为该问题仅在连接到 n 网络时发生)