usb無線網卡驅動(rtl8192cu) 內核編譯、驅動編譯、iw等工具編譯 環境 板卡:hi3559av100(arm64) 交叉編譯鏈:aarch64-himix100-linux- usb無線網卡:rtl8192cu(ID 0bda:8178) 1、內核編譯 在內核中,不僅要包含相應無線驅動、 ...
usb無線網卡驅動(rtl8192cu)
內核編譯、驅動編譯、iw等工具編譯
環境 板卡:hi3559av100(arm64) 交叉編譯鏈:aarch64-himix100-linux- usb無線網卡:rtl8192cu(ID 0bda:8178) 1、內核編譯 在內核中,不僅要包含相應無線驅動、還有包含其他一些項,否則iw等等工具無法使用; 進入內核配置:make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- menuconfig ① 搜索:rtl8192cu(註意依賴項); ② RNDIS的API驅動和gadget driver(https://blog.csdn.net/zhenglie110/article/details/80223167): Device Drivers —> [*] USB support —> <*> USB Gadget Support —> Ethernet Gadget (with CDC Ethernet support) [*] RNDIS support 如下圖: ③ 內核關於wireless部分80211部分:cfg80211 wireless extension(https://blog.csdn.net/faihung/article/details/82497378) Networking support ------> Wireless-----------------> cfg80211 wireless extensions compatibility ④ 這個不太清楚是做啥的,只是看到網上寫著(https://wenku.baidu.com/view/f2d2d7ea0975f46527d3e14b.html) Device Drivers ---------> Network device support----------- > Wireless LAN---------------------> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP) 2、驅動編譯 一開始在內核中沒有加③和④,以為是驅動的問題,所以找到了無線驅動源碼交叉編譯,在這個編譯過程中經歷比較痛苦,中間出了好多錯誤,但都是一開始不規範導致;除了需要驅動源代碼,還需要板卡對應內核源代碼,並且源代碼內核中一定不可以包含該驅動,否則驅動不會進行編譯; ①內核准備 .config要準備好,並且放入內核目錄下(可以看板卡對應文檔); make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- menuconfig make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- prepare make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- scripts 如果不按照這三步走,在內核編譯時可能會有以下提示錯誤:- asm/types.h不存在;
- 提示警告:Module.symvers不存在;
- 下載:ftp://roy.marples.name/pub/dhcpcd(我下載的版本是:dhcpcd-6.9.4.tar.xz)
- 配置:./configure
- 編譯:make CC=aarch64-himix100-linux-gcc
- 生成:直接複製dhcpd即可使用(./dhcpd wlan0)
- 用於掃描、連接;
- 下載:https://hewlettpackard.github.io/wireless-tools/Tools.html,如下圖(或者:https://hewlettpackard.github.io/wireless-tools/wireless_tools.29.tar.gz)
- 編譯:Makefile ,修改:CC = aarch64-himix100-linux-gcc AR = aarch64-himix100-linux-ar RANLIB = aarch64-himix100-linux-ranlib
- make;
- 將生成的命令複製過去就可以直接使用;
- 下載:http://www.infradead.org/~tgr/libnl/files/ 我這裡選擇的是libnl-3.2.25.tar.gz
- 配置編譯:./configure --host=aarch64-himix100-linux --prefix=$PWD/tmp
- 生成:最終文件在當前目錄下的TMP;
- 下載:https://www.kernel.org/pub/software/network/iw/(註意下載4.0版本,其他版本沒有編譯通過)
- export PKG_CONFIG_PATH=/home/deepglint/Hi3559AV100R001C02SPC010/iw/libnl-3.2.25/TMP/lib/pkgconfig:$PKG_CONFIG_PATH
- 修改:NL3xFOUND := Y
- make 便可生成iw;
- 下載 https://www.openssl.org/(openssl-1.0.2h)
- ./config no-asm shared --prefix=$(pwd)/__install
- make depend
- 修改Makefile:
- make clean
- make
- make install
- 下載: http://www.infradead.org/~tgr/libnl/(libnl-3.2.25.tar.gz )
- ./configure CC=aarch64-himix100-linux-gcc --host=aarch64-himix100-linux --enable-static --enable-shared LIBS=-lpthread --prefix=$(pwd)/__install
- make clean
- make
- make install
- 下載http://w1.fi/wpa_supplicant/(wpa_supplicant-2.5.tar.gz )
- cd wpa_supplicant-2.5/wpa_supplicant/
- cp defconfig .config
- 修改.config
- 修改Makefile
- make clean
- make CC=aarch64-himix100-linux-gcc(有些列印 No package 'libnl-3.0' found,可以忽略)