美文网首页
R818 + RTL8821CS WIFI适配

R818 + RTL8821CS WIFI适配

作者: 狼少丷 | 来源:发表于2024-04-09 09:18 被阅读0次
1.1 设备树:
wlan: wlan@0 {
    compatible    = "allwinner,sunxi-wlan";
    clocks        = <&clk_losc_out>;
    pinctrl-0;
    pinctrl-names;
    wlan_busnum    = <0x1>;
    wlan_power_num = <1>;
    /* wlan_power1    = "axp806-dcdce";
    wlan_io_regulator = "axp806-aldo2"; */
    wlan_io_voltage = <3300000>;
    wlan_power_voltage = <3300000>;
    wlan_regon    = <&pio PH 19 1 0x1 0x2 0>;/
    wlan_hostwake = <&r_pio PL 6 6 0x1 0x2 0>;
    chip_en;
    power_en;
    status        = "okay";
    wakeup-source;
};
1.2 make kernel_menuconfig 内核配置
Device Drivers --->
    Network device support --->
        Wireless LAN --->
        <M> Realtek 8821C SDIO WiFi  // 这里一定要选M
1.3 make menuconfig 用户空间配置
Kernel modules--->
    Wireless Drivers--->
        <*> kmod-net-rtl8822cs........................... RTL8723CS support (staging)
Firmware--->
    <*> rtl8821cs-firmware............................ RealTek RTL8821CS firmware
1.4 wifimanager 配置,tina根目录下,输入make menuconfig
Allwinner --->
    wifimanager --->
        [ ] Enable wifimanager daemon support 
        < > wifimanager-daemon-demo..................... Tina wifimanager daemon demo 
        <*> wifimanager-demo............................... Tina wifimanager app demo 
1.5 WIFI测试文件:<u>package/allwinner/wifimanager/demo</u>
  • 开机后 先执行ifconfig 观察输出是否有wlan0

    image.png
  • 以下为测试程序,扫描周围网络,连接指定网络,断开连接等 根目录下就可运行。

    可执行序列 可执行文件名称 功能描述
    1 wifi_scan_results_test 扫描周围网络
    2 wifi_connect_ap_test 连接AP网络
    3 wifi_disconnect_ap_test 断卡连接
    4 wifi_connect_chinese_ap_test 连接包含中文名的网络
    5 wifi_reconnect_ap_test 重新连接
    6 wifi_get_netid 获取对应SSID的id号
    7 wifi_remove_network_test 移除指定网络
    8 wifi_remove_all_networks 移除所有网络配置
    9 wifi_on_off_test 打开与关闭测试
    10 wifi_longtime_test 自动的连接断开操作
    11 wifi_get_connection_info_test 查看 WIFI 的连接状态
  • 用法说明:

    1. 在根目录下运行即可 (可在执行命后跟 -h 来查看帮助信息)

    2. 各参数参照

      序列 参数 说明
      1 ssid 接入点的 ssid
      2 passwd 接入点的密码,当 key_mgmt 为无时不需要它
      3 level 打印级别(d0~d5),数值越大,信息越多。(默认为d2)
      4 test_times 操作的测试时间(连接 AP 和断开 AP)(默认为1001)
    3. WiFi状态 含义

    CONNECTING WiFi正在连接状态
    CONNECTED WiFi已经连接AP(还为分配到IP地址)状态
    OBTAINING_IP WiFi正在获取IP地址状态
    NETWORK_CONNECTED WiFi已经获取到IP地址状态
    DISCONNECTED WiFi断开状态  ------->
      事件 含义
      WSE_PASSWORD_INCORRECT  密码不正确
      WSE_NETWORK_NOT_EXIST 网络不存在
      WSE_AP_ASSOC_REJECT AP拒绝连接
      WSE_WPA_TERMINATING wpa_supplicant退出
      WSE_OBTAINED_IP_TIMEOUT  获取IP超时
      WSE_CONNECTED_TIMEOUT 连接AP超时
      WSE_DEV_BUSING   设备忙碌if
      WSE_CMD_OR_PARAMS_ERROR   传入参数不正确
      WSE_KEYMT_NO_SUPPORT 加密方式不支持
      WSE_ACTIVE_DISCONNECT 激活断开
      WSE_AUTO_DISCONNECTED 异常自动断开
    STATE_UNKDOWN WiFi状态未知
    
  • wpa_supplicant的运行方法:

wpa_supplicant  -iwlan0 -Dnl80211 -c/etc/wifi/wpa_supplicant.conf -I/etc/wifi/wpa_supplicant_overlay.conf -O/etc/wifi/sockets 

-i: 指定设备端口;
-C: 指定配置文件
-O: 覆盖新接口的 ctrl_interface 参数
-B: 后台运行;
-dd:打印出更多的debug信息,方便调试

1.6 传导 TX RX 测试 -- cmd命令集
TX测试 说明 RX测试 说明
ifconfig wlan0 up 启用 WLAN 接口 ifconfig wlan0 up 启用 WLAN 接口
rtwpriv wlan0 mp_start 进入 MP 操作模式 rtwpriv wlan0 mp_start 进入 MP 操作模式
rtwpriv wlan0 mp_channel 7 设置信道为 7-设定通道(1-13) rtwpriv wlan0 mp_channel 13 设置信道为 13-设定通道(1-13)
rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 设置带宽为 40M=0,shortGI=0
设置为 20M 模式和长 GI;设置 40M 为 40M=1
rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0 设置带宽为 40M=0,shortGI=0 (可选 40M=1)
rtwpriv wlan0 mp_ant_tx a 选择天线 A 进行操作
如果设备有 2x2 天线,则选择 "a" 或 "b","ab" 进行操作
rtwpriv wlan0 mp_ant_rx a 选择天线 A 进行操作
如果设备有 2x2 天线,选择 "a" 或 "b","ab" 进行操作
rtwpriv wlan0 mp_txpower patha=44 设置路径 A 和路径 B 的发送功率等级,范围是 0~63 rtwpriv wlan0 mp_arx start 开始接收测试
rtwpriv wlan0 mp_rate 135 OFDM 6M=12、 54M = 108;
N 率:MCS0 = 128,MCS1 = 129 MCS 2=130....MCS15 = 143 等。
rtwpriv wlan0 mp_arx phy 获取统计信息
rtwpriv wlan0 mp_ctx count=%100,pkt 启动连续数据包发送 rtwpriv wlan0 mp_reset_stats 停止接收测试并显示统计信息
重置计数器
rtwpriv wlan0 mp_ctx stop 停止连续发送 rtwpriv wlan0 mp_stop 退出 MP 操作模式
rtwpriv wlan0 mp_stop 退出 MP 操作模式 ifconfig wlan0 down 关闭 WLAN 接口
ifconfig wlan0 down 关闭 WLAN 接口
  • 用例:

    --WIFI 2.4G测试指令--

    (1)11M 11n 模式 20M 带宽 :频道 7

    rtwpriv wlan0 mp_channel 7                    # 设定通道(1-13)
    rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0    # 设定带宽(40M=0 20M/40M=1 40M/40=2 80M)
    rtwpriv wlan0 mp_ant_tx a                 # 通道
    rtwpriv wlan0 mp_txpower patha=40         # 设定 power 值(0-63) !这句可不加默认就可!
    rtwpriv wlan0 mp_rate 22                  # 设定模式(22=11M) 
    rtwpriv wlan0 mp_ctx count=%100,pkt           # 连续发包
    rtwpriv wlan0 mp_ctx stop                 # 停止发包
    

    (2)54M 11g 模式 20M 带宽:频道 1

    rtwpriv wlan0 mp_channel 1                    # 设定通道(1-13)
    rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0    # 设定带宽(40M=0 20M/40M=1 40M/40=2 80M)
    rtwpriv wlan0 mp_ant_tx a  
    rtwpriv wlan0 mp_txpower patha=40         # 设定 power 值(0-63)
    rtwpriv wlan0 mp_rate 108                 # 设定模式(108=54M)
    rtwpriv wlan0 mp_ctx count=%100,pkt           # 连续发包
    rtwpriv wlan0 mp_ctx stop                 # 停止发包
    

    (3)MCS7 11n 模式 40M 带宽:频道 11

    rtwpriv wlan0 mp_channel 11                   # 设定通道(3-11)
    rtwpriv wlan0 mp_bandwidth 40M=1,shortGI=0    # 设定带宽(40M=0 20M/40M=1 40M/40=2 80M)
    rtwpriv wlan0 mp_ant_tx a  
    rtwpriv wlan0 mp_txpower patha=40         # 设定 power 值(0-63)
    rtwpriv wlan0 mp_rate 135                 # 设定模式(MCS7=135)
    rtwpriv wlan0 mp_ctx count=%100,pkt           # 连续发包
    rtwpriv wlan0 mp_ctx stop                 # 停止发包
    
    --WIFI 5G测试指令--

    (1)11a发射模式 54M =108 :频道 36

    rtwpriv wlan0 mp_channel 36                   # 设定通道(36-161)
    rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0    # 设定带宽(40M=0 20M/40M=1 40M/40=2 80M)
    rtwpriv wlan0 mp_ant_tx a  
    rtwpriv wlan0 mp_txpower patha=40         # 设定 power 值(0-63)
    rtwpriv wlan0 mp_rate 108                 # 设定模式(108=54M)
    rtwpriv wlan0 mp_ctx count=%100,pkt           # 连续发包
    rtwpriv wlan0 mp_ctx stop                 # 停止发包
    

    (2)MCS7 11a 模式 20M 带宽:频道 149

    rtwpriv wlan0 mp_channel 149              # 设定通道(36-161)
    rtwpriv wlan0 mp_bandwidth 40M=0,shortGI=0    # 设定带宽(40M=0 20M/40M=1 40M/40=2 80M)
    rtwpriv wlan0 mp_ant_tx a  
    rtwpriv wlan0 mp_txpower patha=40         # 设定 power 值(0-63)
    rtwpriv wlan0 mp_rate 135                 # 设定模式(MCS7=135)
    rtwpriv wlan0 mp_ctx count=%100,pkt           # 连续发包
    rtwpriv wlan0 mp_ctx stop                 # 停止发包
    

    (3)MCS7 11a模式 40M 带宽:频道 165

    rtwpriv wlan0 mp_channel 165              # 设定通道(36-161)
    rtwpriv wlan0 mp_bandwidth 40M=1,shortGI=0    # 设定带宽(40M=0 20M/40M=1 40M/40=2 80M)
    rtwpriv wlan0 mp_ant_tx a  
    rtwpriv wlan0 mp_txpower patha=40         # 设定 power 值(0-63)
    rtwpriv wlan0 mp_rate 135                 # 设定模式(MCS7=135)
    rtwpriv wlan0 mp_ctx count=%100,pkt           # 连续发包
    rtwpriv wlan0 mp_ctx stop                 # 停止发包
    
