第14.2节 WIFI
类似 plasma-nm/networkmanager 的图形化网络配置工具:
pkg install net-mgmt/networkmgr
通用网卡驱动
首先运行 # ifconfig
,看看能不能找到你的网卡,如果能,那么你可以跳过本节了。
运行 # sysctl net.wlan.devices
,他会告诉你的无线网卡驱动,如果冒号输出后边没有东西,那就是识别不了。请更换无线网卡。
编辑 /boot/loader.conf 文件
加入:
if_urtwn_load="YES"
legal.realtek.license_ack=1
注意、 < 这里只是示例,请添加自己所需的驱动(看
# sysctl net.wlan.devices
的输出)。
接下来,创建 wlan0
# ifconfig wlan0 create wlandev at0
at0
是你的网卡,具体看自己的# sysctl net.wlan.devices
输出,该命令是临时的,若需要永久开机生效,在 rc.conf
中,加入:
# wlans_ath0 ="wlan0"
扫描 WiFi:
# ifconfig wlan0 up scan
# ifconfig wlan0 ssid abc
如果扫描不出来,让你设置 FCC
的时候,选择 no
。
连接 WiFi :
# dhclient wlan0
获取地址
连接加密网络
创建 /etc/wpa_supplicant.conf
:
network={
ssid="WIFI 名字(SSID)"
psk="WIFI 密码"
}
在 rc.conf
里面加入
# ifconfig_wlan0="WPA SYNCDHCP"
然后重启电脑(因为命令有点问题,只能重启让rc.conf生效)
# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
# wpa_cli -i wlan0 scan // 搜索附近wifi网络
# wpa_cli -i wlan0 scan_result // 打印搜索wifi网络结果
# wpa_cli -i wlan0 add_network // 添加一个网络连接
# wpa_cli -i wlan0 remove_network 1 // 删除一个网络连接
# wpa_cli -i wlan0 set_network 0 ssid ‘“name”‘
# wpa_cli -i wlan0 set_network 0 psk ‘“psk”‘
# wpa_cli -i wlan0 enable_network 0
保存连接
# wpa_cli -i wlan0 save_config
断开连接
# wpa_cli -i wlan0 disable_network 0
连接已有的连接
# wpa_cli -i wlan0 list_network 列举所有保存的连接
# wpa_cli -i wlan0 select_network 0 连接第1个保存的连接
# wpa_cli -i wlan0 enable_network 0 使能第1个保存的连接
断开 WiFi
# ifconfig wlan0 down
附配置详情:https://segmentfault.com/a/1190000011579147
wpa 验证,静态 ip
# ifconfig_wlan0="WPA inet 192.168.1.100 netmask 255.255.255.0"
# ifconfig wlan0 inet 192.168.0.100 netmask 255.255.255.0
开启无线 ap,先确认下你的网卡是否支持 hostap
# ifconfig wlan0 list caps
先销毁
# ifconfig wlan0 destroy
再创建
# ifconfig wlan0 create wlandev ath0 wlanmode hostap
# ifconfig wlan0 inet 192.168.0.1 netmask 255.255.255.0 ssid freebsdap mode 11g channel 1
如果连不上或者搜不到调试信道,尝试将 WiFi 区域码选
Japan
,然后选China
简单版本
以螃蟹卡为例:
# ee /boot/loader.conf
加入
rtwn_usb_load="YES" legal.realtek.license_ack=1
在
/etc/rc.conf
中写入wlans_rtwn0="wlan0" ifconfig_wlan0="WPA DHCP"
执行:
# /etc/rc.d/netif start
英特尔网卡驱动
以下部分适用于 FreeBSD 13.1。13.1 已经可以正常加载使用了该驱动了。
iwlwifi 驱动适用于
AC 8265、AC 9260、AC 9560、AX200、AX201、AX210
以及旧的 iwm 驱动所包含的网卡,见 https://www.intel.cn/content/www/cn/zh/support/articles/000005511/wireless.html。iwm(4) 的原有网卡若想使用该驱动,请参考 https://wiki.freebsd.org/WiFi/Iwlwifi#I_have_an_iwm.284.29_supported_device。该驱动仍不完善,FreeBSD 14 下不会自动加载(可以用命令
# sysctl net.wlan.devices
查看有无加载,如果没有显示iwlwifi0
就没有加载),每次都需要手动加载。
将以下部分写入/etc/rc.conf
:
kld_list="if_iwlwifi"
wlans_iwlwifi0="wlan0"
wlandebug_wlan0="+state +crypto +node +auth +assoc +dot1xsm +wpa"
ifconfig_wlan0="WPA SYNCDHCP"
创建 /etc/wpa_supplicant.conf
:
network={
ssid="WIFI 名字(SSID)"
psk="WIFI 密码"
}
先加载驱动看一下:
# kldload if_iwlwifi
注意:以下部分每次开机都要执行一次方能联网。
创建并链接:
# ifconfig wlan0 create wlandev iwlwifi0
# /etc/rc.d/netif start wlan0
故障排除:https://wiki.freebsd.org/WiFi/Iwlwifi
博通(broadcom)网卡驱动
FreeBSD 自身的博通网卡驱动一共有两种:bwn 和 bwi ,其中 bwi 是用于较旧型号的,bwn 是用于较新型号的。两者的支持范围有所重叠,而 bwn 对硬件的支持要更好。
那么,应该使用哪种驱动呢?请参考 https://www.landonf.org/code/freebsd/Broadcom_WiFi_Improvements.20180122.html 。
示例:BCM4301 、 BCM4303 、 BCM4306 rev 2
经过判断,只能使用 bwi 驱动。
首先,在
/boot/loader.conf
中添加:if_bwi_load="YES"
然后使用 ports 安装固件(未提供 PKG 包,下同):
# cd /usr/ports/net/bwi-firmware-kmod/ # make install clean
可以先使用 USB 手机或者以太网先共享网络进行安装。也可以先把所需依赖下好放入目录。
在
/etc/rc.conf
添加:wlans_bwi0="wlan0"
重启即可。
示例:配置 bwn 驱动
安装固件:
# cd /usr/ports/net/bwn-firmware-kmod/ # make install clean
配置
/boot/loader.conf
,添加:if_bwn_load="YES"
配置
/etc/rc.conf
,添加:wlans_bwn0="wlan0"
注意
一些在 https://www.landonf.org/code/freebsd/Broadcom_WiFi_Improvements.20180122.html 列出的型号带有
$
注释:The optional bwn(4) PHY driver is derived from b43 GPL code, and must be explicitly enabled.
即需要一些基于 GPL 协议的代码。众所周知 FreeBSD 基本系统包括内核都是去 GNU 化的,因此需要重新编译内核来支持该协议。# cd /usr/src/ # 此处是内核源码安装目录。 # cd sys/amd64/conf/ # 注意架构! # cp GENERIC MYKERNEL #重命名便于识别 # echo "options BWN_GPL_PHY" >> MYKERNEL #添加内核参数 # cd /usr/src # make -j4 buildkernel KERNCONF=MYKERNEL # -j 后边的参数为 CPU 核心数,下同 # make -j4 installkernel KERNCONF=MYKERNEL
在
/boot/loader.conf
中添加:hw.bwn_pci.preferred="1" if_bwn_pci_load="YES" bwn_v4_ucode_load="YES" bwn_v4_n_ucode_load="YES" bwn_v4_lp_ucode_load="YES"
然后重启。
ifconfig
观察有无wlan0
,然后按照第一部分教程配置即可。
参考文献:
- https://handbook.bsdcn.org/di-9-zhang-pei-zhi-freebsd-nei-he/9.5.-bian-yi-yu-an-zhuang-ding-zhi-nei-he.html
- https://freebsdfoundation.org/project/broadcom-wi-fi-modernization/
- https://svnweb.freebsd.org/base?view=revision&revision=326841
- https://forums.freebsd.org/threads/installing-broadcom-bcm43236-wifi-on-11-3-missing-firmware-error.76470/
- https://github.com/helloSystem/ISO/issues/78