Skip to content

Repository files navigation

USBLink

USBLink 是一个中文 Windows 桌面工具,为免费的 USB/IP 组件提供图形界面。它内置 EasyTier 加密组网,可以共享和连接任意数量的 USB 设备,不需要账号或命令行。

Windows 安装程序

GitHub Releases 下载 Windows x64 的 Setup.exe 安装包。双击打开中文安装向导,选择安装目录后完成安装;可创建开始菜单和桌面快捷方式,也可以从 Windows“设置 → 应用”中卸载。默认安装到当前用户目录。

安装包会检查 WebView2,缺失时联网下载并安装。USB 驱动仍通过应用“设置”页安装;EasyTier 和许可证已包含在程序及安装资源中。已开启的开机启动项会指向新的安装路径。

升级默认选择“直接更新(推荐,保留配置,无需卸载)”,沿用原安装目录并保留配对信息、设置及快捷方式;也可自行选择先卸载再安装。同版本支持保留配置重新安装。0.2.20 起,如果 USBLink 仍在运行,提示“结束进程并继续?”;点击“确定”后安装器会结束当前用户的 USBLink 进程,并确认进程与会话锁都释放后继续,无需手动关闭。点击“取消”退出本次操作;结束失败可重试。强制结束会跳过 USB 共享和挂载清理,遗留状态在下次启动 USBLink 时清理。静默/被动安装不擅自结束进程,遇到占用返回 1618。旧安装包的提示需关闭后改用新版安装包。

卸载应用会保留配对配置、独立的 EasyTier 网络服务和 USB 驱动;如果需要离开加密网络,请先在应用中点击“离开连接”。

运行方式

在两台电脑上分别安装 USBLink:

  • 一台电脑在“连接”页创建配对码,另一台电脑输入配对码加入。
  • USB 所在电脑在“设备”页选择需要共享的设备。
  • 共享仅在本次运行期间有效;正常关闭 USBLink 会先停止共享并断开本机接收的 USB,重新打开后需要手动选择并共享。
  • 被控电脑在“连接”页选择远程电脑和需要连接的设备。
  • “设置”页会显示内置 EasyTier,并检测 usbipd-win 和 usbip-win2。
  • 安装组件后返回 USBLink,状态会立即重新检测;设置页打开期间也会自动刷新。

免费组件

  • EasyTier:内置的去中心化加密网络,无需安装或注册账号。
  • usbipd-win:安装在 USB 所在电脑上的共享服务。
  • usbip-win2:安装在被控电脑上的远程 USB 驱动。
  • 最低安全版本:usbip-win2 0.9.8.0;安装或更新后应重启 Windows。

USBLink 内置 EasyTier 2.6.4 的官方未修改二进制,并附带 LGPL-3.0 许可证和精确源码链接。首次创建或加入连接时,Windows 会请求管理员授权并安装 USBLink EasyTier Network 服务;配对信息由 Windows DPAPI 加密保存。首次共享设备时,USBLink 会创建一条仅允许当前 EasyTier 虚拟网段访问 TCP 3240-3241 的防火墙规则。应用会检查 Windows 中的真实规则、启动 usbipd 服务并验证本机 3240 端口,设备页也提供“修复共享”按钮。

USBLink 0.2.9 会同时检查 usbip-win2 客户端和实际安装的 UDE 内核驱动。官方已确认 0.9.7.8 存在可导致内存损坏和蓝屏的严重缺陷;旧版或无法验证版本时,应用会阻止远程挂载并引导更新。USBLink 不再自动重连,所有手动挂载均使用 --once

USB/IP 自带的远程设备列表有时只会按 VID/PID 显示通用名称,例如把使用 Google ADB 标识的 Redmi 手机显示成 Pixel。两端都运行 USBLink 时,共享端会通过经过配对密钥验证的 TCP 3241 接口同步 Windows 识别到的真实友好名称;接口不可用时会退回中性设备类型,不会把 VID/PID 数据库名称当成真实机型。

设备进入已连接状态后,共享端仍会发布真实名称,接收端也会记住经过配对验证的名称;名称接口短暂不可用时,不会再从 Redmi K40 退回“Android 调试设备”。

管理员操作由 USBLink 使用 Windows 原生 ShellExecuteExW 完成,不依赖 PowerShell。EasyTier 服务和 USB 共享命令由隐藏的 USBLink 管理员辅助进程直接执行,防火墙配置使用 Windows 自带的 netsh.exe

EasyTier 默认连接两个经过实际握手验证的社区节点:国内 tcp://183.230.36.171:11010,海外备用 tcp://107.172.5.203:11010。它会优先建立 P2P 直连,穿透失败时社区节点可能转发经过加密的流量。可以在设置页替换首选节点。

早期版本使用的 public.easytier.top 已经停止解析。USBLink 会自动迁移包含这个地址的本机配置和旧配对码并持久化,不会在每次启动时重复提示修复。

USBLink 启动后还会核对 Windows 中实际安装的 EasyTier 服务参数。旧服务缺少 TCP 3240-3241 白名单、备用中继或仍使用失效节点时,会请求一次管理员授权并自动升级服务配置。

USB 会话与在线状态(0.2.17)

两端需要安装新版并保持 USBLink 打开。在线状态来自当前配对密钥认证的应用心跳;EasyTier 或 usbipd 后台服务仍在运行、电脑能被 ping 通,都不能代替应用响应。心跳包含随机挑战和 HMAC-SHA256 校验,并区分准备、就绪、退出和清理失败。只有应用就绪且 USB 共享端口可达时才允许连接;仅作为接收端、没有 usbipd 的电脑也能显示应用在线。

获得虚拟地址后,双方都会检查 TCP 3241 会话访问规则;缺失时请求管理员授权,规则限定本机虚拟地址和当前 EasyTier 网段。取消授权后不会反复弹窗,可点击“修复连接”重试。慢设备名称查询不会阻塞心跳;会话接口启动失败会显示错误,不能静默进入就绪状态。

启动和正常退出会同时清理本机 usbipd 共享授权及 usbip-win2 接收挂载。断开命令只提交一次,随后只读查询端口,确认清空后才完成;一个方向失败仍会处理另一个方向。范围包含这些组件中其他工具创建的共享或挂载。强制杀进程、崩溃或断电无法执行退出钩子,遗留状态在下次启动清理。独立后台服务可能继续运行,这不代表 USB 仍处于共享或挂载状态。

USB 连接状态

0.2.19 在唯一一次挂载请求之前,连续查询所选设备的远端导出记录,核对设备编号、VID/PID 和设备路径,等共享端记录稳定后再连接。准备期间保持“正在连接”;设备变更或一直未就绪时不提交挂载。挂载失败后仍禁止任何自动补试,成功后掉线也不会自动重连。

USBLink 使用只读的 usbip port 查询本机真实挂载状态。远程列表短暂失败不会隐藏本机仍已挂载的 USB;对方失联时保留记录供手动断开,同时显示“对方 USBLink 未运行或不可达”,不再显示绿色“已连接”。端口查询失败时保留上次结果并显示“状态待确认”,成功查询到空列表后才移除挂载记录。挂载与在线探测不等于已经验证应用数据传输正常。

共享端的 Attached 会显示为“正在被使用”,仍属于已共享设备。连接和断开后都会重新查询状态;不会触发自动重连。

开发构建

npm install
npm run build
npm test
cargo test --manifest-path src-tauri\Cargo.toml
npm run tauri:build

默认构建会生成 NSIS 安装包:src-tauri\target\release\bundle\nsis\USBLink_0.2.20_x64-setup.exe。安装器配置位于 src-tauri/tauri.conf.json,升级/卸载检查位于 src-tauri/installer-hooks.nsh,自定义模板来源及验证步骤见 安装器维护说明

