ASUS C302

From ArchWiki
Jump to navigation Jump to search

Asus C302 (別名 Asus C302C または Asus C302CA) は Linux をインストールできる Chromebook です。以下は Arch Linux をスムーズに実行するための説明です。

起動

/etc/default/grub の設定:

GRUB_CMDLINE_LINUX_DEFAULT="acpi_osi=Linux intel_iommu=on,igfx_off"

intel_iommu=on,igfx_off により以下の dmesg エラーが消えます [1]:

[drm:intel_cpu_fifo_underrun_irq_handler [i915]] *ERROR* CPU pipe A FIFO underrun

CPU は Intel Core M3 なので intel-ucodeインストールしてください。

カーネルモジュール

/etc/modprobe.d/skylake.conf の例:

# Needed, for the nau8825 kernel sound modules to initialize
blacklist snd_hda_intel
options tpm_tis interrupts=0

ディスプレイ

ディスプレイは 12.5 インチで解像度は 1920x1080 となっており、HiDPI の 176 DPI です。

~/.xinitrc にディスプレイの大きさを設定するには (ミリメートル):

xrandr --fbmm 277x156

垂直同期

垂直同期するには xf86-video-intel が必要です。

/etc/X11/xorg.conf.d/20-intel.conf の設定例:

Section "Device"
    Identifier "Intel Graphics"
    Driver "intel"
EndSection

ディスプレイ反転

ノートパソコンをテントモードで使用するには、以下のスクリプトでディスプレイとタッチ入力を反転します:

#!/bin/dash

set_normal() {
	r="normal"
	ctm="1 0 0 0 1 0 0 0 1"

}

set_upside_down() {
	r="inverted"
	ctm="-1 0 1 0 -1 1 0 0 1"
}

line=$(xrandr | grep '^eDP.* connected ')
screen=$(printf "%s" "$line" | cut -d" " -f1)

if $(printf "%s" "$line" | grep -q ' inverted (normal') ; then
	set_normal
else
	set_upside_down
fi

xrandr --output "$screen" --rotate "$r"
xinput set-prop "Elan Touchscreen" "Coordinate Transformation Matrix" $ctm

キーボード

Chromebook の上部の列を使うには ~/.Xmodmap を以下のように設定:

keycode   9 = Escape NoSymbol Escape
keycode  22 = BackSpace BackSpace BackSpace BackSpace Delete NoSymbol Delete
keycode  37 = Control_L NoSymbol Control_L
keycode  50 = Shift_L NoSymbol Shift_L
keycode  66 = Caps_Lock NoSymbol Caps_Lock
keycode  67 = Home F1 Home F1 F1 F1 XF86Switch_VT_1
keycode  68 = End F2 End F2 F2 F2 XF86Switch_VT_2
keycode  69 = Prior F3 Prior F3 F3 F3 XF86Switch_VT_3
keycode  70 = Next F4 Next F4 F4 F4 XF86Switch_VT_4
keycode  71 = Delete F5 Delete F5 F5 F5 XF86Switch_VT_5
keycode  72 = XF86MonBrightnessDown F6 XF86MonBrightnessDown F6 F6 F6 XF86Switch_VT_6
keycode  73 = XF86MonBrightnessUp F7 XF86MonBrightnessUp F7 F7 F7 XF86Switch_VT_7
keycode  74 = XF86AudioMute F8 XF86AudioMute F8 F8 F8 XF86Switch_VT_8
keycode  75 = XF86AudioLowerVolume F9 XF86AudioLowerVolume F9 F9 F9 XF86Switch_VT_9
keycode  76 = XF86AudioRaiseVolume F10 XF86AudioRaiseVolume F10 F10 F10 XF86Switch_VT_10
keycode 111 = Up Up Up Up Prior Prior
keycode 112 = Prior NoSymbol Prior
keycode 113 = Left Left Left Left Home Home
keycode 114 = Right Right Right Right End End
keycode 115 = End NoSymbol End
keycode 116 = Down Down Down Down Next Next
keycode 117 = Next NoSymbol Next
keycode 118 = Insert NoSymbol Insert
keycode 119 = Delete NoSymbol Delete
keycode 124 = XF86PowerOff NoSymbol XF86PowerOff
keycode 167 = XF86Forward NoSymbol XF86Forward
keycode 182 = XF86Close NoSymbol XF86Close
keycode 191 = XF86ScreenSaver NoSymbol XF86ScreenSaver

~/.Xmodmap/etc/X11/xinit/xinitrc によってロードされ、以下のコマンドが実行されます:

xmodmap ~/.Xmodmap

キーボードバックライト

通常ユーザーからキーボードのバックライトの明るさを変更できるようにするには、以下を root で実行:

b="/sys/devices/platform/GOOG0002:00/leds/chromeos::kbd_backlight/brightness"
chgrp users "$b" &&
chmod 660 "$b" &&
echo 6 > "$b"

0 (オフ) から 100 (最大輝度) までの値で設定できます。ChromeOS のデフォルトは 25.6 です。

ChromeOS ではキーボードを使っていないときにキーボードのバックライトを無効にできますが、Linux カーネルではこの機能を使えません。ただし、xprintidle を利用して以下のようなシンプルなスクリプトで機能を模倣できます:

#!/bin/dash

set_keyboard_backlight() {
	printf "%s" "$1" > "/sys/devices/platform/GOOG0002:00/leds/chromeos::kbd_backlight/brightness"
	b="$1"
}

b=0

while true ; do
	pgrep ^Xorg > /dev/null || exit 0

	seconds_to_sleep=10
	idle_millis=$(xprintidle)
	if [ "$idle_millis" -gt 10000 ] ; then
		nb=0
		seconds_to_sleep=5
	else
		nb=25
		seconds_to_sleep=15
	fi

	if [ "$nb" -ne "$b" ] ; then
		set_keyboard_backlight "$nb"
	fi

	echo "nb=$nb, sleeping for $seconds_to_sleep"
	sleep "$seconds_to_sleep"
done

タッチパッド

libinput 1.12.0-2 現在、タッチパッドは問題なく動作します [2]:

  • タップ:
    • 1本指のタップ = "左"ボタン
    • 2本指のタップ = "右"ボタン
    • 3本指のタップ = "中"ボタン
  • クリックパッド (タッチパッドの下部のクリック):
    • 左側 = "左"ボタン
    • 右側 = "右"ボタン
    • 中央 = "中"ボタン

マウス

USB 端子が少ないため、Bluetooth マウスを推奨します。Logitech M590 マウスは問題なく動作します。

bluetoothctl power on &~/.xinitrc などで起動時に実行してください。

/etc/X11/xorg.conf.d/99-mouse.conf の例:

Section "InputClass"
    Identifier "Logitech M590"
    MatchIsPointer "on"
    MatchDevicePath "/dev/input/event*"
    Driver "libinput"
    Option "AccelProfile" "flat"
EndSection

それからマウスの速度を設定してください。マウスのアクセラレーションを参照。

サウンド

サウンドは 開発中 です。ヘッドフォンを使う場合は問題なく動作します。

オーディオファームウェアを /lib/firmware/9d70-CORE-COREBOOT-0-tplg.bin として保存してください (ファイルサイズは 23120 バイト)。

音量を適当なレベルに設定するには ~/.xinitrc で以下を実行:

amixer -q -c0 sset Headphone 70% &

Pulseaudio

クリック音を消すには /etc/pulse/default.pa/etc/pulse/system.paload-module module-suspend-on-idle をコメントアウトしてください。

コイル鳴き

コイル鳴き がときどき発生することがありますが、解決する方法はありません。