第三天调试USB-WiFi,平台还是全志A40i,Linux内核:3.10.65

网上买了一个芯片型号写着RTL8188EU的USB-WiFi,但买回来,发现USB-ID号不是0x0bda 0x8179,而是0x0bda 0xf179,把网卡插到Windows系统一看,型号是RTL8188FTV,又闹了乌龙。。
在这里插入图片描述

在A40i的Linux内核驱动中(Linux3.10),只有一个RTL8189F的驱动,还是SDIO接口,就算在Makefile中将接口改成USB,也会编译失败。

无奈之下,只能到网上下载驱动了,我找的驱动:rtl8188FU_linux_v5.3.0.1

文章目录

驱动安装

原驱动不能直接编译,还需要做一些小修改:

  1. 修改Makefile文件
    首先确认芯片型号接口选择
    在这里插入图片描述
    平台选择上取消I386_PC,选择SUN50IW1P1(没有SUN8I,选择SUN8I_W3P1我没编译成功)
    在这里插入图片描述
    搜索CONFIG_PLATFORM_ARM_SUN50IW1P1,找到该平台对应的配置项,修改ARCH,CROSS_COMPILE,KSRC,KVER几个与编译环境有关的配置(根据自己编译器和内核的路径修改):
    在这里插入图片描述
  2. make
    修改完Makefile文件后,到驱动根目录使用make命令进行编译。
    这个错误是我个人问题,驱动的目录不能包含中文字符(“(”也不行)在这里插入图片描述
    删掉目录的括号和中文字符后,再次编译,遇到mach/sys_config.h头文件未找到,
    在这里插入图片描述
    还好这个问题我遇到过,打开报错的文件驱动目录/platform/platform_ARM_SUNxI_usb.c,修改头文件如下:
    在这里插入图片描述
    再编译,又遇到了第一天的问题,is_zero_mac_addr等3个函数重复定义,
    在这里插入图片描述

驱动目录/include/ieee80211.h进行以下修改(删除__inline 前面的extern),这个错误可能和编译器版本有关,或者少装了什么东西:
在这里插入图片描述
终于,成功了!
在这里插入图片描述
3. 最后,将驱动目录下生成的8188fu.ko文件拷贝到开发板即可。

WiFi测试

接下来进行简单的测试,看看无线网卡能否正常运行。

  1. 安装驱动
    使用insmod 8188fu.ko安装驱动,dmesg查看打印信息(如果loglevel较低),我的驱动安装log如下:
[ 3840.859997] RTW: module init start
[ 3840.860066] RTW: rtl8188fu v5.3.0.1_28034.20180525
[ 3840.860073] RTW: build time: Nov  2 2021 18:37:01
[ 3840.860232] RTW: rtw_inetaddr_notifier_register
[ 3840.860396] RTW:
[ 3840.860396] usb_endpoint_descriptor(0):
[ 3840.860404] RTW: bLength=7
[ 3840.860409] RTW: bDescriptorType=5
[ 3840.860414] RTW: bEndpointAddress=81
[ 3840.860419] RTW: wMaxPacketSize=512
[ 3840.860424] RTW: bInterval=0
[ 3840.860430] RTW: RT_usb_endpoint_is_bulk_in = 1
[ 3840.860435] RTW:
[ 3840.860435] usb_endpoint_descriptor(1):
[ 3840.860442] RTW: bLength=7
[ 3840.860447] RTW: bDescriptorType=5
[ 3840.860451] RTW: bEndpointAddress=2
[ 3840.860456] RTW: wMaxPacketSize=512
[ 3840.860461] RTW: bInterval=0
[ 3840.860467] RTW: RT_usb_endpoint_is_bulk_out = 2
[ 3840.860472] RTW:
[ 3840.860472] usb_endpoint_descriptor(2):
[ 3840.860478] RTW: bLength=7
[ 3840.860483] RTW: bDescriptorType=5
[ 3840.860488] RTW: bEndpointAddress=3
[ 3840.860493] RTW: wMaxPacketSize=512
[ 3840.860498] RTW: bInterval=0
[ 3840.860502] RTW: RT_usb_endpoint_is_bulk_out = 3
[ 3840.860509] RTW: nr_endpoint=3, in_num=1, out_num=2
[ 3840.860509]
[ 3840.860516] RTW: USB_SPEED_HIGH
[ 3840.860527] RTW: CHIP TYPE: RTL8188FU
[ 3840.861013] RTW: rtw_hal_config_rftype RF_Type is 0 TotalTxPath is 1
[ 3840.861035] RTW: Chip Version Info: CHIP_8188F_Normal_Chip_SMIC_B_CUT_1T1R_RomVer(0)
[ 3840.861046] RTW: _ConfigChipOutEP_8188F OutEpQueueSel(0x05), OutEpNumber(2)
[ 3840.861441] RTW: EEPROM type is E-FUSE
[ 3840.862171] RTW: Boot from EFUSE, Autoload OK !
[ 3840.862916] RTW: hal_EfuseSwitchToBank: Efuse switch bank to 0
[ 3841.081549] RTW: hal_ReadEFuse_WiFi: data end at address=0x74
[ 3841.081826] RTW: HW EFUSE
[ 3841.081854] RTW: 0x000: 29 81 00 FC  0B 00 00 00  00 0C 04 4C  10 07 00 00
[ 3841.081893] RTW: 0x010: 28 28 29 29  29 29 2B 2B  2C 2D 2D 03  FF FF FF FF
[ 3841.081932] RTW: 0x020: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.081971] RTW: 0x030: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082010] RTW: 0x040: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082049] RTW: 0x050: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082088] RTW: 0x060: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082127] RTW: 0x070: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082166] RTW: 0x080: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082204] RTW: 0x090: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082243] RTW: 0x0A0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082282] RTW: 0x0B0: FF FF FF FF  FF FF FF FF  20 30 1B 00  00 00 00 FF
[ 3841.082321] RTW: 0x0C0: FF 12 00 10  00 FF 00 FF  00 00 FF FF  FF FF FF FF
[ 3841.082359] RTW: 0x0D0: DA 0B 79 F1  42 66 40 04  0C 73 20 6D  28 09 03 52
[ 3841.082397] RTW: 0x0E0: 65 61 6C 74  65 6B 09 03  38 30 32 2E  31 31 6E 00
[ 3841.082436] RTW: 0x0F0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082475] RTW: 0x100: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082514] RTW: 0x110: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082553] RTW: 0x120: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082592] RTW: 0x130: C1 B6 FF FF  FF FF FF FF  FF FF 00 11  FF FF FF FF
[ 3841.082631] RTW: 0x140: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082670] RTW: 0x150: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082709] RTW: 0x160: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082748] RTW: 0x170: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082787] RTW: 0x180: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082826] RTW: 0x190: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082865] RTW: 0x1A0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082904] RTW: 0x1B0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082943] RTW: 0x1C0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.082982] RTW: 0x1D0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.083021] RTW: 0x1E0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.083060] RTW: 0x1F0: FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF
[ 3841.083103] RTW: EEPROM VID = 0x bda
[ 3841.083110] RTW: EEPROM PID = 0xf179
[ 3841.083137] RTW: hal_com_config_channel_plan chplan:0x20
[ 3841.083146] RTW: Hal_EfuseParsePowerSavingMode_8188F...bHWPwrPindetect(0)-bHWPowerdown(0) ,bSupportRemoteWakeup(1)
[ 3841.083152] RTW: ### PS params=>  power_mgnt(2),usbss_enable(0) ###
[ 3841.087669] RTW: kfree Pwr Trim flag:1
[ 3841.087685] RTW: bb_gain:5
[ 3841.095526] RTW: rtl8188f_FirmwareDownload fw: FW_NIC, size: 20288
[ 3841.095548] RTW: rtl8188f_FirmwareDownload: fw_ver=d fw_subver=0000 sig=0x88f1, Month=02, Date=06, Hour=16, Minute=59
[ 3841.095555] RTW: rtl8188f_FirmwareDownload(): Shift for fw header!
[ 3841.095561] RTW: rtl8188f_FirmwareDownload by IO write!
[ 3841.180007] RTW: polling_fwdl_chksum: Checksum report OK! (1, 0ms), REG_MCUFWDL:0x00040105
[ 3841.184022] RTW: _8051Reset8188: Finish
[ 3841.197599] RTW: _FWFreeToGo: Polling FW ready OK! (39, 10ms), REG_MCUFWDL:0x000401c6
[ 3841.197617] RTW: rtl8188f_FirmwareDownload: DLFW OK !
[ 3841.197625] RTW: rtl8188f_FirmwareDownload success. write_fw:1, 100ms
[ 3841.198040] RTW:  <=== rtl8188f_FirmwareDownload()
[ 3841.202876] RTW: CardDisableRTL8188FU
[ 3841.215505] RTW: hal_read_mac_hidden_rpt OK! (1, 20ms), fwdl:1, id:0x19
[ 3841.215524] RTW: InitAdapterVariablesByPROM_8188FU(): REPLACEMENT = 0
[ 3841.215531] RTW: rtw_hal_read_chip_info in 350 ms
[ 3841.215593] RTW: init_channel_set((null)) ChannelPlan ID:0x20, ch num:13
[ 3841.246315] RTW: NR_RECVBUFF: 8
[ 3841.246332] RTW: MAX_RECVBUF_SZ: 32768
[ 3841.246365] RTW: NR_PREALLOC_RECV_SKB: 8
[ 3841.250318] RTW: rtw_alloc_macid((null)) if1, mac_addr:ff:ff:ff:ff:ff:ff macid:1
[ 3841.251274] RTW: IQK FW offload:disable
[ 3841.251303] RTW: Init_ODM_ComInfo_8188f(): fab_ver=0 cut_ver=12
[ 3841.251317] RTW: rtw_regsty_chk_target_tx_power_valid return _FALSE for band:0, path:0, rs:0, t:-1
[ 3841.251425] RTW: phy_ConfigBBWithPgParaFile(): No File PHY_REG_PG.txt, Load from HWImg Array!
[ 3841.251445] RTW: default power by rate loaded
[ 3841.251643] RTW: pwrctrlpriv.bSupportRemoteWakeup~~~~~~
[ 3841.251663] RTW: pwrctrlpriv.bSupportRemoteWakeup~~~[1]~~~
[ 3841.251673] RTW: can't get autopm:
[ 3841.251686] RTW: rtw_macaddr_cfg mac addr:04:0c:73:20:6d:28
[ 3841.251695] RTW: bDriverStopped:True, bSurpriseRemoved:False, bup:0, hw_init_completed:0
[ 3841.278647] RTW: NR_RECVBUFF: 8
[ 3841.278663] RTW: MAX_RECVBUF_SZ: 32768
[ 3841.278688] RTW: NR_PREALLOC_RECV_SKB: 8
[ 3841.282590] RTW: rtw_alloc_macid((null)) if2, mac_addr:ff:ff:ff:ff:ff:ff macid:1
[ 3841.282621] RTW: rtw_drv_add_vir_if if2 mac_addr : 06:0c:73:20:6d:28
[ 3841.282755] RTW: rtw_wiphy_alloc(phy0)
[ 3841.282765] RTW: rtw_wdev_alloc(padapter=eb8d4000)
[ 3841.282843] RTW: rtw_wiphy_alloc(phy1)
[ 3841.282849] RTW: rtw_wdev_alloc(padapter=eb946000)
[ 3841.282863] RTW: rtw_wiphy_register(phy0)
[ 3841.284386] RTW: rtw_ndev_init(wlan0) if1 mac_addr=04:0c:73:20:6d:28
[ 3841.285812] RTW: rtw_ndev_notifier_call(wlan0) state:16
[ 3841.300182] RTW: rtw_ndev_notifier_call(wlan0) state:5
[ 3841.300277] RTW: rtw_wiphy_register(phy1)
[ 3841.304877] RTW: rtw_ndev_init(wlan1) if2 mac_addr=06:0c:73:20:6d:28
[ 3841.306241] RTW: rtw_ndev_notifier_call(wlan1) state:16
[ 3841.319641] RTW: rtw_ndev_notifier_call(wlan1) state:5
[ 3841.323722] usbcore: registered new interface driver rtl8188fu
[ 3841.323740] RTW: module init ret=0

