Linux Xbox 无线控制器适配器驱动

注意
本文最后更新于 2022-02-24,文中内容可能已过时。

我一开始没想搞这玩意来着, 打游戏不切 Windows 吗. 今天中午, 出了一点点小意外…

事情是这样的, 中午吃饭没关电脑 (Ubuntu), 盖子一盖休眠了. 吃完饭睡个觉起床一看, 好家伙, 黑屏了. 切 tty, 发现每隔 1s 打印一条报错信息:

[20566.357862] mt76x2u 1-12:1.0: vendor request req: 07 off: 1798 failed:-100

类似这样的, req 和 off 有时候是 47 和 9018, 最开头的数字没看出啥来.

tty 可以登录, 但是启动不了 dm. 登录后切回图形化界面, 只有一个鼠标指针.

尝试 reboot 重启, 结果, 卡住了. 黑屏, 风扇狂转. 几分钟后, 强制给他关了.

重启后一番搜索, 发现 mt76x2u 这玩意是网卡驱动? 我寻思着, 我也没网卡啊, 难不成是之前用了个手机 USB 共享? 继续搜索, 居然找到另一个关键字 Xbox. 看了看插在电脑上的 Xbox 适配器, 事情变得简单了起来. 之前看到过设置的 wifi 里有一个 Xbox 选项, 没太在意, 现在想想, 看来适配器的原理是无线网络链接啊. 可是之前也一直插着, 也休眠过, 并没有出现这样的情况.

今天确实是有个特殊情况. 吃饭时我妈不小心摔了手柄一下, 然后我拿起来看看有没有摔坏. 期间按了一下手柄上的配对按钮. 后来, 电脑休眠状态, 但是风扇狂转了起来, 一会又好了, 以为是电脑又抽风了, 没怎么管他(毕竟这电脑质量不敢恭维, 开机时风扇转的声音都不太对).

嗯, 事情到这里, 一切都好解释了. 按了按钮, 然后电脑尝试使用无线网络链接手柄, 可能微软用了某种特定的协议, 而他不知道, 用自己的协议去解析了, 然后就导致了错误. 只不过, 这个错误对系统影响过于大了…

题外话, 前段时间看到 emoji 导致 iPhone 崩溃的 bug 让我觉得没什么是不可能发生的了(虽然这 bug 已经很老了).

想复现一下, 但是失败了, 可能缺少一点天时地利人和吧…

一番搜索, 看到有人说在内核启动的时候禁用 mt76x2u, 这显然是不对的做法. 万一以后啥要用这玩意, 到时候压根不知道被禁了. 于是就想干脆装个驱动得了(快进到以后用 Ubuntu 打游戏). 然后搜到了 xow.

装好以后, 手柄链接成功了, 并且系统设置 wifi 里也没有了 Xbox 页了.