本帖最后由 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)
对照了表格
[td]PCI-ID | Supported? | Chip ID | Modes | PHY version | Alternative |
14e4:4353 | yes (3.1+) | BCM43224 | a/b/g/n | N (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
[39219.935299] 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 的跟 群晖官方的 我二个都试过
主要还是走模块加载的思路
群暉官方的内核源代码
我主要是看这个教程做的
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[3]: *** [drivers/usb/core/port.o] Error 1
- make[2]: *** [drivers/usb/core] Error 2
- make[1]: *** [drivers/usb] Error 2
- make: *** [drivers] Error 2
复制代码有折腾的人一起讨论讨论
怎麼選?
menuconfig 怎麼選擇
這裡有一些參考
这里很多地方都没有写,或者草草带过
有折腾的人一起讨论讨论
跟我一样不懂的人也帮忙顶一下,求大神出现