首页 > 其他分享 >hostapd移植到RK356X

hostapd移植到RK356X

时间:2024-11-14 09:56:38浏览次数:1  
标签:hostapd RK356X libnl openssl 编译 build -- 移植

1. 简介

  • 开发环境:Ubuntu20.04

  • 目标平台:RK356X,内核版本:4.19.234

  • hostapd版本:2.10, 依赖特定版本的openssllibnl

    • opsnssl版本:3.0.15

    • libnl版本:3.2.3

2. openssl 移植

  • hostapd依赖openssl,需要先移植openssl

  • 获取openssl源码,选择使用3.0.15版本,链接如下

https://openssl-library.org/source/

  • 解压,进入源码目录

    $ tar -xvf openssl-3.0.15.tar.gz
    $ cd openssl-3.0.15/
    
  • config配置

    • --prefix 指定make install时的安装路径

    • --cross-compile-prefix 指定交叉编译工具链前缀,最好使用绝对路径

    openssl-3.0.15$ ./config \
    no-asm \
    shared \
    no-async \
    --prefix=$(pwd)/build \
    --cross-compile-prefix=/home/jun/work/share/IG-20/rk3568/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-
    
  • 修改Makefile,去除-m64标识

  • 编译,并安装到指定路径

    openssl-3.0.15$ make && make install
    
  • 查看编译输出

3. libnl移植

  • hostapd也依赖libnl,需要先移植libnl

  • 获取libnl-3.2.3源码,下载链接如下

    https://www.infradead.org/~tgr/libnl/files/

  • 解压,进入源码目录

    $ tar -xvf libnl-3.2.3.tar.gz
    $ cd libnl-3.2.3/
    
  • configure配置

    • --host指定目标主机平台

    • --prefix执行make install时的安装路径

    • CC指定交叉编译工具链

    $ ./configure \
    --host=arm-linux \
    --prefix=$(pwd)/build \
    --enable-static \
    --enable-shared \
    CC=/home/jun/work/share/IG-20/rk3568/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
    
  • 编译,并安装到指定目录

    libnl-3.0$ make && make install
    
  • 查看编译输出

4. hostapd移植

  • hostapd版本:2.10

  • 我是针对wifi6模块进行开发,要求hostapd支持IEEE80211AXIEEE80211AC

  • 解压,进入hostap源码目录

    $ tar -xvf hostapd-2.10.tar.gz
    $ cd hostapd-2.10/hostapd/
    
  • 拷贝生成一个默认配置文件.config

    hostapd$ cp defconfig .config
    
  • 修改.config,开启如下选项

    CONFIG_IEEE80211AX=y
    CONFIG_IEEE80211AC=y
    

  • 返回上一级目录,修改hostapd源码,在2.4G AP时强制使用40M带宽


  • 修改src/utils/includes.h

    • 添加头文件#include </usr/include/errno.h>
    • 添加头文件#include <netlink/errno.h>
  • 修改src/ap/sta_info.h,替换#include "list.h"include "utils/list.h,如下

  • 修改src/build.rules,指定交叉编译工具链

    CC:=/home/jun/work/share/IG-20/rk3568/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
    
  • 修改src/build.rules, 指定libnl路径,即前文提到的libnl编译输出路径

    CFLAGS += -I/home/jun/work/share/IG-20/wifi/libnl-3.2.3/build/include/libnl3
    LDFLAGS += -L/home/jun/work/share/IG-20/wifi/libnl-3.2.3/build/lib
    
  • 修改src/build.rules, 指定openssl路径,即前文提到的openssl编译输出路径

    # openssl
    EXTRA_CFLAGS += -I/home/jun/work/share/IG-20/wifi/openssl-3.0.15/build/include
    LDFLAGS += -L/home/jun/work/share/IG-20/wifi/openssl-3.0.15/build/lib64
    
  • 查看一下src/build.rules

  • 设置环境变量PKG_CONFIG_PATH,确保能够找到libnl编译得到的的libnl-3.0.pc文件

    hostapd$ export PKG_CONFIG_PATH=/home/jun/work/share/IG-20/wifi/libnl-3.2.3/build/lib/pkgconfig:$PKG_CONFIG_PATH
    
  • make编译,注意:是在hostapd-2.10/hostapd下执行make

    hostapd$ make
    
  • 查看编译输出

