对于hostapd和wpa_supplicant 的调试时,希望显示更多的调试信息。

未改动代码时,可以将hostapd 进程拉起时所跟的参数加上"-dd"。

即使这样,也不能满足我们对详细log信息的需要,查看代码,wpa_printf打印信息没有输出,更改如下:

make中增加
#add by hbg, 2017-12-27
CONFIG_DEBUG_SYSLOG=y
在/lib/netifd/hostapd.sh中运行wpa_supplicant时加入参数"-s"可以增加打印信息(对应代码中的wpa_msg)
eg:
Wed Dec 27 11:14:14 2017 daemon.notice wpa_supplicant[4472]: wlan0: Associated with 78:00:00:00:00:ad
Wed Dec 27 11:14:14 2017 daemon.notice wpa_supplicant[4472]: wlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
Wed Dec 27 11:14:14 2017 daemon.notice wpa_supplicant[4472]: wlan0: WPA: Key negotiation completed with 78:00:00:00:00:ad [PTK=CCMP GTK=CCMP]
Wed Dec 27 11:14:14 2017 daemon.notice wpa_supplicant[4472]: wlan0: CTRL-EVENT-CONNECTED - Connection to 78:00:00:00:00:ad completed [id=0 id_str=]
修改文件/src/utils/wpa_debug.c
static int wpa_debug_syslog = 1;
使得记录log日志开关打开。
在/lib/netifd/wireless/mac80211.sh中运行hostapd时加入参数"-dd"可以增加打印信息(对应代码中的wpa_msg)
Tue Dec 26 10:07:55 2017 daemon.notice hostapd: wlan0: AP-STA-CONNECTED 78:c2:c0:e0:00:06

一直以为wpa_printf没有起效,其实已经起效了,修改完后:
当_wpa_print中修改成这样子时
#ifdef CONFIG_DEBUG_SYSLOG
        if (wpa_debug_syslog) {
            syslog(syslog_priority(level),"%s", fmt);
            //vsyslog(syslog_priority(level), fmt, ap);
        } else {
#endif /* CONFIG_DEBUG_SYSLOG */
串口中调试信息如下:

Mon Dec 25 15:53:52 2017 daemon.err hostapd: Configuration file: %s
Mon Dec 25 15:53:52 2017 kern.info kernel: [ 4439.320000] device wlan0 entered promiscuous mode
Mon Dec 25 15:53:52 2017 daemon.notice hostapd: %s: interface state %s->%s
Mon Dec 25 15:53:52 2017 daemon.err hostapd: Using interface %s with hwaddr %02x:%02x:%02x:%02x:%02x:%02x and ssid "%s"
Mon Dec 25 15:53:53 2017 kern.info kernel: [ 4440.010000] br-net: port 3(wlan0) entered forwarding state
Mon Dec 25 15:53:53 2017 kern.info kernel: [ 4440.020000] br-net: port 3(wlan0) entered forwarding state
Mon Dec 25 15:53:53 2017 daemon.notice hostapd: %s: interface state %s->%s
Mon Dec 25 15:53:53 2017 daemon.notice hostapd: %s%s
Mon Dec 25 15:53:53 2017 daemon.notice netifd: Network device 'wlan0' link is up
Mon Dec 25 15:53:54 2017 daemon.notice hostapd: %s

未修改 wpa_printf时打印如下:

Mon Dec 25 15:45:26 2017 daemon.err hostapd: Configuration file: /var/run/hostapd-phy0.conf
Mon Dec 25 15:45:26 2017 daemon.notice hostapd: wlan0: interface state UNINITIALIZED->COUNTRY_UPDATE
Mon Dec 25 15:45:26 2017 kern.info kernel: [ 3933.670000] device wlan0 entered promiscuous mode
Mon Dec 25 15:45:26 2017 daemon.err hostapd: Using interface wlan0 with hwaddr 78:00:00:00:00:ad and ssid "mytvws_hbg"
Mon Dec 25 15:45:27 2017 kern.info kernel: [ 3934.490000] br-net: port 3(wlan0) entered forwarding state
Mon Dec 25 15:45:27 2017 kern.info kernel: [ 3934.490000] br-net: port 3(wlan0) entered forwarding state
Mon Dec 25 15:45:27 2017 daemon.notice hostapd: wlan0: interface state COUNTRY_UPDATE->ENABLED
Mon Dec 25 15:45:27 2017 daemon.notice hostapd: wlan0: AP-ENABLED
Mon Dec 25 15:45:27 2017 daemon.notice netifd: Network device 'wlan0' link is up

说明 wpa_printf功能已经生效,可以输出更多的调试信息。

但是还有一个问题,就是只能打印出MSG_INFO,MSG_WARNING,MSG_ERROR三个等级的调试信息。

enum {
    MSG_EXCESSIVE,  // 0

MSG_MSGDUMP,    // 1

MSG_DEBUG,        // 2

MSG_INFO,            // 3

MSG_WARNING,     // 4

MSG_ERROR         // 5
};
 由相关的enum可以看出,低等级的未能打印出来。

再继续查看源代码:

#define wpa_printf(level, ...)                        \
    do {                                \
        if (level >= CONFIG_MSG_MIN_PRIORITY)            \
            _wpa_printf(level, __VA_ARGS__);        \
    } while(0)

红色部分也必须满足才可以,而一直错误得认为CONFIG_MSG_MIN_PRIORITY 值为0

在同一个文件中(/src/utils/wpa_debug.c)开始处有如下宏定义:
#ifndef CONFIG_MSG_MIN_PRIORITY
#define CONFIG_MSG_MIN_PRIORITY 0

#endif

其实在其他地方中已经对其另外定义了值。

在hostapd的Makefile中定义如下:

STAMP_CONFIGURED:=$(STAMP_CONFIGURED)_$(CONFIG_WPA_MSG_MIN_PRIORITY)

TARGET_CPPFLAGS := \
    -I$(STAGING_DIR)/usr/include/libnl-tiny \
    -I$(PKG_BUILD_DIR)/src/crypto \
    $(TARGET_CPPFLAGS) \
    -DCONFIG_LIBNL20 \
    -D_GNU_SOURCE \
    $(if $(CONFIG_WPA_MSG_MIN_PRIORITY),-DCONFIG_MSG_MIN_PRIORITY=$(CONFIG_WPA_MSG_MIN_PRIORITY))
可见与 CONFIG_WPA_MSG_MIN_PRIORITY变量有关。
继续搜索词变量:

可见与 CONFIG_WPA_MSG_MIN_PRIORITY变量有关。
继续搜索词变量:
hbg@root:~$ grep "CONFIG_WPA_MSG_MIN_PRIORITY" -r *
package/network/services/hostapd/Makefile:STAMP_CONFIGURED:=$(STAMP_CONFIGURED)_$(CONFIG_WPA_MSG_MIN_PRIORITY)
package/network/services/hostapd/Makefile:      $(if $(CONFIG_WPA_MSG_MIN_PRIORITY),-DCONFIG_MSG_MIN_PRIORITY=$(CONFIG_WPA_MSG_MIN_PRIORITY))
tmp/.config.old:CONFIG_WPA_MSG_MIN_PRIORITY=3
tmp/.config:CONFIG_WPA_MSG_MIN_PRIORITY=3
可见CONFIG_MSG_MIN_PRIORITY变量的值也是3,因此就解释了为什么只能打印出MSG_INFO,MSG_WARNING,MSG_ERROR三个等级的调试信息。
因此还需要修改./config中的等级
CONFIG_WPA_MSG_MIN_PRIORITY=2

才能打印出更多的调试信息。

关于hostapd的调试的更多相关文章

  1. openwrt 更改 debug 等级(hostapd)

    https://wiki.openwrt.org/doc/devel/debugging 调试hostapd,其中hostapd的调试等级如下: # Levels (minimum value for ...

  2. hostapd源代码分析(一):网络接口和BSS的初始化

    [转]hostapd源代码分析(一):网络接口和BSS的初始化 原文链接:http://blog.csdn.net/qq_21949217/article/details/46004349 最近在做一 ...

  3. [转载]Android开发常用调试技术记录

    ANDROID 调试技术: 1)Ps 指令 ls –l /proc/27/ cat /proc/27/cmdline       #cmdline文件表示了这个进程所在的命令行. cat /proc/ ...

  4. zz-rtl8188eu的linux-usb-wifi调试及驱动编译150210

    //zz//####################################################################### zz-rtl8188eu的linux-usb ...

  5. hostapd阅读(openwrt)-3

    从官网下载相对而言比较干净的源码版本http://w1.fi/hostapd/,然后将其移植到openwrt下,方便在源码阅读时候进行调试编译,移植的过程总结如下心得. 1. openwrt编译与cl ...

  6. C# Web应用调试开启外部访问

    在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...

  7. NodeJs之调试

    关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...

  8. 微信公众号开发之VS远程调试

    目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...

  9. 写出易调试的SQL(修订版)

    h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", ...

