- 下载内核源码,,用
uname -r
查看本机内核
wget https://github.com/raspberrypi/linux/archive/rpi-4.0.y.tar.gz
tar xzf rpi-4.0.y.tar.gz
- 确保gcc版本是4.6
gcc -v
, 4.8无法正常编译内核 - 将源码移至目录
/usr/src
,并建立软链至/lib/modules/
[sudo] mv linux-rpi-4.0.y /usr/src
[sudo] ln -s /usr/src/linux-rpi-4.0.y /lib/modules/`uname -r`/build
cd /lib/modules/`uname -r`/build
- clean下源码,生成make的config,预备编译内核
make mrproper
modprobe configs
zcat /proc/config.gz > .config
modules_prepare
- 为了节约时间不重头编译内核,下载
updated: 此文件会随着内核版本变动,请下载对应版本,否则就算编译成功也不可用,版本参考https://github.com/raspberrypi/firmware/commit/13aa07f322b6f1645508b5c24ad70035f2a963d5
wget https://github.com/raspberrypi/firmware/raw/master/extra/Module7.symvers
cp Module7.symvers Module.symvers
- 编译驱动8188eu
cd ~
wget https://github.com/lwfinger/rtl8188eu/archive/master.zip
unzip master.zip
rm -rf master.zip
cd rtl8188eu
sudo make -j4
sudo make install
----------------------------------------
为raspberry pi 编译无线网卡驱动程序
一、背景
一段时间以来,机器人活动室的raspberry pi全部用的是EDUP的8508-us,这款无线网卡无需编译,就可以驱动。但是最近在系统联合调试时,该款网卡的表现实在太差,动不动就导致内核OOps,于是寻找其它网卡。目前找到的有小度wifi,tp-link 725Nv2 tp-link 725Nv5 。小度的芯片是MT7601,后两款驱动是8188es。全部需要自行编译驱动。
二、编译方法概要
编译方法分为三步:
1)、下载内核源码
2)、清理、配置内核源码
3)、编译驱动
三、具体编译方法
1)、下载内核源码
# uname -r
看一下内核什么版本。
我已经用rpi-update更新到最新,所以已经是3.10.19+。于是下载3.10.19+.
可以
也可以:
#git clone --depth 1 https://github.com/raspberrypi/linux.git
2)、清理、配置内核源码
将源码移至/usr/src目录
# mv linux-rpi-3.10.y /usr/src 建立内核模块库目录的链接 # ln -s /usr/src/linux-rpi-3.10.y /lib/modules/3.10.19+/build # cd /lib/modules/3.10.19+/build make mrproper可以看作更加强劲的make clean命令,用来清除环境变量,即清除配置文件,一般编译内核前都要运行 # make mrproper 将当前正在使用的系统的内核配置生成内核配置信息 # gzip -dc /proc/config.gz > .config 生成编译内核所需要的东西 # make modules_prepare 获取内核编译时生成的内核模块导出符号文件,因为不是从头编译内核,所以没有,但是编译内核模块需要这个 # wget https://github.com/raspberrypi/firmware/raw/master/extra/Module.symvers
到这里,可以证实开始编译驱动了。
3)、编译驱动
小度wifi
解压缩后,修改common/rtusb_dev_id.c文件,找到
{USB_DEVICE(0x148f,0x7601)}, /* MT 6370 */
下面加一行
{USB_DEVICE(0x2955,0x1001)}, /* Xiaodu*/
然后回到内核源码根目录,执行
#sudo make
然后会有一个比较久的编译时间,完成以后。os/linux目录就有了MT7601Usta.ko文件了。
可以用modinfo命令查看内核模块信息:
#modinfo MT7601Usta.ko
然后安装模块
#sudo cp mt7601Usta.ko /lib/modules/3.10.19+/kernel/drivers/net/wireless/
这样还不行,还要:
在/etc/目录创建Wireless/RT2870STA/子目录。然后:
#sudo cp RT2870STA.dat /etc/Wireless/RT2870STA/
#sudo cp RT2870STACard.dat /etc/Wireless/RT2870STA/
这个时候,执行
分析可加载模块的依赖性,生成modules.dep文件和映射文件
#sudo depmod -a
加载模块
#sudo modprobe MT7601Usta
查看网络接口,这时候应该出来一个ar0的无线接口
#ifocnfig
然后到/etc/network/interface里面把wlan0,然后修改为ar0。可以共用wpa_supplicat配置文件。
8188eu(tp-link 725n V2,727n v5)
相对简单一些。
#git clone git://github.com/lwfinger/rtl8188eu.git
#cd rtl8188eu
#sudo make
#sudo cp 8188eu.ko /lib/modules/3.10.19+/kernel/drivers/net/wireless/
#sudo depmod -a
#sudo modprobe 8188eu
至此,两种芯片,三款无线网卡的驱动就编译完成了。
四、总结:
该方法是一个驱动编译的通用方法。
编译好的驱动,可以直接复制ko文件给相同内核的raspberry pi使用。
参考文章: