OpenPuck WebUSB 面板显示 Disconnected?3 步修复 Linux 权限的完整指南

发布时间:2026/10/16 2:31:24

OpenPuck WebUSB 面板显示 Disconnected?3 步修复 Linux 权限的完整指南 【免费下载链接】openpuckOpensource firmware for NRF52840 Pro Micro that copycats the Steam Controller 2 Puck and adds an Xbox and Switch mode项目地址https://gitcode.com/gh_mirrors/op/openpuck点击查看免费下载OpenPuck是一款运行在 NRF52840 Pro Micro 上的开源固件它模仿 Steam Controller 2 的 Puck 无线接收器并额外提供 Xbox 和 Switch 等模式。在 Linux 上使用它的 WebUSB 配置面板时一个高频问题就是设备明明选对了面板却提示Disconnected已断开。别急——这几乎总是WebUSB 权限问题导致的按本文 3 步即可修复。为什么 Linux 下会显示 Disconnected在 Windows 上浏览器可以直接打开 USB 设备但 Linux 出于安全考虑默认不允许普通用户访问原始 USB 设备raw USB。OpenPuck 通过 WebUSB 提供配置面板切换模式、映射背键、升级固件都靠它浏览器需要直接读取/dev/bus/usb/下的设备节点。如果你的用户不在对应的访问组里浏览器一打开设备就会被系统拒绝前端表现就是选择正确设备后仍然显示 disconnected。 记住这个判断标准Windows 正常、Linux 报 Disconnected → 90% 是权限问题不是固件坏了。修复步骤 1查看浏览器设备日志确认是权限错误修复前先验伤避免改错方向在 Chrome / Chromium / Edge 地址栏输入chrome://device-log/Chromium 用chromium://device-logEdge 用edge://device-log。重新在配置面板里选择一次 OpenPuck 设备。观察日志输出。如果看到下面这条错误就确认是权限问题Failed to open /dev/bus/usb/xxx/xxx: Operation not permitted看到Operation not permitted就可以放心继续按下面两步授权即可。修复步骤 2创建 udev 规则文件放行 OpenPuck 的 USB Vendor IDudev 规则按USB Vendor ID匹配设备。OpenPuck 在不同模式下会以不同厂商身份枚举Steam 模式是 Valve 的 IDXbox 模式是 Microsoft 的 IDSwitch 模式是 Nintendo 的 ID……所以规则要覆盖它枚举过的所有 Vendor ID。各模式对应的 Vendor ID 参考表模式厂商身份Vendor IDSteam Controller / Lizard 模式Valve28deXbox 360 模式Microsoft045eSwitch Pro 模式Nintendo057eHori Pad 模式HORIPAD (Hori)0f0dPS5 / DS4 / PS3 模式Sony054cDirectInput 模式pid.codes1209操作步骤以 root 身份创建规则文件/etc/udev/rules.d/50-openpuck.rules。将 docs/WEBUSB_LINUX.md 中的规则内容写入该文件大致形如SUBSYSTEMusb, ATTR{idVendor}28de, MODE0664, GROUPplugdev SUBSYSTEMusb, ATTR{idVendor}045e, MODE0664, GROUPplugdev SUBSYSTEMusb, ATTR{idVendor}057e, MODE0664, GROUPplugdev # ……其余模式对应行完整清单以官方文档为准保存退出。✂️ 如果你只用 Steam / Lizard 模式只保留28deValve那一行就够了其余规则是为各模拟模式准备的因为 USB 身份会随模式切换而变化。修复步骤 3把当前用户加入 plugdev 组并重新加载规则规则文件只是声明plugdev 组的成员可以访问还需要两件事让它生效1. 把当前用户加入plugdev组sudo usermod -a -G plugdev $USER2. 重新加载 udev 规则或直接重启sudo udevadm control --reload-rules3. 拔下再插上 OpenPuck重新插拔后浏览器应就能在Steam Controller 模式下正常连接面板了。此时状态从 Disconnected 变为已连接即可开始切换模式、调整背键映射等操作。⚠️ 特殊情况Chromium 是通过 Snap 安装的如果你用 Snap 方式安装了 Chromium它还有一层独立的应用沙箱权限需要额外放行 raw-usbsnap connect chromium:raw-usb完成后再按上面流程重插设备即可。修复没生效按这份清单自查现象可能原因与对策设备选择器里根本看不到 OpenPuck确认用的是支持 WebUSB 的浏览器Chrome / Edge设备插在本机USB 口且处于 Steam Controller 模式能看到设备但连接即断开日志报Operation not permittedudev 规则未生效确认规则文件在/etc/udev/rules.d/下、已执行udevadm control --reload-rules并重新插拔设备加入组后仍然失败usermod的组变更需要重新登录或重启后才生效查看组归属groups $USER中应出现plugdev所有模式都想配但某些模式下面板连不上某些模拟模式的 USB 身份会变化建议回到 Steam 模式背键 ×4 A再重插接收器Xbox 模式故意不提供 WebUSB 接口需先切回 Steam 模式再配置Snap 版 Chromium 依旧失败执行snap connect chromium:raw-usb相关文档与模块速查资料说明docs/WEBUSB_LINUX.md本文的官方原始出处含完整 udev 规则清单README.md项目总览各模式切换组合键、配对与配置流程docs/BUILD_AND_DEPLOY.md自行编译固件与烧录部署指南docs/PROTOCOL.mdOpenPuck 无线协议细节连接状态包0x79等OpenPuck/webusb_config.cppWebUSB 配置面板的固件端实现OpenPuck/xinput_auth.cppXbox 模式的主机侧鉴权实现总结Linux 下 OpenPuck 面板显示Disconnected的三步修复流程验证chrome://device-log/中确认Operation not permitted锁定为权限问题授权创建/etc/udev/rules.d/50-openpuck.rules放行 OpenPuck 各模式的 Vendor ID生效sudo usermod -a -G plugdev $USERsudo udevadm control --reload-rulesSnap 版 Chromium 补一句snap connect chromium:raw-usb重插设备收工。完成后你就可以在 WebUSB 面板里自由切换 Steam / Xbox / Switch 等模式了。赞分享【免费下载链接】openpuckOpensource firmware for NRF52840 Pro Micro that copycats the Steam Controller 2 Puck and adds an Xbox and Switch mode项目地址https://gitcode.com/gh_mirrors/op/openpuck点击查看免费下载相关推荐3步解决Devika终端故障从命令执行到界面显示的完整修复指南3步解决Devika终端故障从命令执行到界面显示的完整修复指南 终端功能是Devika项目中实现代码运行和结果展示的核心模块但在使用过程中可能会遇到命令执行人工智能大模型AI Agent代码智能体本地部署前端昇腾CANN原子操作确定性计算样例数据搬运随路原子操作做确定性计算的样例 概述 本样例首先介绍在数据搬运随路原子操作的场景下做确定性计算的必要性和具体实现方案随后分别介绍在单个AIV核、多AI人工智能深度学习算子库CANNAscend3步打造完美游戏界面字体显示异常修复与个性化指南3步打造完美游戏界面字体显示异常修复与个性化指南 游戏字体优化是提升视觉体验的关键环节不仅能解决烦人的口口口显示异常问题还能通过个性化界面设计让游戏体开发工具游戏开发上一篇Path of Building PoE2从零开始构建你的完美流放之路角色下一篇域名、DNS 与网络接入从平台默认链接到自有域名的完整实战指南vibe-vibe 第十三章创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/16 2:31:24

