我目前正在研究Android 支持的 WiFi-Aware自奥利奥以来。在此过程中,我努力寻找有关以下问题的任何信息:
有没有办法启用 WiFi-Aware /邻居意识在运行 Windows 或 Linux 的 PC 上联网?这样您就可以向附近的手机宣传服务?
我该如何解决这个问题?
答案1
除了 Android 系统以外,Wi-Fi Aware 在其他地方基本上都只是个空谈。
Wi-Fi Aware/NAN 是 Apple Wireless Direct Link (AWDL) 技术的衍生品,Apple 在 iOS(一年后,macOS)中率先推出了该技术,用于 AirDrop 和一些 AirPlay 场景。我相信它也用于 Handoff(iPhone 上的应用程序可以将其状态发送到 macOS 上的合作伙伴应用程序,反之亦然,因此您可以轻松地将任务从笔记本电脑切换到手机,然后再切换回来)。我认为 AWDL 还用于其他一些事情,例如 Mac 可以在附近的 iPhone 上触发移动热点模式的方式。
我认为 Apple 不会为第三方提供任何 API 来利用 AWDL。但如果您想尝试这些预先打包的用途,请购买 Mac 和 iPhone,尽情享受吧。
答案2
相关问题。
这仍然是变化无常,我还没有找到一张声称兼容 NAN 的卡。我将在这个答案中记录我的 (Linux) 发现。
在 Linux 上,以前用于配置无线(802.11)设备的基于“无线扩展” ioctl 的接口正在被替换为cfg80211
。该iw
工具公开了一个命令行界面,用于配置实现该cfg80211
界面的设备(请参阅这个矩阵比较效用)。
读取cfg80211
代码、NAN 接口被分配自己的类型(枚举中的位置索引12)。
子系统mac80211
支持虚拟接口,可以iw
使用工具创建. 阅读该工具的代码iw
,有一个没有记录的(并且可能不稳定/不受支持目前,__nan
我还没有使用任何参数来创建这样的接口,尽管我的硬件似乎不支持它。
iw
有几个与 NAN 相关的命令:
# iw |grep nan
wdev <idx> nan start pref <pref> [bands [2GHz] [5GHz]]
wdev <idx> nan stop
wdev <idx> nan config [pref <pref>] [bands [2GHz] [5GHz]]
wdev <idx> nan rm_func cookie <cookie>
wdev <idx> nan add_func type <publish|subscribe|followup> [active] [solicited] [unsolicited] [bcast] [close_range] name <name> [info <info>] [flw_up_id <id> flw_up_req_id <id> flw_up_dest <mac>] [ttl <ttl>] [srf <include|exclude> <bf|list> [bf_idx] [bf_len] <mac1;mac2...>] [rx_filter <str1:str2...>] [tx_filter <str1:str2...>]
似乎这些命令直接调用内核接口提前退出EOPNOTSUPP
如果接口不是 NAN 类型接口,则显示(不支持操作)。事实上,如果您尝试iw
在常规接口上使用上述命令,就会看到这种情况。
总结一下,支持的硬件(我不确定目前支持什么硬件,另一个答案建议某些英特尔硬件可能支持它),以下方法可能会有效:
iw dev ## or `iw phy`: look for the physical interface name, for me it's `phy0` (phy#0)
iw phy phy0 interface add nan0 type __nan # create nan interface using (currently) undocumented type
# On my hw, the above returns "command failed: Operation not supported (-95)"
iw dev # This time, look for the "wdev" index of the newly created interface, here 0x2
iw wdev 0x2 nan start pref 100 # Not sure if that command should be performed before or after
iw wdev 0x2 nan add_func type publish nan_test_whatever
如果情况有所改善,如果我获得更多信息,或者如果我得到兼容的硬件,我将尝试编辑它。