hostapd移植到RK356X

news/2025/1/11 23:49:54/文章来源:https://www.cnblogs.com/zhijun1996/p/18545307

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833311.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最全面的输入法教程:后话

完结撒花~🎉🎉🎉最后,本文就来讲讲一些更加进阶的场景,以及一些感想。 ‍ 特殊场景 如果你有输入生僻字的需求,可以看看这篇文章:【技术贴】快速输入生僻字 - 知乎 此外除了输入汉字,学术方面还有时候得输入数学公式,此时就可以考虑用 LaTex 了,具体可以看我这篇文…

【最优化方法】第三次要点整理

目录非精确线搜索技术Armijo-Goldstein 准则Wolfe-Powell 准则强 Wolfe-Powell 准则 【问题】在迭代中,已知 \(x^{(k)}\) 和下降方向 \(d^{(k)}\),如何确定下降步长 \(\alpha^{(k)}\),使得 \(f(x^{(k)} + \alpha^{(k)} d^{(k)}) < f(x^{(k)})\)? 非精确线搜索技术 求 \(…

AlignSum:数据金字塔与层级微调,提升文本摘要模型性能 | EMNLP24

来源:晓飞的算法工程笔记 公众号,转载请注明出处论文: AlignSum: Data Pyramid Hierarchical Fine-tuning for Aligning with Human Summarization Preference论文地址:https://arxiv.org/abs/2410.00409 论文代码:https://github.com/csyanghan/AlignSum创新点发现在文本摘…

快速提升职场效率:从整理任务清单开始

在职场中,我们总会面对各种大小不一的任务,常常让人有种“任务无处不在、却无从下手”的感觉。有效地管理工作,既需要掌握具体的任务管理方法,也需要选择一款适合的工具帮助我们更高效地完成这些任务。今天就从最基础的“整理任务清单”说起,分享一些提高职场效率的实用技…

ABB IRB5500喷涂机器人电机维修故障方法

ABB喷涂机器人电机在运行过程中可能会遇到多种常见故障,用户需根据电机的实际运行状况,细致地进行故障辨析并采取适当的处理措施。在进行维修作业时,务必严格遵守安全操作规程,确保不会对机器人本身及维修人员造成任何伤害。 一、ABB喷涂机器人电机维修故障现象的初步判断与…

NocoBase 本周更新汇总:提升工作流易用性

汇总一周产品更新日志,最新发布可以前往我们的博客查看。 NocoBase 目前更新包括两个分支:main 和 next 。 main :截止目前最稳定的版本,推荐安装此版本。 next:内测版,包含一些未发布的新特性,这个版本可能还不完全稳定,适用于开发者或测试人员,用于提前体验新功能或…

AD(活动目录)环境下使用kms服务自动激活域里windows

AD(活动目录)环境下使用kms服务自动激活域里windows 做基础架构运维对AD域架构和kms激活应该是比较熟悉的,关于kms激活服务器搭建,可以看看网上的相关资料,其安装在CentOS比较稳定,当然也支持其他类似的OS。安装过程不再赘述了。希望能够帮助大家! 可以参考: bbs.pcbet…

Mac和安卓手机互传文件(ADB)

点赞 + 关注 + 收藏 = 学会了 本文简介 今年的 Mac mini M4 真的鲨疯了,丐版原价4字头,领到国补的3字头可以拿下。相信很多想体验 macOS 的工友都蠢蠢欲动了。 但是,电脑便宜了,手机可不便宜。对于正在使用 「苹果电脑 + 安卓手机」 的工友来说,想让这两设备互传体积大、数…

什么是数字图像?

点赞 + 关注 + 收藏 = 学会了 什么是数字图像? 弄懂数字图像的概念对学习计算机视觉很有帮助。 那么,什么是数字图像? 字面意思,数字图像就是有数字组成图像。通常由像素(Pixel)组成,每个像素包含颜色或亮度信息。数字图像的格式包括位图和矢量图两种主要类型:位图图像…

经销商文件外发,如何实现安全与效率的双赢?

经销商文件外发是指经销商在业务运营过程中,与供应商、客户、合作伙伴以及其他相关方之间进行的文件接收和发送活动。这些文件涵盖了订单、发票、合同、产品目录、库存报告、市场活动资料、运输单据、客户反馈等多种类型,对于经销商的日常运营、业务管理、客户关系维护以及决…

发布的网站代码修改,如何在生产环境中安全地修改已发布的网站代码

在生产环境中修改已发布的网站代码需要谨慎操作,以确保网站的稳定性和安全性。以下是具体步骤:备份网站:在修改前,备份当前的网站文件和数据库,确保数据安全。 使用FTP工具或数据库管理工具进行备份。创建测试环境:在本地或开发服务器上创建一个与生产环境一致的测试环境…

织梦网站在哪里修改图片的alt,如何在织梦后台或代码编辑器中修改图片的Alt属性

登录织梦后台:打开浏览器,输入织梦网站的后台地址,例如 http://yourdomain.com/dede。 输入管理员账号和密码,点击“登录”。进入内容管理:登录后,点击顶部菜单栏中的“内容”。 选择“文档管理”或“文章管理”。选择需要修改的文章:在文档管理页面中,找到需要修改的文…