balena-os/wifi-connect

GitHub: balena-os/wifi-connect

一个通过热点门户简化Linux设备WiFi配置的开源工具。

Stars: 1487 | Forks: 404

WiFi Connect 是一个用于通过强制门户动态设置 Linux 设备 WiFi 配置的实用程序。通过连接手机或笔记本电脑到 WiFi Connect 创建的接入点来指定 WiFi 凭据。 [![当前版本](https://img.shields.io/github/release/balena-io/wifi-connect.svg?style=flat-square)](https://github.com/balena-io/wifi-connect/releases/latest) [![CircleCI 状态](https://img.shields.io/circleci/project/github/balena-io/wifi-connect.svg?style=flat-square)](https://circleci.com/gh/balena-io/wifi-connect) [![许可证](https://img.shields.io/github/license/balena-io/wifi-connect.svg?style=flat-square)](https://github.com/balena-io/wifi-connect/blob/master/LICENSE) [![问题](https://img.shields.io/github/issues/balena-io/wifi-connect.svg?style=flat-square)](https://github.com/balena-io/wifi-connect/issues)
一个由 balena.io 开发的开源 :satellite: 项目
[**下载**][DOWNLOAD] | [**工作原理**](#how-it-works) | [**安装说明**](#installation) | [**支持**](#support) | [**路线图**][MILESTONES] ![工作原理](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/93ec2f24aa063540.png) ## 工作原理 WiFi Connect 与 NetworkManager 进行交互,NetworkManager 应该是设备主机操作系统上的活动网络管理器。 ### 1. 广播:设备创建接入点 WiFi Connect 检测可用的 WiFi 网络,并创建一个带有强制门户的接入点。使用手机或笔记本电脑连接到该接入点,即可配置新的 WiFi 凭据。 ### 2. 连接:用户将手机连接到设备接入点 从您的手机或笔记本电脑连接到设备上打开的接入点。接入点 SSID 默认为 `WiFi Connect`。可以通过设置 `--portal-ssid` 命令行参数或 `PORTAL_SSID` 环境变量来更改它(有关在 balenaOS 上运行时如何管理环境变量,请参阅[本指南](https://balena.io/docs/management/env-vars/))。默认情况下,网络是未加密的,但可以通过设置 `--portal-portal-passphrase` 命令行参数或 `PORTAL_PASSPHRASE` 环境变量来添加 WPA2 密码。 ### 3. 门户:手机向用户显示强制门户 从手机连接到接入点后,它将检测到强制门户并打开其网页。打开任何网页也会重定向到该强制门户。 ### 4. 凭据:用户在手机上输入本地 WiFi 网络凭据 强制门户提供从检测到的 WiFi 网络列表中选择一个 WiFi SSID,并为所需网络输入密码的选项。 ### 5. 已连接!:设备连接到本地 WiFi 网络 输入网络凭据后,WiFi Connect 将禁用接入点并尝试连接到该网络。如果连接失败,它将重新启用接入点以进行另一次尝试。如果成功,NetworkManager 将保存该配置。 有关命令行参数和环境变量的完整列表,请查看我们的[命令行参数](./docs/command-line-arguments.md)指南。 完整的应用程序流程在[状态流程图](./docs/state-flow-diagram.md)中进行了说明。 ## 安装说明 WiFi Connect 设计用于在 Raspbian 或 Debian 等系统上工作,或在 balenaOS 之上的 docker 容器中运行。 ### Raspbian/Debian Stretch WiFi Connect 依赖于 NetworkManager,但默认情况下 Raspbian Stretch 使用 dhcpcd 作为网络管理器。提供的安装 shell 脚本会禁用 dhcpcd,将 NetworkManager 安装为活动网络管理器,并下载并安装 WiFi Connect。 在您的终端中运行以下命令,然后按照屏幕上的说明操作: `bash <(curl -L https://github.com/balena-io/wifi-connect/raw/master/scripts/raspbian-install.sh)` ### balenaOS WiFi Connect 可以与 [balena.io](http://balena.io) 应用程序集成。(初次接触 balena.io?请查看[入门指南](https://balena.io/docs/#/pages/installing/gettingStarted.md)。)这种集成通过使用两个共享文件实现: - [Dockerfile 模板](./Dockerfile.template)管理依赖项。此处包含的示例已包含 WiFi Connect 运行所需的一切。需要添加应用程序依赖项。有关 Dockerfile 的帮助,请查看此[指南](https://balena.io/docs/deployment/dockerfile/)。 - [启动脚本](./scripts/start.sh)应包含运行应用程序的命令。在脚本末尾添加这些命令将确保在 WiFi 正确配置后所有内容都能启动。 在 Python 项目中使用 WiFi Connect 的示例可以在此处找到[此处](https://github.com/balena-io-projects/balena-wifi-connect-example)。 ### balenaOS:多容器应用 要在多容器应用上使用 WiFi Connect,您需要: - 将容器网络模式设置为 host - 通过添加所需的标签和环境变量来启用 DBUS(更多关于 [balenaOS dbus](https://www.balena.io/docs/learn/develop/runtime/#dbus-communication-with-host-os)) - 授予容器网络管理员权限 您的 `docker-compose.yml` 文件应如下所示: ``` version: "2.1" services: wifi-connect: build: ./wifi-connect network_mode: "host" labels: io.balena.features.dbus: '1' cap_add: - NET_ADMIN environment: DBUS_SYSTEM_BUS_ADDRESS: "unix:path=/host/run/dbus/system_bus_socket" ... ``` ## 支持的主板/适配器 WiFi Connect 已使用以下 WiFi 适配器成功测试: 适配器 | 芯片 -------------------------------------------|------------------- [TP-LINK TL-WN722N](http://bit.ly/1P1MdAG) | Atheros AR9271 [ModMyPi](http://bit.ly/1gY3IHF) | Ralink RT3070 [ThePiHut](http://bit.ly/1LfkCgZ) | Ralink RT5370 它也已在 Raspberry Pi 3 的板载 WiFi 上成功测试。 基于这些结果,大多数带有 *Atheros* 或 *Ralink* 芯片组的适配器很可能都可以工作。 以下适配器已知**无法**工作(因为其驱动程序与接入点模式或 NetworkManager 不兼容): * 官方 Raspberry Pi 适配器(BCM43143 芯片) * Addon NWU276(Mediatek MT7601 芯片) * Edimax(Realtek RTL8188CUS 芯片) 具有类似芯片组的适配器可能无法工作。 只要拥有[兼容的适配器](https://www.balena.io/docs/reference/hardware/wifi-dongles/),WiFi Connect 预计可与所有 balena.io [支持的主板](https://www.balena.io/docs/reference/hardware/devices/)一起工作。 ## 支持 如果您遇到任何问题,请在 GitHub 上[提出问题](https://github.com/balena-io/wifi-connect/issues/new)或[联系我们](https://balena.io/community/),balena.io 团队将很乐意为您提供帮助。 ## 许可证 WiFi Connect 是免费软件,可根据指定条款进行分发。 [许可证](https://github.com/balena-io/wifi-connect/blob/master/LICENSE)。
标签:balena.io, captive portal, Linux 设备, NetworkManager, WiFi 设置, 二进制发布, 嵌入式系统, 开源工具, 接入点配置, 无线网络, 智能设备设置, 物联网, 用户友好配置, 移动配置, 网络共享, 网络工具, 自动化配置, 设备初始化, 请求拦截, 远程配置, 通知系统, 零配置网络