读MAP:rtwpriv wlan0 efuse_get realmap

Note: 11g/a/n若要测试5G直接在上面的CMD上修改信道即可
在切换模式和速率必须输入如下命令停止发包
rtwpriv wlan0 mp_ctx stop
rtwpriv wlan0 mp_phypara xcap=20
Note:RX测试部分速率只分BW、CH和Path

1.7 rtwpriv 应用的使用:
1.确认系统中是否有rtwpriv工具,若无请软件配合将rtwpriv工具拷贝到/system/bin目录下,并将权限修改为777,建议软件直接将rtwpriv打包到系统
2.开机后首先确认WiFi是否已经打开并且用ifconfig查看WiFi对应的接口是哪个

若为wlan0则rtwpriv加wlan0,若为wlan1则rtwpriv加wlan1
如CMD:rtwpriv wlan0 mp_start / rtwpriv wlan1 mp_start

3.开机后输入rtwpriv wlan0 mp_start 进入mp mode(定频模式),参数设置变更不需要重新输入这条指令。

根目录下可直接运行,确保wlan0 存在,若ifconfig中没有打印该信息,请执行 ifconfig wlan0 up 来手动启动

[ HW TX 模式] - 仅支持VHT IC

用例:
rtwpriv wlan0 [Channel] [Bandwidth] [ANT_PAH] [RateID] [TxMode] [PacketLength] [Packet Count] [Packet Interval] [Packet Pattern]

