Closed suchipi closed 2 months ago
Thanks for the report! Apparently the logs are from the 20230326
version of wifibox-alpine
. Broadcom cards are not yet properly supported in that version, please try a development branch on GitHub, the pgj/freebsd-wifibox-port
repository. There you shall find version 20230916
(or later if I will get to update it to a more recent version in the meantime) which was tested to be working with BCM4331. There are known issues still with instability, though your mileage may vary.
Thanks!! After deinstalling the old version and installing the version from GitHub, now I see this in the dmesg output, which is promising (but still not-yet-functional):
[ 0.649848] Run /sbin/init as init process
[ 0.650217] with arguments:
[ 0.650218] /sbin/init
[ 0.650218] with environment:
[ 0.650219] HOME=/
[ 0.650219] TERM=linux
[ 0.650219] BOOT_IMAGE=(host)/usr/local/share/wifibox/vmlinuz
[ 0.650220] modules=squashfs
[ 0.922822] brcmfmac 0000:00:06.0: can't derive routing for PCI INT A
[ 0.922825] brcmfmac 0000:00:06.0: PCI INT A: not connected
[ 1.041131] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43602-pcie for chip BCM43602/1
[ 1.042481] brcmfmac 0000:00:06.0: Direct firmware load for brcm/brcmfmac43602-pcie.FreeBSD-BHYVE.bin failed with error -2
[ 1.091154] brcmfmac 0000:00:06.0: Direct firmware load for brcm/brcmfmac43602-pcie.txt failed with error -2
[ 1.091168] brcmfmac 0000:00:06.0: Direct firmware load for brcm/brcmfmac43602-pcie.clm_blob failed with error -2
[ 1.554564] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[ 1.555157] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 1.617278] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[ 1.617947] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43602/1 wl0: Nov 10 2015 06:38:10 version 7.35.177.61 (r598657) FWID 01-ea662a8c
[ 1.731106] random: crng init done
It seems like the relevant firmware files for my NIC aren't present in the image; is that correct? Where would I get them from and/or how would I add them?
Wow, I have not seen such messages before... You will have modify the Makefile
for the net/wifibox-alpine
port to download the requires files (as distfiles) and copy them to the guest image before it gets "squashed". An example of that is how the linux-firmware
files are added.
But if you can help with finding the missing firmware files, I can make the changes.
For what it is worth, the firmware files are part of the standard linux-firmware
distribution. If you choose the FW_BRCM
option, they should be added to the image. Though it seems an extra symlink for brcmfmac43602-pcie.FreeBSD-BHYVE.bin
needs to be added because it seems to be hardware-specific and not part of the linux-firmware
package.
Thanks! I'll try that. What should the symlink target be?
Based on the log messages, it is brcm/brcmfmac43602-pcie.FreeBSD-BHYVE.bin
what the driver is looking for, while the linux-firmware
package contains only brcm/brcmfmac43602-pcie.ap.bin
and brcm/brcmfmac43602-pcie.bin
. Hence a symbolic link with the name brcm/brcmfmac43602-pcie.FreeBSD-BHYVE.bin
is needed (under /lib/firmware
) that points to either brcmfmac43602-pcie.ap.bin
or brcmfmac43602-pcie.bin
.
This can be done in the Makefile
of net/wifibox-alpine
, somewhere in the pre-build
step.
Gotcha, thanks for the explanation! I'll give it a shot
I was able to get it working!
I had to:
brcmfmac43602-pcie.FreeBSD-BHYVE.bin
to brcmfmac43602-pcie.bin
, as you saidUnfortunately, I think that .txt file can't legally be distributed, so this fix can't be merged into wifibox mainline (unless you don't care). Though even if you didn't are about the legality, you'd have to do something special to get the correct mac address to put in the txt file... which is a lot of work for this one specific card that's only used in certain MacBooks.
What's curious is that that ubuntu live usb environment didn't have the .txt file present, but was nonetheless able to browse the web. Maybe NetworkManager does something interesting...
I did run into some issues with system stability as you indicated (for example, the entire system freezes when attempting wifibox restart
), but it does "work" well enough.
Thanks for all your help!
That is great to hear! I think I can integrate the changes you have made. Here is the plan:
.txt
file when building the port which could be then made available under /lib/firmware
in the guest..txt
file.That said, do you mind if I reopen this ticket and add the support properly?
Not at all, that sounds awesome. Thank you!
I have the same hardware, directly pkg install wifibox, almost works, except I need to run this command in wifibox:
dhcpcd wlan0
dmesg show firmware is already load:
[ 0.879989] brcmfmac 0000:00:06.0: can't derive routing for PCI INT A [ 0.879995] brcmfmac 0000:00:06.0: PCI INT A: no GSI [ 0.995382] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43602-pcie for chip BCM43602/1 [ 0.996404] brcmfmac 0000:00:06.0: Direct firmware load for brcm/brcmfmac43602-pcie.FreeBSD-BHYVE.bin failed with error -2 [ 1.035498] brcmfmac 0000:00:06.0: Direct firmware load for brcm/brcmfmac43602-pcie.txt failed with error -2 [ 1.035511] brcmfmac 0000:00:06.0: Direct firmware load for brcm/brcmfmac43602-pcie.clm_blob failed with error -2 [ 1.145346] NET: Registered PF_INET6 protocol family [ 1.145491] Segment Routing with IPv6 [ 1.145497] In-situ OAM (IOAM) with IPv6 [ 1.500985] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None [ 1.501488] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 1.532427] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available [ 1.533162] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43602/1 wl0: Nov 10 2015 06:38:10 version 7.35.177.61 (r598657) FWID 01-ea662a8c [ 1.662097] random: crng init done [ 38.619268] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Hi @huanghwh: Yes, it is a known issue and there is no fix created for it yet. Please consult https://github.com/pgj/freebsd-wifibox/issues/65#issuecomment-1734695999 above for the workaround.
@suchipi, @huanghwh please note that I have updated the net/wifibox-alpine
port to version 20240106
where the necessary symlinks are getting created during the build. You can find it here:
https://github.com/pgj/freebsd-wifibox-port/tree/c2a1abd8dcacd218d325fb545da30c1de98cdcc5
Based on what was discussed in the comments so far, I am not sure if this by itself will fix the issue. But I would be curious to see if this is enough or the .txt
file is also needed. I tried to understand the issue better and I have read recommendations where the contents of the .txt
did not seem to be relevant hence it might not even be mandatory to have.
@suchipi could you please help me with testing this out? I would need feedback about the following cases:
net/wifibox-alpine
20240106
as it is now..txt
file for the firmware is added (as you did before) but it is empty..txt
file for the firmware has only the configuration line for the MAC address..txt
file for the firmware is some random file, e.g. it is the copy of the corresponding .pcie.bin
file.Also, @suchipi could you please send me the parts of the dmesg
output from the Ubuntu Live system where the wireless card is properly detected and configured? It would be interesting to see what firmware files it tries to load.
@pgj I'm willing to pick up the testing.
First thing's first: the patch does not work because it creates a link
brcmfmac43602-pcie.bin.FreeBSD-BHYVE.bin@ -> brcmfmac43602-pcie.bin
whereas it should be creating a link from brcmfmac43602-pcie.FreeBSD-BHYVE.bin
(note the lack of .bin after -pcie)
I have submitted https://github.com/pgj/freebsd-wifibox-port/pull/36 to fix that.
As for further testing...
A non-existent txt
file produces:
[ 1.049479] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43602-pcie for chip BCM43602/1
[ 1.095253] brcmfmac 0000:00:06.0: Direct firmware load for brcm/brcmfmac43602-pcie.txt failed with error -2
[ 1.095270] brcmfmac 0000:00:06.0: Direct firmware load for brcm/brcmfmac43602-pcie.clm_blob failed with error -2
[ 1.095283] brcmfmac 0000:00:06.0: Direct firmware load for brcm/brcmfmac43602-pcie.txcap_blob failed with error -2
An empty txt
file produces(notice it's -22 not -2):
[ 1.049479] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43602-pcie for chip BCM43602/1
[ 1.095253] brcmfmac 0000:00:06.0: Direct firmware load for brcm/brcmfmac43602-pcie.txt failed with error -22
[ 1.095270] brcmfmac 0000:00:06.0: Direct firmware load for brcm/brcmfmac43602-pcie.clm_blob failed with error -2
[ 1.095283] brcmfmac 0000:00:06.0: Direct firmware load for brcm/brcmfmac43602-pcie.txcap_blob failed with error -2
At the moment (using FreeBSD-13.3), wifibox does not work at all because wpa_supplicant refuses to start. wifibox attempts to start wpa_supplicant by calling /sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant
, but this just returns 0 with the help page:
wifibox:~# wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant
Successfully initialized wpa_supplicant
wpa_supplicant v2.10
Copyright (c) 2003-2022, Jouni Malinen <j@w1.fi> and contributors
This software may be distributed under the terms of the BSD license.
See README for more details.
This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/)
usage:
wpa_supplicant [-BddhKLqqtvW] [-P<pid file>] [-g<global ctrl>] \
[-G<group>] \
-i<ifname> -c<config file> [-C<ctrl>] [-D<driver>] [-p<driver_param>] \
[-b<br_ifname>] [-e<entropy file>] \
[-o<override driver>] [-O<override ctrl>] \
[-N -i<ifname> -c<conf> [-C<ctrl>] [-D<driver>] \
[-m<P2P Device config file>] \
[-p<driver_param>] [-b<br_ifname>] [-I<config file>] ...]
drivers:
nl80211 = Linux nl80211/cfg80211
options:
-b = optional bridge interface name
-B = run daemon in the background
-c = Configuration file
-C = ctrl_interface parameter (only used if -c is not)
-d = increase debugging verbosity (-dd even more)
-D = driver name (can be multiple drivers: nl80211,wext)
-e = entropy file
-g = global ctrl_interface
-G = global ctrl_interface group
-h = show this help text
-i = interface name
-I = additional configuration file
-K = include keys (passwords, etc.) in debug output
-L = show license (BSD)
-m = Configuration file for the P2P Device interface
-N = start describing new interface
-o = override driver parameter for new interfaces
-O = override ctrl_interface parameter for new interfaces
-p = driver parameters
-P = PID file
-q = decrease debugging verbosity (-qq even less)
-t = include timestamp in debug messages
-v = show version
-W = wait for a control interface monitor before starting
example:
wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf
wifibox:~#
Instead, I have to force wpa_supplicant to pass the argument -iwlan0
(by overwriting /etc/conf.d/wpa_supplicant
). From here:
* Enabling forwarding ... [ ok ]
* /var/run/wpa_supplicant: creating directory
* Starting WPA Supplicant ... [ ok ]
* Starting networking ... * lo ... [ ok ]
* eth0 ... [ ok ]
* wlan0 ...ip: SIOCGIFFLAGS: No such device
dhcpcd-10.0.6 starting
wlan0: interface not found
ifup: failed to change interface wlan0 state to 'up'
[ !! ]
* /run/radvd: creating directory
* /run/radvd: correcting owner
indicates some race condition, and I manually have to do the dhcp, and then it works:
wifibox:~# dhcpcd -n wlan0
dhcpcd-10.0.6 starting
wlan0: connected to Access Point: [snip]
DUID [snip]
wlan0: IAID [snip]
wlan0: soliciting an IPv6 router
wlan0: soliciting a DHCP lease
wlan0: offered 192.168.1.124 from 192.168.1.1
wlan0: probing address 192.168.1.124/24
wlan0: leased 192.168.1.124 for 86400 seconds
wlan0: adding route to 192.168.1.0/24
wlan0: adding default route via 192.168.1.1
* WARNING: you are stopping a boot service
* Stopping IPv6 Router Advertisement Daemon ... [ ok ]
* Starting IPv6 Router Advertisement Daemon ... [ ok ]
* Stopping busybox udhcpd ... [ ok ]
* Starting busybox udhcpd ... [ ok ]
wifibox:~# ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 1.1.1.1: seq=0 ttl=53 time=21.021 ms
64 bytes from 1.1.1.1: seq=1 ttl=53 time=10.791 ms
Without the txt
file, the dhcp connection cannot be completed:
wifibox:~# dhcpcd -n wlan0
dhcpcd-10.0.6 starting
DUID [snip]
* WARNING: you are stopping a boot service
* Stopping IPv6 Router Advertisement Daemon ... [ ok ]
* Starting IPv6 Router Advertisement Daemon ... [ ok ]
* Stopping busybox udhcpd ... [ ok ]
* Starting busybox udhcpd ... [ ok ]
wlan0: waiting for carrier
but it can scan for SSIDs, for example:
wifibox:~# iw wlan0 scan | grep SSID
SSID: [snip]
SSID: [snip]
SSID: [snip]
SSID: [snip]
The txt
file does not need to contain the mac address, and works fine without it.
Thanks @MegaManSec for testing the different variations and submitting the fix for a mistake I made earlier. How did you add the .txt
file to the guest image?
Wifibox launches WPA Supplicant on boot through the wpa_supplicant
OpenRC init script which is installed at /etc/init.d/wpa_supplicant
. This script has its own logic (find_wireless
and append_wireless
) to locate and inject the interface name for the wireless device automatically.
The interface can go missing only if the logic above fails to work. That is when both /sys/class/net/wlan0/wireless
and /sys/class/net/wlan0/phy80211
are missing. The script should wait until the kernel modules are loaded, that is, the wlan0
device becomes available.
You can always restart the networking
service or wpa_supplicant
separately on the wifibox console
, if they do not work right after boot:
wifibox# service networking restart
or
wifibox# service wpa_supplicant restart
Of course, that is just a temporary workaround for the problem. Though I am curious if this can fix the problem without touching the configuration files of the service or launching the binaries individually. Once this is clarified, we could move on to understanding why the wlan0
device is not created by the time when wpa_supplicant
wants to use it.
How did you add the .txt file to the guest image?
The same as the suchipi:
+.if ${PORT_OPTIONS:MFW_BRCM}
+ ${CP} /var/tmp/test \
+ ${_FIRMWAREDIR}/brcm/brcmfmac43602-pcie.txt ; \
+.endif
in pre-build.
You can always restart the networking service or wpa_supplicant separately on the wifibox console, if they do not work right after boot:
This does not work, either:
$ sudo wifibox console
Connecting, type "~." to leave the session...
Connected
root
wifibox:~# service networking restart
* WARNING: you are stopping a boot service
* WARNING: you are stopping a boot service
* Stopping Unix Domain Socket pass-through ...
[ ok ]
* Stopping busybox udhcpd ...
[ ok ]
* WARNING: you are stopping a boot service
* Stopping IPv6 Router Advertisement Daemon ...
[ ok ]
* Stopping networking ...
* lo ...
[ ok ]
* eth0 ...
[ ok ]
* Starting networking ...
* lo ...
[ ok ]
* eth0 ...
[ ok ]
* wlan0 ...
dhcpcd-10.0.6 starting
wlan0: waiting for carrier
^Creceived SIGINT, stopping
* networking: caught SIGINT, aborting
wifibox:~# wlan0: removing interface
dhcpcd exited
Restarting wpa_supplicant and then manually starting dhcp does, though.
$ sudo wifibox console
Connecting, type "~." to leave the session...
Connected
root
wifibox:~# service wpa_supplicant restart
* Starting WPA Supplicant ...
[ ok ]
wifibox:~# ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
ping: sendto: Network unreachable
wifibox:~# dhcpcd -n wlan0
dhcpcd-10.0.6 starting
wlan0: connected to Access Point: [snip]
DUID [snip]
wlan0: IAID [snip]
wlan0: soliciting an IPv6 router
wlan0: soliciting a DHCP lease
wlan0: offered 192.168.1.123 from 192.168.1.1
wlan0: probing address 192.168.1.123/24
wlan0: leased 192.168.1.123 for 86400 seconds
wlan0: adding route to 192.168.1.0/24
wlan0: adding default route via 192.168.1.1
* WARNING: you are stopping a boot service
* Stopping IPv6 Router Advertisement Daemon ... [ ok ]
* Starting IPv6 Router Advertisement Daemon ... [ ok ]
* Stopping busybox udhcpd ... [ ok ]
* Starting busybox udhcpd ... [ ok ]
wifibox:~# ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 1.1.1.1: seq=0 ttl=53 time=12.188 ms
Restarting wpa_supplicant and then restarting networking also works.
wlan0 is being created (of course) at some stage, just apparently too late for wpa_supplicant:
$ sudo service wifibox onerestart
Stopping wifibox....WARNING: PPT device pci3:0:0 could not be destroyed.
...OK
Starting wifibox.......OK
$ sudo wifibox console
Connecting, type "~." to leave the session...
Connected
root
wifibox:~# ls /sys/class/net/
eth0 lo wlan0
wifibox:~# iface="/sys/class/net/wlan0"; test -e "$iface"/wireless -o -e "$iface
"/phy80211 && echo "${iface##*/}"
wlan0
wifibox:~#
This is the full output from /var/log/messages when starting it, fyi: https://gist.github.com/MegaManSec/563c6543cbdc137349d9934758f3d0d8
And this is the output of the console when attached immediately after starting wifibox: https://gist.github.com/MegaManSec/dcfc101483bc2ba9a3189e39badb68e8
On the wifibox console
, you can use dmesg
to get all the messages from the kernel during the boot process.
What port options did you configure?
dmesg: https://gist.github.com/MegaManSec/490462fbdf22beb6207d7a4658d42933
Only the brcm option is chosen from the list of drivers, and the newest kernel option is chosen. Tomorrow I'll send a full screenshot.
Right after boot, can you use the ifconfig wlan0 up
command on the wifibox console
to create the missing wlan0
interface?
Yes, that creates the missing interface. Attached are the options when building.
wifibox:~# ifconfig wlan0 up
wifibox:~# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr [sino]
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
I've just tried with all sorts of different configurations, and nothing seems to bring up the interface: either kenel versions, hostapd, or ipv6 disabled.
@MegaManSec please try version 20240629
of the net/wifibox-alpine
port from the following branch:
https://github.com/pgj/freebsd-wifibox-port/tree/brcm43602
There you can find two changes:
By setting the BRCM_FWCONF_FILES
for the make
command, you can specify the location of the brcm43602.pcie.txt
firmware configuration file on your local file system and it will be added to the guest image.
The OpenRC init script for WPA Supplicant (/etc/init.d/wpa_supplicant
) is modified to re-try finding the wireless interface on launch. There are 8 rounds of tries, with exponentially increasing back-offs, starting from 100 ms. Each of the attempts is logged, which makes that observable.
bc is not installed in alpine:
* Starting busybox syslog ... [ ok ]
* No wireless interfaces are available (try: 1)
/lib/rc/sh/openrc-run.sh: line 35: bc: not found
* No wireless interfaces are available (try: 2)
* ...
btw, where does this updated /etc/init.d/wpa_supplicant get pulled from? it's not obvious to me
Aw, thanks! Yes, bc
is not available at the moment, because the busybox
package was stripped down. I have updated busybox
to serve this binary as well as the related, missing functionality. Please check the brcm43602
branch again.
The updated version of /etc/init.d/wpa_supplicant
is part of the wpa_supplicant
package. I updated this package to contain the required changes. You can see in the changes that the version and the checksum of the respective apk
has changed. In case you are curious, I published those package changes in https://github.com/pgj/freebsd-wifibox-alpine/pull/25 .
Success:
...
* Starting busybox syslog ... [ ok ]
* No wireless interfaces are available (try: 1)
* No wireless interfaces are available (try: 2)
* /var/run/wpa_supplicant: creating directory
* Starting WPA Supplicant ... [ ok ]
* Starting networking ... * lo ... [ ok ]
* eth0 ... [ ok ]
* wlan0 ...udhcpc: started, v1.36.1
...
However, I can't explain why, but it actually now works without the .txt file at all:
wifibox:/lib/firmware/brcm# dmesg |grep \.txt ; ping -c 4 1.1.1.1
[ 1.064226] brcmfmac 0000:00:06.0: Direct firmware load for brcm/brcmfmac43602-pcie.txt failed with error -2
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 1.1.1.1: seq=0 ttl=53 time=13.491 ms
64 bytes from 1.1.1.1: seq=1 ttl=53 time=14.517 ms
64 bytes from 1.1.1.1: seq=2 ttl=53 time=11.325 ms
64 bytes from 1.1.1.1: seq=3 ttl=53 time=18.535 ms
--- 1.1.1.1 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 11.325/14.467/18.535 ms
The aforementioned Without the txt file, the dhcp connection cannot be completed:
cannot even now be called:
wifibox:~# dhcpcd
-ash: dhcpcd: not found
Did dhcpcd just get changed to udhcpc? If so, it seems to have fixed the requirement for the .txt file completely.
That is awesome! Thanks for testing the changes.
I think the reason why the brcmfmac
driver works without the .txt
file is because it contains certain firmware configuration parameters only. Tweaking these parameters could fix issues with the signal strength and accessing 5 GHz networks, which might not be necessary. For what it is worth, the Debian MBP installation guide says "The installer will complain that it cannot find a file called brcm/brcmfmac43602-pcie.txt
. This is related to the WiFi adapter firmware. In fact the firmware (brcmfmac43602-pcie.bin
) gets loaded, and you can ignore this message, choosing "No" (i.e. do not load brcmfmac43602-pcie.txt
from an external media). The WiFi adapter will work anyway".
The presence of dhcpcd
depends on the IPv6 support. The udhcpc
utility (that is, BusyBox) is known to have issues with handling IPv6, so the port replaces it with dhcpcd
to mitigate that. I decided to not to do this unconditionally (for IPv4 too) because otherwise udhcpc
works nicely and it has a low footprint.
Right; when built with ipv6, even dhcpcd works fine now without the txt file, too. I'm not sure why it wasn't working in https://github.com/pgj/freebsd-wifibox/issues/65#issuecomment-2171926393 without the txt file.
So I suppose the BRCM_FWCONF_FILES option can be removed, and then everything is in working order.
@MegaManSec I decided to keep BRCM_FWCONF_FILES
as an optional way to supply configuration parameters for the brcm
driver.
Description
I can't get wifibox to work with the Broadcom BCM43602 found in my Macbook Pro 2015.
The guest doesn't seem to recognize the device.
I'm testing via
ping google.com
outside the guest, which times out.Host operating system
Wireless NIC
Wifibox version
Disk image type and version
wifibox-alpine-20230326
(installed via pkg)
Changes to the default configuration files
bhyve.conf
:core.conf
wpa_supplicant.conf
relevant additions to /etc/rc.conf
Logs
/var/log/wifibox.log
/var/run/wifibox/appliance/log/dmesg
/var/run/wifibox/appliance/log/messages
Additional context
wifibox, wifibox-core, and wifibox-alpine were all installed via pkg. I also tried versions compiled from ports, and tried configuring the port to include all the firmware files, but continued to run into the same issues.
Have you tried to turn it on and off?