2021-01-10

Linux のタッチスクリーンの設定に苦しむ

格安価格に釣られて、正月早々、衝動的に買ってしまったタブレット PC (Jumper EZpad Mini 8) ですが [1]、Linux をインストールしたくとも、ライブメディアを試した限りでは、タッチスクリーンを利用できません。

いろいろ調べてみると、Github に gsl-firmware という、Silead というタッチスクリーン・コントローラのデバイスのイメージと Linux のファームウェアへ変換するツールを提供しているサイトを見つけました [2]。今回買った Ezpad Mini 8 はリストに含まれていませんが、他の Jumper のタブレットのデバイスドライバが含まれています。このサイトの情報を足がかりに Jumper EZpad Mini 8 用のタッチスクリーンのドライバを用意できるかもしれません。

しかし、その前に…

Jumper EZpad 6 Pro

そういえば昔、Jumper EZpad 6 Pro を 27,000 円(当時)の値段に釣られて買っていました [3]。中華 PC の安物買いは得意技なのです。😅

タッチスクリーンは Linux では利用できなかったのですが、Intel Atom x7-E3950 のそこそこの CPU パワーが気に入っていて、しばらくはサブノート PC として持ち歩いていました。しかし電源スイッチの調子が悪くなり、今では埃をかぶるようになってしまっています。

当時はタッチスクリーンが利用できることをそもそも期待しておらず、利用できればラッキーぐらいにしか考えていませんでした。しかし、上記 gsl-firmware のサイト [2] には EZpad 6(S) Pro 向けのドライバが含まれているので、試してみる価値は大いにあります。

今回使用した OS は下記の通りです。

Fedora 33 (Workstation Edition) x86_64

起動ログは下記のようになっています。

dmesg の問題の箇所
  :
  :
[    9.227346] input: Intel HID 5 button array as /devices/platform/INT33D5:00/input/input22
[    9.322425] proc_thermal 0000:00:00.1: Creating sysfs group for PROC_THERMAL_PCI
[    9.330845] silead_ts i2c-MSSL1680:00: supply vddio not found, using dummy regulator
[    9.331077] silead_ts i2c-MSSL1680:00: supply avdd not found, using dummy regulator
[    9.331377] silead_ts i2c-MSSL1680:00: Silead chip ID: 0x80360000
[    9.432752] idma64 idma64.0: Found Intel integrated DMA 64-bit
[    9.444849] idma64 idma64.1: Found Intel integrated DMA 64-bit
[    9.456780] idma64 idma64.2: Found Intel integrated DMA 64-bit
[    9.456988] idma64 idma64.3: Found Intel integrated DMA 64-bit
[    9.468795] idma64 idma64.4: Found Intel integrated DMA 64-bit
[    9.471905] bmc150_accel_i2c i2c-BOSC0200:00: mounting matrix not found: using identity...
[    9.472082] idma64 idma64.5: Found Intel integrated DMA 64-bit
[    9.473649] silead_ts i2c-MSSL1680:00: Direct firmware load for silead/mssl1680.fw failed with error -2
[    9.473657] silead_ts i2c-MSSL1680:00: Firmware request error -2
[    9.473855] silead_ts: probe of i2c-MSSL1680:00 failed with error -2
[    9.475381] bmc150_accel_i2c i2c-BOSC0200:00: Invalid chip 3
[    9.483798] idma64 idma64.6: Found Intel integrated DMA 64-bit
[    9.495810] idma64 idma64.7: Found Intel integrated DMA 64-bit
  :
  :

これを見て判ることは、どうやらタッチスクリーンのデバイスは MSSL1680 という型番で、なにも設定していなければ silead/mssl1680.fw というドライバを読み込もうとしているということです。ピンクで下線を付けた加速度センサーらしきデバイスについては、またの機会にします。

Jumper EZpad 6 Pro タッチスクリーンのドライバー

上記 gsl-firmware のサイト [2] にある説明をよく読みながら試行錯誤を重ねて、Jumper EZpad 6 Pro タッチスクリーンのドライバーの RPM パッケージを作ってみました。

ドライバをインストールしてみたものの、まだ「アクティビティ」しか、まともに反応してくれない

実は RPM パッケージを作ったものの、「アクティビティ」をタッチすればダッシュが表示されるだけで、他が上手く反応せず困っている状態です。しかし公開すれば、何か解決のためのヒントをどなたからか頂けるかもしれないと思い、パッケージをアップしています。

Jumper EZpad 6 Pro タッチスクリーンのドライバーの RPM パッケージ

パッケージ名が長くなってしまいましたが、RPM パッケージをダウンロードして下記のようにダウンロードします。

[bitwalk@ezpad6 ~]$ sudo dnf install mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-1.fc33.noarch.rpm
メタデータの期限切れの最終確認: 3:26:07 時間前の 2021年01月10日 16時42分51秒 に実施しました。
依存関係が解決しました。
================================================================================
 パッケージ            Arch   バージョン                     リポジトリー サイズ
================================================================================
インストール:
 mssl1680-firmware-jumper-ezpad6pro
                       noarch 1.0.git20201209.e247c34-1.fc33 @commandline  23 k

トランザクションの概要
================================================================================
インストール  1 パッケージ

