开发板环境:Linux arm 4.19.65 #1 SMP Wed Jan 12 14:14:38 CST 2022 armv7l armv7l armv7l GNU/Linux
交叉编译器:arm-linux-gnueabihf-
驱动:WG217rtl8821CU_WiFi_linux_v5.8.1.1
工具:wpa_supplicant
、wpa_cli
、 iwlist
、iwconfig
、hostapd
Device Drivers > Network device support > Wireless LAN
注:编译驱动之前,一定要先编译kernel,这样在编译驱动所指定的kernel才是okd的,否则会有kernel warning , unkonw symable 等异常或错误,导致设备不可用
新建平台:
CONFIG_PLATFORM_NEW = y
添加编译选项
ifeq ($(CONFIG_PLATFORM_NEW), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT #开启AP模式需要配置此处
ARCH := arm
CROSS_COMPILE := arm-linux-gnueabihf- #指定交叉编译器
KVER := 4.19.65 #内核版本
KSRC ?= /home/zacha/yulong810/kernel #指定kernel
endif
编译驱动并生成.ko
make
在线安装
sudo apt-get install wpasupplicant
sudo apt-get install hostapd
sudo apt-get install wireless-tools
离线编译
离线编译移植的方法比较繁琐,这里给出官网安装包的路径,和一些驱动移植的方法,自行处理。
openssl-1.1.1m.tar.gz
libnl-3.2.25.tar.gz
wpa_supplicant-2.9.tar.gz
hostapd-2.9.tar.gz
wireless_tools.29.tar.gz
软件移植方法✈ wpa
软件移植方法✈wireless tools
#lsusb
Bus 002 Device 002: ID 0bda:c811 Realtek Semiconductor Corp.
#insmod 8821cu.ko
.......
#cat /proc/net/wireless
Inter-| sta-| Quality | Discarded packets | Missed | WE
face | tus | link level noise | nwid crypt frag retry misc | beacon | 22
wlan0: 0000 0. 0. 0. 0 0 0 0 0 0
#ifconfig
wlan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 30:eb:1f:43:09:c6 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
看到以上信息,表示硬件连接正常,驱动安装正常,并且通过ifconfig可以看到无线网卡设备。
touch /etc/wpa_supplicant/wpa_supplicant.conf
#添加以下内容
ctrl_interface=/run/wpa_supplicant
update_config=1
wpa_supplicant -B -i wlx30eb1f4309c6 -c /etc/wpa_supplicant/wpa_supplicant.conf
wpa_cli #进入wpa_cli工具交互模式
> scan
> scan_results
> add_network
> set_network 0 ssid '"Wifi Name"'
> set_network 0 psk '"Wifi Passwd"'
> enable_network 0
> save_config
> quit
cat /etc/wpa_supplicant/wpa_supplicant.conf #cat 可以看到wifi的简单配置信息
wpa_supplicant -Dnl80211 -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
#wpa_cli -p/var/run/wpa_supplicant remove_network 0
wpa_cli -p/var/run/wpa_supplicant ap_scan 1
wpa_cli -p/var/run/wpa_supplicant add_network
wpa_cli -p/var/run/wpa_supplicant set_network 0 ssid '"Wifi Name"'
wpa_cli -p/var/run/wpa_supplicant set_network 0 psk '"Wifi Passwd"'
wpa_cli -p/var/run/wpa_supplicant select_network 0
udhcpc -b -i wlan0 -q #动态分配IP
注意:在设置wifi 的SSID名称的时候,一定是‘ “ Wifi Name” ’ ,单引号中间双引号,否则会出现:Invalid symbols 类似的错误,我不知道其他是不是我这个平台的问题。
完成上面的步骤:没有出错的话,wifi 的STA模式就连接成功了:
#ifconfig
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.199.222 netmask 255.255.255.0 broadcast 192.168.199.255
ether 30:eb:1f:43:09:c6 txqueuelen 1000 (Ethernet)
RX packets 836 bytes 149670 (149.6 KB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 6 bytes 3226 (3.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#ping baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
......
64 bytes from 220.181.38.251 (220.181.38.251): icmp_seq=10 ttl=1 time=67.9 ms
64 bytes from 220.181.38.251 (220.181.38.251): icmp_seq=11 ttl=1 time=40.4 ms
--- baidu.com ping statistics ---
11 packets transmitted, 11 received, 0% packet loss, time 14198ms
rtt min/avg/max/mdev = 40.480/62.122/78.889/14.304 ms
touch /etc/hostapd/rtl_hostapd_5G.conf
#添加以下内容
##### hostapd configuration file ##############################################
interface=wlx30eb1f4309c6
ctrl_interface=/var/run/hostapd
ssid=Test
channel=36
wpa=2
wpa_passphrase=123456789
#bridge=br0
##### Wi-Fi Protected Setup (WPS) #############################################
eap_server=1
# WPS state
# 0 = WPS disabled (default)
# 1 = WPS enabled, not configured
# 2 = WPS enabled, configured
wps_state=2
uuid=12345678-9abc-def0-1234-56789abcdef0
# Device Name
# User-friendly description of device; up to 32 octets encoded in UTF-8
device_name=RTL8821CU
# Manufacturer
# The manufacturer of the device (up to 64 ASCII characters)
manufacturer=Realtek
# Model Name
# Model of the device (up to 32 ASCII characters)
model_name=RTW_SOFTAP
# Model Number
# Additional device description (up to 32 ASCII characters)
model_number=WLAN_CU
# Serial Number
# Serial number of the device (up to 32 characters)
serial_number=12345
# Primary Device Type
# Used format: --
# categ = Category as an integer value
# OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for
# default WPS OUI
# subcateg = OUI-specific Sub Category as an integer value
# Examples:
# 1-0050F204-1 (Computer / PC)
# 1-0050F204-2 (Computer / Server)
# 5-0050F204-1 (Storage / NAS)
# 6-0050F204-1 (Network Infrastructure / AP)
device_type=6-0050F204-1
# OS Version
# 4-octet operating system version number (hex string)
os_version=01020300
# Config Methods
# List of the supported configuration methods
config_methods=label display push_button keypad
##### default configuration #######################################
driver=nl80211
beacon_int=100
hw_mode=a
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
touch /etc/udhcpc/udhcpd.conf
#添加以下内容
start 192.168.175.2
end 192.168.175.254
interface ap0
max_leases 234
opt router 192.168.175.1
ifconfig eth0 down
ifconfig wlan0 up
ifconfig wlan0 192.168.1.1
hostapd /etc/hostapd/rtl_hostapd_5G.conf -B
udhcpd /etc/udhcpd/udhcpd.conf &
完成上面步骤,就可以用手机或者PC 查看当前WiFI 是否存在。
https://www.eet-china.com/mp/a46566.html
https://blog.csdn.net/wit_732/article/details/121038477