OneMix3SでLinux(Lubuntu)

## 概要

一ヶ月ほど前にOneMix3Sを購入し、Linux(Lubuntu)をインストールして使用しているのですが、試行錯誤の上落ち着いたLinux設定とハマったポイントを共有します。

## インストール時点で必要な設定

#### BIOS

USBメモリを使ってインストールする場合はBIOSにUSBメモリを認識させるための設定変更が必要かもしれません。BIOS Setup画面のBoot > USB SupportがFull Initial以外の場合はFull Initialに変更することでUSBメモリがブートデバイスとして選択出来るようになります。

#### キーボードレイアウト

英字キーボードを使っている方には当たり前かもしれませんが、キー配列をUSにすること。インストール時に日本語を選択するとJPがデフォルトになるのですが、最初何も考えずにそのままインストールした結果入力で相当困りました。。。

## インストール後の設定

#### 画面表示

インストール直後は(1)画面が右側に90度回転して表示 (2)画面表示が細かすぎて見えづらいという2つの問題がありますが、この対応のために以下の設定を行います。

(1)画面の回転

Xの設定にて変更します。

/etc/X11/xorg.conf.d/90xrandr.conf（ファイル名は*.confであれば別のものでもOK）

```config
Section "Monitor"
    Identifier "eDP-1"
    Option     "Rotate"  "Left"
EndSection
```

Identifierに指定されている"eDP-1"はXに認識されている画面の識別子で、xrandrコマンドで確認できます。sudo apt install xrandrでインストールしてから使います。

```bash
user@onemix3s:~$ xrandr
Screen 0: minimum 320 x 200, current 1280 x 800, maximum 16384 x 16384
eDP-1 connected primary 1280x800+0+0 left (normal left inverted right x axis y axis) 113mm x 181mm
   1600x2560     55.92*+
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)
user@onemix3s:~$ 
```

(2)画面解像度の変更

Xの設定で変更できる方法が見つからず、使用しているXディスプレイマネージャ（LubuntuではLightDM）の設定変更で対応しました。

LightDMの起動時にxrandrでスケール変更するコマンドを実行するようにするため、以下の２つのファイルを作成します。

* /etc/lightdm/lightdm.conf.d/10-set-display.conf（ファイル名は*.confであれば別のものでもOK）

```config
[SeatDefaults]
display-setup-script=/etc/lightdm/lightdm.conf.d/display.sh
```

* /etc/lightdm/lightdm.conf.d/display.sh（ファイル名、パスは上記の設定ファイルの記載と一致していれば別のものでもOK）

```bash
#!/bin/bash
xrandr --output eDP-1 --scale 0.5x0.5
```

--scaleで解像度の拡大・縮小倍率を指定しています。上記では0.5倍（つまり実質的な解像度は1280x800）に設定していますが、お好みで変更ください。

#### タッチスクリーン

画面表示の回転設定に加えて、タッチスクリーンの入力座標の回転設定も必要です。これはXの設定で以下のように行います。

* /etc/X11/xorg.conf.d/99-calibration.conf（ファイル名は*.confであれば別のものでもOK）

```config
Section "InputClass"
	Identifier	"calibration"
	MatchProduct	"GXTP7386:00 27C6:0113"
	Option	"CalibrationMatrix"	"0 -1 1 1 0 0 0 0 1"  # unless it was already set
EndSection
```

MatchProductで指定しているのはX(Linux)に認識される入力デバイス名で、xinputコマンドにて取得できます。これもsudo apt installでインストールできます。

