前回はジャンクのタブレットPCにUbuntuをインストールして無事に一通りパソコンとして機能するようになりました。
でこのときはタッチパネルやカメラが動かず終わりました。
というわけで今回はタッチパネルが動くようにしてみました。
結論から言うとタッチパネル自体がバグっているっぽくて正常に動きませんでした…
が、次に別のタブレット買った時にでも再現できるように作業手順を残します。
事前準備
まずはタッチパネルがちゃんとデバイスとして認識するのか以下のコマンドで確認します。
dmesg | grep i2c
この実行結果に MSSL 1680
が入っていればGithubで公開しているファームウェアを当てればタッチパネル自体は使えます。
ぶっちゃけこの辺のファームウェアを特定するのは手探りでしたw。
ファームウェアのインストール
それではタッチパネルのファームウェアをセットアップします。
まずは以下のコマンドでファームウェアのレポジトリを適当なディレクトリにクローンします。
git clone https://github.com/edward-p/mssl1680-firmware
その後、以下のコマンドでファームウェアを所定のディレクトリにコピーします。
sudo mkdir /lib/firmware/silead sudo cp mssl1680-firmware/mssl1680.fw /lib/firmware/silead/
そして、以下のコマンドでモジュールをロードします。
sudo modprobe -r silead sudo modprobe silead
コマンドを実行後に適当にタッチパネルを触ってみて何かしら反応すればタッチパネルは生きています。
キャリブレーション
Linuxでタッチパネルを扱うときは以前Raspberry Pi 400で試したときもそうでしたが、最初はタッチパネルで触った場所と反応したところがズレがちです。
というわけで、また手作業でキャリブレーションやっていきます。
まずは必要なソフトをインストールして、再起動します。
sudo apt install -y xserver-xorg-input-evdev sudo apt remove -y xserver-xorg-input-libinput sudo apt install -y xinput-calibrator sudo reboot
これで準備が出来たので、以下のコマンドでキャリブレーションをします。
xinput_calibrator
画面上に赤い十字マークが表示されるので順番にタップしていきます。
キャリブレーションが終わると以下のように実行結果が出力されます。
Calibrating EVDEV driver for "silead_ts" id=8 current calibration values (from XInput): min_x=1330, max_x=1187 and min_y=529, max_y=482 Doing dynamic recalibration: Setting calibration data: 1163, 1354, 537, 474 --> Making the calibration permanent <-- copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' (/usr/share/X11/xorg.conf.d/ in some distro's) Section "InputClass" Identifier "calibration" MatchProduct "silead_ts" Option "Calibration" "1163 1354 537 474" Option "SwapAxes" "1" EndSection
実行結果のコメントにある通り、/etc/X11/xorg.conf.d/99-calibration.conf
に Section
から EndSection
までの行の内容をコピペして保存します。
これでタッチパネルを触ったときに正しく認識していたら成功です。
結果
キャリブレーションをやっても正しく認識しなくて、たぶんタッチパネル自体バグっているっぽいという結論に至りました…
実際Tweetのリプでも頂いていましたが、一か八かかけてみたわけです。
Windowsでもタッチパネルは動かない(バグる)のでなかなかきついですが、頑張ってください(๑•̀ㅂ•́)و✧
— けぃPC (@me39856520) 2022年1月3日
後は同じタッチパネルのドライバでも機種ごとにファームウェアが用意されているので同じサイズの画面のやつで試してみてもいいかな…と思いながら試行錯誤してみます。