合計サイズ: 23 k
インストール後のサイズ: 39 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1 
  インストール中   : mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e   1/1 
  scriptletの実行中: mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e   1/1 
  検証             : mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e   1/1 

インストール済み:
  mssl1680-firmware-jumper-ezpad6pro-1.0.git20201209.e247c34-1.fc33.noarch      

完了しました!
[bitwalk@ezpad6 ~]$ 

再起動して、ログを確認すると下記のようになっています。一応、認識されているように見えます。

dmesg の問題の箇所(gsl-firmware インストール後)
  :
  :
[   10.133936] input: Intel HID 5 button array as /devices/platform/INT33D5:00/input/input22
[   10.188244] proc_thermal 0000:00:00.1: Creating sysfs group for PROC_THERMAL_PCI
[   10.292445] silead_ts i2c-MSSL1680:00: supply vddio not found, using dummy regulator
[   10.292882] silead_ts i2c-MSSL1680:00: supply avdd not found, using dummy regulator
[   10.302085] silead_ts i2c-MSSL1680:00: Silead chip ID: 0x80360000
[   10.367723] kauditd_printk_skb: 70 callbacks suppressed
  :
  :
[   11.566098] Bluetooth: hci0: RTL: fw version 0x0e2f9f73
[   11.596426] input: silead_ts as /devices/pci0000:00/0000:00:16.3/i2c_designware.3/i2c-3/i2c-MSSL1680:00/input/input32
[   11.600980] RPC: Registered named UNIX socket transport module.
  :
  :

xinput コマンドで利用可能なデバイスを確認すると、下記の通りタッチスクリーンデバイスが xwayland-touch:17 として一覧にあります。

[bitwalk@ezpad6 ~]$ xinput list
WARNING: running xinput against an Xwayland server. See the xinput man page for details.
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ xwayland-pointer:17                     	id=6	[slave  pointer  (2)]
⎜   ↳ xwayland-relative-pointer:17            	id=7	[slave  pointer  (2)]
⎜   ↳ xwayland-touch:17                       	id=9	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ xwayland-keyboard:17                    	id=8	[slave  keyboard (3)]
[bitwalk@ezpad6 ~]$ 

タッチスクリーンデバイスが xwayland-touch:17 の詳細は以下のようになっています。

[bitwalk@ezpad6 ~]$ xinput list-props 'xwayland-touch:17'
WARNING: running xinput against an Xwayland server. See the xinput man page for details.
Device 'xwayland-touch:17':
	Device Enabled (119):	1
	Coordinate Transformation Matrix (121):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	Device Accel Profile (410):	0
	Device Accel Constant Deceleration (411):	1.000000
	Device Accel Adaptive Deceleration (412):	1.000000
	Device Accel Velocity Scaling (413):	10.000000
[bitwalk@ezpad6 ~]$ 

画面の向きがタッチスクリーンと一致しているかをイマイチ確信できていないのですが、座標変換行列 (Coordinate Transformation Matrix) を調整する必要があるかもしれません。

xrandr コマンドで画面のサイズや向きなどの設定を確認します。

[bitwalk@ezpad6 ~]$ xrandr
Screen 0: minimum 16 x 16, current 1920 x 1080, maximum 32767 x 32767
XWAYLAND0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 260mm x 150mm
   1920x1080     59.88*+
   1440x1080     59.87  
   1400x1050     59.86  
   1280x1024     59.76  
   1280x960      59.79  
   1152x864      59.78  
   1024x768      59.68  
   800x600       59.86  
   640x480       59.38  
   320x240       59.52  
   1680x1050     59.85  
   1440x900      59.89  
   1280x800      59.81  
   720x480       59.71  
   640x400       59.20  
   320x200       58.96  
   1600x900      59.82  
   1368x768      59.71  
   1280x720      59.86  
   1024x576      59.90  
   864x486       59.45  
   720x400       59.55  
   640x350       59.77  
[bitwalk@ezpad6 ~]$ 

まとめ

xinput や xrandr コマンドでちょっと確認したところでは良さげなのですが、タッチスクリーンがうまく動作していないのは事実です。まだまだ確認できるところはあるはずです。アップした RPM パッケージについては改善を続けます。

ちなみに、我が家でまともにタッチスクリーンが動作するのは、ASUS の Transbook T100HA [4] ぐらいです。買った当初はタッチスクリーンの設定に苦労しましたが、いつの間にか Linux (Fedora) の方で対応したのか、今では特別なことをしなくともタッチスクリーンと加速度センサーが動作しています。

タッチスクリーンを Linxu で利用できる事例が手許にあるので、じっくり比較して調べてみます。先日買った EZpad 8 Mini についても、Linux 用のタッチスクリーンのドライバを準備し、ライブ Linux に組み込んで動作確認できないか、検討を始めます。

参考サイト

  1. bitWalk's: 格安タブレット PC を衝動買い [2021-01-08]
  2. onitake/gsl-firmware: Firmware repository for Silead touchscreen controllers
  3. bitWalk's: Jumper EZpad 6 Pro と Fedora 31 beta [2019-10-20]
  4. bitWalk's: ASUS TransBook T100HA と Manjaro 18

 

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村

0 件のコメント: