ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

QMK Firmware Linux 下刷写无权限:如何安装 udev 规则?

QMK Firmware Linux 下刷写无权限:如何安装 udev 规则? QMK Firmware Linux 下刷写无权限如何安装 udev 规则【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware在 Linux 上给 QMK Firmware 的键盘刷写固件时一个常见障碍是刷写程序dfu、dfu-util、teensy等 programmer需要与 bootloader 设备通信而普通用户没有对应设备的访问权限导致刷写失败。QMK 构建 FAQ 中的 “Cant Program on Linux” 一节明确说明Linux 用户要么刷写时用sudo不推荐要么安装 udev 规则来获得正确的设备访问权限。本文走第二条路——安装 QMK 官方 udev 规则之后make keyboard:keymap:flash不再需要 root 权限。适用前提你在 Linux 系统上构建了 QMK 固件仓库键盘已连接构建环境已按 环境搭建指南 完成。先确认问题出在 udev 规则仓库自带的qmk doctor命令会检查环境并报告潜在的构建或刷写问题其中就包括 Linux 下的 QMK udev 规则状态见 CLI 命令参考qmk doctor # 检查环境发现问题时提示修复 qmk doctor -y # 自动修复发现的问题 qmk doctor -n # 只报告问题不做修改qmk doctor在 Linux 上的 udev 检查逻辑见 lib/python/qmk/cli/doctor/linux.py它扫描/usr/lib/udev/rules.d/、/usr/local/lib/udev/rules.d/、/run/udev/rules.d/、/etc/udev/rules.d/四个目录中文件名含qmk的规则文件并检查规则内容中是否带有ID_QMK标记。根据结果会看到三种情况规则内容含ID_QMK检查通过找到的是旧版规则含TAGuaccess但没有ID_QMK输出警告Found legacy udev rules. Please run util/install_udev.sh to install the latest rules完全没找到 QMK 规则输出警告Missing udev rules for QMK boards. Please run util/install_udev.sh to install the rules。看到后两条警告就按下一步安装最新规则。另外该检查在 WSL 环境下会被跳过源码注释 “Dont bother with udev on WSL, for now”WSL 用户不适用本文路径。安装 udev 规则在仓库根目录运行 util/install_udev.shutil/install_udev.sh运行前需要知道这个脚本会做什么因为它会改动系统目录仅限 Linux支持 x86_64、aarch64/arm64、riscv64 架构其他架构会直接退出需要系统中有sudo或doas脚本通过它完成安装步骤需要curl或wget之一用于下载从 qmk_udev 官方仓库的最新 release 下载50-qmk.rules规则文件和与架构匹配的qmk_id辅助程序先删除各标准位置下已有的*-qmk.rules规则文件和旧的qmk_id涉及/etc/udev/rules.d、/run/udev/rules.d、/usr/lib/udev/rules.d、/usr/local/lib/udev/rules.d、/lib/udev/rules.d安装到/usr/lib/udev/qmk_id权限 0755和/etc/udev/rules.d/50-qmk.rules权限 0644最后执行udevadm control --reload-rules和udevadm trigger重新加载规则若系统没有udevadm则跳过重载并提示。也就是说脚本只会触碰 QMK 自己的规则文件与qmk_id但写入的是系统级目录因此运行它会要求 root 授权脚本执行过程中注意确认终端提示。如果 ModemManager 版本较旧 1.12过滤功能在非严格模式下才生效。构建 FAQ 给出以下命令来更新该项设置它会写入 ModemManager 的 systemd 配置并重载、重启 ModemManager 服务需要 root 权限printf [Service]\nExecStart\nExecStart/usr/sbin/ModemManager --filter-policydefault | sudo tee /etc/systemd/system/ModemManager.service.d/policy.conf sudo systemctl daemon-reload sudo systemctl restart ModemManager验证规则已生效重新运行qmk doctor之前出现的 “Missing udev rules” 或 “Found legacy udev rules” 警告应不再出现说明/etc/udev/rules.d/50-qmk.rules已就位且含ID_QMK标记。不带sudo执行一次真实刷写make planck/rev4:default:flash把planck/rev4、default换成你的键盘/版本与键名。按 Make 指南 的说明flash目标会先编译再上传且 “If the compilation fails, then nothing will be uploaded”——也就是说编译失败时设备不会被写入可以安全重试。若编译通过且上传过程不再出现权限类报错说明 udev 规则已生效。备选路径与相邻问题临时用sudo顶替不推荐。构建 FAQ 给出的权宜方案是sudo make keyboard:keymap:flash控制器为 ATMega32u4 时也可以逐条执行sudo dfu-programmer atmega32u4 erase --force sudo dfu-programmer atmega32u4 flash your.hex sudo dfu-programmer atmega32u4 reset其中your.hex是文档示例中的占位文件名替换为你实际编译出的.hex。文档明确提示用sudo跑make通常不是好主意能装 udev 规则就优先装规则。bootloader 模式下串口设备根本不被识别。这不属于权限问题而是内核缺少设备支持构建 FAQ 指出使用 USB ACM 的设备如 Pro Micro / Atmega32u4需要内核包含CONFIG_USB_ACMy其他设备可能需要USB_SERIAL及其子选项。遇到这类情况先去核对内核配置而不是继续折腾 udev。【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表