轶哥博客

妄图改变世界的全栈程序员。

Ubuntu安装无线网卡驱动 Wifi/BT BCM4330 (AP6383)

  像BCM4330 (AP6383)这样的Wifi/蓝牙一体化芯片常见于一些平板电脑、笔记本和mini pc中。特别是z3735、z8300、core m这些芯片的平板电脑很常见。AP6210也比较常见,但目前暂未解决其驱动问题。

  如何在搭载这样芯片的设备中安装Linux驱动呢?Ubuntu16.04版本的内核中仍然没有封装对应驱动(Ps:貌似Intel和Ubuntu合作,Intel NUC可以完美安装Ubuntu)。

  首先到官网下载你喜欢的Ubuntu版本(建议下载高版本)。制作U盘启动工具,可以参考《平板电脑安装Ubuntu教程》。设置BIOS后进入引导选择菜单请选择:“Try Ubuntu without install”这样的选项,先进入到CD模式的Ubuntu下。

  如果你的设备在这样的模式下能够上网,蓝牙、电源管理等各项驱动也正常,那么恭喜你中奖了,可以直接点击桌面的Install Ubuntu安装系统(如下图)。

安装LOGO

  并非所有人都那么幸运。就像开头提到的,很多搭载混合功能的芯片并没有被Ubuntu等Linux衍生版操作系统封装驱动。因此需要手动安装驱动。

  在另外一台设备上下载驱动再安装?这样太麻烦了。告诉大家一个小诀窍,如果你有安卓手机的话,在连接WIFI的情况使用USB数据线连接装有Ubuntu的设备,找到设置下的“个人热点”,开启USB网络共享。(别问我iphone可以不,只要你有流量就没有不可以的事情。)。

手机开启热点

  之后在你的Ubuntu设置网络为自动,即可连接网络。联网安装过程可以自动下载一些东西,很方便。

安装后截图

  安装Ubuntu完毕后,下载brcmfmac4330-sdio.bin文件。将其放到/lib/firmware/brcm/目录下,如果没有brcm,请mkdir一个。然后到你的设备官网下载Windows版本的wifi驱动文件。找到其中的brcmfmac4330-sdio.txt文件并放到同一个目录下(/lib/firmware/brcm/)。

  文件的内容可能是这样的:

#Sample variables file for BCM94330 SD FC AGB board T77H360.04_EVT5_20120731
manfid=0x2d0
prodid=0x0547
vendid=0x14e4
devid=0x4360
boardtype=0x05e1
boardrev=0x1202
boardflags=0x10080a00
nocrc=1
xtalfreq=26000
boardnum=22
macaddr=00:90:4c:c5:12:38
ag0=0x40
ag1=0xBF
aa2g=1
aa5g=1
ccode=all
pa0itssit=0x20
pa0b0=4924
pa0b1=-595
pa0b2=-157
rssismf2g=0xa
rssismc2g=0x3
rssisav2g=0x7
#rssi params for 5GHz
rssismf5g=0x4
rssismc5g=0x3
rssisav5g=0x7
#PA parameters for lower a-band
pa1lob0=5050
pa1lob1=-630
pa1lob2=-195
#PA parameters for midband
pa1b0=4880
pa1b1=-625
pa1b2=-200
#PA parameters for high band
pa1hib0=4880
pa1hib1=-620
pa1hib2=-190
rxpo5g=0
maxp2ga0=0x44
maxp5ga0=0x3A
maxp5gla0=0x3A
maxp5gha0=0x3A
# 2.4G Tx Power offsets
ofdm2gpo=0x22222222
mcs2gpo0=0x4444
mcs2gpo1=0x4444
# 5G Tx Power offsets
ofdm5gpo=0x00000000
ofdm5glpo=0x00000000
ofdm5ghpo=0x00000000
mcs5gpo0=0x2222
mcs5gpo1=0x2222
mcs5glpo0=0x2222
mcs5glpo1=0x2222
mcs5ghpo0=0x2222
mcs5ghpo1=0x2222
sromrev=3
il0macaddr=00:90:4c:c5:12:38
wl0id=0x431b
cckPwrOffset=6
triso2g=3
#swctrlmap_2g=0x44844484,0x42824282,0x42824282,0x18282,0x1ff
swctrlmap_2g=0x04040404,0x02020202,0x02020202,0x18282,0x1ff
triso5g=6
swctrlmap_5g=0x10101010,0x28282020,0x20202020,0x10202,0x0f8
noise_cal_ref_2g=53
rfreg033=0x19
rfreg033_cck=0x1f
dacrate2g=160
dacrate5g=160
txalpfbyp2g=1
bphyscale=17
cckPwrIdxCorr=-15
pacalpwr5glo=13
pacalpwr5glo1=11
pacalpwr5g=13
pacalpwr5g1=11
pacalpwr5ghi=13
pacalpwr5ghi1=11
#pacalpwr2g1=13
#pacalath2g=180
#pacalidx2g1=55
pacalpwr2g=13
txgaintbl=1
rfreg088=15
cckdigfilttype=20
noise_cal_adj_2g=-3
#wake on wireless LAN
sd_gpout=0
sd_gpval=1
sd_gpdc=0

  总之需要保证有以下两个文件,且brcmfmac4330-sdio.txt文件是你的厂商提供的有效文件,驱动才能正常工作:

/lib/firmware/brcm/brcmfmac4330-sdio.bin
/lib/firmware/brcm/brcmfmac4330-sdio.txt

  执行这个Linux命令:

$ cat /sys/bus/acpi/devices/INT33BB\:00/power_state

  如果返回D3cold说明你的ACPI没有打开,wifi模块不会正常工作。需要执行这个命令:

echo on > /sys/bus/platform/devices/INT33BB\:00/power/control

  这个命令需要sudo权限,如果无法执行,那么vim修改一下即可。

  最后reboot,发现Wifi可以正常连接。

成功安装截图1

成功安装截图2

  很遗憾BCM4330 (AP6383)的蓝牙驱动我调试后一直不稳定,无法正常使用,如果我调试成功将会在此放出蓝牙驱动的安装方法。需要使用蓝牙功能可以先买一个USB蓝牙,很小巧,即插即用。

  后注:

  不是所有型号的芯片都需要用这样的驱动方法。比如“rtl8723bs”这个Wifi/Bt/FM三合一芯片,可以直接clone驱动代码编译:https://github.com/hadess/rtl8723bs,编译完毕reboot后wifi即可使用。蓝牙驱动可以试试:https://github.com/lwfinger/rtl8723bs_bt。朋友冀兄友情提示:rtl8723bs在某些设备上存在死机的情况,如果出现肯定在1小时之内,如果2小时都没出现应该就没有问题了,请大家留意!

  上一篇 (基于Docker部署Node.js应用环境)
下一篇 (Ubuntu 16.04 安装搜狗输入法)