# ASUS C302

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This article or section does not follow the Laptop page guidelines.

Reason: Stub (Discuss in Talk:ASUS C302#)

The Asus C302 (also known as Asus C302C and Asus C302CA) is a Chromebook, which can have Linux installed. Here are some pointers on the smooth running of Arch Linux.

## Bootup

In /etc/default/grub

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

intel_iommu=on,igfx_off is from forum, to prevent the error from appearing in the output of dmesg:

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

The CPU is an Intel Core M3, so install intel-ucode

## Kernel Modules

In e.g. /etc/modprobe.d/skylake.conf

    # Needed, for the nau8825 kernel sound modules to initialize
    blacklist snd_hda_intel

    options tpm_tis interrupts=0

## Screen

The screen is 12.5 inches diagonally. At 1920x1080 resolution, this is 176 DPI, which is HiDPI.

In ~/.xinitrc, to set the screen dimensions (measured in millimetres):

    xrandr --fbmm 277x156

### Vsync

For proper vsync (including e.g. fullscreen Youtube in Firefox) in XFCE, install xfwm4-gitAUR, and enable XFCE's compositor.

Proper vsync also requires xf86-video-intel, rather than modesetting.

In /etc/X11/xorg.conf.d/20-intel.conf

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

### Screen Flipping

To use the laptop in tent mode, the following script will flip both the screen and touch input:

    #!/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

## Keyboard

To use the top row of Chromebook keys as useful keys in xorg, use e.g.:

In ~/.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

(This list can be pruned.)

~/.Xmodmap will be loaded by /etc/X11/xinit/xinitrc, which effectively runs:

    xmodmap ~/.Xmodmap

### Keyboard Backlight

To be able to change the keyboard backlight brightness as a normal user, run as root:

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

It is a value between 0 (off) and 100 (full brightness). The default on ChromeOS is 25. 6 is a reasonable lower value.

ChromeOS is able to disable the keyboard backlight, when the keyboard is not being used - that functionality does not appear to be available in the Linux kernel, but can be replicated in a simple script, with the aid of xprintidle, e.g.:

    #!/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

## Touchpad

As of libinput 1.12.0-2, the touchpad works nicely with all of:

- Tapping:
  - 1-finger tap = "left" button
  - 2-finger tap = "right" button
  - 3-finger tap = "middle" button

- Clickpad (clicking the lower portion of the touchpad):
  - Left side = "left" button
  - Right side = "right" button
  - Middle = "middle" button

## Mouse

Due to the limited amount of USB ports, a Bluetooth mouse is a good option. The Logitech M590 mouse works great.

Run "bluetoothctl power on &" at startup, e.g. in ~/.xinitrc

In e.g. /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

Then, the "speed" of the mouse can be set using the XFCE GUI, in "Settings - Mouse", setting the "acceleration" to e.g. 2.0

## Sound

Sound is a work in-progress. Sound is reliable when using headphones only.

Save the audio firmware as /lib/firmware/9d70-CORE-COREBOOT-0-tplg.bin (filesize 23120 bytes).

To set audio to a sensible level, run in ~/.xinitrc:

    amixer -q -c0 sset Headphone 70% &

### Pulseaudio

To prevent audio "clicks", comment out "load-module module-suspend-on-idle" in /etc/pulse/default.pa and /etc/pulse/system.pa

## Coil Whine

There is occasional coil whine, which can be greatly reduced by running:

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

Category:

- ASUS

Hidden category:

- Pages or sections flagged with Template:Laptop style