V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aigebiu
V2EX  ›  Android

Android 6.0 终端无法启动 hostapd ?

  •  
  •   aigebiu · 2016-07-28 16:45:54 +08:00 · 11196 次点击
    这是一个创建于 3045 天前的主题,其中的信息可能已经有所发展或是发生改变。

    旅行时经常开手机热点,很耗电,打算调高 Beacon 时槽来节电。

    查了下 hostapd.conf ,里面有一段

    # Beacon interval in kus (1.024 ms) (default: 100; range 15..65535)
    beacon_int=100
    

    正好是我要的,复制了一份 /data/misc/wifi/hostapd.conf ,加了进去

    但之后用相同的 cmdline 启动 hostapd , logcat 输出

    07-28 16:32:36.764 17673 17673 I hostapd : rfkill: Cannot open RFKILL control device
    07-28 16:32:36.799 17673 17673 E hostapd : nl80211: Could not configure driver mode
    07-28 16:32:36.799 17673 17673 I hostapd : nl80211: deinit ifname=wlan0 disabled_11b_rates=0
    07-28 16:32:36.803 17673 17673 E hostapd : nl80211 driver initialization failed.
    07-28 16:32:36.804 17673 17673 I hostapd : wlan0: interface state UNINITIALIZED->DISABLED
    07-28 16:32:36.804 17673 17673 I hostapd : wlan0: AP-DISABLED 
    

    换回系统生成的配置也是上面这样,只有在手机设置界面开热点才能正常工作, logcat 输出

    07-28 16:32:16.151 17265 17265 I hostapd : rfkill: Cannot open RFKILL control device
    07-28 16:32:16.167 17265 17265 E hostapd : Using interface wlan0 with hwaddr 78:f8:82:a4:df:7c and ssid "AndroidAP"
    07-28 16:32:16.250 17265 17265 I hostapd : wlan0: interface state UNINITIALIZED->ENABLED
    07-28 16:32:16.252 17265 17265 I hostapd : wlan0: AP-ENABLED 
    

    不知为什么,从终端里启动就“ Could not configure driver mode ”,无法切到 AP 模式

    请教一下原因?启动 hostapd 之前是否要执行其他命令?(已尝试过 ifconfig wlan0 up )是否要加载什么驱动?

    系统生成的配置如下

    interface=wlan0
    driver=nl80211
    ctrl_interface=/data/misc/wifi/hostapd
    ssid=AndroidAP
    channel=1
    ieee80211n=1
    hw_mode=g
    ignore_broadcast_ssid=0
    wowlan_triggers=any
    wpa=2
    rsn_pairwise=CCMP
    wpa_psk 略
    
    第 1 条附言  ·  2016-07-30 09:15:57 +08:00
    打开 debug 可见
    ```
    D hostapd : nl80211: Register frame command failed (type=208): ret=-114 (Operation already in progress)
    ```
    有冲突,发现是 wpa_supplicant 在使用设备(即使 wifi 已经关闭也在运行)
    于是
    ```
    mount -o remount,rw /system
    mv /system/bin/wpa_supplicant /system/bin/wpa_supplicant.bak
    pkill wpa_supplicant
    hostapd hostapd.conf
    ```
    结束后记得把 bak 改回来即可

    不知有没有更好方法(比如哪里可以设置 wifi 关闭同时关闭 wpa_supp 进程?
    1 条回复    2016-08-02 20:37:38 +08:00
    aigebiu
        1
    aigebiu  
    OP
       2016-08-02 20:37:38 +08:00
    最终解决方案是在 netd 的 SoftApController 里新增了几行 使之读入自定义的一个配置文件 附加在原配置尾部

    https://github.com/isofew/mydroid/blob/master/netd.ap.conf.patch
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3476 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 04:47 · PVG 12:47 · LAX 20:47 · JFK 23:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.