fivebythree.net

2022-09-11

2022-09-11
Abstract
Let’s note CF-N10 にて Ubuntu を使うときの注意に関する覚え書きです

Let’s note CF-N10 で Ubuntu を使うと、スリープ、サスペンドからの復帰でキーボード、マウスが動かなくなる

上記の症状が起ります。

この症状はもともと Linux カーネルの i8042 用のシリアルドライバに起因するようなのですが、 let’s note の一部機種の場合機種固有のバグと重なり、対処を施すのに時間がかかりました。

備忘録としてメモっておきます。

CF-N10 では 動作中にカーネルから i8042.reset をすると、その後リセットから復帰しないバグがあるらしい

とのこと。この話はここで議論されていて、その時はカーネルコードに書かれているresetをスキップするようにコードを変更し、 カーネルごとアップデートしている。

しかしながら、grub で渡すことのできるパラメータにスリープ復帰時にリセットをしない設定ができるようだったので、それを試してみた。

結果としてうまくいっており、スリープから復帰してもキーボードとトラックパッドが両方とも動くようになたので、設定を記録しておく。

設定

/etc/default/grub の “GRUB_CMDLINE_LINUX_DEFAULT” にて、“i8042.reset” を 0 に設定する。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.reset=0"

この設定は、i8042に対してリセット動作を行わない事を明示する設定のようです。

参考にしたサイトではカーネルのソースコードのリセット動作を行っている箇所を無効にしていましたが、 どうやらこれだけでも上手くいくようです。

Kernel Parameter

        i8042.reset     [HW] Reset the controller during init, cleanup and
                        suspend-to-ram transitions, only during s2r
                        transitions, or never reset
                        Format: { 1 | Y | y | 0 | N | n }
                        1, Y, y: always reset controller
                        0, N, n: don't ever reset controller
                        Default: only on s2r transitions on x86; most other
                        architectures force reset to be always executed

References