```bash
user@onemix3s:~$ xinput
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ HAILUCK CO.,LTD USB KEYBOARD Mouse      	id=11	[slave  pointer  (2)]
⎜   ↳ GXTP7386:00 27C6:0113 UNKNOWN           	id=16	[slave  pointer  (2)]
⎜   ↳ GXTP7386:00 27C6:0113                   	id=15	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=9	[slave  keyboard (3)]
    ↳ HAILUCK CO.,LTD USB KEYBOARD            	id=10	[slave  keyboard (3)]
    ↳ HAILUCK CO.,LTD USB KEYBOARD System Control	id=12	[slave  keyboard (3)]
    ↳ HAILUCK CO.,LTD USB KEYBOARD Consumer Control	id=13	[slave  keyboard (3)]
    ↳ HAILUCK CO.,LTD USB KEYBOARD Wireless Radio Control	id=14	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=18	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ GXTP7386:00 27C6:0113 Keyboard          	id=17	[slave  keyboard (3)]
```

指定したデバイスがタッチスクリーンであることを確認したい場合は、evtestコマンドを使って指定したデバイスからのイベントのみを表示させてみると良いと思います。これもsudo apt installでインストール可能。

```bash
user@onemix3s:~$ sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:	Lid Switch
/dev/input/event1:	Sleep Button
/dev/input/event2:	Power Button
/dev/input/event3:	Power Button
/dev/input/event4:	AT Translated Set 2 keyboard
/dev/input/event5:	HAILUCK CO.,LTD USB KEYBOARD
/dev/input/event6:	HAILUCK CO.,LTD USB KEYBOARD Mouse
/dev/input/event7:	HAILUCK CO.,LTD USB KEYBOARD System Control
/dev/input/event8:	HAILUCK CO.,LTD USB KEYBOARD Consumer Control
/dev/input/event9:	HAILUCK CO.,LTD USB KEYBOARD Wireless Radio Control
/dev/input/event10:	GXTP7386:00 27C6:0113
/dev/input/event11:	GXTP7386:00 27C6:0113 UNKNOWN
/dev/input/event12:	GXTP7386:00 27C6:0113 Keyboard
/dev/input/event14:	Video Bus
/dev/input/event15:	HDA Intel PCH Mic
/dev/input/event16:	HDA Intel PCH Headphone
/dev/input/event17:	HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event18:	HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event19:	HDA Intel PCH HDMI/DP,pcm=8
/dev/input/event20:	HDA Intel PCH HDMI/DP,pcm=9
/dev/input/event21:	HDA Intel PCH HDMI/DP,pcm=10
Select the device event number [0-21]: 10
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x27c6 product 0x113 version 0x100
Input device name: "GXTP7386:00 27C6:0113"
(...中略...)
Testing ... (interrupt to exit)
Event: time 1583122934.823936, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 5
Event: time 1583122934.823936, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 3352
Event: time 1583122934.823936, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1018
Event: time 1583122934.823936, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1583122934.823936, type 3 (EV_ABS), code 0 (ABS_X), value 3352
Event: time 1583122934.823936, type 3 (EV_ABS), code 1 (ABS_Y), value 1018
Event: time 1583122934.823936, -------------- SYN_REPORT ------------
Event: time 1583122934.843212, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1
Event: time 1583122934.843212, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1583122934.843212, -------------- SYN_REPORT ------------
```

## 現時点で困っていること

#### ポインティングデバイス

OneMix3Sにはポインティングデバイスとして指一つがギリギり乗るかかどうかのタッチパッドのようなものが搭載されています。これにはシングルタップでクリックする機能があるのですが、これが文字入力時に意図しない動作を引き起こすことがあり、OFFにできないかを探っていたのですが・・・

結論としては現時点では回避策を見つけられていません。

タッチパッド用のドライバで稼働できれば設定変更で対応出来そうなのですが、タッチパッドとして認識されるようなファームウェアが公開されることを祈るしかなさそう・・・

#### GRUBの回転表示

前述の設定をしても画面の向きはX起動後にしか正しくならず、GRUB画面は右に90度回転したままです。GRUBの設定で画面回転を設定する方法はなさそうです。GPD PocketのようにBIOS Setupで画面の回転が設定できるようにならないものか・・・