初代NanoteにDebian 11をインストール
ドンキの激安UMPC、初代Nanote(UMPC-01-SR)にXubuntu 20.04をインストールして使っていたんだが、Xubuntu 22.04にアップデートしたらいろいろ気に入らない点が多数あったんで、使い慣れたDebian 11に乗り換えた時の備忘録。
発売当時にstableだったbusterでは光学ポインターが未対応で動かず、testingだったbullseyeではPMICの対応が不完全でバッテリー残量が読めない不具合があったので、仕方がなくXubuntuを使ってたけど、現在のDebian 11.3 (stable/bullseye)では十分使えてます。ただしいくつかの不具合回避のための対応が必要。しかしNanoteなんて世界的に見たら超マイナー機種でも、GPDとかChuwiとかの設計をパクりまくっているおかげで、使える情報を見つけやすいですね…
Debian 11での注意点
インストール
特に問題なし。ただしDebianのインストーラにはポリシー的にnon-freeなドライバーは含まれないため、内蔵Wi-Fiはデフォルトでは使えない。事前にfirmware-realtekのdebパッケージをUSBメモリに入れて用意しておくか、もしくは素直にfreeなドライバーで動くUSB Wi-Fiを使ってインストールする。
内蔵Wi-Fi/BTが使えない / 内蔵スピーカーを認識しない
内蔵Wi-Fi/Bluetoothと内蔵スピーカーを使うには、non-freeなバイナリー・ファームウェアが必要だが、前述の通り、OSインストーラには含まれていないので、インストール後に、/etc/apt/sources.listに"non-free"を追加してから、
"内蔵Wi-Fi/Bluetooth"
apt install firmware-realtek
"内蔵スピーカー"
apt install firmware-intel-sound
バックライトの輝度調整ができない
【2022/11/11 追記】
いつからかはわからないですが、少なくとも現在の "linux-image-5.10.0-19-amd64" では、この不具合は直っています。
/sys/class/backlight/の下にintel_backlightが存在しない
起動時のログに"[drm:pwm_setup_backlight [i915]] ERROR Failed to own the pwm chip"っていうエラーがでている
が該当するなら、↓のフォーラムによると、「バックライト用PWMチップ検出より前に、i915ドライバーが読み込まれると、チップ検出に失敗する」というBayTrail/CherryTrailだけで発生する不具合みたい。回避策も書かれてるいる。ちなみにどのkernelバージョンが該当するのかは不明。少なくともDebian 11の5.10とbullseye-backportな5.15ではダメ。
要はinitramfsに含まれるi915ドライバーを削除して、ブートの最初のタイミングではドライバー読み込みをさせないことにより、読み込みタイミングをズラしてあげればよい、ってことみたい。ということで、aptでdracutをインストール。既存のinitramfsからi915ドライバーを削除するには、
dracut -f --omit-drivers="i915"
今後、kernelアップデート等でinitramfsが作り直されるたびに、これをやるのは面倒なので、/etc/dracut.confに
omit_drivers+=" i915 "
を追記しておけば、今後、自動でi915ドライバーが含まれないinitramfsを作成してくれる(i915の前後にスペースが必要なので注意!)。
ちなみにこの対応をしても、Fnキー+F6/F7キーでの輝度調整はできない。でも/sys/class/backlight/intel_backlight/brightnessに1〜100の値を直接書き込めば調整できるので、とりあえず個人的にはこれで十分なんで、これ以上は調べていない… あと本当はbrightness=0も設定できるけど、この場合、xrandrコマンドで画面回転/スケール変更をすると、勝手にbrightnessが100になっちゃう謎現象が発生するので、避けた方がよいです。→特殊キーでの輝度変更できました。単に「設定」→「電源管理」→「一般」→「ディスプレイの輝度キーを扱う」がオフになってただけでした…
タッチパネルが動かない
どうやらkernel 5.7以降では、goodixのタッチパネルは動かない(機種が多い)らしい。ちなみにDebian 11だけでなく、Xubuntu 22.04でもダメでした。
でも、何も考えずに古いkernelソースからgoodix.cだけ抜き出してきて、コンパイル、差し替えるだけで、ちゃんと動いた。試してみた限りでは、5.4.190、5.6.19はOKで、たしかに5.7.19では動かなかった。差し替える手順は、
kernel.orgから5.7より前のバージョンをとってきて、そこからdrivers/input/touchscreen/goodix.cを適当な場所にコピーしておく。
↓からMakefileだけ拝借して(そのままで動きます)、goodix.cと同じ場所に置いて、
make modules
make install
depmod -a
NanoteでLinuxを使う上での注意点
ついでに以前からある以下の問題点は、相変わらず対応が必要。
時々、タッチパネルが動かない
DSDTの初期化ルーチンが不完全なため、Linuxでは起動時/サスペンド復帰時に、i2c通信がコケて、タッチパネルが動かない不具合。
aptでacpi-call-dkmsをインストールしておいて、
#!/bin/sh
modprobe acpi_call
modprobe -r goodix
sleep 1s
echo '\_SB.PCI0.I2C6.TCS1.INTO 0' > /proc/acpi/call
sleep 1s
modprobe goodix
modprobe -r acpi_call
exit 0
こんな感じのスクリプトを作成しておいて、起動時とサスペンド復帰時に呼び出して実行させれば、とりあえず問題はなくなる。
スピーカー出力がモノラル(しかも左右で逆位相)
es8316ドライバーの初期値は、なぜかモノラル・スピーカー接続の設定になっていて、しかもモノラル・スピーカー設定がモノラルのソースを左右のスピーカーで逆相に駆動する謎設定になっているので、これを変更。/etc/modprobe.d/に"<適当な名前>.conf"を作成し、以下の一文と追記。
options snd_soc_sst_byt_cht_es8316 quirk=0x0
これでes8316に接続されているスピーカーをちゃんとステレオと認識してくれる。またステレオ・スピーカー設定は素直に左右をそのまま駆動する設定になっているので、プリインストールのWindows10みたいに逆相ではなく、左右の音の位相は正しく再生されます。