在没有运行中的 USBLink、没有现有安装和同名快捷方式的测试账户中,可以运行 tests/installer-smoke.ps1 验证静默安装、覆盖安装、文件校验、快捷方式、卸载注册及卸载后保留用户文件;脚本不启动应用,并恢复测试前的开机启动项。

第三方组件和许可证说明见 THIRD_PARTY_NOTICES.md

0.2.16 退出停止共享

本版现已提供 release/USBLink-0.2.16-x64-Setup.exe 安装包;此前的便携程序 release/USBLink-0.2.16.exe 保留作为历史产物。

usbipd-win 的共享授权原本会跨进程、重启保留。现在 USBLink 正常退出时先撤销本机的共享授权并验证结果,然后关闭窗口;正在进行的共享操作会先完成,再统一清理。启动时也会清理既有授权,涵盖旧版本和异常退出留下的共享,重新打开后必须手动共享。清理按持久化 GUID 执行,已经拔出的设备也不会在重新插入后恢复上次共享。

撤销共享需要 Windows 管理员权限,有待清理的授权时会出现 UAC 提示;取消或清理失败时保留实际状态和重试入口,退出清理失败则保留窗口。没有共享授权时不会为清理请求提权。同一用户只能打开一个新版 USBLink 窗口,避免另一个窗口清理正在使用的共享。

USBLink 将本机 usbipd-win 共享列表作为本次运行的共享范围,启动和退出会清理其中的既有授权(也包括其他工具设置的绑定)。请避免与其他需要保留 usbipd 绑定的工具同时管理共享。强制结束进程或断电无法执行退出清理,遗留授权会在下次启动时处理;本版没有承诺在程序崩溃的瞬间停止系统服务。

0.2.15 对方电脑在线验证

上一版交付文件为 release/USBLink-0.2.15.exe

配对信息只表示加入过同一网络。窗口可见时,USBLink 每 3 秒发起一次对端状态检查(上次查询未完成时不重复发起),返回窗口也会立即刷新;关闭“自动刷新设备”不会关闭在线检查。后台通过 TCP 3240 握手确认共享服务可达,失败时再用 Windows 原生 ICMP 检查电脑是否响应,区分“在线”“电脑在线但共享服务不可达”和“离线或网络不可达”。防火墙阻止探测时不会把未验证状态显示为在线。

当前会话见过的电脑失联后会保留名称并标记离线,禁止新的 USB 连接;连接按钮提交后,后台还会再次验证当前网络中的对方及共享端口。对方恢复后自动更新可用状态,不会自动重新挂载 USB。冷启动时若尚未发现对方,则显示“暂无在线电脑”。

0.2.14 单击连接修复

上一版交付文件为 release/USBLink-0.2.14.exe

点击一次“连接所选设备”后,USBLink 会保持正在连接,直到确认本机实际挂载结果;驱动初始化期间不再因旧查询清空列表,已挂载设备即使暂时不在远端导出列表中也会继续显示“已连接”。每个设备只提交一次 --once 请求,确认过程仅查询状态,超时会明确报错。关闭自动刷新也能完成本次连接确认。

0.2.13 修复

本版继续修复外部命令超时后仍等待、服务停止与更新竞态、配对保存失败后服务和文件不一致、管理员操作误报成功,以及 USB 表格解析错误。自动服务检查与手动操作统一互斥,取消授权后可手动修复;本机列表或网络查询失败时不再允许基于旧状态共享或挂载。完整记录及验证范围见 修复记录

0.2.12 修复

本版修复中继输入被刷新覆盖、失败设置被提前保存、旧配对码与旧查询覆盖新状态、刷新误解除操作锁、缓存损坏白屏,以及带空格路径开机启动失败。耗时系统命令在后台执行,组件命令具有超时处理,驱动检测独立于网络状态。详细触发场景与验证范围见 修复记录

历史修改前的备份位于 backups/2026-09-10-bugfix/。构建产物和本机备份不纳入 Git;克隆仓库后可按上面的步骤构建 EXE。

About

中文 Windows USB/IP 桌面工具,内置 EasyTier 加密组网,支持 USB 共享与远程连接。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages