移植MT7601U AP Linux 驱动至Orangepi-PC2开发板
一 前言
简单一下记录移植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(Download https://github.com/orangepi-xunlong/OrangePi_H5SDK.git )
4、MT7601U AP for Linux 驱动(Download http://download.csdn.net/detail/diandianyangyi/7894443)
三 移植过程
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- endifNote:我的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] <-- ERROR in Alloc Bulk buffer for HTTxContext! [ 74.807607] ---> RTMPFreeTxRxRingMemory [ 74.811927] <--- RTMPFreeTxRxRingMemory [ 74.816152] ERROR!!! Failed to allocate memory - TxRxRing [ 74.823792] <-- RTMPAllocAdapterBlock, Status=3 [ 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、至此驱动部分移植完成,后续还需进行热点配置的调试;
更多相关文章
- 在fc8安装TP-Linux WN3210G+USB无线网卡,提示wlan0 No scan resul
- PostgreSQL无法加载库未知错误14001
- 如何将图像加载到PictureBox;基于存储在DataBase中的图像位置
- LINQ : 谈谈LINQ TO SQL中的直接加载和延迟加载
- 使用进度条延迟加载图像会使图像在显示时发生损坏
- Java类的加载和对象创建流程的详细分析
- idea使用spring boot 热更新、热加载
- 让Android 设备通过USB 转RJ45有线网卡上网
- Android Picasso Dropbox:如何将图像加载到gridview中