如何在嵌入式 linux 设备暂停到 RAM 时保持 wifi link 正常运行

How to keep wifi link up when an embedded linux device suspends to RAM

环境:
我有一个嵌入式 linux 系统 运行 一个基于 ARM 的 iMX7 处理器。它运行在非常基于 Fedora 的 yocto linux 的构建上。

场景:
我的系统使用 Suspend To RAM 功能,这是 linux 系统省电模式,在 this link 中有很好的解释。这样做是为了在某个阶段节省电力。

Objective:
现在,我需要在这个阶段保持 wifi link 打开。正如我从 this 等一些讨论中读到的那样,似乎可以这样做。

我该怎么做?

阅读类似的讨论:
通读 this discussion,它解释了如何在基于英特尔的台式机 linux 计算机上执行此操作。但是我的嵌入式 linux 设备上没有 /etc/NetworkManager。在基于 Fedora 的嵌入式 linux 系统上可能有不同的方法。

我可以就如何执行此操作甚至如何处理此问题获得一些建议吗?

您不能只在 sleep/resume 期间保持 wifi 处于活动状态。您可以优化重新连接速度,但我相信 NM 和 connman 都已经这样做了。

None 您引用的文章甚至建议可以将 WiFi 保持打开状态 - 事实上其中一篇说这是不可能的。他们提供的只是各种使唤醒更快的技巧。

取决于硬件,但很有可能,让它一直开着真的是不可能的。 Suspend-to-ram 包括一个硬件命令,该命令关闭 CPU 时钟,将其互连总线置于空闲状态,并禁用所有外围设备的主电源(只为支持待机模式的外围设备提供备用电源)。

我不知道您的 WiFi 设备是否支持 运行 待机电源,也不知道您拥有的嵌入式硬件是否能够在 CPU 关闭时为其提供电源.如果存在这种能力,它很可能可以作为内核驱动程序参数访问。

可以通过为您的 WiFi 设备提供静态配置而不是使用默认的自动连接(涉及搜索要连接的路由器、获取 IP 地址等)。