[Channel-通道]: 1~167
[BW-最大带宽]: 0 = 20M, 1 = 40M, 2 = 80M
[ANT_PAH]: a: PATH A, b: PATH B, c: PATH C, d: PATH D, ab : PATH AB 2x2 ....
[RateID]:
        1M 2M 5.5M 11M 6M 9M 12M 18M 24M 36M 48M 54M
        HTMCS0 HTMCS1 HTMCS2 HTMCS3 HTMCS4 HTMCS5 HTMCS6 HTMCS7 HTMCS8 HTMCS9 HTMCS10
        HTMCS11 HTMCS12 HTMCS13 HTMCS14 HTMCS15 HTMCS16 HTMCS17 HTMCS18 HTMCS19 HTMCS20 HTMCS21
        HTMCS22 HTMCS23 HTMCS24 HTMCS25 HTMCS26 HTMCS27 HTMCS28 HTMCS29 HTMCS30 HTMCS31 VHT1MCS0
        VHT1MCS1 VHT1MCS2 VHT1MCS3 VHT1MCS4 VHT1MCS5 VHT1MCS6 VHT1MCS7 VHT1MCS8 VHT1MCS9 VHT2MCS0 VHT2MCS1
        VHT2MCS2 VHT2MCS3 VHT2MCS4 VHT2MCS5 VHT2MCS6 VHT2MCS7 VHT2MCS8 VHT2MCS9 VHT3MCS0 VHT3MCS1 VHT3MCS2
        VHT3MCS3 VHT3MCS4 VHT3MCS5 VHT3MCS6 VHT3MCS7 VHT3MCS8 VHT3MCS9 VHT4MCS0 VHT4MCS1 VHT4MCS2 VHT4MCS3
        VHT4MCS4 VHT4MCS5 VHT4MCS6 VHT4MCS7 VHT4MCS8 VHT4MCS9
[TxMode-发送模式]: 1: PACKET Tx 2:CONTINUOUS TX 3:OFDM Single Tone TX
[PacketLength] (Option-可选项): Packet of payload data length, default 1500
[Packet Count-数据包计数] (Option): count the number of packet to Tx , set 0 for CONTINUOUS Packet TX ,default 0
[Packet Interval-包间隔] (Option): 1~65535 us,default 100
[Packet Pattern-数据包模式] (Option): 00~ff(hex) ,default random hex
[ SW TX 模式 ]

用例: rtwpriv wlan0 mp_XXX XXX

1.mp_start ## 进入 MP 模式 
2.mp_bandwidth 40M=[Num] ## 输入 [Num],0=20M,1=40M,2=80M 
3.mp_channel [Num] ## 输入 [Num] = 1~167 个频道号 
4.mp_rate [Rate Id Num] 或 [RateID]
5.mp_ant_tx [Path] ## 输入天线 [PARH] = a,b,c,d,ab,ac,ad...
6.mp_txpower patha=[index],pathb=[index],pathc=[index],pathd=[index] ## 输入功率索引范围 [index] = 1~63
7.mp_get_txpower [PATH Num] ## 输入天线 PATH Num 0~3 , A = 0, B = 1 , C = 2 , D = 3 
8.mp_ctx [Tx Mode] ##输入 [ Tx Mode ]。
            [a].Continuous Packet Tx = "background,pkt
            [b].Continuous Packet Tx = "background
            [c].计数包发送 = 'count=[num],pkt
            [d].载波抑制测试 = 'background,cs' [e].
            [e].单音 TX 测试 = 'background,stone
10.mp_ctx stop ## 停止发送模式 
9.mp_query ## Get Tx/Rx Packet Counter.
[ RX 模式 ]

用例: rtwpriv wlan0 mp_XXX XXX

1. mp_start                             ##进入 MP 模式 
2. mp_bandwidth 40M=[Num]               ## 输入[Num], 0=20M, 1=40M, 2=80M 
3. mp_channel [Num]                     ## 输入 [Num] = 1~167 个频道号
5. mp_ant_rx [Path]                     ## 输入天线 [PARH] = a,b,c,d,ab,ac,ad... 
6. mp_arx start                         ## 进入 Rx 数据包模式 
7. mp_arx phy                           ## 查询 Rx Phy 数据包计数
8. mp_query                             ## Get Tx/Rx Packet Counter.

相关文章

网友评论

      本文标题:R818 + RTL8821CS WIFI适配

      本文链接:https://www.haomeiwen.com/subject/yrhxxjtx.html