我已经设置了一个树莓派作为 wifi 接入点。此时,我想做的就是 ssh rpi。我发现 ssh 会话每 1 到 6 分钟左右就会挂起 5-30 秒。我的笔记本电脑是唯一连接到 AP 的客户端。如果我设置从笔记本电脑到 AP 地址的连续 ping,平均 ping 时间约为 1-4 毫秒,但有时会出现约 100-500 毫秒的过度延迟或长达 5-30 秒的超时。无论 ssh 会话是否处于活动状态,都会发生这种情况。相比之下,如果我 ping 以太网端口,所有延迟均为 1 毫秒或更短,并且没有超时。我尝试过更换频道,但没有任何效果。
有趣的是,如果我在 hostapd.conf 中禁用 wifi 'n' 模式(现在在 g 中运行)、wmm 和 ht_capab,我会大大改善情况,并且超时很少(如果有)。禁用这些功能后,通常 ping 时间为 1-2 毫秒,偶尔会有 120 毫秒的延迟。
lsmod 显示以下模块:
-Module Size Used by
-aes_generic 31536 1
-8021q 17966 0
-garp 6295 1 8021q
-stp 1969 1 garp
-llc 5440 2 stp,garp
-snd_bcm2835 15846 0
-snd_pcm 77560 1 snd_bcm2835
-snd_page_alloc 5145 1 snd_pcm
-snd_seq 53329 0
-snd_seq_device 6438 1 snd_seq
-snd_timer 19998 2 snd_pcm,snd_seq
-snd 58447 5 snd_bcm2835,snd_timer,snd_pcm,snd_seq,snd_seq_device
-arc4 1676 2
-rt2800usb 14940 0
-rt2800lib 55351 1 rt2800usb
-rt2x00usb 11215 1 rt2800usb
-rt2x00lib 42334 3 rt2x00usb,rt2800lib,rt2800usb
-mac80211 273413 3 rt2x00lib,rt2x00usb,rt2800lib
-cfg80211 184163 2 mac80211,rt2x00lib
-rfkill 18202 2 cfg80211
-crc_ccitt 1522 1 rt2800lib
-leds_gpio 2235 0
-led_class 3562 2 leds_gpio,rt2x00lib
主机配置文件
-interface=wlan0
-driver=nl80211
-ctrl_interface_group=0
-ssid=ivoPI
-hw_mode=g
-ieee80211n=1
-wmm_enabled=1
-channel=5
-#macaddr_acl=0
-auth_algs=3
-#ignore_broadcast_ssid=0
-wpa=3
-wpa_passphrase=*******
-wpa_key_mgmt=WPA-PSK
-wpa_pairwise=TKIP
-rsn_pairwise=CCMP
-ht_capab=[HT20][SHORT-GI-20] #[RX-STBC1]
如果有人可以在这里提供帮助,我们将不胜感激。干杯
伊沃
继上述内容之后:
我现在已经在客户端模式下尝试了上面的 WiFi 适配器以及另一个适配器。第一个适配器具有 rt3072 芯片和 rtl2800usb / cfg80211 驱动程序。第二个适配器具有 Realtek rtl8188us 芯片和 r8712u staging 驱动程序。每个适配器(单独)都连接到供电集线器。 Raspberry Pi 没有连接以太网。
第一个适配器 由于处理器负载较低且没有 shell 或 shell 无流量,因此没有典型的 ping 结果。延迟似乎完全是随机的,从 2 毫秒到 320 毫秒不等——到处都是。偶尔会有超时的情况。当 top 以 0.01 秒运行时,ping 变得非常稳定,在 2-3 毫秒,偶尔有 195-222 毫秒的单个 ping 延迟。我在大约 20 分钟的时间内观察到超时 5 秒。
第二个适配器 处理器负载较低且没有 shell 或没有流量的 shell,典型的 ping 结果为 1-2ms。 Ping 结果总体上非常稳定。在负载下 - 最高运行 0.01 秒,ping 延迟约为 2-3 毫秒,偶尔有 166-200 毫秒的单次 ping 延迟。我没有观察到任何超时。
那么我们可以由此得出什么结论呢?在我看来,这是 rtl2800usb / cfg80211 或其他相关组件的驱动程序问题。通过连续运行 top 几乎可以解决问题,但这似乎有点浪费!我仍然偶尔会超时。我还不知道是否是更高的处理器负载或增加的 tcp/ip 流量带来了改进。
答案1
我的树莓派上的不同无线棒也遇到了同样的问题。我尝试了不同的电源、不同的 Raspberry 以及有源 USB 集线器。所以我很幸运看到你的观察,即禁用 wifi 'n' 模式,wmm
并且ht_capab
可以带来更好的结果。我wmm
在我的 Wi-Fi 路由器华硕 RT-N66U(运行openwrt
/ )上禁用了 n 模式tomato
,并且 ping 时间从 10-100 毫秒减少到 1-3 毫秒,并且连接非常稳定。在此之前,连接经常中断(30-60 分钟后),而且速度通常很慢。
但是禁用整个 wifi 网络的 n 模式并不是解决方案,所以我找到了另一个建议(https://github.com/xbianonpi/xbian/issues/217):
/etc/modprobe.d/8192cu.conf
创建包含以下行的文件:options 8192cu rtw_power_mgnt=0 rtw_enusbss=0
重启
这将关闭 wifi 棒和 USB 自动挂起的省电功能。
您可以检查省电模式是否关闭:
cat /sys/module/8192cu/parameters/rtw_power_mgnt
自 24 小时以来,两个不同的 Raspberry 上的 WiFi 连接现在都很稳定。 ping 时间比在 wifi 路由器上禁用 n 模式和 wmm 稍长(5-6 毫秒),但非常稳定,只有很小的变化。
答案2
作为客户端,您在网络上是否会得到相同的行为?我没有像你那样详细地测试过它,但我的圆周率有时也倾向于这种方式;我才用了几个星期,一直将其归因于 8192cu 驱动程序,该驱动程序在其他方面存在故障 - 例如,它无法在电源集线器上工作,只有在直接插入时才能工作。
这意味着加密狗必须位于 pi 的供电不足的 USB 端口之一上——它们最多可以提供140 mA,而不是 USB 2.0 标准 500 mA(看 这里)——我认为这肯定会让 wifi 设备容易出现问题。我让它每五秒 ping 一次路由器,当 ping 失败时,它会重新连接(我没有使用 NetworkManager 或任何系统守护进程,它们通常会处理这个问题......无论如何,如果它立即重新连接,则需要大约 15 秒);查看日志,在过去的 30 小时内,这种情况发生了 3 次,这还算不错,但它也没有做任何事情。周五,我通过 ssh 对其进行编译(因此,长时间连续最大化处理器)并且这种情况经常发生(也许每 5-10 分钟一次?幸运的是,这只是冻结了 ssh I/O 一点)。
如果问题仍然存在,我最终可能会得到一个更强大的适配器,可以在电源集线器上工作。如果您想将其用作接入点,我认为您绝对应该使用外部电源集线器(如果您还没有这样做的话)。显然,它们通常不进行内部调节,因此每个端口都可以达到集线器容量(2-4 安培),而不仅仅是 500mA,这意味着您还可以将 pi 关闭;一些隐含的引用这里。我有一个贝尔金集线器,集线器上的电压比 2A 5V 充电器低约 0.05-0.1 伏。现在,将 wifi 适配器插入 pi(它是一个很小的 nano 适配器)后,它的电压又降低了 0.05-0.1 伏,这并不是微不足道的,因为最佳范围是 4.75-5.25V——根据我的万用表我就在带有纳米适配器的集线器的底部空闲时。
我猜想在 ag 网络上工作对 wifi 适配器的要求较少,因为它比 n 慢。
哦,顺便说一句,有一个rpi堆栈交换:)
答案3
我的 Pi 和8192cu
模块也遇到了同样的问题,但我无法得到任何这些建议来解决问题。
最后,出于绝望,我检查了该地区还有哪些其他可用的 wifi 接入点,令我惊讶的是,一位邻居在我使用的同一频道上建立了一个新的 wifi 网络。切换到不同的频道解决了问题!
不再有 20,000 毫秒 ping 或 40% 的数据包丢失,太棒了!有时最简单的解决方案也是最困难的:-)