我已经在树莓派 3 上安装了 gentoo。内核源代码的版本是 4.1.20-v7+。除了无线网络之外,一切正常。当我加载模块时brcmfmac
,它加载时没有任何抱怨,但 wifi 芯片无法识别或检测到。对于内核配置,我使用最新的 raspbian 中的内核配置/proc/config.gz
。
与树莓派一样,芯片被检测到,我知道它可以工作。我从 linux-firmware 包中获取了几个固件,并且得到了我需要的一个,/lib/firmware/brcm/brcmfmac43430-sdio.bin
lsmod 的结果是:
Module Size Used by
brcmfmac 177627 0
brcmutil 5493 1 brcmfmac
ipv6 338946 18
cfg80211 405047 1 brcmfmac
rfkill 16028 1 cfg80211
iptable_mangle 1326 0
iptable_nat 1593 0
nf_nat_ipv4 4784 1 iptable_nat
nf_nat 12056 1 nf_nat_ipv4
nf_log_ipv4 3720 3
nf_log_common 2780 1 nf_log_ipv4
xt_LOG 1177 3
xt_limit 1613 2
ipt_REJECT 1257 1
nf_reject_ipv4 2230 1 ipt_REJECT
nf_conntrack_ipv4 12664 11
nf_defrag_ipv4 1275 1 nf_conntrack_ipv4
xt_tcpudp 2097 8
xt_conntrack 3023 10
nf_conntrack 75577 4 nf_nat,nf_nat_ipv4,xt_conntrack,nf_conntrack_ipv4
iptable_filter 1237 1
ip_tables 11409 3 iptable_filter,iptable_mangle,iptable_nat
x_tables 12603 8 ip_tables,xt_tcpudp,xt_limit,xt_conntrack,xt_LOG,iptable_filter,ipt_REJECT,iptable_mangle
binfmt_misc 6228 1
squashfs 29028 1
bcm2708_rng 953 0
snd_soc_bcm2708_i2s 6662 0
snd_soc_pcm512x_i2c 2083 0
snd_soc_pcm512x 15581 1 snd_soc_pcm512x_i2c
snd_soc_wm8804_i2c 1384 0
regmap_mmio 2834 1 snd_soc_bcm2708_i2s
snd_soc_wm8804 7115 1 snd_soc_wm8804_i2c
snd_soc_tas5713 5088 0
snd_soc_core 128253 4 snd_soc_pcm512x,snd_soc_wm8804,snd_soc_tas5713,snd_soc_bcm2708_i2s
snd_compress 7681 1 snd_soc_core
snd_pcm_dmaengine 3223 1 snd_soc_core
regmap_i2c 2676 3 snd_soc_pcm512x_i2c,snd_soc_wm8804_i2c,snd_soc_tas5713
snd_pcm 73466 4 snd_soc_pcm512x,snd_soc_wm8804,snd_soc_core,snd_pcm_dmaengine
snd_timer 18840 1 snd_pcm
snd 50771 4 snd_soc_core,snd_timer,snd_pcm,snd_compress
spi_bcm2708 5030 0
i2c_bcm2708 4912 0
ubuntu 的 wireless-info 工具的结果:
########## wireless info START ##########
Report from: 06 Apr 2016 02:46 CEST +0200
Booted last: 06 Apr 2016 00:00 CEST +0200
Script from: 27 Sep 2015 00:34 UTC +0000
##### release ###########################
./wireless-info: line 155: lsb_release: command not found
##### kernel ############################
Linux 4.1.20-v7+ #1 SMP Tue Apr 5 00:28:37 CEST 2016 armv7l unknown BCM2709 GNU/Linux
dma.dmachans=0x7f35, bcm2708_fb.fbwidth=1920, bcm2708_fb.fbheight=1200, bcm2709.boardrev=0xa02082, bcm2709.serial=0xa9f651a3, smsc95xx.macaddr=<MAC address>, bcm2708_fb.fbswap=1, bcm2709.uart_clock=48000000, vc_mem.mem_base=0x3dc00000, vc_mem.mem_size=0x3f000000, dwc_otg.lpm_enable=0, console=ttyS0,115200, kgdboc=ttyAMA0,115200, console=tty0, rootfstype=ext4, elevator=deadline, rootwait
##### desktop ###########################
sed: can't read /root/.dmrc: No such file or directory
Could not be determined.
##### lspci #############################
pcilib: Cannot open /proc/bus/pci
lspci: Cannot find any working access method.
##### lsusb #############################
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
##### PCMCIA card info ##################
'pccardctl' is not installed (package "pcmciautils").
##### rfkill ############################
./wireless-info: line 192: rfkill: command not found
##### lsmod #############################
brcmfmac 177627 0
brcmutil 5493 1 brcmfmac
cfg80211 405047 1 brcmfmac
rfkill 16028 1 cfg80211
##### interfaces ########################
sed: can't read /etc/network/interfaces: No such file or directory
##### ifconfig ##########################
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet XX.XX.XX.XX netmask 255.255.255.0 broadcast XX.XX.XX.XX
inet6 XXXXXXXXXXXXXXXXXXXXXXXXX prefixlen 64 scopeid 0x20<link>
inet6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX prefixlen 64 scopeid 0x0<global>
ether <MAC address> txqueuelen 1000 (Ethernet)
RX packets 196 bytes 18362 (17.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 170 bytes 20021 (19.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
##### iwconfig ##########################
lo no wireless extensions.
eth0 no wireless extensions.
##### route #############################
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 XX.XX.XX.XX 0.0.0.0 UG 2 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
XX.XX.XX.XX 0.0.0.0 255.255.255.0 U 2 0 0 eth0
##### resolv.conf #######################
nameserver XX.XX.XX.XX
##### network managers ##################
Installed:
>~~~None found.
Running:
>~~~None found.
##### NetworkManager info ###############
NetworkManager is not installed (package "network-manager").
##### NetworkManager.state ##############
cat: /var/lib/NetworkManager/NetworkManager.state: No such file or directory
##### NetworkManager.conf ###############
grep: /etc/NetworkManager/NetworkManager.conf: No such file or directory
##### NetworkManager profiles ###########
No NetworkManager profiles found.
##### iw reg get ########################
'iw' is not installed (package "iw").
##### iwlist channels ###################
lo no frequency information.
eth0 no frequency information.
##### iwlist scan #######################
./wireless-info: line 302: sudo: command not found
Acquisition of admin privileges failed.
##### module infos ######################
[brcmfmac]
filename: /lib/modules/4.1.20-v7+/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
license: Dual BSD/GPL
description: Broadcom 802.11 wireless LAN fullmac driver.
author: Broadcom Corporation
firmware: brcm/brcmfmac4354-sdio.txt
firmware: brcm/brcmfmac4354-sdio.bin
firmware: brcm/brcmfmac43455-sdio.txt
firmware: brcm/brcmfmac43455-sdio.bin
firmware: brcm/brcmfmac43430-sdio.txt
firmware: brcm/brcmfmac43430-sdio.bin
firmware: brcm/brcmfmac4339-sdio.txt
firmware: brcm/brcmfmac4339-sdio.bin
firmware: brcm/brcmfmac43362-sdio.txt
firmware: brcm/brcmfmac43362-sdio.bin
firmware: brcm/brcmfmac4335-sdio.txt
firmware: brcm/brcmfmac4335-sdio.bin
firmware: brcm/brcmfmac43341-sdio.txt
firmware: brcm/brcmfmac43341-sdio.bin
firmware: brcm/brcmfmac43340-sdio.txt
firmware: brcm/brcmfmac43340-sdio.bin
firmware: brcm/brcmfmac4334-sdio.txt
firmware: brcm/brcmfmac4334-sdio.bin
firmware: brcm/brcmfmac4330-sdio.txt
firmware: brcm/brcmfmac4330-sdio.bin
firmware: brcm/brcmfmac4329-sdio.txt
firmware: brcm/brcmfmac4329-sdio.bin
firmware: brcm/brcmfmac43241b4-sdio.txt
firmware: brcm/brcmfmac43241b4-sdio.bin
firmware: brcm/brcmfmac43241b0-sdio.txt
firmware: brcm/brcmfmac43241b0-sdio.bin
firmware: brcm/brcmfmac43143-sdio.txt
firmware: brcm/brcmfmac43143-sdio.bin
firmware: brcm/brcmfmac43569.bin
firmware: brcm/brcmfmac43242a.bin
firmware: brcm/brcmfmac43236b.bin
firmware: brcm/brcmfmac43143.bin
srcversion: F50C49C88C2DEA498C4EAC7
depends: brcmutil,cfg80211
intree: Y
vermagic: 4.1.20-v7+ SMP mod_unload modversions ARMv7.
parm: txglomsz:maximum tx packet chain size [SDIO] (int)
parm: firmware_path:string
parm: debug:level of debug output (int)
parm: fcmode:mode of firmware signalled flow control (int)
parm: roamoff:do not use internal roaming engine (int)
[brcmutil]
filename: /lib/modules/4.1.20-v7+/kernel/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
license: Dual BSD/GPL
description: Broadcom 802.11n wireless LAN driver utilities.
author: Broadcom Corporation
srcversion: AE9B4BBC6D82855B9265054
depends:........
intree: Y
vermagic: 4.1.20-v7+ SMP mod_unload modversions ARMv7.
[cfg80211]
filename: /lib/modules/4.1.20-v7+/kernel/net/wireless/cfg80211.ko
description: wireless configuration support
license: GPL
author: Johannes Berg
srcversion: 6610E9DB7046B562928123C
depends: rfkill
intree: Y
vermagic: 4.1.20-v7+ SMP mod_unload modversions ARMv7.
parm: ieee80211_regdom:IEEE 802.11 regulatory domain code (charp)
parm: cfg80211_disable_40mhz_24ghz:Disable 40MHz support in the 2.4GHz band (bool)
##### module parameters #################
[brcmfmac]
debug: 0
fcmode: 0
roamoff: 0
[cfg80211]
cfg80211_disable_40mhz_24ghz: N
ieee80211_regdom: 00
##### /etc/modules ######################
grep: /etc/modules: No such file or directory
##### modprobe options ##################
[/etc/modprobe.d/aliases.conf]
alias char-major-10-175>agpgart
alias char-major-10-200>tun
alias char-major-81>bttv
alias char-major-108>~~~ppp_generic
alias /dev/ppp>~>~~~ppp_generic
alias tty-ldisc-3>~~ppp_async
alias tty-ldisc-14>~ppp_synctty
alias ppp-compress-21>~~bsd_comp
alias ppp-compress-24>~~ppp_deflate
alias ppp-compress-26>~~ppp_deflate
alias loop-xfer-gen-0>~~loop_gen
alias loop-xfer-3>~~loop_fish2
alias loop-xfer-gen-10>~loop_gen
alias cipher-2>~>~~~des
alias cipher-3>~>~~~fish2
alias cipher-4>~>~~~blowfish
alias cipher-6>~>~~~idea
alias cipher-7>~>~~~serp6f
alias cipher-8>~>~~~mars6
alias cipher-11>>~~~rc62
alias cipher-15>>~~~dfc2
alias cipher-16>>~~~rijndael
alias cipher-17>>~~~rc5
alias char-major-89 i2c-dev
[/etc/modprobe.d/i386.conf]
alias parport_lowlevel parport_pc
alias char-major-10-144 nvram
alias binfmt-0064 binfmt_aout
alias char-major-10-135 rtc
##### rc.local ##########################
grep: /etc/rc.local: No such file or directory
##### pm-utils ##########################
find: ‘/etc/pm/*.d’: No such file or directory
##### udev rules ########################
grep: /etc/udev/rules.d/*net*.rules: No such file or directory
##### dmesg #############################
[ 1.874541] smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' at usb-bcm2708_usb-1.1, smsc95xx USB 2.0 Ethernet, <MAC address>
[ 11.320439] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
[ 12.924555] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1
########## wireless info END ############
感谢您的帮助。
答案1
与其将 Raspbian 安装在某个地方,更简单、更可重复的选择是简单地使用以下命令从 GitHub 中提取非自由固件文件:
git clone --depth 1 https://github.com/RPi-Distro/firmware-nonfree.git
然后复制:
cp firmware-nonfree/brcm80211/brcm/brcmfmac43430-sdio.* /lib/firmware/brcm/
(要在没有 git 的情况下执行此操作,您可以使用 wget,例如:
wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm80211/brcm/brcmfmac43430-sdio.bin
wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm80211/brcm/brcmfmac43430-sdio.txt
然后将这些文件复制到/lib/firmware/brcm
以前的位置。)
然后brcmfmac
就可以初始化芯片了。
答案2
我也遇到了同样的问题,但由于这一切都在 raspian 上运行,我将所有文件从/lib/firmware/brcm
raspian 复制到我的 gentoo 系统,理论上如果不需要它们,它们就不会被加载。
问题解决了!