简单一下记录移植MT7601U AP Linux 驱动至Orangepi-PC2开发板的过程。
二 环境描述
1、Orangpi-PC2开发板(Linux Orangepi 3.10.65 #12 SMP PREEMPT Sat Mar 4 18:05:52 CST 2017 aarch64 aarch64 aarch64 GNU/Linux)
2、wifi网卡(360 mini wifi ,芯片组MT7601U)
3、OrangePi-PC2开发SDK
4、MT7601U AP for Linux 驱动
三 移植过程
1、首先修改工程Makefile
下载的驱动中没有针对ORANGEPI-PC2平台的定制宏,这里需要自己手动添加:
(1)在开始30行左右添加如下内容:
#PLATFORM: Target platform
PLATFORM = ORANGEPI_PC2
(2)在200行左右添加如下内容:
ifeq ($(PLATFORM),ORANGEPI_PC2)
# Linux 3.10 Change to your local setting
LINUX_SRC = /work/orangePi/OrangePi_H5SDK/kernel
LINUX_SRC_MODULE = /work/orangePi/OrangePi_H5SDK/kernel/drivers/net/wireless/
CROSS_COMPILE = /work/orangePi/OrangePi_H5SDK/toolchain/gcc-linaro-aarch/bin/aarch64-linux-gnu-
endif
Note:我的SDK是放在/work/orangePi目录下的
(3)在400行左右将下面的内容
$(MAKE) -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
替换为
ifeq ($(PLATFORM),ORANGEPI_PC2)
$(MAKE) ARCH=arm64 CROSS_COMPILE=$(CROSS_COMPILE) -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
else
$(MAKE) -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
endif
2、修改驱动源码,支持360 wifi网卡
360 mini wifi的USB ID是ID 148f:760b,需要将该ID添加到rtusb_dev_id列表中,否则加载驱动后会探测不到网卡;
修改rtusb_dev_id.c文件的dev id列表如下:
/* module table */
USB_DEVICE_ID rtusb_dev_id[] = {
{USB_DEVICE(0x148f,0x6570)}, /* Ralink 6570 */
{USB_DEVICE(0x148f,0x7650)}, /* MT7650 */
{USB_DEVICE(0x148f,0x6370)}, /* Ralink 6370 */
{USB_DEVICE(0x148f,0x7601)}, /* MT 6370 */
{USB_DEVICE(0x148f,0x760b)}, /* 360 mini wifi */
{ }/* Terminating entry */
};
3、修改申请的DMA内存大小,否则驱动会加载失败,提示如下错误:
--> RTMPAllocTxRxRingMemory
[ 74.801467]
[ 74.807607] ---> RTMPFreeTxRxRingMemory
[ 74.811927]
[ 74.816152] ERROR!!! Failed to allocate memory - TxRxRing
[ 74.823792]
[ 74.828817] rt2870: probe of 4-1:1.0 failed with error -1
[ 74.835193] usbcore: registered new interface driver rt2870
解决方法:将rt_linux.h中的BULKAGGRE_SIZE调整为10,rtmp_usb.h中的RXBULKAGGRE_SIZE调整为2; (备注:后续还需要定位一下为什么orangePi-PC2的DMA 内存剩下这么小)
4、编译驱动
直接使用make命令即可;
5、编译成功后会在os/Linux目录下生成mt7601Uap.ko内核模块,将该模块拷贝至Orangepi开发板上(我这里已经配置好了samba共享),并加载;
6、使用ifconfig命令配置该网卡,
ifconfig ra0 10.10.10.100
使用iwconfig命令应该会看到如下信息:
ra0 RTWIFI SoftAP ESSID:"RT2860AP"
Mode:Managed Channel=11 Access Point: 24:05:0F:64:BB:E9
Bit Rate=150 Mb/s
使用手机搜索一下周围的wifi热点,应该会发现名称为RT2860AP的热点;
7、至此驱动部分移植完成,后续还需进行热点配置的调试;