Linux 6.5 内核上奇怪的蓝牙启动错误

Linux 6.5 内核上奇怪的蓝牙启动错误

我最近将 KUbuntu 22.04 台式机上的内核升级到版本 6.5.0-14。现在它无法成功启动到默认内核,并显示错误消息:

[5.something-something] Bluetooth: hci0: Opcode 0xfc1e failed: -16

但是,如果我在内核 6.2 上启动它,绝对一切正常,包括与我的手机进行蓝牙配对。(我现在使用同一台机器。)我知道 hci0 是我的第一个(也是唯一的)蓝牙设备;不幸的是,我不知道“Opcode 0xfc1e”是什么或“-16”对我来说意味着什么。

如何修复此问题以便再次启动到最新的内核?

对于额外的数据,我的蓝牙集成到我的 MSI 主板中,没有可见的硬开关。我已经成功地做到了有点通过进入恢复模式的终端启动至 6.5 内核,并使用sudo rfkill block bluetooth;手动禁用蓝牙然而,这会阻止我的图形驱动程序加载,即使它确实让我进入桌面,这对于多媒体人员来说是有限的。还值得指出的是,虽然我可以从 GUI(KDE Plasma,此处)重新启用蓝牙,但它似乎没有检测到任何设备。

有谁知道这里发生了什么以及我该如何解决它?

附录:运行时dmesg,我有一些与蓝牙相关的有趣输出,它们是亮红色的,可能在这里使用:

[10043.376565] Bluetooth: hci0: corrupted SCO packet
[10043.376575] Bluetooth: hci0: corrupted SCO packet
[10043.376580] Bluetooth: hci0: corrupted SCO packet
[10043.376584] Bluetooth: hci0: corrupted SCO packet
[10043.376589] Bluetooth: hci0: corrupted SCO packet
[10067.006243] Bluetooth: hci0: corrupted SCO packet
[10067.006260] Bluetooth: hci0: corrupted SCO packet
[10067.006266] Bluetooth: hci0: corrupted SCO packet
[10067.006273] Bluetooth: hci0: corrupted SCO packet
[10067.006279] Bluetooth: hci0: corrupted SCO packet
[10067.006285] Bluetooth: hci0: corrupted SCO packet
[10068.012375] Bluetooth: hci0: urb 00000000cece2684 submission failed (90)
[10068.012387] Bluetooth: hci0: sending frame failed (-90)
[10068.012393] Bluetooth: hci0: urb 00000000cece2684 submission failed (90)
[10068.012398] Bluetooth: hci0: sending frame failed (-90)
[10068.012403] Bluetooth: hci0: urb 00000000cece2684 submission failed (90)
[10068.012407] Bluetooth: hci0: sending frame failed (-90)
[10068.024247] Bluetooth: hci0: corrupted SCO packet
[10068.024258] Bluetooth: hci0: corrupted SCO packet
[10068.024264] Bluetooth: hci0: corrupted SCO packet
[10068.024270] Bluetooth: hci0: corrupted SCO packet
[10068.024282] Bluetooth: hci0: corrupted SCO packet
[10068.024288] Bluetooth: hci0: corrupted SCO packet
[10068.024295] Bluetooth: hci0: corrupted SCO packet
[10068.024300] Bluetooth: hci0: corrupted SCO packet
[10068.024307] Bluetooth: hci0: corrupted SCO packet
[10068.024312] Bluetooth: hci0: corrupted SCO packet
[10068.034241] Bluetooth: hci0: corrupted SCO packet
[10075.864138] Bluetooth: hci0: corrupted SCO packet
[10075.864152] Bluetooth: hci0: corrupted SCO packet
[10075.864158] Bluetooth: hci0: corrupted SCO packet
[10075.886953] Bluetooth: hci0: SCO packet for unknown connection handle 264

我不完全确定 SCO 数据包是什么,但今天晚些时候我将尝试关闭我的机器,按下 PSU 上的硬开关,按电源按钮 20-30 秒耗尽电容器的电量,然后切换电源重新打开 PSU,看看正确的冷启动是否可以修复 6.5 版本的问题。我不相信重启期间固件内存中不会保留任何内容。

附录 2:所以,我继续关闭机器,排空电容器,然后重新启动。我仍然停留在内核 6.2 上,但现在我收到了完全不同的错误消息:

[6.796029] Bluetooth: hci0: Malformed MSFT vendor event: 0x02

我不知道这意味着什么,显然,许多其他看过它的人也不知道。 (我承认对其中的“供应商”一词感到不寒而栗...)它也会停止启动过程,尽管我可以使用 Ctrl+Alt+F2 进入控制台并运行startx以启动 XFCE。内核 6.2(感谢上帝)仍然运行良好,包括蓝牙。

更新:我目前的假设是,这是一个在我的硬件上出现的库存内核错误,不幸的是我对 Linux 的了解不够,无法自己修复它。 Linux 6.5 非常接近尖端技术,而 6.2 运行良好;因此,为了我自己的教育,我将继续研究其中一些错误消息的含义,然后可能只是迁移回 6.2。当我满意时,我将通过最终更新来结束这个问题,以供将来参考。

相关内容