随机推荐

  1. Hadoop完全分布式安装

    一.软件版本 Hadoop版本号:hadoop-2.6.0.tar: VMWare版本号:VMware-workstation-full-11.0.0-2305329 Ubuntu版本号:ubuntu ...

  2. MySQL mysqldump与source导入慢的解决方法

    Jquery中文网 >  数据库  >  mysql  >  正文 MySQL mysqldump与source导入慢的解决方法 MySQL mysqldump与source导入慢的 ...

  3. 标签中的onclick调用js方法传递多个参数的解决方案

    1.JS方法 <script type="text/javascript"> funcation cc(parameter1,parameter2,parameter3 ...

  4. Spring Bean的ref属性和IoC注入集合

    这是一个Demo 1.Phone.java package com.cn.pojo; public class Phone { private String name; private double ...

  5. 从虚拟机指令执行的角度分析JAVA中多态的实现原理

    从虚拟机指令执行的角度分析JAVA中多态的实现原理 前几天突然被一个"家伙"问了几个问题,其中一个是:JAVA中的多态的实现原理是什么? 我一想,这肯定不是从语法的角度来阐释多态吧 ...

  6. 海南医院帆软报表 最终版本SQL

    1. 挂号微信收入明细 -- WANTED-1283 门诊查询统计报表-挂号微信收入明细 select p.name as patientName, -- 患者姓名 p.birthday, -- 出生 ...

  7. tcp_listen函数

    #include <netdb.h> #include <unistd.h> #include <stddef.h> #include <strings.h& ...

  8. MySql数据库学习笔记(3)

    查看默认事务隔离级别 mysql> select @@tx_isolation; mysql> select @@global.tx_isolation; mysql> select ...

  9. eclips运行generatorConfig.xml文件生成代码

    描述: 如何通过eclips工具来运行 generatorConfig.xml 文件来自动生成代码并获取数据(类似于mybaits逆向生成)? mybatis-generator:generate 2 ...

  10. vprintf printf区别

    参考链接:  https://zhidao.baidu.com/question/237458625.html