OSをふっとばされたタブレットPCに入れたUbuntuでタッチパネルを使えるようにしてみたかった(でも出来なかった…)

前回はジャンクのタブレットPCUbuntuをインストールして無事に一通りパソコンとして機能するようになりました。

supernove.hatenadiary.jp

でこのときはタッチパネルやカメラが動かず終わりました。

というわけで今回はタッチパネルが動くようにしてみました。

結論から言うとタッチパネル自体がバグっているっぽくて正常に動きませんでした…

が、次に別のタブレット買った時にでも再現できるように作業手順を残します。

事前準備

まずはタッチパネルがちゃんとデバイスとして認識するのか以下のコマンドで確認します。

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で試したときもそうでしたが、最初はタッチパネルで触った場所と反応したところがズレがちです。

supernove.hatenadiary.jp

というわけで、また手作業でキャリブレーションやっていきます。

まずは必要なソフトをインストールして、再起動します。

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.confSection から EndSectionまでの行の内容をコピペして保存します。

これでタッチパネルを触ったときに正しく認識していたら成功です。

結果

キャリブレーションをやっても正しく認識しなくて、たぶんタッチパネル自体バグっているっぽいという結論に至りました…

実際Tweetのリプでも頂いていましたが、一か八かかけてみたわけです。

後は同じタッチパネルのドライバでも機種ごとにファームウェアが用意されているので同じサイズの画面のやつで試してみてもいいかな…と思いながら試行錯誤してみます。

github.com

参考

jitaku.work

blog.goo.ne.jp