在MacBook Pro上运行ubuntu设置WIFI

BCM 43xx

Broadcom BCM43xx 无线网卡,在Ubuntu中默认不会激活使用(licence),可以通过 System > Administration > Hardware/Additional Drivers 来激活使用。如果存在驱动问题,可以详细参考本文设置。

在MacBook Pro 2015版本上安装Ubuntu 18.10,遇到第一个问题是,安装以后无法识别网卡。

通过 lspci 可以看到网卡硬件配置:

Broadcom Inc. and subsidiaries BCM4360 802.11ac Wireless Network Adapter (rev 03)

详细的信息可以采用如下命令:

lspci -vvnn | grep -A 9 Network

正确安装了Braodcom STA无线驱动之后会显示如下信息:

03:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM4360 802.11ac Wireless Network Adapter [14e4:43a0] (rev 03)
    Subsystem: Apple Inc. BCM4360 802.11ac Wireless Network Adapter [106b:0112]
    Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Latency: 0, Cache Line Size: 256 bytes
    Interrupt: pin A routed to IRQ 18
    Region 0: Memory at c1a00000 (64-bit, non-prefetchable) [size=32K]
    Region 2: Memory at c1800000 (64-bit, non-prefetchable) [size=2M]
    Capabilities: <access denied>
    Kernel driver in use: wl
    Kernel modules: bcma, wl

Ubuntu提供的驱动

Broadcom STA无线驱动(私有)

私有的Broadcom STA无线驱动由Broadcom在上游维护。这个驱动是闭源的,如果存在问题可能只能由Broadcom提供修复。为了方便使用,Ubuntu提供两个版本的驱动:

其他开源版本

  • b43 driver (Open-source) - 适合 BCM 4306 (rev 03), 4311, 4312, 4318, 4322, 4331, 43224 and 43225.

b43架构包含两部分。第一部分是firmware-b43-installer,这是一个脚本用于安装驱动firmware,由ubuntu社区维护。第二部分是b43驱动,由Linux kernel社区维护。

  • b43legacy driver (Open-source) - 适合 BCM 4301, 4306 (rev 02), and 4309.

b43legacy架构同样也是两部分组成。第一部分是firmware-b43legacy-installer,用于安装b43legacy驱动firmware,由ubuntu社区维护。第二部分是b43驱动,由Linux kernel社区维护。

  • brcmsmac driver (Open-source) - 适合 BCM 4313, 43224 and 43225.

这个brcmsmac驱动是从linux内核包中的brcm80211模块提供PCIe设备驱动,由上游Linux kernel社区维护。

  • brcmfmac driver (Open-source) - 适合 SDIO: For Chip ID BCM 4329, 4330, 4334, 4335, 4354, 43143, 43241, and 43362. 以及 USB: For Chip ID BCM 43143, 43242, 43566, and 43569.

  • rndis_wlan driver (Open-source) - 适合 BCM 4320

  • ndiswrapper (Open-source) - For all chip IDs.

实际上这个 ndiswrapper软件包使用了Windows闭源驱动来激活WIFI网卡,有上游维护。有关介绍,请参考WifiDocs/Driver/Ndiswrapper

安装STA驱动

STA - 如果可以访问Internet

如果有办法让电脑访问Internet(例如,先通过有线连接网络),可以比较方便地安装

注意:如果你看到消息 Module build for the currently running kernel was skipped since the kernel source for this kernel does not seem to be installed 则表明你忘记安装了相应的 linux-header 软件包。

测试驱动(无需重启主机):

此时可以看到网络管理器可以扫描到网卡并且尝试连接。

bcmwl-kernel-source软件包会自动屏蔽掉开源驱动,这样可以确保只使用STA驱动。

STA - 没有Internet访问

如果无法访问Internet,则可以从Ubuntu安装介质的 ../pool/restricted/b/bcmwl 目录下的 restricted 目录下找到 bcmwl-kernel-source 软件包。

注意: bcmwl-kernel-source 软件包依赖 linux-headers 软件包,所以可能需要首先从在线仓库获取响应软件包。一个运行的 LiveCD/LiveUSB环境及具备这些软件包的(所以也可以让无线网卡工作),但是安装系统则可能没有。确保你安装了符合当前内核版本的linux-headers软件包,加上相应的generic header软件包,这样就可以执行内核升级。

  • 找到内核版本:

显示输出 4.18.0-10-generic

要找到需要安装的linux-headers软件包,可以执行

显示输出

可以将安装光盘添加作为软件包安装源(这个方法非常巧妙,利用了安装光盘中具备的所有必要软件包):

不过,目前启动时候 dmesg -T 依然有一个内核call trace:

由于报错中有 IPv6 相关,所以尝试关闭IPv6:

  • 配置 /etc/sysctl.d/10-ipv6-disalbe.conf 内容如下:

然后执行

此时再检查 ip addr 可以看到所有接口的IPv6地址都消失。

参考

Last updated

Was this helpful?