j796160836 发表于 2017-6-15 09:35:16

给群輝加上 博通Broadcom BCM43xx 无线网卡驱动 (未成功)

本帖最后由 j796160836 于 2017-6-16 12:23 编辑

这是一篇没成功的教程
相当折腾,也相当蛋疼,弄了好几个晚上不弄了
大概是太折腾,没人写

只是分享一下折腾的纪录和思路,如果有人成功了记得跟我说说
可以帮帮我

我找了很多文章跟教程还是做不出来
以下会拼凑一些我看到的教程跟我的步骤
---

今天想加入的是
Broadcom BCM43224AG 802.11a/b/g/draft-n Wi-Fi Adapter
从鲁大师或AIDA64可以看到这个型号

Win7底下免驱
但在这里要驱动

思路有二个,一个是 b43 驱动一个是 wl 驱动

Broadcom(博通)无线网卡,总有三种类型的驱动
驱动类型
描述

brcmsmac/brcmfmac
内核自带,源自broadcom的开源驱动

b43
内核自带,源自 broadcom Linux 驱动的逆向工程

Broadcom-wl
broadcom发布的专用驱动

http://blog.csdn.net/beijing2008lm/article/details/18979607


细节差异就不贴了,大意就是内核自带的 b43 驱动比较厉害,但内核没有预设开启
wl 驱动会跟自带的驱动冲突所以安装时要关掉另外二者

查网卡型号 (在你的Nas底下做)
$ lspci -n | grep 14e4

系统显示
0000:02:00.0 0280: 14e4:4353 (rev 01)

对照了表格

PCI-IDSupported?Chip IDModesPHY versionAlternative
14e4:4353yes (3.1+)BCM43224a/b/g/nN (r6)wl/brcm80211



都是三者都可以用的意思

查系统版本(在你的Nas底下做)
$ uname -a

系统显示
Linux DiskStation 3.10.102 #15101 SMP Mon May 22 10:02:53 CST 2017 x86_64 GNU/Linux synology_broadwell_3617xs

这里有三个信息
1. Linux 内核版号是 3.10.102
2. 平台是 x86_64 (broadwell)
3. 型号是 DS3617xs

喔对了,我的是系统是 DSM 6.1 用的档案是 DSM_DS3617xs_15101.pat

环境准备

准备一台 Ubuntu 12.10 系統,如果版本新了一點沒關係
我是做台 Ubuntu 虚拟机,用 ssh 连到那台虚拟机,方便剪贴指令
避免蛋疼的权限不足,以下直接都用 root 操作,如果介意的话请自行加 sudo

安裝一些必要軟件: git, libc6-i386, ncurses, build-essential archivemount
$ apt-get install git libc6-i386 build-essential libncurses5-dev archivemount


从这里

http://sourceforge.net/projects/dsgpl/files/
下载 DSM 6.1 tool chain 文件解压至 /usr/local 下
路徑是 DSM 6.1 Tool Chains -> Intel x86 Linux 3.10.102 (Broadwell)
档名为 broadwell-gcc493_glibc220_linaro_x86_64-GPL.txz

(在另一台主机上复制档案,如果知道的可以略过)
$ scp broadwell-gcc493_glibc220_linaro_x86_64-GPL.txz ssh user@10.211.55.11:/home/user/
$ cp /home/user/broadwell-gcc493_glibc220_linaro_x86_64-GPL.txz /usr/local/


$ cd /usr/local/
$ tar -xvf broadwell-gcc493_glibc220_linaro_x86_64-GPL.txz

会解压很多文件在 /usr/local/x86_64-pc-linux-gnu/


wl 驱动

这里参考了
http://blog.csdn.net/tallercc/article/details/51985019


http://www.broadcom.com/support/802.11/linux_sta.php
下载最新的驱动
我点 Linux® STA 64-bit driver
档名为 hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz

解压下载好的驱动到 /usr/local/src/hybrid-wl 目录

$ mkdir -p /usr/local/src/hybrid-wl

(在另一台主机上复制档案,如果知道的可以略过)
   $ scp hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz ssh user@10.211.55.11:/home/user/
   $ cp /home/user/hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz /usr/local/src/hybrid-wl/


$ cd /usr/local/src/hybrid-wl
$ tar -zxvf hybrid-v35_64-nodebug-pcoem-6_30_223_271.tar.gz

交互编译
$ cd /usr/local/src/hybrid-wl

$ make ARCH=x86_64 CROSS_COMPILE=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-
执行完毕会得到 wl.ko

编译时有 API=WEXT 或者 API=CFG80211 这二个参数,默认为第二种
如果不能加载就试试第一种

把它放在NAS的 /lib/modules 底下

(复制档案到NAS上,如果知道的可以略过)
   $ scp wl.ko admin@192.168.1.130:/volume1/data/
   $ cp /volume1/data/ /lib/modules

然后在NAS上加载
$ insmod /lib/modules/wl.ko

系统会给这个错误
insmod: ERROR: could not insert module wl.ko: Invalid module format

然而用以下指令会得到更进一步的信息
$ dmesg
wl: version magic '3.5.0-17-generic SMP mod_unload modversions ' should be '3.10.102 SMP mod_unload '

到这里就卡住了
这里有乱试了一下,用一些不正规的作法绕过去版本检查
http://blog.csdn.net/crazycoder8848/article/details/40950317

只会得到更多的错误

这个驱动没有 Kconfig 只有 Makefile
(难道 Kconfig 是要自己写?)
没有 Kconfig 意思就是在 menuconfig 会没有选项可以选
所以我不知道要放在原代码的哪里

直接编译又有版本检查问题,求指导

b43 驱动

