FreeBSD无线网络¶
备注
本文实践在 MacBook Pro 15" Late 2013 进行,使用的无线网卡芯片是 Broadcom BCM4360 。这个无线芯片可以在Linux上工作,但是FreeBSD目前无法支持。我做了花了一个晚上时间折腾没有解决,由于改为使用 Apple ARM架构芯片M1 Pro (公司配备),所以暂缓探索。
检查硬件¶
执行
pciconf
命令检查硬件:pciconf -lv
显示:
none1@pci0:3:0:0: class=0x028000 rev=0x03 hdr=0x00 vendor=0x14e4 device=0x43a0 subvendor=0x106b subdevice=0x0134
vendor = 'Broadcom Inc. and subsidiaries'
device = 'BCM4360 802.11ac Wireless Network Adapter'
class = network
bwn
驱动¶
bwn
无线网络驱动支持Broadcom BCM43xx ,并且支持 station
和 monitor
模式操作。这个 bwn
驱动要求在其工作前首先加载firmware。所以需要先编译安装 ports/net/bwn-firmware-kmod
这个port。
bwn
驱动支持的 Broadcom BCM43xx 无线设备包括:
网卡 |
芯片 |
总线 |
无线标准 |
---|---|---|---|
Apple Airport Extreme |
BCM4318 |
PCI |
b/g |
ASUS WL-138g |
BCM4318 |
PCI |
b/g |
Buffalo WLI-CB-G54S |
BCM4318 |
CardBus |
b/g |
Dell Wireless 1390 |
BCM4311 |
Mini PCI |
b/g |
Dell Wireless 1470 |
BCM4318 |
Mini PCI |
b/g |
Dell Truemobile 1400 |
BCM4309 |
Mini PCI |
b/g |
HP Compaq 6715b |
BCM4312 |
PCI |
b/g |
HP nx6125 |
BCM4319 |
PCI |
b/g |
Linksys WPC54G Ver 3 |
BCM4318 |
CardBus |
b/g |
Linksys WPC54GS Ver 2 |
BCM4318 |
CardBus |
b/g |
US Robotics 5411 |
BCM4318 |
CardBus |
b/g |
要将这个 bwn
驱动编译进你和,则要在内核配置文件中加入以下行:
device bwn
device bhnd
device bhndb
device bhndb_pci
device bcma
device siba
device gpio
device wlan
device wlan_amrr
device firmware
要在启动时加载 bwn
驱动模块,则在 loader.conf
中添加:
if_bwn_load="YES"
编译安装bwn firmware¶
执行 FreeBSD应用程序安装:包和Ports 方式编译安装firmware:
cd /usr/ports/net/bwn-firmware-kmod make make install clean
这里如果系统没有安装 FreeBSD内核源代码 就会出现以下报错:
make[1]: "/usr/share/mk/bsd.sysdir.mk" line 15: Unable to locate the kernel source tree. Set SYSDIR to override.
make[1]: stopped in /usr/ports/net/bwn-firmware-kmod/work/bwn-firmware-kmod-0.1.2/bg/v4
*** Error code 1
则先安装 FreeBSD内核源代码 然后再次执行 make
加载内核模块:
sudo kldload if_bwn sudo kldload bwn_v4_ucode sudo kldload bwn_v4_lp_ucode
对于要在系统启动时自动加载上述内核模块,则编辑 /boot/bootloader.conf
添加:
if_bwn_load="YES"
bwn_v4_ucode_load="YES"
bwn_v4_lp_ucode_load="YES"
在加载内核模块完成后,就可以通过以下命令创建无线网卡设备:
ifconfig wlan0 create wlandev bwn0
报错:
ifconfig: SIOCIFCREATE2: Device not configured
原因是前面加载无线驱动和firmware并没有检测到 /dev/bwn0
设备。
警告
很不幸,FreeBSD今天还是没有支持 BCM4360 ,从 Macbook Air 2017 : Need Help With Proprietary Firmware/Driver 可以看到实际上并没有解决驱动MacBook Air 2017内置的BCM4360设备。这个讨论最后建议使用USB接口的外接无线网卡,或者使用类似 PQI Air Pen Express Wireless Router 这样的设备。
不过,也提出了一个思路: 使用手机的USB Tethering功能,将手机的无线网卡模拟成以太网卡,只要将手机USB连接以后,激活 USB tethring
,此时在FreeBSD中就会看到一个USB无线网卡设备,就能够直接使用没有任何障碍: 通过手机USB tethering实现FreeBSD无线网络
参考 First FreeBSD experience: something with Wi-Fi and Apple hardware 详细说明了如何编译安装firmware,步骤和我上文相似,但是最终也没有解决BCM43602设备驱动
以下命令没有执行,原因是上文 bwn
驱动并不支持 BCM4360
,不过记录备用:
sudo ifconfig wlan0 up # Laptop WiFi LED light should turn on
sudo ifconfig wlan0 scan # You should see your wireless router SSID
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
sudo ifconfig wlan0 list sta
sudo dhclient wlan0
警告
我这里失败,加载驱动以及firmware之后并没有看到网卡设备
我仔细核对 FreeBSD Broadcom Wi-Fi Improvements bwn
说明,原来支持的 BCM43xx
并没有包括我的 MacBook Pro 的无线网卡芯片 BCM4360
。实际上,应该使用 bhnd
驱动...
重新来过
bhnd
驱动安装¶
要加载驱动模块,在 /boot/loader.conf
中添加:
bhnd_load="YES"
我参考 BCM4331 802.11n seems tantalisingly close on mid-2011 Mac mini, using bhnd and if_bwn_pci.ko on FreeBSD 11.2-BETA1 ,配置 /boot/loader.conf
bhnd_load="YES"
bwn_v4_ucode="YES"
bwn_v4_n_ucode="YES"
#if_bwn_pci_load="YES"
if_bwn_load="YES"
wlan_wep_load="YES"
wlan_ccmp_load="YES"
wlan_tkip_load="YES"
但是,似乎模块都加载了也看不到设备
备注
由于拿到了公司配备的 Apple ARM架构芯片M1 Pro ,暂时没有使用FreeBSD作为全功能桌面的个人需求,所以暂缓实践。后续有时间和机会再来尝试。