我最近在一台旧的 Compaq Presario 2500 笔记本电脑上通过命令行最小化安装了 Ubuntu 11.10。这台笔记本电脑配有 Broadcom BCM4306 rev 02 Wi-Fi 适配器。
我已经安装了 firmware-b43legacy-installer 包,适配器正在运行。它使用的是 b43legacy 驱动程序:
filename: /lib/modules/3.0.0-14-generic/kernel/drivers/net/wireless/b43legacy/b43legacy.ko
firmware: b43legacy/ucode4.fw
firmware: b43legacy/ucode2.fw
firmware: FW10
license: GPL
author: Michael Buesch
author: Stefano Brivio
author: Martin Langer
description: Broadcom B43legacy wireless driver
srcversion: 0355EB47C162A7D873BD576
alias: ssb:v4243id0812rev04*
alias: ssb:v4243id0812rev02*
depends: mac80211,ssb,cfg80211
vermagic: 3.0.0-14-generic SMP mod_unload modversions 686
parm: pio:enable(1) / disable(0) PIO mode (int)
parm: bad_frames_preempt:enable(1) / disable(0) Bad Frames Preemption (int)
parm: fwpostfix:Postfix for the firmware files to load. (string)
我遇到的问题是传输速率。当 Ubuntu 自动将速率设置为 54Mbps 时,我的速度非常慢。我使用 iperf 在我的 LAN 上进行了测试。
我的局域网上有一台 Windows 笔记本电脑,通过 Wi-Fi 连接,以服务器模式运行 iperf。在 Ubuntu 笔记本电脑上,我以客户端模式运行 iperf 并连接到 Windows 笔记本电脑。iperf 报告的速度略低于 1Mbps(从 600Kbps 到 700Kpbs 不等)。
我知道问题不在我的 LAN 本身。我的 Android 手机上有一个 iperf 应用程序。当我为它启用 Wi-Fi 并加入 LAN 时,在客户端模式下运行它并连接到同一台 Windows 笔记本电脑时,报告的速度约为 10Mbps。我还有一台台式电脑,它通过有线连接到我的路由器。当我在服务器模式下的台式机上运行 iperf 并在客户端模式下的 Windows 笔记本电脑上运行 iperf 时,iperf 报告的速度约为 20Mbps。
事情变得奇怪了。我将 Compaq 电脑上的 BCM4306 的速率改为 11Mbps:
sudo iwconfig wlan0 rate 11M
我重新在 Compaq 上运行 iperf 测试,现在我看到速度在 2Mbps 到 3Mbps 范围内。好多了!
然而这让我很困惑,因为我确信 BCM4306 同时支持 802.11b 和 g,但它的表现好像只能处理“b”速度。
如果我能让 BCM4306 以 54Mbps 的速率正常工作,我会非常高兴。我尝试安装来自 linuxwireless.org 的 compat-wireless 驱动程序,但我遇到了一大堆麻烦,除非有人觉得这可能与我使用的驱动程序有关,否则我宁愿不去处理。
有人知道如何才能让我的 BCM4306 以 54Mbps 的速度正常工作吗?
提前致谢。
编辑:
我忘了提一件事。这台 Compaq 也有一个以太网适配器。如果我禁用 BCM4306 并在硬连线到路由器的情况下再次以客户端模式对 Windows 笔记本电脑运行 iperf 测试,我得到的速度是 19Mbps。所以所有这些 iperf 测试都告诉我它与 BCM4306 本身隔离。
答案1
11M 比 54M 效果好的原因在于,不同速率下信号功率(和范围)不同。速度越慢,范围越好。
答案2
创建一个脚本/etc/network/if-up.d
,你可以随意命名,比如叫它 BCM4306
# graphical
gksu gedit /etc/network/if-up.d/BCM4306
# command line
sudo -e /etc/network/if-up.d/BCM4306
将以下代码放入其中
#!/bin/sh -e
#
# Sets speed of interface to 54M
if [ "$IFACE" = "eth1" ] ; then
iwconfig wlan0 rate 11M
fi
使其可执行
sudo chmod a+x /etc/network/if-up.d/BCM4306
当您重新启动或重启网络时它应该可以工作。
注意:11M 是一个奇怪的值,您尝试过 54M 或 150M 吗?