刚刚提到内核自带的 b43 驱动比较厉害,但内核没有预设开启
那就拿內核源代碼编译内核模组让他开启

这里参考了很多文章
http://www.gebi1.com/thread-63718-1-1.html
http://www.xp933.com/tech/1328.html
http://xpenology.com/wiki/en/building_xpenology
http://www.bydavy.com/2012/01/co ... r-synology-devices/
http://xpenology.eu/viewtopic.php?t=59
https://forum.synology.com/enu/viewtopic.php?f=27&t=52065
http://www.gebi1.com/thread-64338-1-1.html
http://www.21qa.net/questions/2145/2145?sort=votes&page=1

内核源代码有二处,andy 的跟 群晖官方的 我二个都试过
主要还是走模块加载的思路

**** Hidden Message *****

群暉官方的内核源代码

我主要是看这个教程做的
https://hallard.me/how-to-instal ... ogy-ds1010-dsm-4-1/

从这里
http://sourceforge.net/projects/dsgpl/files/

下载
我的路径是 Synology NAS GPL Source -> 15047branch -> broadwell-source
档名是 linux-3.10.x.txz
把它解压到 /usr/local/x86_64-pc-linux-gnu/source/

$ mkdir -p /usr/local/x86_64-pc-linux-gnu/source/

(在另一台主机上复制档案,如果知道的可以略过)
   $ scp linux-3.10.x.txz ssh user@10.211.55.11:/home/user/
   $ cp /home/user/linux-3.10.x.txz /usr/local/x86_64-pc-linux-gnu/source/


$ cd /usr/local/x86_64-pc-linux-gnu/source/
$ tar -xvf linux-3.10.x.txz

会解压很多文件在 /usr/local/x86_64-pc-linux-gnu/source/linux-3.10.x

进入选单选择
$ make ARCH=x86_64 CROSS_COMPILE=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-linux-gnu- menuconfig
编译模组
$ make ARCH=x86_64 CROSS_COMPILE=/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu- modules

主要的问题是,编译时会出错在一个莫名奇妙的地方
drivers/usb/core/port.c: In function ‘usb_hub_create_port_device’:
drivers/usb/core/port.c:151:35: error: ‘CONFIG_SYNO_USB_VBUS_NUM_GPIO’ undeclared (first use in this function)
drivers/usb/core/port.c:151:35: note: each undeclared identifier is reported only once for each function it appears in
drivers/usb/core/port.c:153:18: warning: unused variable ‘gSynoUsbVbusGpp’ [-Wunused-variable]
drivers/usb/core/port.c:152:13: warning: unused variable ‘gSynoUsbVbusPort’ [-Wunused-variable]
drivers/usb/core/port.c:151:14: warning: unused variable ‘gSynoUsbVbusHostAddr’ [-Wunused-variable]
make: *** Error 1
make: *** Error 2
make: *** Error 2
make: *** Error 2有折腾的人一起讨论讨论


怎麼選?

menuconfig 怎麼選擇
這裡有一些參考

**** Hidden Message *****
这里很多地方都没有写,或者草草带过
有折腾的人一起讨论讨论

跟我一样不懂的人也帮忙顶一下,求大神出现

j796160836 发表于 2017-6-16 12:22:31

自顶一个

wachbo 发表于 2017-6-23 22:17:44

学习一下

lqh_311 发表于 2017-6-24 19:54:20

谢谢分享!!!!!

cyber8080 发表于 2017-11-25 09:27:34

谢谢分享

baobao818 发表于 2017-11-28 19:55:11

按照我编译QNAP模块的经验来看,你可以尝试把所有编译失败的模块都去掉。反正你只是想编译一个wl.ko而已。比如说现在先把整个usb子系统全部去掉,再编译。

jin0828 发表于 2017-11-29 00:39:17

高端玩法,我贫乏的大脑完全想不出,给nas服务器安装无线网卡可以干什么用?不过看楼上这么折腾,突然有一种试一试的冲动

hongqiao888 发表于 2017-11-29 08:55:45

感谢分享,学习一下

fengs 发表于 2017-12-7 01:34:57

我给台式机用的usb3.0的5G无线网卡插在黑群晖上竟然是免驱的,可以识别连接无线网,比较蛋疼的是偶尔会休眠无法唤醒,名字叫睿因USB千兆无线网卡,不是打广告

泽泽酷儿 发表于 2021-4-16 00:54:08

只支持楼主~~~

Lei_sjun 发表于 2022-2-3 11:22:22

感谢楼主分享,最近在给DS1821+添加E10M20-T1(AQC107网卡驱动)时,也折腾了好久,最后虽然驱动成功了,但方法是拣现成(pocopico大佬编译ds918+里的ko)还有winhex修改官方atlantic.ko里的PID VID,再删除数字签名部分)这个偏方。
   通过DSM自身搭编译环境,Dsm 6.2 7.0下很多命令都删除了(apt等)困难重重,
   虚拟机ubuntu 18.04下搭建群晖官方交叉编译环境,make成功得到ko文件,在insmod时也遇到版本号不匹配问题,
   编译linux内核,我看到网友尝试完也未成功,目前看论坛里公开的方法都较早了,对DSM 6.2后面的新版本不适用,期待大佬位指导

﹎Praise奇〆 发表于 2022-4-21 09:49:44

好东西学习一下

veelove 发表于 2024-2-26 22:24:45

看看 学习下

jyugtz 发表于 2024-4-2 19:36:49

感谢分享,下载收藏

jyugtz 发表于 2024-4-3 12:21:25

感谢分享,下载收藏
页: [1]
查看完整版本: 给群輝加上 博通Broadcom BCM43xx 无线网卡驱动 (未成功)