跳转至内容

ASUS C302

来自 ArchWiki

本文或章节未遵循 笔记本电脑页面指南

原因: 存根 (请在 Talk:ASUS C302 讨论)

Asus C302 (也被称为 Asus C302C 和 Asus C302CA) 是一款 Chromebook,可以安装 Linux。以下是一些关于 Arch Linux 顺畅运行的建议。

安装

acpi_osi=Linux intel_iommu=on,igfx_off 添加到你的 内核参数

intel_iommu=on,igfx_off 来自 BBS#228604,以防止以下错误出现在 dmesg 的输出中

[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

注意:这似乎(不再)是必需的,音频也可以在 #声音 下描述的 snd_hda_intelalsa-firmware 下工作。

Screen

屏幕对角线长 12.5 英寸。在 1920x1080 分辨率下,这是 176 DPI,即 HiDPI

在 ~/.xinitrc 中,设置屏幕尺寸(以毫米为单位)

xrandr --fbmm 277x156

垂直同步

要在 XFCE 中实现正确的垂直同步(包括 Firefox 中的全屏 YouTube 等),请安装 xfwm4-gitAUR,并启用 XFCE 的合成器。

正确的垂直同步还需要 xf86-video-intel,而不是 modesetting。

在 /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 键盘的顶行用作 Xorg 中的有用按键,请使用例如

在 ~/.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 开始,触摸板工作良好,支持所有

  • 点击
    • 单指点击 = "左" 按钮
    • 双指点击 = "右" 按钮
    • 三指点击 = "中" 按钮
  • 点击板(点击触摸板的下部)
    • 左侧 = "左" 按钮
    • 右侧 = "右" 按钮
    • 中间 = "中" 按钮

鼠标

由于 USB 端口数量有限,蓝牙鼠标是一个不错的选择。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

然后,可以使用 XFCE GUI 中的“设置 - 鼠标”,将“加速”设置为例如 2.0 来设置鼠标的“速度”。

声音

笔记本电脑应该能够通过 HDMI(未测试)、内置扬声器、耳机插孔或蓝牙耳机播放声音。

对于蓝牙,请遵循标准的 蓝牙蓝牙耳机 设置。

安装 alsa-utils(可选?)和 alsa-firmware 软件包后,内置扬声器和耳机插孔可以使用 ALSA,然后重新启动以确保固件已加载。

ALSA 也可以用作 PulseAudio(未测试)和 Pipewire 声卡的输出接收器。

更多信息请参见


故障排除

成功后,lspci -v -s 00:1f.3 应显示

00:1f.3 Multimedia audio controller: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
	DeviceName: Multimedia audio controller
	Flags: bus master, fast devsel, latency 64, IRQ 132, IOMMU group 7
	Memory at 9112c000 (64-bit, non-prefetchable) [size=16K]
	Memory at 91110000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: [50] Power Management version 3
	Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Kernel driver in use: snd_soc_avs
	Kernel modules: snd_soc_avs, snd_hda_intel

并且 aplay -l 显示

**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [AVS HDMI], device 0: HDMI1 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [AVS HDMI], device 1: HDMI2 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [AVS HDMI], device 2: HDMI3 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: MAX98357A [AVS I2S MAX98357A], device 0: Built-in Speakers (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 4: NAU8825 [AVS I2S NAU8825], device 0: Headset (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

这里,MAX98357A 是内置扬声器,NAU8825 是耳机音频端口。

例如,使用以下命令验证播放是否正常工作:

aplay -D default:CARD=MAX98357A -i example.wav

ALSA

要将音频设置为合理水平,请在 ~/.xinitrc 中运行

amixer -q -c0 sset Headphone 70% &

PulseAudio

为防止音频“咔哒”声,请注释掉 /etc/pulse/default.pa 和 /etc/pulse/system.pa 中的 "load-module module-suspend-on-idle"

线圈啸叫

偶尔会出现 线圈啸叫,通过运行以下命令可以大大减轻:

printf "1" > /sys/devices/system/cpu/intel_pstate/no_turbo