rtl8188F的打印信息比rtl8188EUrtl8192CU的多,不知道是不是DEBUG等级设置不同导致的。
驱动安装log中,提示我wlan0wlan1设备生成成功(不知道为什么有两个,但mac地址相同,所以其实就是同一个设备)
在这里插入图片描述

  1. 设置WiFi名称和密码
    先用iw命令进行扫描,看看网卡能搜索到的WiFi名
    iw dev wlan0 scan | grep SSID
    如果SSID(WiFi名)为\xe7...这类奇怪字符,说明无法连接该WiFi。
    在这里插入图片描述

配置/etc/wpa_supplicant.conf文件,ssid表示WiFi名,psk为密码,
在这里插入图片描述

  1. 设置网卡为STA模式(连接其他WiFi)
    使用
    wpa_supplicant -i wlan0 -Dnl80211 -c /etc/wpa_supplicant.conf -B
    命令将wlan0设置成STA模式,用来连接配置里的WiFi。
    使用
    wpa_cli -i wlan0 status
    命令查看wlan0状态:
    在这里插入图片描述
    或使用
    iw dev wlan0 link
    在这里插入图片描述
    现在只是连接上了WiFi,但没有分配IP地址, 还不能上网,使用
    udhcpc -i wlan0 &
    进行动态分配IP地址:
    在这里插入图片描述
    再次查看wlan0的连接状态,多了一项address(IP地址)
    在这里插入图片描述
    此时网卡已经可以上网了:
    在这里插入图片描述

  2. 网速测试
    测试网速需要用到iperf3工具
    首先在一台联网的电脑上使用iperf3 -s,将其作为服务端。(连接同一WiFi的电脑应该也可以用来当服务器,我这里用的是云服务器,相当于一台独立IP的外网电脑)在这里插入图片描述
    然后在开发板命令行使用iperf3 -c 服务端IP测试客户端的上传速率:约为4M/s。
    在这里插入图片描述
    客户端(开发板)使用iperf3 -c 服务端IP -R用来测试客户端下载速率,测得不到2M/s。
    在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