ご無沙汰しております。
以前、Surface Pro 3にUbuntu 15.04をインストールしデュアルブートするという記事を書きましたが、その記事はデュアルブートまでで、キーボード(Type Cover)が動かない状態で終わっておりました。
アクセス解析を見ると、毎日アクセスをいただいているようですので追加でTypeCoverが正常に動くまでをご紹介していきます。
# 本記事ではカーネルにパッチを当てますが、現段階での最新カーネルとパッチ内容に相違がある場合があります。ご自身でパッチの対象となっているカーネルバージョンや内容をお確かめの上、ご実施下さいませ。
目次
Type Coverを認識させる
Xorgにエントリを追加して、デバイスを認識させましょう。
1.設定ファイルをオープン
$ vi /usr/share/X11/xorg.conf.d/10-evdev.conf
2.最下部に下記を追記
Section "InputClass" Identifier "Surface Pro 3 cover" MatchIsPointer "on" MatchDevicePath "/dev/input/event*" Driver "evdev" Option "vendor" "045e" Option "product" "07dd" Option "IgnoreAbsoluteAxes" "True" EndSection
注意:海外サイトなどで多く紹介されている上記コードですが、US配列とJIS(日本語)配列のType CoverはデバイスIDが異なります。
- US: 「07dc」
- JIS: 「07dd」
地味にこの間違いのみで稼働しなくなるので気を付けましょう。
3.再起動
正常に設定ファイルを追記できていれば、再起動後にType Coverを認識しているはずです。
Type Cover トラックパッドのマルチタッチを有効にする
今度はトラックパッドのマルチタッチを有効にしましょう。
こちらはOSレベルにパッチを当てなければなりませんので、自己責任で実施をお願いします。
1.カーネルをダウンロード
Linuxのカーネルソースをkernel.orgからダウンロードしてきます。
2.パッチファイルを作成
ファイルの変更差分を記録したパッチファイルを作成しましょう。
作成とはいえ、先人の方たちが残していただいているので、それを利用したらOKです。
ubuntu forums や felipeota氏のgist を参考にパッチファイルを作りましょう。
基本的には上記ファイルをダウンロードし、デバイスIDをご自身の配列に合わせてやればOK。
くどいようですが、USは「0x07dc」、JIS(日本語)は「0x07dd」です。
3.パッチを当てる
ダウンロードしてきたカーネルに、作成したパッチファイルを当てましょう。
この後のコマンドは基本的にダウンロードしてきたカーネルのディレクトリで実行します。
$ sudo patch -p1 --ignore-whitespace < [パッチファイル]
4.カーネルのコンパイルに必要なものをインストールします。
$ sudo apt-get install libncurses5-dev $ sudo apt-get install kernel-package
5.カーネルの設定を行ないます。
基本的には既存の設定を引き継いで設定を行ないます。
cp /boot/config-`uname -r` .config make menuconfig
ダイアログが現れるので「OK」を選択します。
その後、「ESC」→「ESC」で保存して終了します。
6.ビルドします
$ make-kpkg clean $ fakeroot make-kpkg --initrd --append-to-version=-surface-pro-3_3.19 kernel_image kernel_headers
「append-to-version」の後は任意で指定できます。
私はKernel Version 3.19を利用していたので、カスタムした3.19ということがわかるように名前をつけています。
7.パッケージ化する
$ sudo dpkg -i linux-image*.deb linux-headers*.deb
上記コマンドで.devファイルにパッケージ化します。
この作業はOSのリビルドになるため、1〜2時間程度かかります。
寝る前や外出前などにして放置しましょう。
8.再起動
$ sudo reboot now
コマンドで再起動してもよいですし、GUIから再起動を掛けてもOKです。
再起動して、利用するカーネルを先ほどビルドしたものを選んであげましょう。
通常起動しても、恐らく自動でビルドしたカーネルが選択されると思います。
きちんと起動し、マルチタッチが正常に動けば無事作業完了です。
これで大半は動くようになったと思います。
また、タッチパネルなどは
- i2c-hid
- i2c_designware_platform
あたりがあれば動いたような気がします。
それでは良いSurfaceライフを!