一 前言

简单一下记录移植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-
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] <-- 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、至此驱动部分移植完成,后续还需进行热点配置的调试;






更多相关文章

  1. 在fc8安装TP-Linux WN3210G+USB无线网卡,提示wlan0 No scan resul
  2. PostgreSQL无法加载库未知错误14001
  3. 如何将图像加载到PictureBox;基于存储在DataBase中的图像位置
  4. LINQ : 谈谈LINQ TO SQL中的直接加载和延迟加载
  5. 使用进度条延迟加载图像会使图像在显示时发生损坏
  6. Java类的加载和对象创建流程的详细分析
  7. idea使用spring boot 热更新、热加载
  8. 让Android 设备通过USB 转RJ45有线网卡上网
  9. Android Picasso Dropbox:如何将图像加载到gridview中

随机推荐

  1. MySql 存储过程插入年月日
  2. sqlserverdate时间转换给出不正确的结果?
  3. 使用T-SQL中另一个(非xml)列的值更新XML
  4. 查看 SQL Server 作业(job)运行结果状态
  5. provider:Named Pipes Provider,error:40 -
  6. mysql中将多条记录合并成一行数据进行显
  7. MySQL——delete 和 truncate 以及 drop
  8. sql 对某一列去重及重复个数
  9. 删除重复数据,只保留ID最小的一条数据
  10. linux下使用c++语言对mysql数据库操作