用XiaoMusic让小爱音箱免会员播放全网音乐

用XiaoMusic让小爱音箱免会员播放全网音乐 【免费下载链接】xiaomusic 使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 你对着客厅的小爱音箱说"播放晴天",它回答你"…

2026/10/16 2:26:24

编译原理实验避坑:PL/0 加入 ELSE 语句的悬空歧义与回填实现

简介:这份资源面向学习编译原理、需要完成课程实验的高校学生,以经典教学型编译程序PL/0为改造对象,帮助读者在词法分析、语法分析与语义处理三个环节上动手实践,深入理解编译过程的基本原理与实现方法。压缩包共24个文件&#xf…

2026/10/16 5:16:31

UML状态图实战:从if-else到状态机引擎的订单状态建模

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:16:31

A*寻路算法从原理到实战:启发函数、性能调优与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:16:31

嵌入式实时噪声估计:三层递进式鲁棒算法设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:16:31

恭介的法则:研发团队如何将踩坑经验固化为可执行规则

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:16:31

Colab K80 深度学习实战:环境配置、训练优化与断点续训技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:11:31

GEO实战:从AI搜索被引用到2026品牌排名新格局

1. GEO为什么在2026年成了品牌排名的分水岭1.1 搜索行为迁移:用户要的是答案,而不是十条链接传统SEO时代,品牌排名的计量单位是"链接位置"——搜索结果页第一屏、前三名、自然结果点击率。这套体系运转了十几年,品牌方也…

2026/10/14 11:31:03

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/16 0:01:11

Cephadm实战指南:Linux系统工程师的生产级Ceph集群部署与排障

简介:本资源是一份完整的Ceph分布式存储系统中文技术文档合集,面向Linux系统运维工程师、云平台架构师及存储方向开发者,帮助读者系统掌握Ceph集群的部署、配置与运维核心能力。文档覆盖对象存储(RGW)、块设备&#xf…

2026/10/16 0:01:11

ITK中SpatialObject几何体系解析:坐标系、变换与管道集成

1. 空间对象的定位:为什么 ITK 需要一套几何描述体系很多刚开始接触 ITK 的朋友,包括我自己,最初都是被它的图像滤波、配准、分割这些“正统”功能吸引进来的。等真正上手做点实际项目,比如把分割出来的器官边界做量化分析、给血管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