Title: Gentoo on a GPD MicroPC Summary: This manual is intended to help user to configure the Gentoo distribution of GNU/Linux operating system for GPD MicroPC handheld. Copyright: (c) 2019 Vitaly Minko Content is available under Creative Commons - Attribution-NonCommercial-ShareAlike 4.0 International - CC BY-NC-SA 4.0 License. Date: 24 Aug 2019 Web: http://vminko.org/gentoo_manuals/micropc Introduction ============ This manual is intended to help user to configure Gentoo distribution of the GNU/Linux operating system for GPD MicroPC handheld. It's supposed that user is skilled enough to install bare system from stage, compile kernel from source code, apply patches, etc. This article and all information and products in it are provided on an "as is" basis, without warranty of any kind, either express or implied. __Your use of this article is at your own risk.__ Content ======= * [Hardware info] * [Linux support summary] * [Kernel] * [Input] * [Video] * [Sound] * [Networking] * [ACPI] * [CPU frequency scaling] * [Suspending] * [Media cards reader] * [Known issues] * [Benchmarks] * [History of changes] Hardware info ============= Brief hardware description from the manufacturer: [GPD MicroPC - Shenzhen GPD Technology Co., Ltd.](https://gpd.hk/gpdmicropc). | Type | Name | Technical info | | ------------- | ------------------------- | ------------------------------------------------------------- | | CPU | Intel(R) Celeron(R) N4100 | Base frequency: 1,1 GHz; Max frequency: 2.4 GHz; | | | (Gemini Lake) | 4 cores, 4 threads; TDP: 6W (up to 10W in MicroPC); | | | | Features: x86-64, SSE4.2, AES, SHA, IVT; L2 cache: 4MB; | | | | Arch: Goldmont Plus. [[1]][References], [[2]][References] | | RAM | SK Hynix? | 8GB single channel, LPDDR4; Bus clock: 2133 Mhz | | Video | Intel UHD Graphics 600 | EU: 12, Clock speed: 200-700Mhz; GFLOPS:38.4 – 134.4; | | | (Goldmont Plus) | OpenGL support in Linux: 4.5; Vulcan support in Linux: 1.1 | | | | Multimedia codecs [[3]][References] : MPEG-2, MPEG-4, AVC, | | | | VC-1, WMV9, HEVC, HEVC 10-bit, VP9, VP9 10-bit. | | | | Device id: 8086:3185 (rev 03); [[4]][References], [[5]][References], [[6]][References], [[7]][References] | | Storage | | Socket: M.2 2242 (SATA); | | device | Original: Biwin G6327 | Capacity: 128GB; Seq. R/W speed: 524/356 MB/s; | | | Upgrade: Transcend | Capacity: 256GB; Seq. R/W speed: 545/473MB/s; MLC NAND flash; | | | TS256GMTS400S | Terabytes Written (Max.): 1100 TB; [[8]][References] | | Audio | Realtek Semiconductor Co. | 4 channels, 24-bit I/O; DAC max sample rate: 192kHz; | | | ALC269VC | EAX 1.0 & 2.0, Direct Sound 3D, A3D | | | | Device id: 8086:3198 [[9]][References] | | Ethernet | Realtek Semiconductor Co. | Speed: 10/100/1000 MB/s; | | | RTL8111/8168/8411 | Device id: 10ec:8168 (rev 15); [[10]][References] | | WiFi & | Intel Dual Band | Bands: 2.4GHz, 5GHz; Protocols: 802.11b/g/n; | | Bluetooth | Wireless-AC 3165 | Max speed: 433 Mbps; Bluetooth Version 4.2 | | | | PCI Device id: 8086:3165 (rev 79); USB Device id: 8087:0a2a; [[11]][References] | | Card reader | Realtek Semiconductor Co. | Device id: 0bda:0316; | References ---------- 1. [Intel® Celeron® N4100 Processor](https://ark.intel.com/content/www/ru/ru/ark/products/128983/intel-celeron-n4100-processor-4m-cache-up-to-2-40-ghz.html) 2. [Goldmont Plus - Microarchitectures - Intel - WikiChip](https://en.wikichip.org/wiki/intel/microarchitectures/goldmont_plus) 3. [Intel Launches New Pentium Silver and Celeron Atom Processors: Gemini Lake is Here](https://www.anandtech.com/show/12146/intel-launches-gemini-lake-pentium-silver-and-celeron-socs-new-cpu-media-features) 4. [Intel Graphics Technology - Wikipedia](https://en.wikipedia.org/wiki/Intel_Graphics_Technology#Gemini_Lake) 5. [List of Intel graphics processing units - Wikipedia](https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units#Ninth_generation) 6. [UHD Graphics 600 - Intel - WikiChip](https://en.wikichip.org/wiki/intel/microarchitectures/goldmont_plus) 7. [Intel UHD Graphics 600 Specs | TechPowerUp GPU Database](https://www.techpowerup.com/gpu-specs/uhd-graphics-600.c3065) 8. [SATA III M.2 Solid State DriveM.2 SSD 400S](https://cdn.transcend-info.com/products/images/modelpic/642/PS_MTS400_1907.pdf) 9. [ALC269 HIGH DEFINITION AUDIO CODEC WITHE MBEDDED CLASS-D SPEAKER AMPLIFIER DATASHEET](https://www.hardwaresecrets.com/datasheets/alc269.pdf) 10. [RTL8168 INTEGRATED GIGABIT ETHERNET CONTROLLER FOR PCI EXPRESS APPLICATIONS DATASHEET](/storage/micropc/specs/r8168.pdf) 11. [Intel® Dual Band Wireless-AC 3165 Product Specifications](https://ark.intel.com/content/www/us/en/ark/products/89450/intel-dual-band-wireless-ac-3165.html) Logs ---- * [dmesg](/storage/micropc/logs/dmesg.txt) * [lspci -v](/storage/micropc/logs/lspci.txt) * [lsusb -v](/storage/micropc/logs/lsusb.txt) * [smartctl -a /dev/sda](/storage/micropc/logs/smartctl.txt) * [cat /proc/cpuinfo](/storage/micropc/logs/cpuinfo.txt) Linux support summary ===================== | Feature || Status | | ------------------ | --------------------------------- | :-----------------: | | *Input* | Keyboard | Works perfectly | | | Touchpad | Works perfectly | | *Video* | Integrated display | Works perfectly | | | 2D graphics | Works perfectly | | | 3D acceleration | Works perfectly | | | Video decoding acceleration | Works perfectly | | | HDMI output | __Minor issues__ | | *Audio* | Internal speaker | Works perfectly | | | Microphone | Works perfectly | | | Audio out jack | Works perfectly | | | Headphones mute speaker | Works perfectly | | *Networking* | Ethernet | Works perfectly | | | WiFi | Works perfectly | | | BlueTooth | __Untested__ | | *ACPI* | Lid button | Works perfectly | | | Power button | Works perfectly | | | Brightness control | Works perfectly | | | AC and battery | Works perfectly | | *Power management* | Suspend to RAM | Works perfectly | | | Suspend to disk | Works perfectly | | | CPU frequency scaling | Works perfectly | | *Other* | microSD card reader | Works perfectly | Kernel ====== The minimal kernel version recommended for MicroPC is 5.2, because it's the first version, which [supports][dsi] the integrated in MicroPC display. The kernel config for version 5.2.1 is available [here][cfg_kernel]. Few notes regarding the kernel config: * It's optimized for GPD MicroPC. Most options not required by this device are turned off. The total number of enabled options is 1043. You may need to enable additional options like filesystems or drivers for peripheral devices. * This config produces monolith kernel, which does not require any modules, firmwares or even a command line. But prior building this kernel you need install the firmware files, which are provided by these two packages: * `sys-kernel/linux-firmware`. In order to install only the firmware files which are relevant for MicroPC, enable these two USE flags: `redistributable savedconfig` and save [this][cfg_fw] file as `/etc/portage/savedconfig/sys-kernel/linux-firmware/linux-firmware.conf` * `net-wireless/wireless-regdb` * Mitigation of [Spectre and Meltdown][pti] vulnerabilities is disabled (`CONFIG_PAGE_TABLE_ISOLATION`). Consider for yourself what is more important for you: performance of security. * This config assumes that sda5 is the root partition and sda6 is the swap partition. If your partition layout is different, you will need to edit these parameters: * `CONFIG_CMDLINE="root=/dev/sda5 fbcon=rotate:1 quiet"` * `CONFIG_PM_STD_PARTITION="/dev/sda6"` [pti]: https://wiki.gentoo.org/wiki/Project:Security/Vulnerabilities/Meltdown_and_Spectre [dsi]: https://patchwork.kernel.org/patch/10959829/ Booting the kernel ------------------ Since the described kernel does not require a command line, you can boot it directly from the EFI firmware. You no longer need to install and configure a bootloader. mount /dev/sda1 /mnt/boot mkdir /mnt/boot/EFI/Gentoo cp arch/x86_64/boot/bzImage /mnt/boot/EFI/Gentoo/bzImage-5.2.1.efi umount /mnt/boot efibootmgr -c -L 'Gentoo' -l '\EFI\Gentoo\bzImage-5.2.1.efi' After that you can make Gentoo the default boot option via editing BIOS setting `Boot -> UEFI Hard Disk Drive BBS Priorities`. Input ===== There are various xorg input device drivers. libinput is one of them, and it's the default driver in Gentoo. This driver works fine with MicroPC. In order to use this driver, set the `INPUT_DEVICES` variable to 'libinput', see [make.conf][cfg_make] as example. Keyboard -------- Down below you can see xorg.conf.d file for the keyboard. [10keyboard.conf][cfg_kbd] Section "InputClass" Identifier "keyboard-all" Driver "libinput" Option "XkbRules" "evdev" Option "XkbModel" "pc105" Option "XkbLayout" "us,ru" Option "XkbVariant" ",winkeys" Option "XkbOptions" "grp:alt_shift_toggle,terminate:ctrl_alt_bksp" MatchIsKeyboard "on" MatchDevicePath "/dev/input/event*" EndSection **Volume** and **Brightness** up/down keys by default generate correct key symbols: * XF86AudioRaiseVolume and XF86AudioLowerVolume; * XF86MonBrightnessUp and XF86MonBrightnessDown; All we need to do is to assign proper actions to the symnames. The [rc.xml][cfg_openbox] is an example of such bindings. This configuration file has some additional key binding, which you may find interesting: * **Alt+d**- Toggles DPMS state of connected displays via xset. See [dpms.sh][tool_dpms] for details. * **Alt+i** shows an information dialog ([tray.sh][tool_tray]), which contains current time and date, battery status and level, brightness, CPU frequencies and governors, etc. 16.08 Friday 18:40 MPD Stopped Battery: Discharging, 60%, 04:04:19 remaining Brightness: 100% Temp: CPU 46|46|46|46°C, SSD 39 C°C, WiFi 42°C Freq: 649MHz|1.44GHz|2.29GHz|2.29GHz, performance RAM: 92% free Network: wlan0, wireless is on The *fan switch* is 100% hardware and does not generate a scancode, ACPI or udev event. The *power button* is handled by [ACPI]. Touchpad -------- Down below you can see xorg.conf.d file for the touchpad. [50touchpad.conf][cfg_touch] Section "InputClass" Identifier "AMR-4630-XXX-0- 0-1023 USB KEYBOARD Mouse" Option "AccelSpeed" "1" Option "ScrollMethod" "button" Option "ScrollButton" "22" Option "MiddleEmulation" "on" EndSection Using this config your can scroll by holding the middle mouse button. Video ===== Kernel ------ The native orientation of the integrated display is portrait. Therefore the framebuffer console needs to be rotated. In order to configure correct orientation, add 'fbcon=rotate:1' to the kernel command line: CONFIG_CMDLINE="root=/dev/sda5 fbcon=rotate:1 quiet" portage configuration --------------------- The `VIDEO_CARDS` variable should be set to 'intel i965'. The global `USE` should include 'dri', see [make.conf][cfg_make] as example. Custom USE flags: x11-drivers/xf86-video-intel sna xorg ---- Down below you can see xorg.conf.d files for Device and Monitor sections. [30device.conf][cfg_dev] Section "Device" Identifier "Intel Graphics" Driver "intel" Option "AccelMethod" "sna" Option "TearFree" "true" Option "DRI" "3" Option "Backlight" "intel_backlight" EndSection [40monitor.conf][cfg_mon] Section "Monitor" Identifier "DSI1" Option "Rotate" "right" Option "Primary" "true" DisplaySize 75 133 EndSection Section "Monitor" Identifier "HDMI1" Option "Disable" "true" EndSection Few notes regarding these config files: * `Backlight` option is required to make the `xbacklight` utility work. * `DisplaySize` option sets correct DPI of the built-in LCD (245). * The external monitor is disabled by default, because the X-server incorrectly positions the external monitor during startup. This issue seems to be caused by the rotation of the internal monitor (X-server it sets the X-axis offset to 720 instead of 1280). HDMI output ----------- HDMI output is supported by intel driver. You can use [video-out.sh][tool_video] utility to toggle the HDMI output (via xrandr). The utility installs the external screen to the right of built-in screen. See the source code of `video-out.sh` for details. 3D acceleration --------------- DRI works fine with default parameters. glxgears shows approximately 2800 FPS. The current driver xf86-video-intel-2.99.917 with mesa-19.0.8 supports OpenGL-4.5. See [glxinfo](/storage/micropc/logs/glxinfo.txt) for details. Video decoding acceleration --------------------------- Intel UHD Graphics 600 is able to decode a wide range of multimedia codecs [[3]][References]. The config parameters below describe how to enable hardware decoding via VA-API. The [global][cfg_make] `USE` should include 'vaapi'. Custom USE flags: x11-libs/libva drm utils media-video/libva-utils drm Unmask the following packages: x11-libs/libva ~amd64 x11-libs/libva-intel-driver ~amd64 media-video/libva-utils ~amd64 Besides libva, you need a media player, which supports VA-API. You can use 'mpv', which does the job pretty well. In this case, add the following config parameters to your [mpv.conf][cfg_mpv] vo=vaapi hwdec=vaapi-copy You can check if hardware is configured properly by analyzing mpv output: Resuming playback. This behavior can be disabled with --no-resume-playback. Loading config '/home/vminko/.config/mpv/watch_later/302D20AF905DE13A6E3E80663E80F562' Playing: 28 panfilovtsev.mkv (+) Video --vid=1 (*) (h264 1920x804 24.000fps) (+) Audio --aid=1 --alang=rus (*) (dts 6ch 48000Hz) AO: [alsa] 48000Hz stereo 2ch float Using hardware decoding (vaapi-copy). <<<--- THIS VO: [vaapi] 1920x804 nv12 AV: 00:56:36 / 02:00:38 (46%) A-V: 0.001 Saving state. or by viewing output of [vainfo](/storage/micropc/logs/vainfo.txt). Sound ===== Supported by `CONFIG_SND_HDA_INTEL`. I recommend to compile alsa-lib with all plugins (`ALSA_PCM_PLUGINS`, see [make.conf][cfg_make] as example). In general ALSA supports the Realtek ALC269 quite well: both internal speaker and mic work fine as well as headphones jacks. ALSA mutes the speaker when headphones jack is used. Networking ========== Ethernet -------- Supported by `CONFIG_R8169`. Requires firmware `rtl_nic/rtl8168h-2.fw`. Configured via default gentoo net config. [Here][cfg_net] is an example of eth0 definition with static IP. See [Gentoo Network Configuration][net_manual] for details. `ethtool` may be used to detect whether ethernet cable is plugged or not. [net_manual]: https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Networking WiFi ---- WiFi is also supported by kernel (`CONFIG_IWLWIFI`). The driver requires binary firmware `iwlwifi-7265D-29.ucode`. WiFi connection can be configured via wpa\_supplicant, here are config examples: [wpa_supplicant.conf][cfg_ws], [net][cfg_net] (preup function checks whether radio is enabled). See [Wireless Networking][wifi_manual] for details. The iwl driver supports power management, which is enabled by default. You can check whether power management is turned on using `iwconfig`: wlan0 IEEE 802.11 ESSID:"demo" Mode:Managed Frequency:2.412 GHz Access Point: AC:AF:B9:71:FB:1A Bit Rate=72.2 Mb/s Tx-Power=0 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:on <<<--- THIS Link Quality=51/70 Signal level=-59 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:9 Missed beacon:0 This file provides the temperature of the WiFi chip: /sys/devices/virtual/thermal/thermal_zone1/hwmon1/temp1_input [wifi_manual]: https://wiki.gentoo.org/wiki/Handbook:AMD64/Networking/Wireless rfkill ------ MicroPC does not have a hardware rfkill switch. But you can configure software button using the rfkill tool. See [toggle_rfkill.sh][tool_rfkill] as example. Software rfkill toggles WiFi and Bluetooth connectivity. ACPI ==== In order to handle ACPI events, you need to install the ACPI daemon and add it to the boot runlevel: emerge -av acpid rc-update add acpid boot All ACPI events are configured in the [default.sh][tool_def]. Here is a short description of the ACPI events handled by `default.sh`: * *Power* - Turns the system off. * *Lid* - Suspends to RAM if the display is not turned off via locked via [dpms.sh][tool_dpms]. See [lid.sh][tool_lid] for details. * *AC plug in/out* - Switches cpufreq governor to performance when AC gets connected and to powersave when AC gets disconnected. Besides the events handled in [default.sh][tool_def], acpid also catches the following ones: * `jack/headphone plug|unplug` * `button/volumedown` * `button/volumeup` * `video/brightnessup` * `video/brightnessdown` All multimedia keys generate scancode and are described in the [Input] section. However, you can write a handler for the respective keyboard events. The main advantage of ACPI hot keys is that they're not dependent on WM (which handles multimedia keys) and work even in console and SDL programs. You can use the `acpi` command to monitor the AC and battery information, as well as the temperature of the SoC. #acpi -abit Battery 0: Discharging, 50%, 03:21:25 remaining Battery 0: design capacity 3100 mAh, last full capacity 3290 mAh = 100% Adapter 0: off-line Thermal 0: ok, 45.0 degrees C Thermal 0: trip point 0 switches to mode critical at temperature 95.0 degrees C Thermal 0: trip point 1 switches to mode passive at temperature 95.0 degrees C Thermal 0: trip point 2 switches to mode active at temperature 65.0 degrees C ACPI does not provide any information about Fan and Cooling. It looks like the Fan can only be controlled by hardware. CPU frequency scaling ===================== Supported by `CONFIG_X86_INTEL_PSTATE` The default governor can be selected via options `CONFIG_CPU_FREQ_DEFAULT_GOV_*`. Install `sys-power/cpupower` packages in order to monitor or control frequency scaling: # cpupower frequency-info analyzing CPU 0: driver: intel_pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: Cannot determine or is not supported. hardware limits: 800 MHz - 2.40 GHz available cpufreq governors: performance powersave current policy: frequency should be within 800 MHz and 2.40 GHz. The governor "performance" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 1.27 GHz (asserted by call to kernel) boost state support: Supported: yes Active: yes Suspending ========== Suspend-to-RAM -------------- Suspend-to-RAM (aka sleep or ACPI S3 state) is supported by `CONFIG_SUSPEND` and works flawlessly. Suspend-to-disk --------------- In order to use native Linux hibernator, you need to enable `CONFIG_HIBERNATION` and specify your swap partition either in `CONFIG_PM_STD_PARTITION` or in the `resume` kernel parameter. ACPI subsystem in MicroPC does not generate an event when battery capacity changes. Therefore in order to perform automatic hibernation when battery capacity goes beyond critical level, we need a daemon monitoring the battery capacity level. One simple way to implement this is to use a cron daemon with a simple script checking the battery level. You can use [low_battery_handler.sh][tool_batt] to check the battery level and hibernate when the battery level is less than or equal to 3%. There are [various cron implementations][cron] available in the Gentoo repository, which slightly differ in configuration. In case of dcron, do the following as root. emerge -av dcron rc-update add dcron boot crontab -e Add the following line to opened cron configuration file: * * * * * /usr/local/bin/low_battery_handler.sh That's it. Your MicroPC should now hibernate automatically on low battery. [cron]: https://wiki.gentoo.org/wiki/Cron/en Power Management Utilities -------------------------- You can use `pm-utils` package (the [power management utilities][pmu]) in order to run user supplied scripts on suspend and resume. Additionally, you may be interested in the following: * [1.4.1-on-failure-param.patch][patch_pm] - adds `ON_FAILURE` parameter for [gentoo][cfg_pm] pm-utils config, which allows to execute a command when one of the hooks fails. * [00dpms][pm_dpms] - a hook which inhibits suspend when LCD is turned off, requires [xrun.sh][tool_xrun]. [pmu]: https://wiki.gentoo.org/wiki/Suspend_and_hibernate#Suspend_to_disk_with_sys-power.2Fpm-utils Media cards reader ================== Supported by `CONFIG_MMC_SDHCI_PCI`. The provided kernel config has also `CONFIG_USB_STORAGE_REALTEK` enabled, which implements additional power-saving features for Realtek card readers. However, it's not clear whether this driver supports the card reader from MicroPC (0bda:0316), The [benchmarks][Benchmarks] section contains some read/write tests of a microSD card. Known issues ============ * Kernel detects GPIO errors, which does not seem to affect any functions: [ 8629.303519] [drm:0xffffffff81454303] *ERROR* GPIO index 1 request failed (-2) [ 8629.599707] [drm:0xffffffff81454303] *ERROR* GPIO index 5 request failed (-2) [ 8629.720171] [drm:0xffffffff81454303] *ERROR* GPIO index 0 request failed (-2) [ 8629.928897] [drm:0xffffffff81454303] *ERROR* GPIO index 0 request failed (-2) [ 8629.933962] [drm:0xffffffff81454303] *ERROR* GPIO index 5 request failed (-2) [ 8629.954162] [drm:0xffffffff81454303] *ERROR* GPIO index 5 request failed (-2) [ 8629.984600] [drm:0xffffffff81454303] *ERROR* GPIO index 5 request failed (-2) [ 8630.133609] [drm:0xffffffff81454303] *ERROR* GPIO index 1 request failed (-2) Benchmarks ========== Here are few relevant benchmarks: | Test conditions | Results | | ------------------------------------------------------------------------ | --------: | | Bootup (from EFI boot menu to X11 WM) | 10 sec | | Suspend-to-disk aka hibernate (linux-5.2.1, only X11 WM, no apps running)| 4 sec | | Resume from suspend-to-disk (from EFI boot menu, linux-5.2.1) | 6 sec | | Suspend-to-RAM (linux-5.2.1) | 2 sec | | Resume from suspend-to-RAM (linux-5.2.1) | 2 sec | | SSD read speed (TS256GMTS400S, hdparm) | 498 MB/s | | SSD write speed (TS256GMTS400S, dd, bs=1M) | 341 MB/s | | MicroSD card read speed (SanDisk Ultra 128Gb, hdparm) | 86 MB/s | | MicroSD card write speed (SanDisk Ultra 128Gb, dd, bs=1M) | 18 MB/s | | Quake 3 (1280x720, high quality, xf86-video-intel-2.99.917, mesa-19.0.9) | 114 fps | | glxgears (linux-5.2.1, xf86-video-intel-2.99.917, mesa-19.0.8) | 2801 fps | | Idle consumption (10% brightness, no wireless) | 2.3 W | History of changes ================== __Aug 24 2019__ First public release. [cfg_dev]: /storage/micropc/configs/xorg.conf.d/30device.conf [cfg_fw]: /storage/micropc/configs/portage/savedconfig/sys-kernel/linux-firmware/linux-firmware.conf [cfg_kbd]: /storage/micropc/configs/xorg.conf.d/10keyboard.conf [cfg_kernel]: /storage/micropc/configs/config-5.2.1 [cfg_kwd]: /storage/micropc/configs/portage/package.keywords [cfg_make]: /storage/micropc/configs/portage/make.conf [cfg_mon]: /storage/micropc/configs/xorg.conf.d/40monitor.conf [cfg_mpv]: /storage/micropc/configs/mpv.conf [cfg_net]: /storage/micropc/configs/net [cfg_openbox]: /storage/micropc/configs/openbox/rc.xml [cfg_pm]: /storage/micropc/configs/pm/config.d/gentoo [cfg_touch]: /storage/micropc/configs/xorg.conf.d/20touchpad.conf [cfg_ws]: /storage/micropc/configs/wpa_supplicant.conf [patch_pm]: /storage/micropc/patches/1.4.1-on-failure-param.patch [pm_dpms]: /storage/micropc/configs/pm/sleep.d/00dpms [tool_def]: /storage/micropc/tools/default.sh [tool_dpms]: /storage/micropc/tools/dpms.sh [tool_lid]: /storage/micropc/tools/lid.sh [tool_batt]: /storage/micropc/tools/low_battery_handler.sh [tool_rfkill]: /storage/micropc/tools/toggle_rfkill.sh [tool_video]: /storage/micropc/tools/video-out.sh [tool_xrun]: /storage/micropc/tools/xrun.sh