5. 安装测试

  • 将编译得到的hostapd和依赖的库libnl.so/libcrypto.so/libssl.so拷贝到目标机上,确保hostapd能够链接到所有的库

  • 编写配置文件hostapd.conf

    • 如下配置文件:5G频段 信道:36 80M AX
    interface=wlp1s0
    bridge=br0
    ssid=TEST-D80P-5gap
    hw_mode=a
    channel=36
    auth_algs=1
    driver=nl80211
    wme_enabled=1
    wpa=2
    wpa_passphrase=12345678
    ieee80211n=1
    ieee80211ac=1
    ieee80211ax=1
    vht_oper_chwidth=1
    vht_oper_centr_freq_seg0_idx=42
    he_oper_chwidth=1
    he_oper_centr_freq_seg0_idx=42
    he_basic_mcs_nss_set=65534
    he_su_beamformee=1
    he_twt_required=0
    vht_capab=[SHORT-GI-80][MAX-A-MPDU-LEN-EXP7][RX-STBC-1][RX-LDPC]
    ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+][HT40-][LDPC][RX-STBC1]
    wpa_key_mgmt=WPA-PSK
    rsn_pairwise=CCMP
    
  • 启动hostapd

    # hostapd hostapd.conf
    
  • 手机接入热点,日志如下

  • 此时,手机是无法获取到IP的,因为还没有配置DHCP服务器

  • DHCP服务器的配置参考我的另一篇文章

    https://www.cnblogs.com/zhijun1996/p/18537740

标签:hostapd,RK356X,libnl,openssl,编译,build,--,移植
From: https://www.cnblogs.com/zhijun1996/p/18545307

相关文章

  • 爱科微AIC8800D80P Wi-Fi6模块驱动移植
    1.简介开发环境Ubuntu20.04目标平台:瑞芯微RK356X目标平台内核版本:4.19.234wifi模块型号:AIC8800D80PWi-Fi6/BT5.02.硬件wifi模块的PID:VID=a69c:8d80此模块挂在RK356X的PCIE接口上01:00.0Class0280:a69c:8d80Class0280:表示网络控制器(通常是......
  • FreeModbus RTU 从机Hal库裸机移植避坑指南
    首先说明:FreeModbus有很多个库!!!!不同库的实现方法是略有不同的!!!本次FreeModbusRTU移植主要依据这个网友分享的工程他人移植的库你可能会在csdn看到他的文章,但是完全跟着那个文章走很混乱而且跟库的文件不一样.故而我重新整理了工程,并写了一个详细的移植教......
  • DHCP移植到瑞芯微RK356x平台
    dhcpd交叉编译1.简介项目中需要在RK3566上配置DHCP服务器,需要移植DHCP编译环境:Ubuntu20.04DHCP版本:v4.4.32.zlib移植dhcp交叉编译依赖libz.sozlib是一个广泛使用的开源数据压缩库,提供了数据压缩和解压缩的功能下载zlib源码,选择使用1.3.1版本,下载地址https://......
  • 【鸿蒙南向】移植案例与原理 - build lite源码分析 之 hb命令__main__.py
    ......
  • 【鸿蒙南向】移植案例与原理 - HPM包描述文件bundle.json
    ......
  • 移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (8) - 原生输入法
    AWTK在嵌入式平台使用内置的输入法,在移动设备上使用系统的原生输入法。在AWTK-Android和AWTK-IOS中,使用的是SDL封装之后的系统原生输入法。在AWTK-HarmonyOS中,要使用系统的原生输入法。需要实现input_method接口:1.启动输入法编辑器得到焦点时,启动输入法。调......
  • UcOs-III RISC-V接口移植源码阅读: os_cpu_a.S、os_cpu_c.c、os_cpu.h
    os_cpu_a.S:#********************************************************************************************************#uC/OS-III#TheReal-TimeKernel##......
  • 移植 AWTK 到 纯血鸿蒙(HarmonyOS NEXT)系统 (0) - 序
    移植AWTK到纯血鸿蒙(HarmonyOSNEXT)系统(0)-序前段时间纯血鸿蒙系统HarmonyOS5.0(又称HarmonyOSNEXT)正式推出,这是继苹果iOS和安卓系统后,全球第三大移动操作系统。纯正国产操作系统登场,国人无不欢欣鼓舞,激动不已。HarmonyOS2.0时代我就尝试将AWTK移植到H......
  • 感人电影-521我爱你 PSVita+Switch+Windows+Mac移植版
    游戏名称:感人电影-521我爱你游戏类型:文字冒险游戏原发售平台:J2ME开发商:F23发布日期:2010/01/03原游戏简介:感人电影-521我爱你最新感动人的科技!是人看了都要哭!超越生死的爱情,用电话联系起来的男女主角命运,让你有意想不到的结局。让你看后更珍惜所爱的人!Renpy技术支持:你们亲......
  • STM32F7xx移植LVGL记录
    1简介项目中要用到屏幕,也是工作多年首次进行彩屏的开发。之前的项目大多是不需要用户界面的,或者是单色屏。GUI的开发,也就是使用过u8g2,这是个不熟悉的领域。但是也一直想要尝试彩屏的,这就有了机会。STM32就不多说了。简单说一下LVGL,在这之前也是听过LVGL这个开源图形库的鼎鼎大......