一:下载源码
ecr6600uusb转wifi源码(在内核版本5.10上已验证)资源-CSDN文库
二:适配平台
如果下载的是官方源码,需要适配自己的平台,下面以瑞芯微芯片rv1103为例
1:解压源码,修改Makefile 增加工具链及内核路径如下
###################### Platform Related #######################
CONFIG_PLATFORM_RTK_RTD2851D = n
CONFIG_PLATFORM_MTK_MT9255 = n
CONFIG_PLATFORM_RASPBERRY = n
CONFIG_PLATFORM_X86 = n
CONFIG_PLATFORM_AML_T963 = n
CONFIG_PLATFORM_INGENIC = n
CONFIG_PLATFORM_CVITEK_CV1821 = n
CONFIG_PLATFORM_RV1103 = y
###############################################################
ifeq ($(CONFIG_PLATFORM_RV1103), y)
export KERNELDIR=/home/hfzuo/rock/luckfox-pico/sysdrv/source/kernel
export KBUILDDIR=/home/hfzuo/rock/luckfox-pico/sysdrv/source/kernel
CROSS_COMPILE = /home/hfzuo/rock/luckfox-pico/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf-
ARCH = arm
# EXTRA_CFLAGS += -Wno-missing-braces
endif
2:make product=6600u 编码源码
三:解决编译报错问题
错误1:fatal error: asm/types.h: No such file or directory
解决办法:进入到内核目录,在makefile 里直接定义CROSS_COMPILE 和 ARCH ,问题产生原因是由于ecr6600u的makefile里的CROSS_COMPILE和ARCH变量没有传递给内核makefile
错误2:error: missing braces around initializer [-Werror=missing-braces]
error: unrecognized command line option "-Wno-misleading-indentation" [-Werror]
解决办法:Makefile 里对应增加 EXTRA_CFLAGS += -Wno-missing-braces
错误3:error:uses symbol kernel_write from namespace VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver, but does not import it.
解决办法:在ecr6600u 驱动里搜索使用了kernel_write的文件 ,在文件中添加 MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
以上错误和工具链及内核版本相关,并不一定都有这些问题
四:内核配置cfg80211
五:交叉编译wpa_supplicant 和hostapd
参考博客:mt7663 usb转wifi交叉编译_mt7663s芯片-CSDN博客
需要注意的是验证通过的wpa_supplicant和 hostapd的版本是2.6 ,其他版本并不能保证能配网成功
六:加载驱动
1:将编译生成的cfg80211.ko ,wlan_ecr6600u_usb.ko 及wpa_supplicant,hostapd 拷贝到开发板
2:在ecr6600u源码里将升级固件firmware/ECR6600U_transport.bin 和配置文件 wifi_ecr6600u.cfg拷贝到开发板/lib/firmware/ 文件夹下(没有这个文件夹则新建)
3:在开发板上加载驱动 insmod cfg80211.ko insmod wlan_ecr6600u_usb.ko
七:配置AP模式
1:在开发板上新建ecr_hostapd_2G.conf 内容如下:
interface=wlan0
ctrl_interface=/var/run/hostapd
ssid=mt_wifi
channel=6
wpa=2
wpa_passphrase=12345678
#bridge=br0
driver=nl80211
beacon_int=100
hw_mode=g
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
max_num_sta=8
wpa_group_rekey=86400
2:在开发板上新建/var/run/hostapd 文件夹 mkdir /var/run/hostapd
3: ifconfig wlan0 192.168.1.100 up
4:udhcpd wlan0 (分配IP)没有udhcpd则需要自己交叉编译,用来自动分配IP,如果不需要自动分配IP服务,则此步骤可省略
5:hostapd ecr_hostapd_2G.conf -B 即可生成名字为mt_wifi,密码为 12345678的热点,可用手机或PC连接测试
八:配置sta模式
1:新建wpa_supplicant.conf 如下
ctrl_interface=/var/run/wpa_supplicants
network={
ssid="hfzuo"
psk="88888888"
proto=WPA2
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
}
2:mkdir /var/run/wpa_supplicants
wpa_supplicant -i wlan0 -c wpa_supplicant.conf -B
3:udhcpc -i wlan0 & 请求路由器分配IP,即可连上名字为hfzuo 密码为88888888的wifi热点了,没有udhcpc需要自己交叉编译,此步骤不可省略