You are not logged in.
Hi, I've been trying to install Arch on a MacBook Air (2015).
lspci -vnn -d 14e4:
shows that I'm using the Broadcom BCM4360 802.11ac wireless network adapter. The Arch Wiki page about Broadcom wireless adapters contains links to websites to check whether the
brcm80211
or
b43
driver works with the adapter. From these sites I believe I've learnt that neither of them works. Now I believe I'm left with the only option being to install the proprietary `broadcom-wl` driver.
This is my first time troubleshooting hardware problems on Linux, and as such I'd appreciate help explaining some of the concepts I don't understand fully:
1. When I run
lspci -vnn -d 14e4:
(see above), I get the following output at the very bottom of the entry for the Broadcom WLAN adapter:
Kernel driver in use: bcma-pci-bridge
Kernel modules: bcma, wl
Is this
wl
the same as the
broadcom-wl
driver? I ask because at the end of the wiki page's section on manual installation of
broadcom-wl
, it refers to "the wl module".
2. What is the difference between "Kernel driver in use" and "Kernel modules" as listed above? The first field is clear enough, but the second is slightly more cryptic.
3. How do I change what driver is used for a piece of hardware? Or is this designed to be impossible because it is managed by the kernel automagically? I ask this because I thought of doing so to test if the wl module that I see is in fact compatible with the adapter but for some reason is not in use.
4. I have no way to access the Internet from the MacBook except with the WLAN adapter. So I can't install Arch - which is a prerequisite for installing the
broadcom-wl
driver, according to the wiki page (the same one I linked above). Is there a workaround, or do I need to use a USB adapter or something similar?
Thank you!
Last edited by C-Ren (2019-03-21 20:21:57)
Offline
Welcome to the arch linux forums C-Ren. Yes the wl module is supplied by broadcom-wl / broadcom-wl-dkms.
Kernel driver in use: bcma-pci-bridge
This is the module the kernel has currently loaded for the device.
Kernel modules: bcma, wl
These are modules the kernel could use for the device. It seems strange to me bcma-pci-bridge is loaded for the device but it not in second list as well.
Are you running these commands from the install media?
Offline
Are you running these commands from the install media?
Yes, I am (since I don't know how to install Arch without an Internet connection, and also because the computer would be very little use to me without Internet anyway, so I might as well troubleshoot them problem now).
So, as wl is listed as a module that the kernel could use for the device, does that mean that it's present on the installation media and I just need to activate it, or is the kernel aware of modules that aren't installed?
Offline
The broadcom-wl packages aren't in the repos just the AUR so you'll need an internet connection to download/build one of them.
Do you have a smartphone you can tether to the laptop just to run the installation? No additional drivers are needed for this.
Offline
@Slithery if the something providing the wl module was not installed why is it showing up in the lspci output under 'Kernel modules'?
Offline
broadcom-wl and broadcom-wl dkms are both in [community] and I believe the recent isos have broadcom-wl included.
C-Ren, you should be able to do the following:
rmmod b43
rmmod ssb
rmmod bcma-pci-bridge
modprobe wl
Then you should be able to have a wireless interface that you can bring up and connect as described in the installation guide. Note, wl gives (at least used to give) odd interface names, but just check the output of `ip a` for any interface starting with a 'w'.
Last edited by Trilby (2019-03-23 18:08:02)
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
C-Ren, you should be able to do the following: ...
Unfortunately that isn't working. Trying to unload "b43" and "ssb" works, but apparently "module bcma_pci_bridge is not currently loaded". And even after "modprobe wl", the only interface I can see is the loopback. The "lspci" command that I ran before still shows the same modules and driver as before.
Last edited by C-Ren (2019-03-23 18:30:18)
Offline
What is the output of the following now
lsmod
lspci -vnnd 14e4:
modinfo wl
dmesg
Edit:
replaced uname -a with dmesg
Last edited by loqs (2019-03-23 18:49:20)
Offline
What is the output of the following now
lsmod lspci -vnnd 14e4: modinfo wl uname -a
The "lspci" one still gives the same driver-in-use and kernel modules as before.
lsmod lists "wl", "bcma", and "bcm5974" among many others. These are the only ones that looked relevant.
modinfo wl gives:
filename:/lib/modules/4.20.13-arch1-1-ARCH/extramodules/wl.ko.xz
license: MIXED/proprietary
srcversion: [long hex string which I'm not going to transcribe]
alias: pci:[long string]
depends: cfg80211
retpoline: Y
name: wl
vermagic: 4.20.13-arch1-1-ARCH SMP preempt mod_unload
[then follows a list of params, which I won't transcribe because there are a lot and they don't look obviously relevant]
uname -a gives the same version listed above in "filename" for the "wl" module, followed by #1 SMP PREEMPT and what appears to be the build time, and finally "x86_64 GNU/Linux".
I've just unloaded bcma, and now running that "lspci" command shows no driver-in-use for the adapter. Notably, if I then reload bcma, I get this error message:
bcma: Unsupported SPROM revision: 11
bcma: bus0: No SPROM available
b43-phys2: ERROR: FOUND UNSUPPORTED PHY (Analog 12, Type 11 (AC), Revision 1)
Offline
Unload bcma and any other in kernel provided driver for the device. Unload wl and reload it. If the device does not appear what is printed in dmesg from that?
Offline
Unloading wl and reloading it having already unloaded bcma did the trick! The wl module is now listed as in use for the device and wlp3s0 shows up as a network interface. Thank you everyone for your help.
Offline
Remember to install broadcom-wl or broadcom-wl-dkms with pacstrap or while still in the chroot, or you'll really be out of luck once you boot your new installation as broadcom-wl is included in the iso, but is not part of a base install.
You'll also want wireless_tools or wpa_supplicant (I much prefer the latter) to be able to actually connect with your new installation as, similarly, these are available in the iso, but are not part of a base install.
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline