求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

包含网卡/无线网的网络问题和ADSL/校园网/宽带拨号支持及代理/共享等网络使用问题
wangtn
帖子: 12
注册时间: 2010-11-14 9:37

求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#1

帖子 wangtn » 2016-11-22 16:13

目前已知Broadcom BCM43340是SDIO接口的wifi模块(不是传统意义上的无线网卡),用lspci和lsusb指令都无法看到硬件。
请问linux驱动这种网卡是同时需要固件和驱动吗?
我现在做了以下工作:
根据 https://wireless.wiki.kernel.org/en/use ... /brcm80211
brcmfmac官方说明更新了brcmfmac43340-sdio.bin和EFI模式(跟模式是否有关系?)下的指导说明 更新了brcmfmac43340-sdio.txt,
但还是无法驱动无线网卡,请大神指导。
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#2

帖子 poloshiao » 2016-11-22 17:49

请问linux驱动这种网卡是同时需要固件和驱动吗?
1. Driver brcmfmac
1-1. https://wireless.wiki.kernel.org/en/use ... /brcm80211
brcmfmac is a FullMAC driver.
1-1-1. https://wireless.wiki.kernel.org/en/dev ... ry#fullmac
FullMAC
FullMAC is a term used to describe a type of wireless card where the MLME is managed in hardware. You would not use mac80211 to write a FullMAC wireless driver.
1-1-2. https://wireless.wiki.kernel.org/en/dev ... ssary#mlme
MLME
1-2. brcmfmac 支援 BCM43340
https://wireless.wiki.kernel.org/en/use ... 1#brcmfmac
brcmfmac
SDIO devices
BCM43340 0xa94c Supported in 4.0+

2. Firmware
Both brcmsmac and brcmfmac drivers require firmware files that need to be separately downloaded. Firmware is available from the Linux firmware repository at:
2-1. download
2-1-1. git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
2-1-2. http://git.kernel.org/?p=linux/kernel/g ... rmware.git
2-1-3. https://git.kernel.org/?p=linux/kernel/ ... rmware.git
2-2. 安裝
Broadcom brcmfmac driver
Support for both 32 and 64 bit Linux kernels
Firmware installation
Current
<以下省略 請自行參閱>

3. 補充
NVRAM from EFI
Some new devices are storing the nvram which is needed in addition to the firmware by the driver in an EFI variable and the Windows driver can access it (this file should be optional in the case of PCIe devices). Currently brcmfmac does not support this automatically. First mount the efi vars into sysfs:
<以下省略 請自行參閱>
3-1. 是否包含 BCM43340 ?
使用 cat 查一下
/sys/firmware/efi/efivars/nvram-74b00bd9-805a-4d61-b51f-43268123d113
這裡的 74b00bd9-805a-4d61-b51f-43268123d113 可能跟你的不一樣 需要修正
wangtn
帖子: 12
注册时间: 2010-11-14 9:37

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#3

帖子 wangtn » 2016-11-22 18:33

poloshiao 写了:
请问linux驱动这种网卡是同时需要固件和驱动吗?
1. Driver brcmfmac
1-1. https://wireless.wiki.kernel.org/en/use ... /brcm80211
brcmfmac is a FullMAC driver.
1-1-1. https://wireless.wiki.kernel.org/en/dev ... ry#fullmac
FullMAC
FullMAC is a term used to describe a type of wireless card where the MLME is managed in hardware. You would not use mac80211 to write a FullMAC wireless driver.
1-1-2. https://wireless.wiki.kernel.org/en/dev ... ssary#mlme
MLME
1-2. brcmfmac 支援 BCM43340
https://wireless.wiki.kernel.org/en/use ... 1#brcmfmac
brcmfmac
SDIO devices
BCM43340 0xa94c Supported in 4.0+

2. Firmware
Both brcmsmac and brcmfmac drivers require firmware files that need to be separately downloaded. Firmware is available from the Linux firmware repository at:
2-1. download
2-1-1. git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
2-1-2. http://git.kernel.org/?p=linux/kernel/g ... rmware.git
2-1-3. https://git.kernel.org/?p=linux/kernel/ ... rmware.git
2-2. 安裝
Broadcom brcmfmac driver
Support for both 32 and 64 bit Linux kernels
Firmware installation
Current
<以下省略 請自行參閱>

3. 補充
NVRAM from EFI
Some new devices are storing the nvram which is needed in addition to the firmware by the driver in an EFI variable and the Windows driver can access it (this file should be optional in the case of PCIe devices). Currently brcmfmac does not support this automatically. First mount the efi vars into sysfs:
<以下省略 請自行參閱>
3-1. 是否包含 BCM43340 ?
使用 cat 查一下
/sys/firmware/efi/efivars/nvram-74b00bd9-805a-4d61-b51f-43268123d113
這裡的 74b00bd9-805a-4d61-b51f-43268123d113 可能跟你的不一樣 需要修正
您好,首先感谢您的解答,我看完之后是这样理解的:
1 首先,这种sdio接口的设备不是传统意义上的无线网卡,在linux下工作同时需要驱动和固件.不知基本概念是否理解正确?
2 brcmfmac就是开源实现的驱动,支持BCM43340。
3 上面回复中2-1部分指的是下载固件,也就是brcmfmac43340-sdio.bin这个文件,这个文件我已下载,并放到了/lib/firmware/brcm,这个文件Ubuntu有自带的版本,我是覆盖了。
4 我的系统是EFI引导的,根据NVRAM from EFI这部分的说明,把/sys/firmware/efi/efivars/nvram-74b00bd9-805a-4d61-b51f-43268123d113文件改名成brcmfmac43340-sdio.txt放到了/lib/firmware/brcm这个文件夹下。
5 nvram-74b00bd9-805a-4d61-b51f-43268123d113这个文件名在我机器上也是一样的,并不需要修改。
6 整个驱动安装过程也就是把上面的bin文件和txt文件放到了/lib/firmware/brcm目录下,还需要做其他操作吗?我在发帖之前已经做了这些,还是无法正常使用wifi。
同时因为是sdio设备,无法用lspci和lsusb指令看到我的设备,请大神指导。。
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#4

帖子 poloshiao » 2016-11-22 18:41

1 首先,这种sdio接口的设备不是传统意义上的无线网卡,在linux下工作同时需要驱动和固件.不知基本概念是否理解正确?
不是只有 sdio 才需要 驱动和固件
還有許多硬件需要 驱动和固件
有些文章 把固件定義為 驅動發行以後 又新增加的程式碼 還來不及寫進驅動中 所以以固件呈現
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#5

帖子 poloshiao » 2016-11-22 18:56

6 整个驱动安装过程也就是把上面的bin文件和txt文件放到了/lib/firmware/brcm目录下,还需要做其他操作吗?
先詳細參閱
http://askubuntu.com/questions/386371/n ... l-of-13-10
“No Network Devices Available” for BCM43241(SDIO) after fresh install of 13.10
及其所有連結文章
有問題 歡迎一起來討論
wangtn
帖子: 12
注册时间: 2010-11-14 9:37

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#6

帖子 wangtn » 2016-11-22 20:38

poloshiao 写了:
6 整个驱动安装过程也就是把上面的bin文件和txt文件放到了/lib/firmware/brcm目录下,还需要做其他操作吗?
先詳細參閱
http://askubuntu.com/questions/386371/n ... l-of-13-10
“No Network Devices Available” for BCM43241(SDIO) after fresh install of 13.10
及其所有連結文章
有問題 歡迎一起來討論
您好,这篇文章我看了,文中的解决办法是替换掉bin和txt文件,但我照做之后,还是没有效果。
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#7

帖子 poloshiao » 2016-11-23 8:13

把下面指令 複製 貼進終端機 執行
1. dmesg | grep -i 14e4
2. sudo lshw -numeric -class network
3. sudo modprobe brcmfmac
lsmod | grep brcmfmac
4. sudo modprobe brcmfmac-sdio
lsmod | grep brickmason-sdio
把結果全部直接 選取/複製/貼上來
wangtn
帖子: 12
注册时间: 2010-11-14 9:37

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#8

帖子 wangtn » 2016-11-23 12:38

poloshiao 写了:把下面指令 複製 貼進終端機 執行
1. dmesg | grep -i 14e4
2. sudo lshw -numeric -class network
3. sudo modprobe brcmfmac
lsmod | grep brcmfmac
4. sudo modprobe brcmfmac-sdio
lsmod | grep brickmason-sdio
把結果全部直接 選取/複製/貼上來
因为那台电脑没有有线网卡,没法上网,我描述一下执行结果:
1 没任何结果
2 执行后终端闪烁展示 USB ,几秒后消失
3 加载brcmfmac模块,然后lsmod显示如下:
brcmfmac 290816 0
brcmutil 16384 1 brcmfmac
cfg80211 565248 1 brcmfmac
4 加载brcmfmac-sdio模块,直接提示如下错误:
Module brcmfmac-sdio not found in directory /lib/modules/4.4.0-21-generic
5 固件涉及一个bin文件和一个txt文件,这两天我也一直在askUbuntu查询资料,有人说把windows驱动下的txt文件拷贝过来覆盖,经过尝试无效;
还有人也发过dmesg的信息,不知道这个地方您是否有灵感:
[ 1548.361470] usbcore: deregistering interface driver brcmfmac
[ 1553.562888] brcmfmac: brcmf_sdio_drivestrengthinit: No SDIO Drive strength init done for chip 4324 rev 5 pmurev 17
[ 1553.563246] usbcore: registered new interface driver brcmfmac
[ 1553.563343] brcmfmac_sdio mmc0:0001:1: firmware: direct-loading firmware brcm/brcmfmac43241b4-sdio.bin
[ 1553.563352] brcmfmac_sdio mmc0:0001:1: firmware: direct-loading firmware brcm/brcmfmac43241b4-sdio.txt
[ 1553.709778] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Jul 17 2013 07:36:07 version 6.10.197.71 (r412987) FWID 01-882d2634
[ 1553.723455] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code
[ 1553.764370] brcmfmac: brcmf_add_if: ERROR: netdev:wlan0 already exists
[ 1553.764376] brcmfmac: brcmf_add_if: ignore IF event
[ 1563.827235] brcmfmac: brcmf_escan_timeout: timer expired

从上面dmesg可以看出,加载brcmfmac模块后,正常情况下,模块会自动去加载bin和txt文件,然而这个信息在我的电脑上并未出现,我这执行sudo modprobe brcmfmac后的dmesg信息 是这样:
usbcore:registered new interface driver brcmfmac
cfg80211:World regulatory domian updated:
cfg80211: DFS Master region:unset
cfg80211: (start_freq - emd_greq @ bandwidth),(max_antenna_gain,max_eirp),(dfs_cac_time)
cfg80211: (2402000KHz - 2472000 KHz @ 40000KHz),(N/A,2000 mBm),(N/A)
...............................................
文字全手打 :Hehe ,我觉得现在需要找出bramfmac没有自动加载bin和txt文件的原因,不知大神有何指教?
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#9

帖子 poloshiao » 2016-11-23 15:37

3 加载brcmfmac模块,然后lsmod显示如下:
brcmfmac 290816 0
brcmutil 16384 1 brcmfmac
cfg80211 565248 1 brcmfmac
1. 表示 可以載入 brcmfmac 驅動模組
1-1. 如果開機
lsmod | grep brcmfmac
沒有 brcmfmac 驅動模組
把 brcmfmac 加入 /etc/modules 最後一行
這樣 一開機 就載入 brcmfmac 驅動模組
意思是 不必 再
sudo modprobe brcmfmac
我觉得现在需要找出bramfmac没有自动加载bin和txt文件的原因
2. 從這個網址
https://www.dropbox.com/s/8m9n4qolf76iz ... c-sdio.zip
下載 brcmfmac-sdio.zip
2-0. 下載前 需要先登入 https://www.dropbox.com/ 如果還沒有帳號 可以先註冊一個帳號 (免費)
2-1. 解開 包含這兩個檔案
brcmfmac-sdio.bin
brcmfmac-sdio.txt
2-2. 把這兩個檔案放進
/lib/firmware/brcm
2-3. 然後
sudo modprobe brcmfmac-sdio
lsmod | grep brcmfmac-sdio
看看 有沒有 brcmfmac-sdio
2-4. 如果有 把它也加入
/etc/modules
重開機
2-5. 這樣 一開機 就會載入 brcmfmac-sdio
2-6. 資料來源
http://askubuntu.com/a/389441
2-7. 補充
這一篇 適用於 broadcom 43241 wireless card
不確定是否 適用於 broadcom 43340 wireless card
2-8. 如果可以 跟大家分享一下
wangtn
帖子: 12
注册时间: 2010-11-14 9:37

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#10

帖子 wangtn » 2016-11-23 16:18

poloshiao 写了:
sudo modprobe brcmfmac-sdio
上面这个思路总结一下,先替换提供下载地址里面的bin和txt文件,我现在理解这俩文件对于不同设备肯定是不同的(dropbox这俩文件不一定适合BCM43340),我昨天也已经尝试替换过,没有效果;
第二步执行sudo modprobe brcmfmac-sdio命令,会提示
Module brcmfmac-sdio not found in directory /lib/modules/4.4.0-21-generic
错误,说明linux没有brcmfmac-sdio模块。
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#11

帖子 poloshiao » 2016-11-23 16:22

第二步执行sudo modprobe brcmfmac-sdio命令,会提示
Module brcmfmac-sdio not found in directory /lib/modules/4.4.0-21-generic
错误,说明linux没有brcmfmac-sdio模块。

brcmfmac-sdio.bin
brcmfmac-sdio.txt
複製 貼進
/lib/modules/4.4.0-21-generic
再試試
sudo modprobe brcmfmac-sdio

如果可以
把 /lib/firmware/brcm 加入 PATH 環境變數 看看
這樣 在 /lib/modules/4.4.0-21-generic 找不到
看看 會不會 去 /lib/firmware/brcm 找
wangtn
帖子: 12
注册时间: 2010-11-14 9:37

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#12

帖子 wangtn » 2016-11-23 17:55

poloshiao 写了:
brcmfmac-sdio.bin
brcmfmac-sdio.txt
複製 貼進
/lib/modules/4.4.0-21-generic
再試試
sudo modprobe brcmfmac-sdio
这样行不通,sudo modprobe brcmfmac-sdio 依旧提示Module brcmfmac-sdio not found in directory /lib/modules/4.4.0-21-generic,
说明模块在linux下的注册方式不是这样;
sudo modprobe brcmfmac可以执行,是因为有对应的ko后缀名的驱动文件
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#13

帖子 poloshiao » 2016-11-23 19:21

1. 放在
/lib/firmware/
看看
依旧提示Module brcmfmac-sdio not found in directory /lib/modules/4.4.0-21-generic
2. sudo ls -al /lib/modules | grep 4.4.0-21-generic
看看 有沒有 /lib/modules/4.4.0-21-generic
3. uname -r
看看 你目前載入的 Linux Kernel 版本
wangtn
帖子: 12
注册时间: 2010-11-14 9:37

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#14

帖子 wangtn » 2016-11-23 20:23

poloshiao 写了:1. 放在
/lib/firmware/
看看
依旧提示Module brcmfmac-sdio not found in directory /lib/modules/4.4.0-21-generic
2. sudo ls -al /lib/modules | grep 4.4.0-21-generic
看看 有沒有 /lib/modules/4.4.0-21-generic
3. uname -r
看看 你目前載入的 Linux Kernel 版本
1放在/lib/firmware下也不行。依旧提示找不到brcmfmac-sdio模块。
2 4.4.0-21-generic是个目录,存在于/lib/modules下
3内核是 4.4.0-21-generic


准备放弃了,实在是解决不了 :Sleep
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 求教大神BCM43340网卡在Ubuntu16.04下无法驱动的问题

#15

帖子 poloshiao » 2016-11-23 20:42

3内核是 4.4.0-21-generic
目前 Ubuntu 16.04 應該是 4.4.0.47-generic 核心
你更新看看

sudo apt update
sudo apt upgrade
sudo systemctl reboot
回复