https://wiki.archlinux.org/api.php?action=feedcontributions&user=Jmert&feedformat=atomArchWiki - User contributions [en]2024-03-28T08:23:42ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=CrashPlan&diff=568704CrashPlan2019-03-14T14:04:08Z<p>Jmert: Provide work-around for the restore tool never making progress due to a protection mechanism blocking communication between CrashPlan components.</p>
<hr />
<div>[[Category:Backup]]<br />
[[ja:CrashPlan]]<br />
[https://www.crashplan.com/en-us/ CrashPlan] is a [[backup program]] that backs up data to remote servers, other computers, or hard drives. Backing up to the cloud servers requires a monthly subscription.<br />
<br />
==Installation==<br />
<br />
Install {{AUR|crashplan}}{{Broken package link|package not found}} from the [[AUR]]. There is also {{AUR|crashplan-pro}} and {{AUR|crashplan-pro-e}} available which are the paid enterprise packages.<br />
<br />
==Basic Usage==<br />
<br />
Before accessing CrashPlan's graphical user interface, you should [[start]] the {{ic|crashplan.service}} unit.<br />
<br />
CrashPlan can be configured entirely through its graphical user interface. To start the graphical interface:<br />
<br />
$ CrashPlanDesktop<br />
<br />
To make CrashPlan automatically start upon system startup, [[enable]] the systemd unit.<br />
<br />
==Running Crashplan on a headless server==<br />
<br />
Running CrashPlan on a headless server is not officially supported. However, it is possible to do so.<br />
<br />
The CrashPlan daemon's configuration files (in {{ic|/opt/crashplan/conf}}) are in an obscure XML format, and they are meant to be edited programmatically by the CrashPlan client.<br />
<br />
CrashPlan 5 introduced a new client app which unfortunately dropped support for configuring a remote server with a local client, so you'll need to use X11 forwarding.<br />
<br />
===X11 forwarding over SSH===<br />
<br />
Ensure that {{ic|X11Forwarding}} is set to {{ic|yes}} in the headless server's {{ic|/etc/ssh/sshd_config}} and from another machine running X11, SSH to the headless machine with {{ic|-Y}}, and from the remote shell run {{ic|CrashPlanDesktop}}. The headless machine's windows will appear on the local X11 server. If you have problems, check {{ic|/opt/crashplan/log/ui_error.log}}.<br />
<br />
===Local client===<br />
<br />
On CrashPlan v4.x and below, the client and daemon communicate on port 4243 by default. Thus, an easy way of configuring the CrashPlan daemon on a headless server is to create an SSH tunnel:<br />
<br />
# [[Start]] the CrashPlan daemon on the server.<br />
# Create an SSH tunnel. On the client: {{ic|ssh -N -L 4243:localhost:4243 headless.example.com}}.<br />
# Start the CrashPlan client. (Again, the executable is named {{ic|CrashPlanDesktop}}.)<br />
<br />
Note that the authentication token (located in {{ic|/var/lib/crashplan/.ui_info}}) on the local and remote servers must match. More ideas can be found on these websites:<br />
<br />
* The CrashPlan support site [http://support.code42.com/CrashPlan/Latest/Configuring/Configuring_A_Headless_Client details] a slightly more complicated method of tunneling traffic from the client (CrashPlan Desktop) to the daemon (CrashPlan Engine) through an SSH tunnel.<br />
* A [http://www.liquidstate.net/how-to-manage-your-crashplan-server-remotely/ post by Bryan Ross] details how to make CrashPlan Desktop connect directly to CrashPlan Engine. Note that this method can be less secure than tunneling traffic through an SSH tunnel.<br />
<br />
==Troubleshooting==<br />
<br />
===Waiting for connection===<br />
<br />
On some systems it can happen that CrashPlan does not wait until an internet connection is established. If using [[NetworkManager]], you can install {{AUR|networkmanager-dispatcher-crashplan-systemd}}{{Broken package link|{{aur-mirror|networkmanager-dispatcher-crashplan-systemd}}}} which will automatically restart the CrashPlan service once a connection is successfully established.<br />
<br />
===Waiting for Backup===<br />
<br />
If the backup is stuck on «Waiting for Backup» even after you engage it manually, it might be that CrashPlan cannot access the tempdir or it is mounted as {{ic|noexec}}. It uses the default Java tmp dir which is normally {{ic|/tmp}}. You can either remove the {{ic|noexec}} mount option (not recommended) or change the tmpdir CrashPlan is using.<br />
<br />
To change the tmpdir CrashPlan uses, open {{ic|/opt/crashplan/bin/run.conf}} and insert {{ic|-Djava.io.tmpdir&#61;/new-tempdir}} to {{ic|SRV_JAVA_OPTS}}, for example:<br />
<br />
SRV_JAVA_OPTS="-Djava.io.tmpdir=/var/tmp/crashplan -Dfile.encoding=UTF-8 …<br />
<br />
Make sure to create the new tmpdir and verify CrashPlan's user has access to it.<br />
# mkdir /var/tmp/crashplan<br />
<br />
[[Restart]] CrashPlan.<br />
<br />
===Restore stuck preparing===<br />
<br />
If a restore gets stuck at «Preparing», it may be due to a permission restriction on {{ic|/tmp}} that causes communication between the restore tool and backup engine to fail. This can be caused by the sysctl variable {{ic|fs.protected_fifos}} restricting the engine (running as {{ic|root}}) from connecting to a named pipe owned by the desktop user contained in {{ic|/tmp}} (similar to [[tmpfs#Opening_symlinks_in_tmpfs_as_root_fails]]).<br />
<br />
The protection can be disabled to permit the restore to occur with<br />
<br />
# sysctl fs.protected_fifos=0<br />
<br />
See [[Sysctl]] for instructions on making the change permanent.<br />
<br />
===Desktop GUI Crashes on startup===<br />
<br />
On systems with Gnome 3 installed, or with libwebkit-gtk installed, there may be an issue where the GUI crashes on launch. This can be fixed by following the instructions [https://support.code42.com/CrashPlan/Latest/Troubleshooting/CrashPlan_Client_Closes_In_Some_Linux_Installations here].<br />
<br />
===Out of Memory===<br />
<br />
For backup sets containing large numbers of files (more than 100,000 or so), the default maximum heap size of 512M may be too small. If this is filled, the server will silently restart, and will usually get stuck restarting as it continually reaches the memory limit. The only sign of this happening is the creation of many small log files in {{ic|/opt/crashplan/bin}} for each service restart (potentially hundreds of thousands, depending on how long it takes to notice the problem). To increase the heap size limit, adjust the {{ic|-Xmx}} option in {{ic|/opt/crashplan/bin/run.conf}} to a reasonable value for your system.<br />
<br />
===Real time protection===<br />
If you use real time protection for your backup set and have a lot of files to backup, the default system configuration might not be able to allocate all required handles to follow all files in real time. This issue can manifest itself with logs like "inotify_add_watch: No space left on device" in the syslog journal. <br />
CrashPlan Support has instructions [https://support.crashplan.com/Troubleshooting/Real-Time_Backup_For_Network-Attached_Drives here] describing how to modify inotify max_user_watches to a bigger value to fix the issue. '''You cannot follow their instructions directly though''', you need to create a new file in /etc/sysctl.d as /etc/sysctl.conf is now ignored by systemd. See [[sysctl#Configuration]] for more information.<br />
<br />
===JRE Version Update===<br />
If, during upgrade, CrashPlan is attempting to upgrade the self-installed JRE version and the upgrade never gets passed downloading the JRE from CrashPlan (checking in logs/upgrade<unique_number>.log, the last message is a curl/wget for the "latest" JRE tgz), it's possible to stop CrashPlan, download the JRE (from the ugprade log) manually and replace the jre folder in the CrashPlan install with the upgrade version. This should allow CrashPlan to get past being stuck trying to upgrade the JRE.<br />
<br />
cd <crashplan/install/dir><br />
./bin/CrashPlanEngine stop<br />
rm -rf jre<br />
curl <jre url from crashplan log><br />
tar xzvf <jre.tgz><br />
./bin/CrashPlanEngine start<br />
<br />
==See also==<br />
<br />
* [http://www.code42.com/crashplan/ CrashPlan home page]<br />
* [http://support.code42.com/CrashPlan/Latest/Configuring/Using_CrashPlan_On_A_Headless_Computer CrashPlan On A Headless Server - Code42Support]<br />
* [[Wikipedia:CrashPlan]]</div>Jmerthttps://wiki.archlinux.org/index.php?title=Dell_XPS_13_(9360)&diff=456260Dell XPS 13 (9360)2016-11-07T10:00:27Z<p>Jmert: Workaround for Dell USB-C to ethernet instability due to USB autosuspend</p>
<hr />
<div>[[Category:Dell]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Video || {{G|Working}} || i915<br />
|-<br />
| Wireless || {{G|Working}} || ath10k<br />
|-<br />
| Bluetooth || {{G|Working}}|| btusb<br />
|-<br />
| Audio || {{G|Working}} || snd_hda_intel<br />
|-<br />
| Touchpad || {{G|Working}} || ?<br />
|-<br />
| Webcam || {{G|Working}} || uvcvideo<br />
|-<br />
| USB-C / Thunderbolt 3 || {{G|Working}} || ?<br />
|-<br />
| Wireless switch || {{G|Working}} || intel_hid<br />
|-<br />
| Function/Multimedia Keys || {{G|Working}} || ?<br />
|}<br />
<br />
<br />
The Dell XPS 13 Late 2016 (9360) is the fourth-generation model of the XPS 13 line. The laptop is available since October in both a standard edition with Windows installed as well as a Developer Edition with Ubuntu installed. There is no hardware difference between them. Just like the older versions ([[Dell XPS 13]], [[Dell XPS 13 (2015)]]), [[Dell XPS 13 (2016)]]) it is available in different hardware configurations. This fourth gen model includes Intel's Kaby Lake CPU and configurable with up to 16GB LPDDR 1866 MHz RAM and a 1TB PCI SSD. It will now also be available in Rose Gold. Prior to previous information it won't be available with LPDDR 2133 MHz RAM.<br />
<br />
The installation process for Arch on the XPS 13 does not differ from any other PC. For installation help, please see the [[Installation guide]] and [[UEFI]]. This page covers the current status of hardware support on Arch, as well as post-installation recommendations.<br />
<br />
As of kernel 4.5, the Intel Kaby Lake architecture is supported.<br />
<br />
<br />
== Content adaptive brightness control ==<br />
In the XPS 13 the display panels (both FHD and QHD+) come with adaptive brightness embedded in the panel firmware, this "content adaptive brightness control" (usually referred to as CABC or DBC) will adjust the screen brightness depending on the content displayed on the screen and will generally be found undesirable, especially for Linux users who are likely to be switching between dark and light screen content. Dell has issued a fix for this however it is only available to run in Windows and for the QHD+ model of the laptop so this precaution should be taken before installing Linux, the FHD model of the XPS 13 (9360) cannot be fixed. This is not a problem with the panel but rather a problem with the way the panels are configured for the XPS 13, as the same panel exists in the Dell's Latitude 13 7000 series (e7370) FHD model but with CABC disabled. The fix is available directly from [http://www.dell.com/support/home/de/de/debsdt1/Drivers/DriversDetails?driverId=20JWV&fileId=3574543510&osCode=WT64A&productCode=xps-13-9360-laptop&languageCode=ge&categoryId=AP Dell].<br />
<br />
== NVM Express SSD ==<br />
=== NVME Power Saving Patch ===<br />
Andy Lutomirski has released version 4 of his patchset which fixes powersaving for NVME devices in linux. Currently, this patch is not merged into mainline yet. Until it lands in mainline kernel use the AUR package below. <br />
{{App|Linux-nvme|Mainline linux kernel patched with Andy's patch for NVME powersaving APST.|https://github.com/damige/linux-nvme|{{AUR|linux-nvme}}}}<br />
<br />
== Coil Whine ==<br />
<br />
Unfortunately Dell still did not fix this issue and the sound for my model was very loud. The issue seems to be connected to the graphic card. At least for me it was possible to reduce it a lot by activating frame buffer compression "enable_fbc=1" [[Intel graphics#Module-based Powersaving Options]]. The coil whine will then start again under havy graphic load, which means all the time with a 4k montior.<br />
<br />
== Video ==<br />
The video should work with the {{ic|i915}} driver of the current {{Pkg|linux}} kernel. Consult [[Intel graphics]] for a detailed installation and configuration guide as well as for [[Intel graphics#Troubleshooting|Troubleshooting]].<br />
<br />
=== Blank screen issue after booting ===<br />
If using "late start" [[KMS]] (the default) and the screen goes blank when loading modules, it may help to add {{ic|i915}} and {{ic|intel_agp}} to the initramfs or using a special [[kernel parameter]]. Consult [[Intel graphics#Blank screen during boot, when "Loading modules"]] for more information about the kernel paramter way and have a look at [[Kernel mode setting#Early KMS start]] for a guide on how to setup the modules for the initramfs.<br />
<br />
== Wireless ==<br />
<br />
The Killer 1535 Wirless Adapter is functional and the ath10k firmware is included in recent linux kernel versions. The connection speed reported by iw is limited to 1-6Mbits/s. However this is just the output being wrong. The real connection speed is not limited to this value.<br />
<br />
== Bluetooth ==<br />
<br />
After following the instructions given at [[Bluetooth]] tethering of internet connections via phone works immediately.<br />
<br />
<br />
== Thunderbolt 3 / USB 3.1 ==<br />
<br />
The USB-C port supports Thunderbolt 3, Displayport-over-USB-C and USB power delivery as well as USB 3.1.<br />
<br />
=== Ethernet repeatedly disconnects/reconnects with Dell USB-C adapter (DA200) ===<br />
<br />
Use of a power management package (such as [[TLP]]) may cause the ethernet adapter to repeatedly disconnect and reconnect. If this happens, disable/blacklist USB autosuspend for the ethernet adapter. (On my laptop, this is the device <tt>Bus 004 Device 007: ID 0bda:8153 Realtek Semiconductor Corp</tt> in the output of <tt>lsusb</tt>.)<br />
<br />
== SATA controller ==<br />
When the SATA-controller is set to {{ic|RAID On}} in Bios, the hard disk (at least the SSD) is not recognized. Set to {{ic|Off}} or {{ic|AHCI}} ({{ic|AHCI}} is recommended) before attempting to install Arch.<br />
<br />
== Touchpad ==<br />
=== Remove psmouse errors from dmesg ===<br />
<br />
If {{ic|<nowiki>dmesg | grep -i psmouse</nowiki>}} returns an error, but your touchpad still works, then it might be a good idea to disable {{ic|psmouse}}. First create a config file:<br />
<br />
# nano /etc/modprobe.d/modprobe.conf<br />
<br />
blacklist psmouse<br />
<br />
Then add this file to {{ic|/etc/mkinitcpio.conf}}:<br />
<br />
...<br />
FILES="/etc/modprobe.d/modprobe.conf"<br />
...<br />
<br />
Rebuild your initial ramdisk image (see [[Mkinitcpio#Image creation and activation]]).<br />
<br />
<br />
== Touchscreen ==<br />
The touchscreen works without additional configuration. The bug resulting in a disabled touchscreen after resume was fixed with kernel 4.8.5.<br />
<br />
=== Gestures ===<br />
Refer to [[libinput#Gestures]] for information about the current development state and available methods.</div>Jmerthttps://wiki.archlinux.org/index.php?title=ASUS_Zenbook_Prime_UX31A&diff=254735ASUS Zenbook Prime UX31A2013-04-21T02:42:23Z<p>Jmert: /* Multitouch gestures in Gnome 3 */</p>
<hr />
<div>{{poor writing|reason=This should '''only''' have information specific to the hardware. Other content should not be duplicated here.}}<br />
[[Category:ASUS]]<br />
This page contains instructions, tips, pointers, and links for installing and configuring Arch Linux on the ASUS Zenbook UX31A and UX21A Ultrabooks. Most of it should also hold for UX32VD.<br />
<br />
See previous generation [[ASUS Zenbook UX31E]] page that has mostly orthogonal information to those here (may be only partially applicable to UX31A)<br />
<br />
== Installation ==<br />
To install Arch Linux on UX31A, you can follow the official [[Installation_Guide]]. Since the UX31A uses UEFI and GPT, make sure to also read the [[UEFI]], [[GPT]] and [[UEFI_Bootloaders]] pages. It is recommended to use [[GRUB]] as a bootloader. To prepare an UEFI USB device, read [[UEFI#Create_UEFI_bootable_USB_from_ISO]].<br />
<br />
=== Boot from USB medium ===<br />
Press {{keypress|Escape}} to get into the boot menu. If the USB bootable device is not listed, enter the configuration menu and directly press {{keypress|F10}} to save. Press {{keypress|Escape}} again on reboot: This time the USB bootable device should appear in the menu.<br />
<br />
Select 'Boot Arch Linux (x86_64)" and press {{keypress|Enter}}. The installation system will be booted and you will end up with a terminal.<br />
<br />
== Kernel Parameters ==<br />
These kernel parameters offer some speed optimizations and longer battery life. It is recommended to enable them. To add kernel paramaters to GRUB2 you have to edit {{ic|/etc/default/grub}} and add them to the GRUB_CMDLINE_LINUX_DEFAULT line.<br />
<br />
{{ic|1=add_efi_memmap i915.i915_enable_rc6=1 pcie_aspm=force drm.vblankoffdelay=1 i915.semaphores=1}}<br />
<br />
== Function keys ==<br />
<br />
{{note | A working keymap means that there is some output in {{ic|xev}} when the key combination is pressed OR that the functionality is built in and "just works". It does not means that the keymap is linked to the functionality. For that it is often necessary to add a keyboard shortcut [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]] or to use a desktop shell with built-in shortcut support for the keycode in question. For some of the keys the function operates on a BIOS level and no shortcut is needed.}}<br />
<br />
This table shows the function keys, their intended function, what keycode (if any) X recognizes and whether the function key operates at the BIOS level or if it needs a shortcut.<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Keys!! Function !! X sees !! shortcut needed <br />
|-<br />
| {{keypress|Fn+F1}} || Sleep || XF86Sleep || no <br />
|-<br />
| {{keypress|Fn+F2}} || Turn off WLAN and Bluetooth || XF86WLAN & XF86Bluetooth || no<br />
|-<br />
| {{keypress|Fn+F3}} || Dim keyboard backlight || XF86KbdBrightnessDown || yes<br />
|-<br />
| {{keypress|Fn+F4}} || Brighten keyboard backlight || XF86KbdBrightnessUp || yes<br />
|-<br />
| {{keypress|Fn+F5}} || Dim LCD backlight || No recognized key || no<br />
|-<br />
| {{keypress|Fn+F6}} || Brighten LCD backlight || No recognized key || no<br />
|-<br />
| {{keypress|Fn+F7}} || Turn off LCD || No named key || no<br />
|-<br />
| {{keypress|Fn+F8}} || Toggle display || XF86Display || yes<br />
|-<br />
| {{keypress|Fn+F9}} || Toggle touchpad || XF86TouchpadToggle || yes<br />
|-<br />
| {{keypress|Fn+F10}} || Audio mute/unmute || XF86AudioMute|| yes<br />
|-<br />
| {{keypress|Fn+F11}} || Audio volume down || XF86AudioLowerVolume || yes<br />
|-<br />
| {{keypress|Fn+F12}} || Audio volume up || XF86AudioRaiseVolume || yes<br />
|-<br />
| {{keypress|Fn+a}} || Ambient light sensor || No recognized key ||N/A<br />
|-<br />
| {{keypress|Fn+c}} || Switch display profiles || XF86Launch1 || yes<br />
|-<br />
| {{keypress|Fn+v}} || Webcam || XF86WebCam || yes<br />
|-<br />
| {{keypress|Fn+space}} || Switch power profiles || XF86Launch6 || yes<br />
|}<br />
<br />
=== Screen backlight ===<br />
{{note | Since kernel 3.7.3 screen brightness keys are working out of the box (with boot parameter acpi_osi&#61;"!Windows 2012" - depending on the bootloader, it might be necessary to escape the doublequotes.), so this section is legacy and will soon be moved }}<br />
<br />
Screen Brightness keymaps ({{keypress|Fn+F5}}, {{keypress|Fn+F6}}) does not work. It means the system does not get any keymap when the key combination is pressed. You get two options here :<br />
* try to fix the problem<br />
* work around the problem and just use a different key combination<br />
<br />
The lazy option first:<br />
==== Screen backlight workarounds ====<br />
===== Method 1 =====<br />
Install <code>xorg-xbacklight</code> <br />
<br />
You can add some convenient keyboard shortcuts [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]].<br />
===== Method 2 =====<br />
Install {{AUR|asus-screen-brightness}} from AUR. To allow users to change the brightness, say:<br />
<br />
# asus-screen-brightness allowusers<br />
<br />
If you use [[initscripts]], put this into your {{ic|/etc/rc.local}}:<br />
<br />
# echo "asus-screen-brightness allowusers" >> /etc/rc.local<br />
<br />
Users of [[systemd]] can use the unit file included in the package.<br />
<br />
# systemctl daemon-reload<br />
# systemctl start asus-screen-brightness.service<br />
# systemctl enable asus-screen-brightness.service<br />
<br />
Adding to {{ic|.zshrc}} or {{ic|.bashrc}} :<br />
alias -g "backlight"="/bin/bash /usr/bin/asus-screen-brightness"<br />
allows to easy toggle backlight in terminal :<br />
$ backlight up<br />
$ backlight down<br />
$ backlight max<br />
$ backlight off<br />
$ backlight night<br />
$ backlight 2000<br />
$ backlight show<br />
<br />
And finally, add some convenient keyboard shortcuts [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]].<br />
<br />
==== Screen backlight fix ====<br />
{{note | UX31A BIOS 211 IGDM Base Address is 0xDA8A9018, UX31A BIOS 206 UGDM Base Address is 0xDA8CE018 and UX31A BIOS 204 IGDM Base Address is 0xDA8CF018, everything else is the same. }}<br />
<br />
{{warning | This is highly experimental. It works for the UX32VD with bios 2.06, no guarantee that it works for different configurations. }}<br />
First off, this method requires that you know what you are doing (although there are good tutorials anyway), and needs a little bit patience. It also requires that you have the hexidecimal dump and undump package xxd available in the AUR: https://aur.archlinux.org/packages.php?ID=35311 .<br />
<br />
This method is based on a proposed fix posted on https://bugs.freedesktop.org/show_bug.cgi?id=45452, which apparently works for the UX31A/UX32VD too. <br />
The cause why the brightness buttons don't work is exactly the same as in the bugreport.<br />
<br />
As root, create the file {{ic|/usr/local/share/backlightfix}}:<br />
This script is posted here: https://bbs.archlinux.org/viewtopic.php?pid=1156051#p1156051<br />
#!/bin/bash <br />
# <br />
# Asus UX32VD acpi backlight fix <br />
# <br />
# Copyright(C) 2012 Eugen Dahm <eugen.dahm@gmail.com>. <br />
# <br />
# fix is based on a proposed bugfix posted on <[url]https://bugs.freedesktop.org/show_bug.cgi?id=45452[/url]> <br />
# <br />
# This program is free software; you can redistribute it and/or modify <br />
# it under the terms of the GNU General Public License as published by <br />
# the Free Software Foundation; either version 2 of the License, or <br />
# (at your option) any later version. <br />
# <br />
# This program is distributed in the hope that it will be useful, <br />
# but WITHOUT ANY WARRANTY; without even the implied warranty of <br />
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the <br />
# GNU General Public License for more details. <br />
# <br />
# You should have received a copy of the GNU General Public License <br />
# along with this program; if not, write to the Free Software <br />
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA <br />
# <br />
# Asus UX32VD acpi backlight fix <br />
# Disclaimer!!!! not recommended to use if laptop is not the Asus UX32VD\ <br />
# probably works with other models too, but the didl and cadl offset needs to be extracted <br />
# from the dsdt <br />
# Tested with bios 2.06 <br />
# IGDM_BASE has to be determined for each notebook <br />
# IGDM is the operation region (\_SB_.PCI0.GFX0.IGDM) containing the CADL/DIDL fields <br />
# \aslb is a named field containing the base-address of the IGDM region <br />
# this address depends on the installed ram <br />
# how to get the address: <br />
# - git clone git://github.com/Bumblebee-Project/acpi_call.git <br />
# - make <br />
# - load module with insmod or copy to /lib/modules/.... and modprobe <br />
# - echo '\aslb' > /proc/acpi/call <br />
# - cat /proc/acpi/call <br />
# - this is the IGDM base address - fill in below <br />
IGDM_BASE=0xBE8B7018<br />
DIDL_OFFSET=0x120<br />
CADL_OFFSET=0x160<br />
# this basically copies the values of the initialized fields DIDL-DDL8 in the IGDM opregion and initializes CADL-CAL8 with it <br />
# CADL-CAL8 are fields, telling the bios that a screen or something is connected (this is a bit speculation - check <br />
# <[url]https://bugs.freedesktop.org/show_bug.cgi?id=45452[/url]> for more <br />
# if interested, disasselbe the dsdt to understand, why no notifyevent gets thrown, when CADL isn't initialized <br />
# (hint: _Q0E/_Q0F are the backlight methods on the UX32VD) <br />
dd if=/dev/mem skip=$(( $IGDM_BASE + $DIDL_OFFSET )) count=32 bs=1 | xxd | xxd -r | dd of=/dev/mem bs=1 seek=$(( $IGDM_BASE + $CADL_OFFSET )) count=32 <br />
<br />
This script still needs to be adjusted to your notebook configuration (it uses a memory address which strongly depends on the amount of installed system memory.<br />
<br />
The exact address can be determined with following steps:<br />
<br />
# git clone git://github.com/Bumblebee-Project/acpi_call.git <br />
# cd acpi_call <br />
# make <br />
# gzip acpi_call.ko <br />
# load module acpi_call.ko.gz with insmod or copy to /lib/modules/.... and modprobe <br />
# echo '\aslb' > /proc/acpi/call <br />
# cat /proc/acpi/call <br />
# this is the IGDM base address - initialize the IGDM_BASE variable with this value in the script<br />
<br />
Initialize your bios with this script on boot :<br />
# echo "/usr/local/share/backlightfix" >> /etc/rc.local<br />
<br />
Execute the script and hope the backlight buttons work afterwards. If they don't you probably have to disasselbe the dsdt for yourself, because you have to adjust the following 2 variables in the script:<br />
DIDL_OFFSET=0x120<br />
CADL_OFFSET=0x160<br />
<br />
These are the offsets on the Asus UX32VD bios version 2.06. Try google to find a tutorial how to disassemble the dsdt.<br />
<br />
===== Getting the DIDL and CADL offsets =====<br />
<br />
Now comes the funny part: <br />
<br />
# open your disassembled dsdt. The should have the filename dsdt.dsl.<br />
# find the operationregion IGBM. It should have a Field statement below, and probably looks something like this:<br />
OperationRegion (IGDM, SystemMemory, ASLB, 0x2000)<br />
Field (IGDM, AnyAcc, NoLock, Preserve)<br />
{<br />
SIGN, 128, <br />
SIZE, 32, <br />
OVER, 32, <br />
...<br />
This specifies some variables in this IGDM field (for me, they look similar to a c struct, except that you don't need to give the size of each element in a struct).<br />
The numbers are the size for each element in bit. <br />
<br />
You must add those field sizes until you reach the DIDL variable. With the UX32VD the DIDL offset is easy, because of this statement:<br />
..<br />
Offset (0x120), <br />
DIDL, 32,<br />
..<br />
Don't know exactly why they use the Offset statement, since this is somewhat redundant. It tells you that the following element has the offset 0x120.<br />
<br />
Since I thought it is obvious what this statement does, I didn't bother to look it up in the dsl language specification. I thought it tells the bios that the following<br />
variable starts with an offset of 0x120 bytes relative to the previous element, but I was wrong. It basically tells you/bios that the following variable starts with an <br />
offset of 0x120 relative to the beginning of the opregion (in this case its completely unnecessary).<br />
<br />
Now the only thing left is the CADL offset. Add the numbers starting from DIDL until you reach CADL and add it to your previous offset. This should be the 2nd needed offset.<br />
<br />
After updating both offset variables in the script and executing it again, the backlight should now work (no guarantee).<br />
<br />
=== Keyboard backlight ===<br />
Install {{AUR|asus-kbd-backlight}} from AUR. To allow users to change the brightness, say:<br />
<br />
# asus-kbd-backlight allowusers<br />
<br />
If you use [[initscripts]], put this into your {{ic|/etc/rc.local}}:<br />
<br />
# echo "asus-kbd-backlight allowusers" >> /etc/rc.local<br />
<br />
Users of [[systemd]] can use the unit file included in the package.<br />
<br />
# systemctl daemon-reload<br />
# systemctl start asus-kbd-backlight.service<br />
# systemctl enable asus-kbd-backlight.service<br />
<br />
Now you can easily change keyboard backlight in terminal:<br />
<br />
$ asus-kbd-backlight up<br />
$ asus-kbd-backlight down<br />
$ asus-kbd-backlight max<br />
$ asus-kbd-backlight off<br />
$ asus-kbd-backlight night<br />
$ asus-kbd-backlight 2<br />
$ asus-kbd-backlight show<br />
<br />
And finally, add some convenient keyboard shortcuts [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]].<br />
<br />
==== UPower Script ====<br />
<br />
Upower allows control of the keyboard backlight as an ordinary user. Use of these scripts requires installation of dbus, upower and if you want the OSD notifications, libnotify.<br />
<br />
This script increases the keyboard brightness and provides onscreen notification of the current brightness:<br />
<br />
#! /bin/bash<br />
# get current keyboard brightness from UPower<br />
current_state=$(dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.GetBrightness)<br />
# strip leading 9 characters " int32 "<br />
current_state=${current_state:9}<br />
# get maximum keyboard brightness from UPower<br />
max_brightness=$(dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.GetMaxBrightness)<br />
# strip leading 9 characters " int32 "<br />
max_brightness=${max_brightness:9}<br />
# if the current keyboard brightness is less than max, increment brightness by one<br />
if [ $current_state -lt $max_brightness ] ; then <br />
dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.SetBrightness \<br />
int32:$((current_state+1))<br />
notify-send "Keyboard brightness reset to $((current_state+1))"<br />
else<br />
# if the keyboard brightness is already at maximum, complain<br />
notify-send "Keyboard brightness already at maximum"<br />
fi<br />
<br />
This script decreases the keyboard brightness and provides onscreen notification of the current brightness:<br />
<br />
#! /bin/bash<br />
# get current keyboard brightness from UPower<br />
current_state=$(dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.GetBrightness)<br />
# strip leading 9 characters " int32 "<br />
current_state=${current_state:9}<br />
min_brightness=0<br />
# if the current keyboard brightness is greater than zero, decrement brightness by one<br />
if [ $current_state -gt $min_brightness ] ; then <br />
dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.SetBrightness \<br />
int32:$((current_state-1))<br />
notify-send "Keyboard brightness reset to $((current_state-1))"<br />
else<br />
# if the keyboard brightness is already at zero, complain<br />
notify-send "Keyboard brightness already at zero"<br />
fi<br />
<br />
==== Automatic Backlight Control ====<br />
This C program will automatically turn off the backlight after a given idle time, and turn it on proportionally to the screen brightness. Written for Asus N56DP but will probably work here as well. Please email me if not. Note that you must run it as root, or if using some other user, give that user write permission to the backlight brightness file. This program works in plain tty mode as well as in X, but if you're using X you must start the X server first before starting this program, otherwise the X server will hang.<br />
[[User:Hyc|Hyc]] ([[User talk:Hyc|talk]]) 13:24, 16 January 2013 (UTC)<br />
/* Author: Howard Chu <hyc@symas.com> 2013-01-15<br />
*<br />
* monitor keyboard activity and toggle keyboard backlight<br />
* for Asus laptops. Tested on Asus N56DP.<br />
*/<br />
#include <sys/types.h><br />
#include <sys/stat.h><br />
#include <fcntl.h><br />
#include <poll.h><br />
<br />
static char dummybuf[8192];<br />
<br />
/** @brief How many milliseconds before turning off kbd light */<br />
#ifndef IDLE_MSEC<br />
#define IDLE_MSEC 7000<br />
#endif<br />
<br />
int main(int argc, char *argv[])<br />
{<br />
struct pollfd pfd;<br />
int rc, blfd, scfd;<br />
int brt, timeout, prev = -1;<br />
char bm[2] = "0\n";<br />
<br />
scfd = open("/sys/class/backlight/acpi_video0/brightness", O_RDONLY);<br />
blfd = open("/sys/class/leds/asus::kbd_backlight/brightness", O_WRONLY);<br />
pfd.fd = open("/dev/input/by-path/platform-i8042-serio-0-event-kbd", O_RDONLY);<br />
pfd.events = POLLIN;<br />
<br />
timeout = IDLE_MSEC;<br />
while (1) {<br />
rc = poll(&pfd, 1, timeout);<br />
/* Kbd brightness ranges from 0 to 3.<br />
* Screen brightness ranges from 1 to 10.<br />
* Make the keyboard brightness<br />
* depend on the screen brightness.<br />
*<br />
* Assume 10 means working in a bright room.<br />
* In that case, leave the kbd light off.<br />
* map screen 1-9 to kbd 1-3.<br />
*/<br />
if (rc) {<br />
/* got keyboard input, flush it all and<br />
* wait for the next event. Also check<br />
* the screen brightness and set the kbd<br />
* backlight accordingly.<br />
*/<br />
read(pfd.fd, dummybuf, sizeof(dummybuf));<br />
timeout = IDLE_MSEC;<br />
read(scfd, dummybuf, sizeof(dummybuf));<br />
lseek(scfd, 0, SEEK_SET);<br />
brt = atoi(dummybuf);<br />
if (brt == 10) {<br />
brt = 0;<br />
} else {<br />
brt = (brt + 2) / 3;<br />
}<br />
} else {<br />
/* once we've gotten a timeout, turn off<br />
* kbd backlight and wait forever for<br />
* the next keypress<br />
*/<br />
timeout = -1;<br />
brt = 0;<br />
}<br />
if (brt == prev)<br />
continue;<br />
bm[0] = brt + '0';<br />
write(blfd, bm, 2);<br />
lseek(blfd, 0, SEEK_SET);<br />
prev = brt;<br />
}<br />
}<br />
<br />
== Solid State Drive ==<br />
Check [[Solid_State_Drives]]<br />
<br />
== Touchpad ==<br />
[[Touchpad_Synaptics#Buttonless_TouchPads_.28aka_ClickPads.29| Instructions to activate the right button]].<br />
(As an alternative you cant try [http://ubuntuforums.org/showpost.php?p=12110689&postcount=73 This]).<br />
<br />
Multifinger taps work out of the box.<br />
{{Tip|Multifinger taps: Two finger for middle click; three fingers for right click.}}<br />
<br />
=== Multitouch gestures ===<br />
To enable multitouch gestures like those under Windows, one can install {{AUR|touchegg}} from the AUR. Using {{ic|touchegg}} will require disabling some input-handling that is done by the synaptics input driver. Edit your {{ic|/etc/X11/xorg.conf.d/10-synaptics.conf}}<br />
<br />
Section "InputClass"<br />
Identifier "touchpad catchall"<br />
Driver "synaptics"<br />
MatchIsTouchpad "on"<br />
MatchDevicePath "/dev/input/event*"<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "0"<br />
Option "TapButton3" "0"<br />
Option "ClickFinger2" "0"<br />
Option "ClickFinger3" "0"<br />
Option "HorizTwoFingerScroll" "0"<br />
Option "VertTwoFingerScroll" "0"<br />
Option "ClickPad" "true"<br />
Option "EmulateMidButtonTime" "0"<br />
Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"<br />
EndSection<br />
<br />
An alternative to X.org configuration files is to use the {{ic|synclient}} command within the {{ic|.xinitrc}} script. This method will limit changes to your desktop environment.<br />
<br />
synclient TapButton2=0 TapButton3=0 ClickFinger2=0 ClickFinger3=0 HorizTwoFingerScroll=0 VertTwoFingerScroll=0<br />
<br />
{{ic|touchegg}} will need to be autostarted for multitouch gestures to be activated. This can be done with {{ic|touchegg &}} in your {{ic|.xinitrc}}, or using the autostart/startup applications functionality of your desktop environment. {{ic|~/.config/touchegg/touchegg.conf}} can then be configured as necessary.<br />
<br />
=== Multitouch gestures in Gnome 3 ===<br />
GNOME 3's gnome-shell does its own mouse-handling, which can interfere with synaptics and touchegg settings unless the appropriate plugin is disabled.<br />
<br />
gsettings set org.gnome.settings-daemon.plugins.mouse active false<br />
<br />
Note that disabling this plugin will cause the the current settings within the Mouse & Touchpad section of System Settings to be ignored.<br />
<br />
=== Disable Touchpad While Typing ===<br />
<br />
One of the criticisms this laptop gets (see reviews at Amazon) is that the placement of the touchpad results in frequent touchpad brushing during typing. You should use whatever touchpad disabling method you prefer. See [[ Touchpad_Synaptics#Disable_Trackpad_while_Typing ]].<br />
<br />
== HDMI plugged at boot ==<br />
<br />
There seems to be an issue whereby having an HDMI device plugged in at boot results in the screens being switched and also the laptop screen not coming on. To make this more bearable you can automate switching HDMI on with the following udev rule and script:<br />
<br />
<br />
<br />
Add the following script as root:<br />
{{hc|/usr/local/share/hdmi-plugged-startup|#!/bin/bash<br />
<br />
export XAUTHORITY&#61;/home/$USER/.Xauthority<br />
export DISPLAY&#61;:0<br />
<br />
/usr/bin/xrandr -display :0 --output eDP1 --auto --output HDMI1 --auto --above eDP1}}<br />
<br />
then make it executable<br />
# chmod +x /usr/local/share/hdmi-plugged-startup<br />
<br />
And add the following udev rule:<br />
# echo 'ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/share/hdmi-plugged-startup"' >> /etc/udev/rules.d/10-local.rules<br />
<br />
== Powersave management ==<br />
For automatic powersaving when on battery configure [[Laptop_Mode_Tools]]. For manual power saving see [[Power saving]]<br />
<br />
==Hardware and Modules==<br />
<br />
====PCI====<br />
<br />
This is output of lspci -nnn -k<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Description !! PCI Id !! Module<br />
|-<br />
| Intel Corporation 3rd Gen Core processor DRAM Controller || 8086:0154 || none<br />
|-<br />
| Intel Corporation 3rd Gen Core processor Graphics Controller || 8086:0166 || i915 <br />
|-<br />
| Intel Corporation Device || 8086:0153 || none<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller || 8086:1e31 || xhci_hcd<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 || 8086:1e3a || mei<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 || 8086:1e2d || ehci_hcd<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller || 8086:1e20 || snd_hda_intel<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 || 8086:1e10 || pcieport<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 || 8086:1e12 || pcieport<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1|| 8086:1e26 || ehci_hcd<br />
|-<br />
| Intel Corporation HM76 Express Chipset LPC Controller || 8086:1e59 || lpc_ich<br />
|-<br />
| Intel Corporation 7 Series Chipset Family 6-port SATA Controller || 8086:1e03 || ahci<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller || 8086:1e22] || none<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family Thermal Management Controller || 8086:1e24 || none<br />
|-<br />
| Intel Corporation Centrino Advanced-N 6235 || 8086:088e || iwlwifi<br />
|}<br />
<br />
====Other Devices and Drivers====<br />
<br />
=====mei=====<br />
<br />
PCE device 8086:1e3a, the Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 and the associated device "/dev/mei" (10,59) relating to an Intel-specific hardware monitoring technology called "Advanced Management Technology". <br />
<br />
The MEI driver speaks to or through the "Local Manageability Service" or LMS. The LMS driver is available here. Note that with GCC 4.7.2-2, the driver will refuse to compile. I was able to convince it to compile by:<br />
*adding "#include <unistd.h>" to src/tools/ATVersion.cpp<br />
*adding "#include <stdio.h>" to src/tools/ATNetworkTool.cpp<br />
<br />
It then installs the driver file lms in /usr/local/sbin and the init.d-type daemon file lms in /etc/init.d/.<br />
<br />
=====rdrand=====<br />
<br />
The i7 Core CPU has an on-chip random number generator, rdrand, code named "Bull Mountain". It appears that since 3.2, this is used as a source for /dev/urandom. It is also used as a randomness source by rng-tools version 4.<br />
<br />
In contrast to other hardware random number generators, rdrand does not create a character device in /dev. However, rngd version 4 does appear to detect and use it.<br />
<br />
First, make sure rngd sees it:<br />
<br />
[root@asarum system]# rngd -v --no-tpm=1<br />
Available entropy sources:<br />
DRNG<br />
<br />
Second, start rngd:<br />
<br />
[root@asarum log]# rngd -f --no-tpm=1<br />
<br />
The options for rngd.service are found in /etc/conf.d/rngd. I modified the file as follows:<br />
<br />
# RNGD_OPTS="-o /dev/random -r /dev/urandom"<br />
RNGD_OPTS=" -o /dev/random --no-tpm=1"<br />
<br />
Test:<br />
<br />
[root@asarum system]# cat /dev/random | rngtest -c 1000<br />
rngtest 4<br />
Copyright (c) 2004 by Henrique de Moraes Holschuh<br />
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.<br />
<br />
rngtest: starting FIPS tests...<br />
rngtest: bits received from input: 20000032<br />
rngtest: FIPS 140-2 successes: 1000<br />
rngtest: FIPS 140-2 failures: 0<br />
rngtest: FIPS 140-2(2001-10-10) Monobit: 0<br />
rngtest: FIPS 140-2(2001-10-10) Poker: 0<br />
rngtest: FIPS 140-2(2001-10-10) Runs: 0<br />
rngtest: FIPS 140-2(2001-10-10) Long run: 0<br />
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0<br />
rngtest: input channel speed: (min=891.472; avg=2161.828; max=2788.585)Kibits/s<br />
rngtest: FIPS tests speed: (min=28.682; avg=47.816; max=146.719)Mibits/s<br />
rngtest: Program run time: 9434482 microseconds<br />
<br />
=====watchdog=====<br />
<br />
The chipset also has an hardware watchdog:<br />
<br />
root@asarum chris]# wdctl<br />
Device: /dev/watchdog<br />
Identity: iTCO_wdt [version 0]<br />
Timeout: 30 seconds<br />
Timeleft: 2 seconds<br />
FLAG DESCRIPTION STATUS BOOT-STATUS<br />
KEEPALIVEPING Keep alive ping reply 0 0<br />
MAGICCLOSE Supports magic close char 0 0<br />
SETTIMEOUT Set timeout (in seconds) 0 0<br />
<br />
Activating the watchdog under systemd is trivial, as systemd author Lennart Poettering explains in [http://0pointer.de/blog/projects/watchdog.html this blog post].<br />
<br />
All you do is go into /etc/systemd/system.conf, uncomment the RuntimeWatchdogSec=0 line and change zero to how long the watchdog should go without receiving a ping before it reboots the system. I used 30s, which is the default setting for iTCO_wdt and seemed sane.<br />
<br />
#RuntimeWatchdogSec=0<br />
RuntimeWatchdogSec=30<br />
<br />
Check after next boot:<br />
<br />
[root@asarum chris]# journalctl | grep -i watchdog<br />
Oct 06 06:36:27 asarum kernel: iTCO_wdt: Intel TCO WatchDog Timer Driver v1.10<br />
Oct 06 06:36:27 asarum systemd[1]: Hardware watchdog 'iTCO_wdt', version 0<br />
Oct 06 06:36:27 asarum systemd[1]: Set hardware watchdog to 30s.<br />
<br />
====Issue with ACPI and gpio_ich====<br />
<br />
The gpio_ich module causes the following error:<br />
<br />
ACPI Warning: 0x0000000000000428-0x000000000000042f SystemIO conflicts with Region \PMIO 2 (20120711/utaddress-251)<br />
ACPI Warning: 0x0000000000000500-0x000000000000053f SystemIO conflicts with Region \GPIO 1 (20120711/utaddress-251)<br />
ACPI Warning: 0x0000000000000500-0x000000000000053f SystemIO conflicts with Region \GP01 2 (20120711/utaddress-251)<br />
lpc_ich: Resource conflict(s) found affecting gpio_ich<br />
ACPI Warning: 0x000000000000f040-0x000000000000f05f SystemIO conflicts with Region \SMB0 1 (20120711/utaddress-251)<br />
ACPI Warning: 0x000000000000f040-0x000000000000f05f SystemIO conflicts with Region \_SB_.PCI0.SBUS.SMBI 2 (20120711/utaddress-251)<br />
<br />
In this case an lsmod shows that the gpio_ich module doesn't wind up being loaded <br />
<br />
# lsmod | grep gpio<br />
# <br />
<br />
I then rebooted with apci_enforce_resources=lax. A cat /proc/ioports showed the conflict:<br />
<br />
0420-042f : ACPI GPE0_BLK<br />
0428-042f : gpio_ich<br />
<br />
and<br />
<br />
0500-057f : pnp 00:05<br />
0500-053f : gpio_ich<br />
<br />
In contrast, here's the same lines without acpi_enforce_resources=lax:<br />
<br />
0420-042f : ACPI GPE0_BLK<br />
<br />
and<br />
<br />
0500-057f : pnp 00:05<br />
<br />
So, net/net, there's no real issue.<br />
<br />
====Issue with USB and Laptop_Mode_Tools====<br />
<br />
USB mouse problems and hotplug does not working in some cases with messages in dmesg like:<br />
<br />
xhci_hcd 0000:00:14.0: setting latency timer to 64<br />
xhci_hcd 0000:00:14.0: WARN Event TRB for slot 1 ep 0 with no TDs queued?<br />
<br />
The solution is to set "CONTROL_USB_AUTOSUSPEND" in /etc/laptop-mode/conf.d/usb-autosuspend.conf to 1 and having a long "AUTOSUSPEND_TIMEOUT"<br />
<br />
== Random kernel panics on boot ==<br />
<br />
If Archlinux boots without any issues sometimes, but locks up with a kernel panic other times, the cause (as described by Whef in this thread: https://bbs.archlinux.org/viewtopic.php?pid=1169781#p1169781) is likely the 'btusb' module.<br />
<br />
To fix the issue, blacklist the 'btusb' module on the next boot by running:<br />
<br />
sudo echo "blacklist btusb" > /etc/modprobe.d/disable_btusb.conf<br />
<br />
Then use rc.local to load it at the end of the boot process by running:<br />
<br />
sudo echo "modprobe btusb" >> /etc/rc.local<br />
<br />
This appears to avoid whatever race condition conflict that causes the kernel to panic on boot, but if you're still having the same issue, try removing 'modprobe btusb' from /etc/rc.local to avoid the module completely.<br />
<br />
==BIOS Version Issues==<br />
<br />
It seems that updating the BIOS to versions 215 and higher causes issues with ACPI handling of the battery charge levels. In particular it seems that one cannot charge the battery beyond 91%-93%. The issue does not seem to be present in Windows however. For further details please see the forum thread [https://bbs.archlinux.org/viewtopic.php?pid=1211033#p1211033 here]. The most up to date BIOS version without any issues is 212. Unless it's absolutely necessary, refrain from updating your BIOS.<br />
<br />
==See also==<br />
*[[Power saving]]<br />
<br />
== Additional resources ==<br />
*https://help.ubuntu.com/community/AsusZenbookPrime<br />
*http://ubuntuforums.org/showthread.php?t=2005999<br />
*[[ Wikipedia Zenbook#UX32.2C_UX42_and_UX52 ]]</div>Jmerthttps://wiki.archlinux.org/index.php?title=ASUS_Zenbook_Prime_UX31A&diff=254734ASUS Zenbook Prime UX31A2013-04-21T02:41:28Z<p>Jmert: /* Multitouch gestures */</p>
<hr />
<div>{{poor writing|reason=This should '''only''' have information specific to the hardware. Other content should not be duplicated here.}}<br />
[[Category:ASUS]]<br />
This page contains instructions, tips, pointers, and links for installing and configuring Arch Linux on the ASUS Zenbook UX31A and UX21A Ultrabooks. Most of it should also hold for UX32VD.<br />
<br />
See previous generation [[ASUS Zenbook UX31E]] page that has mostly orthogonal information to those here (may be only partially applicable to UX31A)<br />
<br />
== Installation ==<br />
To install Arch Linux on UX31A, you can follow the official [[Installation_Guide]]. Since the UX31A uses UEFI and GPT, make sure to also read the [[UEFI]], [[GPT]] and [[UEFI_Bootloaders]] pages. It is recommended to use [[GRUB]] as a bootloader. To prepare an UEFI USB device, read [[UEFI#Create_UEFI_bootable_USB_from_ISO]].<br />
<br />
=== Boot from USB medium ===<br />
Press {{keypress|Escape}} to get into the boot menu. If the USB bootable device is not listed, enter the configuration menu and directly press {{keypress|F10}} to save. Press {{keypress|Escape}} again on reboot: This time the USB bootable device should appear in the menu.<br />
<br />
Select 'Boot Arch Linux (x86_64)" and press {{keypress|Enter}}. The installation system will be booted and you will end up with a terminal.<br />
<br />
== Kernel Parameters ==<br />
These kernel parameters offer some speed optimizations and longer battery life. It is recommended to enable them. To add kernel paramaters to GRUB2 you have to edit {{ic|/etc/default/grub}} and add them to the GRUB_CMDLINE_LINUX_DEFAULT line.<br />
<br />
{{ic|1=add_efi_memmap i915.i915_enable_rc6=1 pcie_aspm=force drm.vblankoffdelay=1 i915.semaphores=1}}<br />
<br />
== Function keys ==<br />
<br />
{{note | A working keymap means that there is some output in {{ic|xev}} when the key combination is pressed OR that the functionality is built in and "just works". It does not means that the keymap is linked to the functionality. For that it is often necessary to add a keyboard shortcut [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]] or to use a desktop shell with built-in shortcut support for the keycode in question. For some of the keys the function operates on a BIOS level and no shortcut is needed.}}<br />
<br />
This table shows the function keys, their intended function, what keycode (if any) X recognizes and whether the function key operates at the BIOS level or if it needs a shortcut.<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Keys!! Function !! X sees !! shortcut needed <br />
|-<br />
| {{keypress|Fn+F1}} || Sleep || XF86Sleep || no <br />
|-<br />
| {{keypress|Fn+F2}} || Turn off WLAN and Bluetooth || XF86WLAN & XF86Bluetooth || no<br />
|-<br />
| {{keypress|Fn+F3}} || Dim keyboard backlight || XF86KbdBrightnessDown || yes<br />
|-<br />
| {{keypress|Fn+F4}} || Brighten keyboard backlight || XF86KbdBrightnessUp || yes<br />
|-<br />
| {{keypress|Fn+F5}} || Dim LCD backlight || No recognized key || no<br />
|-<br />
| {{keypress|Fn+F6}} || Brighten LCD backlight || No recognized key || no<br />
|-<br />
| {{keypress|Fn+F7}} || Turn off LCD || No named key || no<br />
|-<br />
| {{keypress|Fn+F8}} || Toggle display || XF86Display || yes<br />
|-<br />
| {{keypress|Fn+F9}} || Toggle touchpad || XF86TouchpadToggle || yes<br />
|-<br />
| {{keypress|Fn+F10}} || Audio mute/unmute || XF86AudioMute|| yes<br />
|-<br />
| {{keypress|Fn+F11}} || Audio volume down || XF86AudioLowerVolume || yes<br />
|-<br />
| {{keypress|Fn+F12}} || Audio volume up || XF86AudioRaiseVolume || yes<br />
|-<br />
| {{keypress|Fn+a}} || Ambient light sensor || No recognized key ||N/A<br />
|-<br />
| {{keypress|Fn+c}} || Switch display profiles || XF86Launch1 || yes<br />
|-<br />
| {{keypress|Fn+v}} || Webcam || XF86WebCam || yes<br />
|-<br />
| {{keypress|Fn+space}} || Switch power profiles || XF86Launch6 || yes<br />
|}<br />
<br />
=== Screen backlight ===<br />
{{note | Since kernel 3.7.3 screen brightness keys are working out of the box (with boot parameter acpi_osi&#61;"!Windows 2012" - depending on the bootloader, it might be necessary to escape the doublequotes.), so this section is legacy and will soon be moved }}<br />
<br />
Screen Brightness keymaps ({{keypress|Fn+F5}}, {{keypress|Fn+F6}}) does not work. It means the system does not get any keymap when the key combination is pressed. You get two options here :<br />
* try to fix the problem<br />
* work around the problem and just use a different key combination<br />
<br />
The lazy option first:<br />
==== Screen backlight workarounds ====<br />
===== Method 1 =====<br />
Install <code>xorg-xbacklight</code> <br />
<br />
You can add some convenient keyboard shortcuts [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]].<br />
===== Method 2 =====<br />
Install {{AUR|asus-screen-brightness}} from AUR. To allow users to change the brightness, say:<br />
<br />
# asus-screen-brightness allowusers<br />
<br />
If you use [[initscripts]], put this into your {{ic|/etc/rc.local}}:<br />
<br />
# echo "asus-screen-brightness allowusers" >> /etc/rc.local<br />
<br />
Users of [[systemd]] can use the unit file included in the package.<br />
<br />
# systemctl daemon-reload<br />
# systemctl start asus-screen-brightness.service<br />
# systemctl enable asus-screen-brightness.service<br />
<br />
Adding to {{ic|.zshrc}} or {{ic|.bashrc}} :<br />
alias -g "backlight"="/bin/bash /usr/bin/asus-screen-brightness"<br />
allows to easy toggle backlight in terminal :<br />
$ backlight up<br />
$ backlight down<br />
$ backlight max<br />
$ backlight off<br />
$ backlight night<br />
$ backlight 2000<br />
$ backlight show<br />
<br />
And finally, add some convenient keyboard shortcuts [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]].<br />
<br />
==== Screen backlight fix ====<br />
{{note | UX31A BIOS 211 IGDM Base Address is 0xDA8A9018, UX31A BIOS 206 UGDM Base Address is 0xDA8CE018 and UX31A BIOS 204 IGDM Base Address is 0xDA8CF018, everything else is the same. }}<br />
<br />
{{warning | This is highly experimental. It works for the UX32VD with bios 2.06, no guarantee that it works for different configurations. }}<br />
First off, this method requires that you know what you are doing (although there are good tutorials anyway), and needs a little bit patience. It also requires that you have the hexidecimal dump and undump package xxd available in the AUR: https://aur.archlinux.org/packages.php?ID=35311 .<br />
<br />
This method is based on a proposed fix posted on https://bugs.freedesktop.org/show_bug.cgi?id=45452, which apparently works for the UX31A/UX32VD too. <br />
The cause why the brightness buttons don't work is exactly the same as in the bugreport.<br />
<br />
As root, create the file {{ic|/usr/local/share/backlightfix}}:<br />
This script is posted here: https://bbs.archlinux.org/viewtopic.php?pid=1156051#p1156051<br />
#!/bin/bash <br />
# <br />
# Asus UX32VD acpi backlight fix <br />
# <br />
# Copyright(C) 2012 Eugen Dahm <eugen.dahm@gmail.com>. <br />
# <br />
# fix is based on a proposed bugfix posted on <[url]https://bugs.freedesktop.org/show_bug.cgi?id=45452[/url]> <br />
# <br />
# This program is free software; you can redistribute it and/or modify <br />
# it under the terms of the GNU General Public License as published by <br />
# the Free Software Foundation; either version 2 of the License, or <br />
# (at your option) any later version. <br />
# <br />
# This program is distributed in the hope that it will be useful, <br />
# but WITHOUT ANY WARRANTY; without even the implied warranty of <br />
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the <br />
# GNU General Public License for more details. <br />
# <br />
# You should have received a copy of the GNU General Public License <br />
# along with this program; if not, write to the Free Software <br />
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA <br />
# <br />
# Asus UX32VD acpi backlight fix <br />
# Disclaimer!!!! not recommended to use if laptop is not the Asus UX32VD\ <br />
# probably works with other models too, but the didl and cadl offset needs to be extracted <br />
# from the dsdt <br />
# Tested with bios 2.06 <br />
# IGDM_BASE has to be determined for each notebook <br />
# IGDM is the operation region (\_SB_.PCI0.GFX0.IGDM) containing the CADL/DIDL fields <br />
# \aslb is a named field containing the base-address of the IGDM region <br />
# this address depends on the installed ram <br />
# how to get the address: <br />
# - git clone git://github.com/Bumblebee-Project/acpi_call.git <br />
# - make <br />
# - load module with insmod or copy to /lib/modules/.... and modprobe <br />
# - echo '\aslb' > /proc/acpi/call <br />
# - cat /proc/acpi/call <br />
# - this is the IGDM base address - fill in below <br />
IGDM_BASE=0xBE8B7018<br />
DIDL_OFFSET=0x120<br />
CADL_OFFSET=0x160<br />
# this basically copies the values of the initialized fields DIDL-DDL8 in the IGDM opregion and initializes CADL-CAL8 with it <br />
# CADL-CAL8 are fields, telling the bios that a screen or something is connected (this is a bit speculation - check <br />
# <[url]https://bugs.freedesktop.org/show_bug.cgi?id=45452[/url]> for more <br />
# if interested, disasselbe the dsdt to understand, why no notifyevent gets thrown, when CADL isn't initialized <br />
# (hint: _Q0E/_Q0F are the backlight methods on the UX32VD) <br />
dd if=/dev/mem skip=$(( $IGDM_BASE + $DIDL_OFFSET )) count=32 bs=1 | xxd | xxd -r | dd of=/dev/mem bs=1 seek=$(( $IGDM_BASE + $CADL_OFFSET )) count=32 <br />
<br />
This script still needs to be adjusted to your notebook configuration (it uses a memory address which strongly depends on the amount of installed system memory.<br />
<br />
The exact address can be determined with following steps:<br />
<br />
# git clone git://github.com/Bumblebee-Project/acpi_call.git <br />
# cd acpi_call <br />
# make <br />
# gzip acpi_call.ko <br />
# load module acpi_call.ko.gz with insmod or copy to /lib/modules/.... and modprobe <br />
# echo '\aslb' > /proc/acpi/call <br />
# cat /proc/acpi/call <br />
# this is the IGDM base address - initialize the IGDM_BASE variable with this value in the script<br />
<br />
Initialize your bios with this script on boot :<br />
# echo "/usr/local/share/backlightfix" >> /etc/rc.local<br />
<br />
Execute the script and hope the backlight buttons work afterwards. If they don't you probably have to disasselbe the dsdt for yourself, because you have to adjust the following 2 variables in the script:<br />
DIDL_OFFSET=0x120<br />
CADL_OFFSET=0x160<br />
<br />
These are the offsets on the Asus UX32VD bios version 2.06. Try google to find a tutorial how to disassemble the dsdt.<br />
<br />
===== Getting the DIDL and CADL offsets =====<br />
<br />
Now comes the funny part: <br />
<br />
# open your disassembled dsdt. The should have the filename dsdt.dsl.<br />
# find the operationregion IGBM. It should have a Field statement below, and probably looks something like this:<br />
OperationRegion (IGDM, SystemMemory, ASLB, 0x2000)<br />
Field (IGDM, AnyAcc, NoLock, Preserve)<br />
{<br />
SIGN, 128, <br />
SIZE, 32, <br />
OVER, 32, <br />
...<br />
This specifies some variables in this IGDM field (for me, they look similar to a c struct, except that you don't need to give the size of each element in a struct).<br />
The numbers are the size for each element in bit. <br />
<br />
You must add those field sizes until you reach the DIDL variable. With the UX32VD the DIDL offset is easy, because of this statement:<br />
..<br />
Offset (0x120), <br />
DIDL, 32,<br />
..<br />
Don't know exactly why they use the Offset statement, since this is somewhat redundant. It tells you that the following element has the offset 0x120.<br />
<br />
Since I thought it is obvious what this statement does, I didn't bother to look it up in the dsl language specification. I thought it tells the bios that the following<br />
variable starts with an offset of 0x120 bytes relative to the previous element, but I was wrong. It basically tells you/bios that the following variable starts with an <br />
offset of 0x120 relative to the beginning of the opregion (in this case its completely unnecessary).<br />
<br />
Now the only thing left is the CADL offset. Add the numbers starting from DIDL until you reach CADL and add it to your previous offset. This should be the 2nd needed offset.<br />
<br />
After updating both offset variables in the script and executing it again, the backlight should now work (no guarantee).<br />
<br />
=== Keyboard backlight ===<br />
Install {{AUR|asus-kbd-backlight}} from AUR. To allow users to change the brightness, say:<br />
<br />
# asus-kbd-backlight allowusers<br />
<br />
If you use [[initscripts]], put this into your {{ic|/etc/rc.local}}:<br />
<br />
# echo "asus-kbd-backlight allowusers" >> /etc/rc.local<br />
<br />
Users of [[systemd]] can use the unit file included in the package.<br />
<br />
# systemctl daemon-reload<br />
# systemctl start asus-kbd-backlight.service<br />
# systemctl enable asus-kbd-backlight.service<br />
<br />
Now you can easily change keyboard backlight in terminal:<br />
<br />
$ asus-kbd-backlight up<br />
$ asus-kbd-backlight down<br />
$ asus-kbd-backlight max<br />
$ asus-kbd-backlight off<br />
$ asus-kbd-backlight night<br />
$ asus-kbd-backlight 2<br />
$ asus-kbd-backlight show<br />
<br />
And finally, add some convenient keyboard shortcuts [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]].<br />
<br />
==== UPower Script ====<br />
<br />
Upower allows control of the keyboard backlight as an ordinary user. Use of these scripts requires installation of dbus, upower and if you want the OSD notifications, libnotify.<br />
<br />
This script increases the keyboard brightness and provides onscreen notification of the current brightness:<br />
<br />
#! /bin/bash<br />
# get current keyboard brightness from UPower<br />
current_state=$(dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.GetBrightness)<br />
# strip leading 9 characters " int32 "<br />
current_state=${current_state:9}<br />
# get maximum keyboard brightness from UPower<br />
max_brightness=$(dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.GetMaxBrightness)<br />
# strip leading 9 characters " int32 "<br />
max_brightness=${max_brightness:9}<br />
# if the current keyboard brightness is less than max, increment brightness by one<br />
if [ $current_state -lt $max_brightness ] ; then <br />
dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.SetBrightness \<br />
int32:$((current_state+1))<br />
notify-send "Keyboard brightness reset to $((current_state+1))"<br />
else<br />
# if the keyboard brightness is already at maximum, complain<br />
notify-send "Keyboard brightness already at maximum"<br />
fi<br />
<br />
This script decreases the keyboard brightness and provides onscreen notification of the current brightness:<br />
<br />
#! /bin/bash<br />
# get current keyboard brightness from UPower<br />
current_state=$(dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.GetBrightness)<br />
# strip leading 9 characters " int32 "<br />
current_state=${current_state:9}<br />
min_brightness=0<br />
# if the current keyboard brightness is greater than zero, decrement brightness by one<br />
if [ $current_state -gt $min_brightness ] ; then <br />
dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.SetBrightness \<br />
int32:$((current_state-1))<br />
notify-send "Keyboard brightness reset to $((current_state-1))"<br />
else<br />
# if the keyboard brightness is already at zero, complain<br />
notify-send "Keyboard brightness already at zero"<br />
fi<br />
<br />
==== Automatic Backlight Control ====<br />
This C program will automatically turn off the backlight after a given idle time, and turn it on proportionally to the screen brightness. Written for Asus N56DP but will probably work here as well. Please email me if not. Note that you must run it as root, or if using some other user, give that user write permission to the backlight brightness file. This program works in plain tty mode as well as in X, but if you're using X you must start the X server first before starting this program, otherwise the X server will hang.<br />
[[User:Hyc|Hyc]] ([[User talk:Hyc|talk]]) 13:24, 16 January 2013 (UTC)<br />
/* Author: Howard Chu <hyc@symas.com> 2013-01-15<br />
*<br />
* monitor keyboard activity and toggle keyboard backlight<br />
* for Asus laptops. Tested on Asus N56DP.<br />
*/<br />
#include <sys/types.h><br />
#include <sys/stat.h><br />
#include <fcntl.h><br />
#include <poll.h><br />
<br />
static char dummybuf[8192];<br />
<br />
/** @brief How many milliseconds before turning off kbd light */<br />
#ifndef IDLE_MSEC<br />
#define IDLE_MSEC 7000<br />
#endif<br />
<br />
int main(int argc, char *argv[])<br />
{<br />
struct pollfd pfd;<br />
int rc, blfd, scfd;<br />
int brt, timeout, prev = -1;<br />
char bm[2] = "0\n";<br />
<br />
scfd = open("/sys/class/backlight/acpi_video0/brightness", O_RDONLY);<br />
blfd = open("/sys/class/leds/asus::kbd_backlight/brightness", O_WRONLY);<br />
pfd.fd = open("/dev/input/by-path/platform-i8042-serio-0-event-kbd", O_RDONLY);<br />
pfd.events = POLLIN;<br />
<br />
timeout = IDLE_MSEC;<br />
while (1) {<br />
rc = poll(&pfd, 1, timeout);<br />
/* Kbd brightness ranges from 0 to 3.<br />
* Screen brightness ranges from 1 to 10.<br />
* Make the keyboard brightness<br />
* depend on the screen brightness.<br />
*<br />
* Assume 10 means working in a bright room.<br />
* In that case, leave the kbd light off.<br />
* map screen 1-9 to kbd 1-3.<br />
*/<br />
if (rc) {<br />
/* got keyboard input, flush it all and<br />
* wait for the next event. Also check<br />
* the screen brightness and set the kbd<br />
* backlight accordingly.<br />
*/<br />
read(pfd.fd, dummybuf, sizeof(dummybuf));<br />
timeout = IDLE_MSEC;<br />
read(scfd, dummybuf, sizeof(dummybuf));<br />
lseek(scfd, 0, SEEK_SET);<br />
brt = atoi(dummybuf);<br />
if (brt == 10) {<br />
brt = 0;<br />
} else {<br />
brt = (brt + 2) / 3;<br />
}<br />
} else {<br />
/* once we've gotten a timeout, turn off<br />
* kbd backlight and wait forever for<br />
* the next keypress<br />
*/<br />
timeout = -1;<br />
brt = 0;<br />
}<br />
if (brt == prev)<br />
continue;<br />
bm[0] = brt + '0';<br />
write(blfd, bm, 2);<br />
lseek(blfd, 0, SEEK_SET);<br />
prev = brt;<br />
}<br />
}<br />
<br />
== Solid State Drive ==<br />
Check [[Solid_State_Drives]]<br />
<br />
== Touchpad ==<br />
[[Touchpad_Synaptics#Buttonless_TouchPads_.28aka_ClickPads.29| Instructions to activate the right button]].<br />
(As an alternative you cant try [http://ubuntuforums.org/showpost.php?p=12110689&postcount=73 This]).<br />
<br />
Multifinger taps work out of the box.<br />
{{Tip|Multifinger taps: Two finger for middle click; three fingers for right click.}}<br />
<br />
=== Multitouch gestures ===<br />
To enable multitouch gestures like those under Windows, one can install {{AUR|touchegg}} from the AUR. Using {{ic|touchegg}} will require disabling some input-handling that is done by the synaptics input driver. Edit your {{ic|/etc/X11/xorg.conf.d/10-synaptics.conf}}<br />
<br />
Section "InputClass"<br />
Identifier "touchpad catchall"<br />
Driver "synaptics"<br />
MatchIsTouchpad "on"<br />
MatchDevicePath "/dev/input/event*"<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "0"<br />
Option "TapButton3" "0"<br />
Option "ClickFinger2" "0"<br />
Option "ClickFinger3" "0"<br />
Option "HorizTwoFingerScroll" "0"<br />
Option "VertTwoFingerScroll" "0"<br />
Option "ClickPad" "true"<br />
Option "EmulateMidButtonTime" "0"<br />
Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"<br />
EndSection<br />
<br />
An alternative to X.org configuration files is to use the {{ic|synclient}} command within the {{ic|.xinitrc}} script. This method will limit changes to your desktop environment.<br />
<br />
synclient TapButton2=0 TapButton3=0 ClickFinger2=0 ClickFinger3=0 HorizTwoFingerScroll=0 VertTwoFingerScroll=0<br />
<br />
{{ic|touchegg}} will need to be autostarted for multitouch gestures to be activated. This can be done with {{ic|touchegg &}} in your {{ic|.xinitrc}}, or using the autostart/startup applications functionality of your desktop environment. {{ic|~/.config/touchegg/touchegg.conf}} can then be configured as necessary.<br />
<br />
=== Multitouch gestures in Gnome 3 ===<br />
gnome-shell in Gnome 3 does its own mouse handling which can interfere with the settings above unless the appropriate plugin is disabled. The plugin handler can be disabled with<br />
<br />
gsettings set org.gnome.settings-daemon.plugins.mouse active false<br />
<br />
Note that this will make any changes made in the Mouse & Touchpad control panel applet in System Settings ineffectual.<br />
<br />
=== Disable Touchpad While Typing ===<br />
<br />
One of the criticisms this laptop gets (see reviews at Amazon) is that the placement of the touchpad results in frequent touchpad brushing during typing. You should use whatever touchpad disabling method you prefer. See [[ Touchpad_Synaptics#Disable_Trackpad_while_Typing ]].<br />
<br />
== HDMI plugged at boot ==<br />
<br />
There seems to be an issue whereby having an HDMI device plugged in at boot results in the screens being switched and also the laptop screen not coming on. To make this more bearable you can automate switching HDMI on with the following udev rule and script:<br />
<br />
<br />
<br />
Add the following script as root:<br />
{{hc|/usr/local/share/hdmi-plugged-startup|#!/bin/bash<br />
<br />
export XAUTHORITY&#61;/home/$USER/.Xauthority<br />
export DISPLAY&#61;:0<br />
<br />
/usr/bin/xrandr -display :0 --output eDP1 --auto --output HDMI1 --auto --above eDP1}}<br />
<br />
then make it executable<br />
# chmod +x /usr/local/share/hdmi-plugged-startup<br />
<br />
And add the following udev rule:<br />
# echo 'ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/share/hdmi-plugged-startup"' >> /etc/udev/rules.d/10-local.rules<br />
<br />
== Powersave management ==<br />
For automatic powersaving when on battery configure [[Laptop_Mode_Tools]]. For manual power saving see [[Power saving]]<br />
<br />
==Hardware and Modules==<br />
<br />
====PCI====<br />
<br />
This is output of lspci -nnn -k<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Description !! PCI Id !! Module<br />
|-<br />
| Intel Corporation 3rd Gen Core processor DRAM Controller || 8086:0154 || none<br />
|-<br />
| Intel Corporation 3rd Gen Core processor Graphics Controller || 8086:0166 || i915 <br />
|-<br />
| Intel Corporation Device || 8086:0153 || none<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller || 8086:1e31 || xhci_hcd<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 || 8086:1e3a || mei<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 || 8086:1e2d || ehci_hcd<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller || 8086:1e20 || snd_hda_intel<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 || 8086:1e10 || pcieport<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 || 8086:1e12 || pcieport<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1|| 8086:1e26 || ehci_hcd<br />
|-<br />
| Intel Corporation HM76 Express Chipset LPC Controller || 8086:1e59 || lpc_ich<br />
|-<br />
| Intel Corporation 7 Series Chipset Family 6-port SATA Controller || 8086:1e03 || ahci<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller || 8086:1e22] || none<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family Thermal Management Controller || 8086:1e24 || none<br />
|-<br />
| Intel Corporation Centrino Advanced-N 6235 || 8086:088e || iwlwifi<br />
|}<br />
<br />
====Other Devices and Drivers====<br />
<br />
=====mei=====<br />
<br />
PCE device 8086:1e3a, the Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 and the associated device "/dev/mei" (10,59) relating to an Intel-specific hardware monitoring technology called "Advanced Management Technology". <br />
<br />
The MEI driver speaks to or through the "Local Manageability Service" or LMS. The LMS driver is available here. Note that with GCC 4.7.2-2, the driver will refuse to compile. I was able to convince it to compile by:<br />
*adding "#include <unistd.h>" to src/tools/ATVersion.cpp<br />
*adding "#include <stdio.h>" to src/tools/ATNetworkTool.cpp<br />
<br />
It then installs the driver file lms in /usr/local/sbin and the init.d-type daemon file lms in /etc/init.d/.<br />
<br />
=====rdrand=====<br />
<br />
The i7 Core CPU has an on-chip random number generator, rdrand, code named "Bull Mountain". It appears that since 3.2, this is used as a source for /dev/urandom. It is also used as a randomness source by rng-tools version 4.<br />
<br />
In contrast to other hardware random number generators, rdrand does not create a character device in /dev. However, rngd version 4 does appear to detect and use it.<br />
<br />
First, make sure rngd sees it:<br />
<br />
[root@asarum system]# rngd -v --no-tpm=1<br />
Available entropy sources:<br />
DRNG<br />
<br />
Second, start rngd:<br />
<br />
[root@asarum log]# rngd -f --no-tpm=1<br />
<br />
The options for rngd.service are found in /etc/conf.d/rngd. I modified the file as follows:<br />
<br />
# RNGD_OPTS="-o /dev/random -r /dev/urandom"<br />
RNGD_OPTS=" -o /dev/random --no-tpm=1"<br />
<br />
Test:<br />
<br />
[root@asarum system]# cat /dev/random | rngtest -c 1000<br />
rngtest 4<br />
Copyright (c) 2004 by Henrique de Moraes Holschuh<br />
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.<br />
<br />
rngtest: starting FIPS tests...<br />
rngtest: bits received from input: 20000032<br />
rngtest: FIPS 140-2 successes: 1000<br />
rngtest: FIPS 140-2 failures: 0<br />
rngtest: FIPS 140-2(2001-10-10) Monobit: 0<br />
rngtest: FIPS 140-2(2001-10-10) Poker: 0<br />
rngtest: FIPS 140-2(2001-10-10) Runs: 0<br />
rngtest: FIPS 140-2(2001-10-10) Long run: 0<br />
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0<br />
rngtest: input channel speed: (min=891.472; avg=2161.828; max=2788.585)Kibits/s<br />
rngtest: FIPS tests speed: (min=28.682; avg=47.816; max=146.719)Mibits/s<br />
rngtest: Program run time: 9434482 microseconds<br />
<br />
=====watchdog=====<br />
<br />
The chipset also has an hardware watchdog:<br />
<br />
root@asarum chris]# wdctl<br />
Device: /dev/watchdog<br />
Identity: iTCO_wdt [version 0]<br />
Timeout: 30 seconds<br />
Timeleft: 2 seconds<br />
FLAG DESCRIPTION STATUS BOOT-STATUS<br />
KEEPALIVEPING Keep alive ping reply 0 0<br />
MAGICCLOSE Supports magic close char 0 0<br />
SETTIMEOUT Set timeout (in seconds) 0 0<br />
<br />
Activating the watchdog under systemd is trivial, as systemd author Lennart Poettering explains in [http://0pointer.de/blog/projects/watchdog.html this blog post].<br />
<br />
All you do is go into /etc/systemd/system.conf, uncomment the RuntimeWatchdogSec=0 line and change zero to how long the watchdog should go without receiving a ping before it reboots the system. I used 30s, which is the default setting for iTCO_wdt and seemed sane.<br />
<br />
#RuntimeWatchdogSec=0<br />
RuntimeWatchdogSec=30<br />
<br />
Check after next boot:<br />
<br />
[root@asarum chris]# journalctl | grep -i watchdog<br />
Oct 06 06:36:27 asarum kernel: iTCO_wdt: Intel TCO WatchDog Timer Driver v1.10<br />
Oct 06 06:36:27 asarum systemd[1]: Hardware watchdog 'iTCO_wdt', version 0<br />
Oct 06 06:36:27 asarum systemd[1]: Set hardware watchdog to 30s.<br />
<br />
====Issue with ACPI and gpio_ich====<br />
<br />
The gpio_ich module causes the following error:<br />
<br />
ACPI Warning: 0x0000000000000428-0x000000000000042f SystemIO conflicts with Region \PMIO 2 (20120711/utaddress-251)<br />
ACPI Warning: 0x0000000000000500-0x000000000000053f SystemIO conflicts with Region \GPIO 1 (20120711/utaddress-251)<br />
ACPI Warning: 0x0000000000000500-0x000000000000053f SystemIO conflicts with Region \GP01 2 (20120711/utaddress-251)<br />
lpc_ich: Resource conflict(s) found affecting gpio_ich<br />
ACPI Warning: 0x000000000000f040-0x000000000000f05f SystemIO conflicts with Region \SMB0 1 (20120711/utaddress-251)<br />
ACPI Warning: 0x000000000000f040-0x000000000000f05f SystemIO conflicts with Region \_SB_.PCI0.SBUS.SMBI 2 (20120711/utaddress-251)<br />
<br />
In this case an lsmod shows that the gpio_ich module doesn't wind up being loaded <br />
<br />
# lsmod | grep gpio<br />
# <br />
<br />
I then rebooted with apci_enforce_resources=lax. A cat /proc/ioports showed the conflict:<br />
<br />
0420-042f : ACPI GPE0_BLK<br />
0428-042f : gpio_ich<br />
<br />
and<br />
<br />
0500-057f : pnp 00:05<br />
0500-053f : gpio_ich<br />
<br />
In contrast, here's the same lines without acpi_enforce_resources=lax:<br />
<br />
0420-042f : ACPI GPE0_BLK<br />
<br />
and<br />
<br />
0500-057f : pnp 00:05<br />
<br />
So, net/net, there's no real issue.<br />
<br />
====Issue with USB and Laptop_Mode_Tools====<br />
<br />
USB mouse problems and hotplug does not working in some cases with messages in dmesg like:<br />
<br />
xhci_hcd 0000:00:14.0: setting latency timer to 64<br />
xhci_hcd 0000:00:14.0: WARN Event TRB for slot 1 ep 0 with no TDs queued?<br />
<br />
The solution is to set "CONTROL_USB_AUTOSUSPEND" in /etc/laptop-mode/conf.d/usb-autosuspend.conf to 1 and having a long "AUTOSUSPEND_TIMEOUT"<br />
<br />
== Random kernel panics on boot ==<br />
<br />
If Archlinux boots without any issues sometimes, but locks up with a kernel panic other times, the cause (as described by Whef in this thread: https://bbs.archlinux.org/viewtopic.php?pid=1169781#p1169781) is likely the 'btusb' module.<br />
<br />
To fix the issue, blacklist the 'btusb' module on the next boot by running:<br />
<br />
sudo echo "blacklist btusb" > /etc/modprobe.d/disable_btusb.conf<br />
<br />
Then use rc.local to load it at the end of the boot process by running:<br />
<br />
sudo echo "modprobe btusb" >> /etc/rc.local<br />
<br />
This appears to avoid whatever race condition conflict that causes the kernel to panic on boot, but if you're still having the same issue, try removing 'modprobe btusb' from /etc/rc.local to avoid the module completely.<br />
<br />
==BIOS Version Issues==<br />
<br />
It seems that updating the BIOS to versions 215 and higher causes issues with ACPI handling of the battery charge levels. In particular it seems that one cannot charge the battery beyond 91%-93%. The issue does not seem to be present in Windows however. For further details please see the forum thread [https://bbs.archlinux.org/viewtopic.php?pid=1211033#p1211033 here]. The most up to date BIOS version without any issues is 212. Unless it's absolutely necessary, refrain from updating your BIOS.<br />
<br />
==See also==<br />
*[[Power saving]]<br />
<br />
== Additional resources ==<br />
*https://help.ubuntu.com/community/AsusZenbookPrime<br />
*http://ubuntuforums.org/showthread.php?t=2005999<br />
*[[ Wikipedia Zenbook#UX32.2C_UX42_and_UX52 ]]</div>Jmerthttps://wiki.archlinux.org/index.php?title=ASUS_Zenbook_Prime_UX31A&diff=254733ASUS Zenbook Prime UX31A2013-04-21T02:41:07Z<p>Jmert: /* Multitouch gestures */</p>
<hr />
<div>{{poor writing|reason=This should '''only''' have information specific to the hardware. Other content should not be duplicated here.}}<br />
[[Category:ASUS]]<br />
This page contains instructions, tips, pointers, and links for installing and configuring Arch Linux on the ASUS Zenbook UX31A and UX21A Ultrabooks. Most of it should also hold for UX32VD.<br />
<br />
See previous generation [[ASUS Zenbook UX31E]] page that has mostly orthogonal information to those here (may be only partially applicable to UX31A)<br />
<br />
== Installation ==<br />
To install Arch Linux on UX31A, you can follow the official [[Installation_Guide]]. Since the UX31A uses UEFI and GPT, make sure to also read the [[UEFI]], [[GPT]] and [[UEFI_Bootloaders]] pages. It is recommended to use [[GRUB]] as a bootloader. To prepare an UEFI USB device, read [[UEFI#Create_UEFI_bootable_USB_from_ISO]].<br />
<br />
=== Boot from USB medium ===<br />
Press {{keypress|Escape}} to get into the boot menu. If the USB bootable device is not listed, enter the configuration menu and directly press {{keypress|F10}} to save. Press {{keypress|Escape}} again on reboot: This time the USB bootable device should appear in the menu.<br />
<br />
Select 'Boot Arch Linux (x86_64)" and press {{keypress|Enter}}. The installation system will be booted and you will end up with a terminal.<br />
<br />
== Kernel Parameters ==<br />
These kernel parameters offer some speed optimizations and longer battery life. It is recommended to enable them. To add kernel paramaters to GRUB2 you have to edit {{ic|/etc/default/grub}} and add them to the GRUB_CMDLINE_LINUX_DEFAULT line.<br />
<br />
{{ic|1=add_efi_memmap i915.i915_enable_rc6=1 pcie_aspm=force drm.vblankoffdelay=1 i915.semaphores=1}}<br />
<br />
== Function keys ==<br />
<br />
{{note | A working keymap means that there is some output in {{ic|xev}} when the key combination is pressed OR that the functionality is built in and "just works". It does not means that the keymap is linked to the functionality. For that it is often necessary to add a keyboard shortcut [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]] or to use a desktop shell with built-in shortcut support for the keycode in question. For some of the keys the function operates on a BIOS level and no shortcut is needed.}}<br />
<br />
This table shows the function keys, their intended function, what keycode (if any) X recognizes and whether the function key operates at the BIOS level or if it needs a shortcut.<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Keys!! Function !! X sees !! shortcut needed <br />
|-<br />
| {{keypress|Fn+F1}} || Sleep || XF86Sleep || no <br />
|-<br />
| {{keypress|Fn+F2}} || Turn off WLAN and Bluetooth || XF86WLAN & XF86Bluetooth || no<br />
|-<br />
| {{keypress|Fn+F3}} || Dim keyboard backlight || XF86KbdBrightnessDown || yes<br />
|-<br />
| {{keypress|Fn+F4}} || Brighten keyboard backlight || XF86KbdBrightnessUp || yes<br />
|-<br />
| {{keypress|Fn+F5}} || Dim LCD backlight || No recognized key || no<br />
|-<br />
| {{keypress|Fn+F6}} || Brighten LCD backlight || No recognized key || no<br />
|-<br />
| {{keypress|Fn+F7}} || Turn off LCD || No named key || no<br />
|-<br />
| {{keypress|Fn+F8}} || Toggle display || XF86Display || yes<br />
|-<br />
| {{keypress|Fn+F9}} || Toggle touchpad || XF86TouchpadToggle || yes<br />
|-<br />
| {{keypress|Fn+F10}} || Audio mute/unmute || XF86AudioMute|| yes<br />
|-<br />
| {{keypress|Fn+F11}} || Audio volume down || XF86AudioLowerVolume || yes<br />
|-<br />
| {{keypress|Fn+F12}} || Audio volume up || XF86AudioRaiseVolume || yes<br />
|-<br />
| {{keypress|Fn+a}} || Ambient light sensor || No recognized key ||N/A<br />
|-<br />
| {{keypress|Fn+c}} || Switch display profiles || XF86Launch1 || yes<br />
|-<br />
| {{keypress|Fn+v}} || Webcam || XF86WebCam || yes<br />
|-<br />
| {{keypress|Fn+space}} || Switch power profiles || XF86Launch6 || yes<br />
|}<br />
<br />
=== Screen backlight ===<br />
{{note | Since kernel 3.7.3 screen brightness keys are working out of the box (with boot parameter acpi_osi&#61;"!Windows 2012" - depending on the bootloader, it might be necessary to escape the doublequotes.), so this section is legacy and will soon be moved }}<br />
<br />
Screen Brightness keymaps ({{keypress|Fn+F5}}, {{keypress|Fn+F6}}) does not work. It means the system does not get any keymap when the key combination is pressed. You get two options here :<br />
* try to fix the problem<br />
* work around the problem and just use a different key combination<br />
<br />
The lazy option first:<br />
==== Screen backlight workarounds ====<br />
===== Method 1 =====<br />
Install <code>xorg-xbacklight</code> <br />
<br />
You can add some convenient keyboard shortcuts [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]].<br />
===== Method 2 =====<br />
Install {{AUR|asus-screen-brightness}} from AUR. To allow users to change the brightness, say:<br />
<br />
# asus-screen-brightness allowusers<br />
<br />
If you use [[initscripts]], put this into your {{ic|/etc/rc.local}}:<br />
<br />
# echo "asus-screen-brightness allowusers" >> /etc/rc.local<br />
<br />
Users of [[systemd]] can use the unit file included in the package.<br />
<br />
# systemctl daemon-reload<br />
# systemctl start asus-screen-brightness.service<br />
# systemctl enable asus-screen-brightness.service<br />
<br />
Adding to {{ic|.zshrc}} or {{ic|.bashrc}} :<br />
alias -g "backlight"="/bin/bash /usr/bin/asus-screen-brightness"<br />
allows to easy toggle backlight in terminal :<br />
$ backlight up<br />
$ backlight down<br />
$ backlight max<br />
$ backlight off<br />
$ backlight night<br />
$ backlight 2000<br />
$ backlight show<br />
<br />
And finally, add some convenient keyboard shortcuts [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]].<br />
<br />
==== Screen backlight fix ====<br />
{{note | UX31A BIOS 211 IGDM Base Address is 0xDA8A9018, UX31A BIOS 206 UGDM Base Address is 0xDA8CE018 and UX31A BIOS 204 IGDM Base Address is 0xDA8CF018, everything else is the same. }}<br />
<br />
{{warning | This is highly experimental. It works for the UX32VD with bios 2.06, no guarantee that it works for different configurations. }}<br />
First off, this method requires that you know what you are doing (although there are good tutorials anyway), and needs a little bit patience. It also requires that you have the hexidecimal dump and undump package xxd available in the AUR: https://aur.archlinux.org/packages.php?ID=35311 .<br />
<br />
This method is based on a proposed fix posted on https://bugs.freedesktop.org/show_bug.cgi?id=45452, which apparently works for the UX31A/UX32VD too. <br />
The cause why the brightness buttons don't work is exactly the same as in the bugreport.<br />
<br />
As root, create the file {{ic|/usr/local/share/backlightfix}}:<br />
This script is posted here: https://bbs.archlinux.org/viewtopic.php?pid=1156051#p1156051<br />
#!/bin/bash <br />
# <br />
# Asus UX32VD acpi backlight fix <br />
# <br />
# Copyright(C) 2012 Eugen Dahm <eugen.dahm@gmail.com>. <br />
# <br />
# fix is based on a proposed bugfix posted on <[url]https://bugs.freedesktop.org/show_bug.cgi?id=45452[/url]> <br />
# <br />
# This program is free software; you can redistribute it and/or modify <br />
# it under the terms of the GNU General Public License as published by <br />
# the Free Software Foundation; either version 2 of the License, or <br />
# (at your option) any later version. <br />
# <br />
# This program is distributed in the hope that it will be useful, <br />
# but WITHOUT ANY WARRANTY; without even the implied warranty of <br />
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the <br />
# GNU General Public License for more details. <br />
# <br />
# You should have received a copy of the GNU General Public License <br />
# along with this program; if not, write to the Free Software <br />
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA <br />
# <br />
# Asus UX32VD acpi backlight fix <br />
# Disclaimer!!!! not recommended to use if laptop is not the Asus UX32VD\ <br />
# probably works with other models too, but the didl and cadl offset needs to be extracted <br />
# from the dsdt <br />
# Tested with bios 2.06 <br />
# IGDM_BASE has to be determined for each notebook <br />
# IGDM is the operation region (\_SB_.PCI0.GFX0.IGDM) containing the CADL/DIDL fields <br />
# \aslb is a named field containing the base-address of the IGDM region <br />
# this address depends on the installed ram <br />
# how to get the address: <br />
# - git clone git://github.com/Bumblebee-Project/acpi_call.git <br />
# - make <br />
# - load module with insmod or copy to /lib/modules/.... and modprobe <br />
# - echo '\aslb' > /proc/acpi/call <br />
# - cat /proc/acpi/call <br />
# - this is the IGDM base address - fill in below <br />
IGDM_BASE=0xBE8B7018<br />
DIDL_OFFSET=0x120<br />
CADL_OFFSET=0x160<br />
# this basically copies the values of the initialized fields DIDL-DDL8 in the IGDM opregion and initializes CADL-CAL8 with it <br />
# CADL-CAL8 are fields, telling the bios that a screen or something is connected (this is a bit speculation - check <br />
# <[url]https://bugs.freedesktop.org/show_bug.cgi?id=45452[/url]> for more <br />
# if interested, disasselbe the dsdt to understand, why no notifyevent gets thrown, when CADL isn't initialized <br />
# (hint: _Q0E/_Q0F are the backlight methods on the UX32VD) <br />
dd if=/dev/mem skip=$(( $IGDM_BASE + $DIDL_OFFSET )) count=32 bs=1 | xxd | xxd -r | dd of=/dev/mem bs=1 seek=$(( $IGDM_BASE + $CADL_OFFSET )) count=32 <br />
<br />
This script still needs to be adjusted to your notebook configuration (it uses a memory address which strongly depends on the amount of installed system memory.<br />
<br />
The exact address can be determined with following steps:<br />
<br />
# git clone git://github.com/Bumblebee-Project/acpi_call.git <br />
# cd acpi_call <br />
# make <br />
# gzip acpi_call.ko <br />
# load module acpi_call.ko.gz with insmod or copy to /lib/modules/.... and modprobe <br />
# echo '\aslb' > /proc/acpi/call <br />
# cat /proc/acpi/call <br />
# this is the IGDM base address - initialize the IGDM_BASE variable with this value in the script<br />
<br />
Initialize your bios with this script on boot :<br />
# echo "/usr/local/share/backlightfix" >> /etc/rc.local<br />
<br />
Execute the script and hope the backlight buttons work afterwards. If they don't you probably have to disasselbe the dsdt for yourself, because you have to adjust the following 2 variables in the script:<br />
DIDL_OFFSET=0x120<br />
CADL_OFFSET=0x160<br />
<br />
These are the offsets on the Asus UX32VD bios version 2.06. Try google to find a tutorial how to disassemble the dsdt.<br />
<br />
===== Getting the DIDL and CADL offsets =====<br />
<br />
Now comes the funny part: <br />
<br />
# open your disassembled dsdt. The should have the filename dsdt.dsl.<br />
# find the operationregion IGBM. It should have a Field statement below, and probably looks something like this:<br />
OperationRegion (IGDM, SystemMemory, ASLB, 0x2000)<br />
Field (IGDM, AnyAcc, NoLock, Preserve)<br />
{<br />
SIGN, 128, <br />
SIZE, 32, <br />
OVER, 32, <br />
...<br />
This specifies some variables in this IGDM field (for me, they look similar to a c struct, except that you don't need to give the size of each element in a struct).<br />
The numbers are the size for each element in bit. <br />
<br />
You must add those field sizes until you reach the DIDL variable. With the UX32VD the DIDL offset is easy, because of this statement:<br />
..<br />
Offset (0x120), <br />
DIDL, 32,<br />
..<br />
Don't know exactly why they use the Offset statement, since this is somewhat redundant. It tells you that the following element has the offset 0x120.<br />
<br />
Since I thought it is obvious what this statement does, I didn't bother to look it up in the dsl language specification. I thought it tells the bios that the following<br />
variable starts with an offset of 0x120 bytes relative to the previous element, but I was wrong. It basically tells you/bios that the following variable starts with an <br />
offset of 0x120 relative to the beginning of the opregion (in this case its completely unnecessary).<br />
<br />
Now the only thing left is the CADL offset. Add the numbers starting from DIDL until you reach CADL and add it to your previous offset. This should be the 2nd needed offset.<br />
<br />
After updating both offset variables in the script and executing it again, the backlight should now work (no guarantee).<br />
<br />
=== Keyboard backlight ===<br />
Install {{AUR|asus-kbd-backlight}} from AUR. To allow users to change the brightness, say:<br />
<br />
# asus-kbd-backlight allowusers<br />
<br />
If you use [[initscripts]], put this into your {{ic|/etc/rc.local}}:<br />
<br />
# echo "asus-kbd-backlight allowusers" >> /etc/rc.local<br />
<br />
Users of [[systemd]] can use the unit file included in the package.<br />
<br />
# systemctl daemon-reload<br />
# systemctl start asus-kbd-backlight.service<br />
# systemctl enable asus-kbd-backlight.service<br />
<br />
Now you can easily change keyboard backlight in terminal:<br />
<br />
$ asus-kbd-backlight up<br />
$ asus-kbd-backlight down<br />
$ asus-kbd-backlight max<br />
$ asus-kbd-backlight off<br />
$ asus-kbd-backlight night<br />
$ asus-kbd-backlight 2<br />
$ asus-kbd-backlight show<br />
<br />
And finally, add some convenient keyboard shortcuts [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]].<br />
<br />
==== UPower Script ====<br />
<br />
Upower allows control of the keyboard backlight as an ordinary user. Use of these scripts requires installation of dbus, upower and if you want the OSD notifications, libnotify.<br />
<br />
This script increases the keyboard brightness and provides onscreen notification of the current brightness:<br />
<br />
#! /bin/bash<br />
# get current keyboard brightness from UPower<br />
current_state=$(dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.GetBrightness)<br />
# strip leading 9 characters " int32 "<br />
current_state=${current_state:9}<br />
# get maximum keyboard brightness from UPower<br />
max_brightness=$(dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.GetMaxBrightness)<br />
# strip leading 9 characters " int32 "<br />
max_brightness=${max_brightness:9}<br />
# if the current keyboard brightness is less than max, increment brightness by one<br />
if [ $current_state -lt $max_brightness ] ; then <br />
dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.SetBrightness \<br />
int32:$((current_state+1))<br />
notify-send "Keyboard brightness reset to $((current_state+1))"<br />
else<br />
# if the keyboard brightness is already at maximum, complain<br />
notify-send "Keyboard brightness already at maximum"<br />
fi<br />
<br />
This script decreases the keyboard brightness and provides onscreen notification of the current brightness:<br />
<br />
#! /bin/bash<br />
# get current keyboard brightness from UPower<br />
current_state=$(dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.GetBrightness)<br />
# strip leading 9 characters " int32 "<br />
current_state=${current_state:9}<br />
min_brightness=0<br />
# if the current keyboard brightness is greater than zero, decrement brightness by one<br />
if [ $current_state -gt $min_brightness ] ; then <br />
dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.SetBrightness \<br />
int32:$((current_state-1))<br />
notify-send "Keyboard brightness reset to $((current_state-1))"<br />
else<br />
# if the keyboard brightness is already at zero, complain<br />
notify-send "Keyboard brightness already at zero"<br />
fi<br />
<br />
==== Automatic Backlight Control ====<br />
This C program will automatically turn off the backlight after a given idle time, and turn it on proportionally to the screen brightness. Written for Asus N56DP but will probably work here as well. Please email me if not. Note that you must run it as root, or if using some other user, give that user write permission to the backlight brightness file. This program works in plain tty mode as well as in X, but if you're using X you must start the X server first before starting this program, otherwise the X server will hang.<br />
[[User:Hyc|Hyc]] ([[User talk:Hyc|talk]]) 13:24, 16 January 2013 (UTC)<br />
/* Author: Howard Chu <hyc@symas.com> 2013-01-15<br />
*<br />
* monitor keyboard activity and toggle keyboard backlight<br />
* for Asus laptops. Tested on Asus N56DP.<br />
*/<br />
#include <sys/types.h><br />
#include <sys/stat.h><br />
#include <fcntl.h><br />
#include <poll.h><br />
<br />
static char dummybuf[8192];<br />
<br />
/** @brief How many milliseconds before turning off kbd light */<br />
#ifndef IDLE_MSEC<br />
#define IDLE_MSEC 7000<br />
#endif<br />
<br />
int main(int argc, char *argv[])<br />
{<br />
struct pollfd pfd;<br />
int rc, blfd, scfd;<br />
int brt, timeout, prev = -1;<br />
char bm[2] = "0\n";<br />
<br />
scfd = open("/sys/class/backlight/acpi_video0/brightness", O_RDONLY);<br />
blfd = open("/sys/class/leds/asus::kbd_backlight/brightness", O_WRONLY);<br />
pfd.fd = open("/dev/input/by-path/platform-i8042-serio-0-event-kbd", O_RDONLY);<br />
pfd.events = POLLIN;<br />
<br />
timeout = IDLE_MSEC;<br />
while (1) {<br />
rc = poll(&pfd, 1, timeout);<br />
/* Kbd brightness ranges from 0 to 3.<br />
* Screen brightness ranges from 1 to 10.<br />
* Make the keyboard brightness<br />
* depend on the screen brightness.<br />
*<br />
* Assume 10 means working in a bright room.<br />
* In that case, leave the kbd light off.<br />
* map screen 1-9 to kbd 1-3.<br />
*/<br />
if (rc) {<br />
/* got keyboard input, flush it all and<br />
* wait for the next event. Also check<br />
* the screen brightness and set the kbd<br />
* backlight accordingly.<br />
*/<br />
read(pfd.fd, dummybuf, sizeof(dummybuf));<br />
timeout = IDLE_MSEC;<br />
read(scfd, dummybuf, sizeof(dummybuf));<br />
lseek(scfd, 0, SEEK_SET);<br />
brt = atoi(dummybuf);<br />
if (brt == 10) {<br />
brt = 0;<br />
} else {<br />
brt = (brt + 2) / 3;<br />
}<br />
} else {<br />
/* once we've gotten a timeout, turn off<br />
* kbd backlight and wait forever for<br />
* the next keypress<br />
*/<br />
timeout = -1;<br />
brt = 0;<br />
}<br />
if (brt == prev)<br />
continue;<br />
bm[0] = brt + '0';<br />
write(blfd, bm, 2);<br />
lseek(blfd, 0, SEEK_SET);<br />
prev = brt;<br />
}<br />
}<br />
<br />
== Solid State Drive ==<br />
Check [[Solid_State_Drives]]<br />
<br />
== Touchpad ==<br />
[[Touchpad_Synaptics#Buttonless_TouchPads_.28aka_ClickPads.29| Instructions to activate the right button]].<br />
(As an alternative you cant try [http://ubuntuforums.org/showpost.php?p=12110689&postcount=73 This]).<br />
<br />
Multifinger taps work out of the box.<br />
{{Tip|Multifinger taps: Two finger for middle click; three fingers for right click.}}<br />
<br />
=== Multitouch gestures ===<br />
To enable multitouch gestures like those under Windows, one can install {{AUR|touchegg}} from the AUR. Using {{ic|touchegg}} will require disabling some input-handling that is done by the synaptics input driver. Edit your {{ic|/etc/X11/xorg.conf.d/10-synaptics.conf}}<br />
<br />
Section "InputClass"<br />
Identifier "touchpad catchall"<br />
Driver "synaptics"<br />
MatchIsTouchpad "on"<br />
MatchDevicePath "/dev/input/event*"<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "0"<br />
Option "TapButton3" "0"<br />
Option "ClickFinger2" "0"<br />
Option "ClickFinger3" "0"<br />
Option "HorizTwoFingerScroll" "0"<br />
Option "VertTwoFingerScroll" "0"<br />
Option "ClickPad" "true"<br />
Option "EmulateMidButtonTime" "0"<br />
Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"<br />
EndSection<br />
<br />
An alternative to X.org configuration files is to use the {{ic|synclient}} command within the {{ic|.xinitrc}} script. This method will limit changes to your desktop environment.<br />
<br />
synclient TapButton2=0 TapButton3=0 ClickFinger2=0 ClickFinger3=0 HorizTwoFingerScroll=0 VertTwoFingerScroll=0<br />
<br />
{{ic|touchegg}} will need to be autostarted for multitouch gestures to be activated. This can be done with {{ic|touchegg &}} in your {{ic|.xinitrc||, or using the autostart/startup applications functionality of your desktop environment. {{ic|~/.config/touchegg/touchegg.conf}} can then be configured as necessary.<br />
<br />
=== Multitouch gestures in Gnome 3 ===<br />
gnome-shell in Gnome 3 does its own mouse handling which can interfere with the settings above unless the appropriate plugin is disabled. The plugin handler can be disabled with<br />
<br />
gsettings set org.gnome.settings-daemon.plugins.mouse active false<br />
<br />
Note that this will make any changes made in the Mouse & Touchpad control panel applet in System Settings ineffectual.<br />
<br />
=== Disable Touchpad While Typing ===<br />
<br />
One of the criticisms this laptop gets (see reviews at Amazon) is that the placement of the touchpad results in frequent touchpad brushing during typing. You should use whatever touchpad disabling method you prefer. See [[ Touchpad_Synaptics#Disable_Trackpad_while_Typing ]].<br />
<br />
== HDMI plugged at boot ==<br />
<br />
There seems to be an issue whereby having an HDMI device plugged in at boot results in the screens being switched and also the laptop screen not coming on. To make this more bearable you can automate switching HDMI on with the following udev rule and script:<br />
<br />
<br />
<br />
Add the following script as root:<br />
{{hc|/usr/local/share/hdmi-plugged-startup|#!/bin/bash<br />
<br />
export XAUTHORITY&#61;/home/$USER/.Xauthority<br />
export DISPLAY&#61;:0<br />
<br />
/usr/bin/xrandr -display :0 --output eDP1 --auto --output HDMI1 --auto --above eDP1}}<br />
<br />
then make it executable<br />
# chmod +x /usr/local/share/hdmi-plugged-startup<br />
<br />
And add the following udev rule:<br />
# echo 'ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/share/hdmi-plugged-startup"' >> /etc/udev/rules.d/10-local.rules<br />
<br />
== Powersave management ==<br />
For automatic powersaving when on battery configure [[Laptop_Mode_Tools]]. For manual power saving see [[Power saving]]<br />
<br />
==Hardware and Modules==<br />
<br />
====PCI====<br />
<br />
This is output of lspci -nnn -k<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Description !! PCI Id !! Module<br />
|-<br />
| Intel Corporation 3rd Gen Core processor DRAM Controller || 8086:0154 || none<br />
|-<br />
| Intel Corporation 3rd Gen Core processor Graphics Controller || 8086:0166 || i915 <br />
|-<br />
| Intel Corporation Device || 8086:0153 || none<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller || 8086:1e31 || xhci_hcd<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 || 8086:1e3a || mei<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 || 8086:1e2d || ehci_hcd<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller || 8086:1e20 || snd_hda_intel<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 || 8086:1e10 || pcieport<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 || 8086:1e12 || pcieport<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1|| 8086:1e26 || ehci_hcd<br />
|-<br />
| Intel Corporation HM76 Express Chipset LPC Controller || 8086:1e59 || lpc_ich<br />
|-<br />
| Intel Corporation 7 Series Chipset Family 6-port SATA Controller || 8086:1e03 || ahci<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller || 8086:1e22] || none<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family Thermal Management Controller || 8086:1e24 || none<br />
|-<br />
| Intel Corporation Centrino Advanced-N 6235 || 8086:088e || iwlwifi<br />
|}<br />
<br />
====Other Devices and Drivers====<br />
<br />
=====mei=====<br />
<br />
PCE device 8086:1e3a, the Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 and the associated device "/dev/mei" (10,59) relating to an Intel-specific hardware monitoring technology called "Advanced Management Technology". <br />
<br />
The MEI driver speaks to or through the "Local Manageability Service" or LMS. The LMS driver is available here. Note that with GCC 4.7.2-2, the driver will refuse to compile. I was able to convince it to compile by:<br />
*adding "#include <unistd.h>" to src/tools/ATVersion.cpp<br />
*adding "#include <stdio.h>" to src/tools/ATNetworkTool.cpp<br />
<br />
It then installs the driver file lms in /usr/local/sbin and the init.d-type daemon file lms in /etc/init.d/.<br />
<br />
=====rdrand=====<br />
<br />
The i7 Core CPU has an on-chip random number generator, rdrand, code named "Bull Mountain". It appears that since 3.2, this is used as a source for /dev/urandom. It is also used as a randomness source by rng-tools version 4.<br />
<br />
In contrast to other hardware random number generators, rdrand does not create a character device in /dev. However, rngd version 4 does appear to detect and use it.<br />
<br />
First, make sure rngd sees it:<br />
<br />
[root@asarum system]# rngd -v --no-tpm=1<br />
Available entropy sources:<br />
DRNG<br />
<br />
Second, start rngd:<br />
<br />
[root@asarum log]# rngd -f --no-tpm=1<br />
<br />
The options for rngd.service are found in /etc/conf.d/rngd. I modified the file as follows:<br />
<br />
# RNGD_OPTS="-o /dev/random -r /dev/urandom"<br />
RNGD_OPTS=" -o /dev/random --no-tpm=1"<br />
<br />
Test:<br />
<br />
[root@asarum system]# cat /dev/random | rngtest -c 1000<br />
rngtest 4<br />
Copyright (c) 2004 by Henrique de Moraes Holschuh<br />
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.<br />
<br />
rngtest: starting FIPS tests...<br />
rngtest: bits received from input: 20000032<br />
rngtest: FIPS 140-2 successes: 1000<br />
rngtest: FIPS 140-2 failures: 0<br />
rngtest: FIPS 140-2(2001-10-10) Monobit: 0<br />
rngtest: FIPS 140-2(2001-10-10) Poker: 0<br />
rngtest: FIPS 140-2(2001-10-10) Runs: 0<br />
rngtest: FIPS 140-2(2001-10-10) Long run: 0<br />
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0<br />
rngtest: input channel speed: (min=891.472; avg=2161.828; max=2788.585)Kibits/s<br />
rngtest: FIPS tests speed: (min=28.682; avg=47.816; max=146.719)Mibits/s<br />
rngtest: Program run time: 9434482 microseconds<br />
<br />
=====watchdog=====<br />
<br />
The chipset also has an hardware watchdog:<br />
<br />
root@asarum chris]# wdctl<br />
Device: /dev/watchdog<br />
Identity: iTCO_wdt [version 0]<br />
Timeout: 30 seconds<br />
Timeleft: 2 seconds<br />
FLAG DESCRIPTION STATUS BOOT-STATUS<br />
KEEPALIVEPING Keep alive ping reply 0 0<br />
MAGICCLOSE Supports magic close char 0 0<br />
SETTIMEOUT Set timeout (in seconds) 0 0<br />
<br />
Activating the watchdog under systemd is trivial, as systemd author Lennart Poettering explains in [http://0pointer.de/blog/projects/watchdog.html this blog post].<br />
<br />
All you do is go into /etc/systemd/system.conf, uncomment the RuntimeWatchdogSec=0 line and change zero to how long the watchdog should go without receiving a ping before it reboots the system. I used 30s, which is the default setting for iTCO_wdt and seemed sane.<br />
<br />
#RuntimeWatchdogSec=0<br />
RuntimeWatchdogSec=30<br />
<br />
Check after next boot:<br />
<br />
[root@asarum chris]# journalctl | grep -i watchdog<br />
Oct 06 06:36:27 asarum kernel: iTCO_wdt: Intel TCO WatchDog Timer Driver v1.10<br />
Oct 06 06:36:27 asarum systemd[1]: Hardware watchdog 'iTCO_wdt', version 0<br />
Oct 06 06:36:27 asarum systemd[1]: Set hardware watchdog to 30s.<br />
<br />
====Issue with ACPI and gpio_ich====<br />
<br />
The gpio_ich module causes the following error:<br />
<br />
ACPI Warning: 0x0000000000000428-0x000000000000042f SystemIO conflicts with Region \PMIO 2 (20120711/utaddress-251)<br />
ACPI Warning: 0x0000000000000500-0x000000000000053f SystemIO conflicts with Region \GPIO 1 (20120711/utaddress-251)<br />
ACPI Warning: 0x0000000000000500-0x000000000000053f SystemIO conflicts with Region \GP01 2 (20120711/utaddress-251)<br />
lpc_ich: Resource conflict(s) found affecting gpio_ich<br />
ACPI Warning: 0x000000000000f040-0x000000000000f05f SystemIO conflicts with Region \SMB0 1 (20120711/utaddress-251)<br />
ACPI Warning: 0x000000000000f040-0x000000000000f05f SystemIO conflicts with Region \_SB_.PCI0.SBUS.SMBI 2 (20120711/utaddress-251)<br />
<br />
In this case an lsmod shows that the gpio_ich module doesn't wind up being loaded <br />
<br />
# lsmod | grep gpio<br />
# <br />
<br />
I then rebooted with apci_enforce_resources=lax. A cat /proc/ioports showed the conflict:<br />
<br />
0420-042f : ACPI GPE0_BLK<br />
0428-042f : gpio_ich<br />
<br />
and<br />
<br />
0500-057f : pnp 00:05<br />
0500-053f : gpio_ich<br />
<br />
In contrast, here's the same lines without acpi_enforce_resources=lax:<br />
<br />
0420-042f : ACPI GPE0_BLK<br />
<br />
and<br />
<br />
0500-057f : pnp 00:05<br />
<br />
So, net/net, there's no real issue.<br />
<br />
====Issue with USB and Laptop_Mode_Tools====<br />
<br />
USB mouse problems and hotplug does not working in some cases with messages in dmesg like:<br />
<br />
xhci_hcd 0000:00:14.0: setting latency timer to 64<br />
xhci_hcd 0000:00:14.0: WARN Event TRB for slot 1 ep 0 with no TDs queued?<br />
<br />
The solution is to set "CONTROL_USB_AUTOSUSPEND" in /etc/laptop-mode/conf.d/usb-autosuspend.conf to 1 and having a long "AUTOSUSPEND_TIMEOUT"<br />
<br />
== Random kernel panics on boot ==<br />
<br />
If Archlinux boots without any issues sometimes, but locks up with a kernel panic other times, the cause (as described by Whef in this thread: https://bbs.archlinux.org/viewtopic.php?pid=1169781#p1169781) is likely the 'btusb' module.<br />
<br />
To fix the issue, blacklist the 'btusb' module on the next boot by running:<br />
<br />
sudo echo "blacklist btusb" > /etc/modprobe.d/disable_btusb.conf<br />
<br />
Then use rc.local to load it at the end of the boot process by running:<br />
<br />
sudo echo "modprobe btusb" >> /etc/rc.local<br />
<br />
This appears to avoid whatever race condition conflict that causes the kernel to panic on boot, but if you're still having the same issue, try removing 'modprobe btusb' from /etc/rc.local to avoid the module completely.<br />
<br />
==BIOS Version Issues==<br />
<br />
It seems that updating the BIOS to versions 215 and higher causes issues with ACPI handling of the battery charge levels. In particular it seems that one cannot charge the battery beyond 91%-93%. The issue does not seem to be present in Windows however. For further details please see the forum thread [https://bbs.archlinux.org/viewtopic.php?pid=1211033#p1211033 here]. The most up to date BIOS version without any issues is 212. Unless it's absolutely necessary, refrain from updating your BIOS.<br />
<br />
==See also==<br />
*[[Power saving]]<br />
<br />
== Additional resources ==<br />
*https://help.ubuntu.com/community/AsusZenbookPrime<br />
*http://ubuntuforums.org/showthread.php?t=2005999<br />
*[[ Wikipedia Zenbook#UX32.2C_UX42_and_UX52 ]]</div>Jmerthttps://wiki.archlinux.org/index.php?title=ASUS_Zenbook_Prime_UX31A&diff=254732ASUS Zenbook Prime UX31A2013-04-21T02:25:38Z<p>Jmert: /* Multitouch gestures */</p>
<hr />
<div>{{poor writing|reason=This should '''only''' have information specific to the hardware. Other content should not be duplicated here.}}<br />
[[Category:ASUS]]<br />
This page contains instructions, tips, pointers, and links for installing and configuring Arch Linux on the ASUS Zenbook UX31A and UX21A Ultrabooks. Most of it should also hold for UX32VD.<br />
<br />
See previous generation [[ASUS Zenbook UX31E]] page that has mostly orthogonal information to those here (may be only partially applicable to UX31A)<br />
<br />
== Installation ==<br />
To install Arch Linux on UX31A, you can follow the official [[Installation_Guide]]. Since the UX31A uses UEFI and GPT, make sure to also read the [[UEFI]], [[GPT]] and [[UEFI_Bootloaders]] pages. It is recommended to use [[GRUB]] as a bootloader. To prepare an UEFI USB device, read [[UEFI#Create_UEFI_bootable_USB_from_ISO]].<br />
<br />
=== Boot from USB medium ===<br />
Press {{keypress|Escape}} to get into the boot menu. If the USB bootable device is not listed, enter the configuration menu and directly press {{keypress|F10}} to save. Press {{keypress|Escape}} again on reboot: This time the USB bootable device should appear in the menu.<br />
<br />
Select 'Boot Arch Linux (x86_64)" and press {{keypress|Enter}}. The installation system will be booted and you will end up with a terminal.<br />
<br />
== Kernel Parameters ==<br />
These kernel parameters offer some speed optimizations and longer battery life. It is recommended to enable them. To add kernel paramaters to GRUB2 you have to edit {{ic|/etc/default/grub}} and add them to the GRUB_CMDLINE_LINUX_DEFAULT line.<br />
<br />
{{ic|1=add_efi_memmap i915.i915_enable_rc6=1 pcie_aspm=force drm.vblankoffdelay=1 i915.semaphores=1}}<br />
<br />
== Function keys ==<br />
<br />
{{note | A working keymap means that there is some output in {{ic|xev}} when the key combination is pressed OR that the functionality is built in and "just works". It does not means that the keymap is linked to the functionality. For that it is often necessary to add a keyboard shortcut [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]] or to use a desktop shell with built-in shortcut support for the keycode in question. For some of the keys the function operates on a BIOS level and no shortcut is needed.}}<br />
<br />
This table shows the function keys, their intended function, what keycode (if any) X recognizes and whether the function key operates at the BIOS level or if it needs a shortcut.<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Keys!! Function !! X sees !! shortcut needed <br />
|-<br />
| {{keypress|Fn+F1}} || Sleep || XF86Sleep || no <br />
|-<br />
| {{keypress|Fn+F2}} || Turn off WLAN and Bluetooth || XF86WLAN & XF86Bluetooth || no<br />
|-<br />
| {{keypress|Fn+F3}} || Dim keyboard backlight || XF86KbdBrightnessDown || yes<br />
|-<br />
| {{keypress|Fn+F4}} || Brighten keyboard backlight || XF86KbdBrightnessUp || yes<br />
|-<br />
| {{keypress|Fn+F5}} || Dim LCD backlight || No recognized key || no<br />
|-<br />
| {{keypress|Fn+F6}} || Brighten LCD backlight || No recognized key || no<br />
|-<br />
| {{keypress|Fn+F7}} || Turn off LCD || No named key || no<br />
|-<br />
| {{keypress|Fn+F8}} || Toggle display || XF86Display || yes<br />
|-<br />
| {{keypress|Fn+F9}} || Toggle touchpad || XF86TouchpadToggle || yes<br />
|-<br />
| {{keypress|Fn+F10}} || Audio mute/unmute || XF86AudioMute|| yes<br />
|-<br />
| {{keypress|Fn+F11}} || Audio volume down || XF86AudioLowerVolume || yes<br />
|-<br />
| {{keypress|Fn+F12}} || Audio volume up || XF86AudioRaiseVolume || yes<br />
|-<br />
| {{keypress|Fn+a}} || Ambient light sensor || No recognized key ||N/A<br />
|-<br />
| {{keypress|Fn+c}} || Switch display profiles || XF86Launch1 || yes<br />
|-<br />
| {{keypress|Fn+v}} || Webcam || XF86WebCam || yes<br />
|-<br />
| {{keypress|Fn+space}} || Switch power profiles || XF86Launch6 || yes<br />
|}<br />
<br />
=== Screen backlight ===<br />
{{note | Since kernel 3.7.3 screen brightness keys are working out of the box (with boot parameter acpi_osi&#61;"!Windows 2012" - depending on the bootloader, it might be necessary to escape the doublequotes.), so this section is legacy and will soon be moved }}<br />
<br />
Screen Brightness keymaps ({{keypress|Fn+F5}}, {{keypress|Fn+F6}}) does not work. It means the system does not get any keymap when the key combination is pressed. You get two options here :<br />
* try to fix the problem<br />
* work around the problem and just use a different key combination<br />
<br />
The lazy option first:<br />
==== Screen backlight workarounds ====<br />
===== Method 1 =====<br />
Install <code>xorg-xbacklight</code> <br />
<br />
You can add some convenient keyboard shortcuts [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]].<br />
===== Method 2 =====<br />
Install {{AUR|asus-screen-brightness}} from AUR. To allow users to change the brightness, say:<br />
<br />
# asus-screen-brightness allowusers<br />
<br />
If you use [[initscripts]], put this into your {{ic|/etc/rc.local}}:<br />
<br />
# echo "asus-screen-brightness allowusers" >> /etc/rc.local<br />
<br />
Users of [[systemd]] can use the unit file included in the package.<br />
<br />
# systemctl daemon-reload<br />
# systemctl start asus-screen-brightness.service<br />
# systemctl enable asus-screen-brightness.service<br />
<br />
Adding to {{ic|.zshrc}} or {{ic|.bashrc}} :<br />
alias -g "backlight"="/bin/bash /usr/bin/asus-screen-brightness"<br />
allows to easy toggle backlight in terminal :<br />
$ backlight up<br />
$ backlight down<br />
$ backlight max<br />
$ backlight off<br />
$ backlight night<br />
$ backlight 2000<br />
$ backlight show<br />
<br />
And finally, add some convenient keyboard shortcuts [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]].<br />
<br />
==== Screen backlight fix ====<br />
{{note | UX31A BIOS 211 IGDM Base Address is 0xDA8A9018, UX31A BIOS 206 UGDM Base Address is 0xDA8CE018 and UX31A BIOS 204 IGDM Base Address is 0xDA8CF018, everything else is the same. }}<br />
<br />
{{warning | This is highly experimental. It works for the UX32VD with bios 2.06, no guarantee that it works for different configurations. }}<br />
First off, this method requires that you know what you are doing (although there are good tutorials anyway), and needs a little bit patience. It also requires that you have the hexidecimal dump and undump package xxd available in the AUR: https://aur.archlinux.org/packages.php?ID=35311 .<br />
<br />
This method is based on a proposed fix posted on https://bugs.freedesktop.org/show_bug.cgi?id=45452, which apparently works for the UX31A/UX32VD too. <br />
The cause why the brightness buttons don't work is exactly the same as in the bugreport.<br />
<br />
As root, create the file {{ic|/usr/local/share/backlightfix}}:<br />
This script is posted here: https://bbs.archlinux.org/viewtopic.php?pid=1156051#p1156051<br />
#!/bin/bash <br />
# <br />
# Asus UX32VD acpi backlight fix <br />
# <br />
# Copyright(C) 2012 Eugen Dahm <eugen.dahm@gmail.com>. <br />
# <br />
# fix is based on a proposed bugfix posted on <[url]https://bugs.freedesktop.org/show_bug.cgi?id=45452[/url]> <br />
# <br />
# This program is free software; you can redistribute it and/or modify <br />
# it under the terms of the GNU General Public License as published by <br />
# the Free Software Foundation; either version 2 of the License, or <br />
# (at your option) any later version. <br />
# <br />
# This program is distributed in the hope that it will be useful, <br />
# but WITHOUT ANY WARRANTY; without even the implied warranty of <br />
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the <br />
# GNU General Public License for more details. <br />
# <br />
# You should have received a copy of the GNU General Public License <br />
# along with this program; if not, write to the Free Software <br />
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA <br />
# <br />
# Asus UX32VD acpi backlight fix <br />
# Disclaimer!!!! not recommended to use if laptop is not the Asus UX32VD\ <br />
# probably works with other models too, but the didl and cadl offset needs to be extracted <br />
# from the dsdt <br />
# Tested with bios 2.06 <br />
# IGDM_BASE has to be determined for each notebook <br />
# IGDM is the operation region (\_SB_.PCI0.GFX0.IGDM) containing the CADL/DIDL fields <br />
# \aslb is a named field containing the base-address of the IGDM region <br />
# this address depends on the installed ram <br />
# how to get the address: <br />
# - git clone git://github.com/Bumblebee-Project/acpi_call.git <br />
# - make <br />
# - load module with insmod or copy to /lib/modules/.... and modprobe <br />
# - echo '\aslb' > /proc/acpi/call <br />
# - cat /proc/acpi/call <br />
# - this is the IGDM base address - fill in below <br />
IGDM_BASE=0xBE8B7018<br />
DIDL_OFFSET=0x120<br />
CADL_OFFSET=0x160<br />
# this basically copies the values of the initialized fields DIDL-DDL8 in the IGDM opregion and initializes CADL-CAL8 with it <br />
# CADL-CAL8 are fields, telling the bios that a screen or something is connected (this is a bit speculation - check <br />
# <[url]https://bugs.freedesktop.org/show_bug.cgi?id=45452[/url]> for more <br />
# if interested, disasselbe the dsdt to understand, why no notifyevent gets thrown, when CADL isn't initialized <br />
# (hint: _Q0E/_Q0F are the backlight methods on the UX32VD) <br />
dd if=/dev/mem skip=$(( $IGDM_BASE + $DIDL_OFFSET )) count=32 bs=1 | xxd | xxd -r | dd of=/dev/mem bs=1 seek=$(( $IGDM_BASE + $CADL_OFFSET )) count=32 <br />
<br />
This script still needs to be adjusted to your notebook configuration (it uses a memory address which strongly depends on the amount of installed system memory.<br />
<br />
The exact address can be determined with following steps:<br />
<br />
# git clone git://github.com/Bumblebee-Project/acpi_call.git <br />
# cd acpi_call <br />
# make <br />
# gzip acpi_call.ko <br />
# load module acpi_call.ko.gz with insmod or copy to /lib/modules/.... and modprobe <br />
# echo '\aslb' > /proc/acpi/call <br />
# cat /proc/acpi/call <br />
# this is the IGDM base address - initialize the IGDM_BASE variable with this value in the script<br />
<br />
Initialize your bios with this script on boot :<br />
# echo "/usr/local/share/backlightfix" >> /etc/rc.local<br />
<br />
Execute the script and hope the backlight buttons work afterwards. If they don't you probably have to disasselbe the dsdt for yourself, because you have to adjust the following 2 variables in the script:<br />
DIDL_OFFSET=0x120<br />
CADL_OFFSET=0x160<br />
<br />
These are the offsets on the Asus UX32VD bios version 2.06. Try google to find a tutorial how to disassemble the dsdt.<br />
<br />
===== Getting the DIDL and CADL offsets =====<br />
<br />
Now comes the funny part: <br />
<br />
# open your disassembled dsdt. The should have the filename dsdt.dsl.<br />
# find the operationregion IGBM. It should have a Field statement below, and probably looks something like this:<br />
OperationRegion (IGDM, SystemMemory, ASLB, 0x2000)<br />
Field (IGDM, AnyAcc, NoLock, Preserve)<br />
{<br />
SIGN, 128, <br />
SIZE, 32, <br />
OVER, 32, <br />
...<br />
This specifies some variables in this IGDM field (for me, they look similar to a c struct, except that you don't need to give the size of each element in a struct).<br />
The numbers are the size for each element in bit. <br />
<br />
You must add those field sizes until you reach the DIDL variable. With the UX32VD the DIDL offset is easy, because of this statement:<br />
..<br />
Offset (0x120), <br />
DIDL, 32,<br />
..<br />
Don't know exactly why they use the Offset statement, since this is somewhat redundant. It tells you that the following element has the offset 0x120.<br />
<br />
Since I thought it is obvious what this statement does, I didn't bother to look it up in the dsl language specification. I thought it tells the bios that the following<br />
variable starts with an offset of 0x120 bytes relative to the previous element, but I was wrong. It basically tells you/bios that the following variable starts with an <br />
offset of 0x120 relative to the beginning of the opregion (in this case its completely unnecessary).<br />
<br />
Now the only thing left is the CADL offset. Add the numbers starting from DIDL until you reach CADL and add it to your previous offset. This should be the 2nd needed offset.<br />
<br />
After updating both offset variables in the script and executing it again, the backlight should now work (no guarantee).<br />
<br />
=== Keyboard backlight ===<br />
Install {{AUR|asus-kbd-backlight}} from AUR. To allow users to change the brightness, say:<br />
<br />
# asus-kbd-backlight allowusers<br />
<br />
If you use [[initscripts]], put this into your {{ic|/etc/rc.local}}:<br />
<br />
# echo "asus-kbd-backlight allowusers" >> /etc/rc.local<br />
<br />
Users of [[systemd]] can use the unit file included in the package.<br />
<br />
# systemctl daemon-reload<br />
# systemctl start asus-kbd-backlight.service<br />
# systemctl enable asus-kbd-backlight.service<br />
<br />
Now you can easily change keyboard backlight in terminal:<br />
<br />
$ asus-kbd-backlight up<br />
$ asus-kbd-backlight down<br />
$ asus-kbd-backlight max<br />
$ asus-kbd-backlight off<br />
$ asus-kbd-backlight night<br />
$ asus-kbd-backlight 2<br />
$ asus-kbd-backlight show<br />
<br />
And finally, add some convenient keyboard shortcuts [[Extra_Keyboard_Keys_in_Xorg|by the method of your choice]].<br />
<br />
==== UPower Script ====<br />
<br />
Upower allows control of the keyboard backlight as an ordinary user. Use of these scripts requires installation of dbus, upower and if you want the OSD notifications, libnotify.<br />
<br />
This script increases the keyboard brightness and provides onscreen notification of the current brightness:<br />
<br />
#! /bin/bash<br />
# get current keyboard brightness from UPower<br />
current_state=$(dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.GetBrightness)<br />
# strip leading 9 characters " int32 "<br />
current_state=${current_state:9}<br />
# get maximum keyboard brightness from UPower<br />
max_brightness=$(dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.GetMaxBrightness)<br />
# strip leading 9 characters " int32 "<br />
max_brightness=${max_brightness:9}<br />
# if the current keyboard brightness is less than max, increment brightness by one<br />
if [ $current_state -lt $max_brightness ] ; then <br />
dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.SetBrightness \<br />
int32:$((current_state+1))<br />
notify-send "Keyboard brightness reset to $((current_state+1))"<br />
else<br />
# if the keyboard brightness is already at maximum, complain<br />
notify-send "Keyboard brightness already at maximum"<br />
fi<br />
<br />
This script decreases the keyboard brightness and provides onscreen notification of the current brightness:<br />
<br />
#! /bin/bash<br />
# get current keyboard brightness from UPower<br />
current_state=$(dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.GetBrightness)<br />
# strip leading 9 characters " int32 "<br />
current_state=${current_state:9}<br />
min_brightness=0<br />
# if the current keyboard brightness is greater than zero, decrement brightness by one<br />
if [ $current_state -gt $min_brightness ] ; then <br />
dbus-send --type=method_call --print-reply=literal --system \<br />
--dest="org.freedesktop.UPower" /org/freedesktop/UPower/KbdBacklight org.freedesktop.UPower.KbdBacklight.SetBrightness \<br />
int32:$((current_state-1))<br />
notify-send "Keyboard brightness reset to $((current_state-1))"<br />
else<br />
# if the keyboard brightness is already at zero, complain<br />
notify-send "Keyboard brightness already at zero"<br />
fi<br />
<br />
==== Automatic Backlight Control ====<br />
This C program will automatically turn off the backlight after a given idle time, and turn it on proportionally to the screen brightness. Written for Asus N56DP but will probably work here as well. Please email me if not. Note that you must run it as root, or if using some other user, give that user write permission to the backlight brightness file. This program works in plain tty mode as well as in X, but if you're using X you must start the X server first before starting this program, otherwise the X server will hang.<br />
[[User:Hyc|Hyc]] ([[User talk:Hyc|talk]]) 13:24, 16 January 2013 (UTC)<br />
/* Author: Howard Chu <hyc@symas.com> 2013-01-15<br />
*<br />
* monitor keyboard activity and toggle keyboard backlight<br />
* for Asus laptops. Tested on Asus N56DP.<br />
*/<br />
#include <sys/types.h><br />
#include <sys/stat.h><br />
#include <fcntl.h><br />
#include <poll.h><br />
<br />
static char dummybuf[8192];<br />
<br />
/** @brief How many milliseconds before turning off kbd light */<br />
#ifndef IDLE_MSEC<br />
#define IDLE_MSEC 7000<br />
#endif<br />
<br />
int main(int argc, char *argv[])<br />
{<br />
struct pollfd pfd;<br />
int rc, blfd, scfd;<br />
int brt, timeout, prev = -1;<br />
char bm[2] = "0\n";<br />
<br />
scfd = open("/sys/class/backlight/acpi_video0/brightness", O_RDONLY);<br />
blfd = open("/sys/class/leds/asus::kbd_backlight/brightness", O_WRONLY);<br />
pfd.fd = open("/dev/input/by-path/platform-i8042-serio-0-event-kbd", O_RDONLY);<br />
pfd.events = POLLIN;<br />
<br />
timeout = IDLE_MSEC;<br />
while (1) {<br />
rc = poll(&pfd, 1, timeout);<br />
/* Kbd brightness ranges from 0 to 3.<br />
* Screen brightness ranges from 1 to 10.<br />
* Make the keyboard brightness<br />
* depend on the screen brightness.<br />
*<br />
* Assume 10 means working in a bright room.<br />
* In that case, leave the kbd light off.<br />
* map screen 1-9 to kbd 1-3.<br />
*/<br />
if (rc) {<br />
/* got keyboard input, flush it all and<br />
* wait for the next event. Also check<br />
* the screen brightness and set the kbd<br />
* backlight accordingly.<br />
*/<br />
read(pfd.fd, dummybuf, sizeof(dummybuf));<br />
timeout = IDLE_MSEC;<br />
read(scfd, dummybuf, sizeof(dummybuf));<br />
lseek(scfd, 0, SEEK_SET);<br />
brt = atoi(dummybuf);<br />
if (brt == 10) {<br />
brt = 0;<br />
} else {<br />
brt = (brt + 2) / 3;<br />
}<br />
} else {<br />
/* once we've gotten a timeout, turn off<br />
* kbd backlight and wait forever for<br />
* the next keypress<br />
*/<br />
timeout = -1;<br />
brt = 0;<br />
}<br />
if (brt == prev)<br />
continue;<br />
bm[0] = brt + '0';<br />
write(blfd, bm, 2);<br />
lseek(blfd, 0, SEEK_SET);<br />
prev = brt;<br />
}<br />
}<br />
<br />
== Solid State Drive ==<br />
Check [[Solid_State_Drives]]<br />
<br />
== Touchpad ==<br />
[[Touchpad_Synaptics#Buttonless_TouchPads_.28aka_ClickPads.29| Instructions to activate the right button]].<br />
(As an alternative you cant try [http://ubuntuforums.org/showpost.php?p=12110689&postcount=73 This]).<br />
<br />
Multifinger taps work out of the box.<br />
{{Tip|Multifinger taps: Two finger for middle click; three fingers for right click.}}<br />
<br />
=== Multitouch gestures ===<br />
To have multitouch gestures like on windows you have to install {{AUR|touchegg}} from the AUR. To make it work you have to disable some input handling by synaptics. Edit your {{ic|/etc/X11/xorg.conf.d/10-synaptics.conf}}<br />
<br />
Section "InputClass"<br />
Identifier "touchpad catchall"<br />
Driver "synaptics"<br />
MatchIsTouchpad "on"<br />
MatchDevicePath "/dev/input/event*"<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "0"<br />
Option "TapButton3" "0"<br />
Option "ClickFinger2" "0"<br />
Option "ClickFinger3" "0"<br />
Option "HorizTwoFingerScroll" "0"<br />
Option "VertTwoFingerScroll" "0"<br />
Option "ClickPad" "true"<br />
Option "EmulateMidButtonTime" "0"<br />
Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"<br />
EndSection<br />
<br />
An alternative is to instead use the {{ic|synclient}} command effect only your individual desktop environment by running the following commands in your .xinitrc file:<br />
<br />
synclient TapButton2=0 TapButton3=0 ClickFinger2=0 ClickFinger3=0 HorizTwoFingerScroll=0 VertTwoFingerScroll=0<br />
<br />
After that you can autostart touchegg by either putting {{ic|touchegg &}} into your .xinitrc or if you use a Desktop Environment you can add {{ic|touchegg}} to the Startup Applications. Then configure the {{ic|~/.config/touchegg/touchegg.conf}} to your liking.<br />
<br />
=== Multitouch gestures in Gnome 3 ===<br />
gnome-shell in Gnome 3 does its own mouse handling which can interfere with the settings above unless the appropriate plugin is disabled. The plugin handler can be disabled with<br />
<br />
gsettings set org.gnome.settings-daemon.plugins.mouse active false<br />
<br />
Note that this will make any changes made in the Mouse & Touchpad control panel applet in System Settings ineffectual.<br />
<br />
=== Disable Touchpad While Typing ===<br />
<br />
One of the criticisms this laptop gets (see reviews at Amazon) is that the placement of the touchpad results in frequent touchpad brushing during typing. You should use whatever touchpad disabling method you prefer. See [[ Touchpad_Synaptics#Disable_Trackpad_while_Typing ]].<br />
<br />
== HDMI plugged at boot ==<br />
<br />
There seems to be an issue whereby having an HDMI device plugged in at boot results in the screens being switched and also the laptop screen not coming on. To make this more bearable you can automate switching HDMI on with the following udev rule and script:<br />
<br />
<br />
<br />
Add the following script as root:<br />
{{hc|/usr/local/share/hdmi-plugged-startup|#!/bin/bash<br />
<br />
export XAUTHORITY&#61;/home/$USER/.Xauthority<br />
export DISPLAY&#61;:0<br />
<br />
/usr/bin/xrandr -display :0 --output eDP1 --auto --output HDMI1 --auto --above eDP1}}<br />
<br />
then make it executable<br />
# chmod +x /usr/local/share/hdmi-plugged-startup<br />
<br />
And add the following udev rule:<br />
# echo 'ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/share/hdmi-plugged-startup"' >> /etc/udev/rules.d/10-local.rules<br />
<br />
== Powersave management ==<br />
For automatic powersaving when on battery configure [[Laptop_Mode_Tools]]. For manual power saving see [[Power saving]]<br />
<br />
==Hardware and Modules==<br />
<br />
====PCI====<br />
<br />
This is output of lspci -nnn -k<br />
<br />
{| class="wikitable" border="1" cellpadding="5" cellspacing="0"<br />
! Description !! PCI Id !! Module<br />
|-<br />
| Intel Corporation 3rd Gen Core processor DRAM Controller || 8086:0154 || none<br />
|-<br />
| Intel Corporation 3rd Gen Core processor Graphics Controller || 8086:0166 || i915 <br />
|-<br />
| Intel Corporation Device || 8086:0153 || none<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller || 8086:1e31 || xhci_hcd<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 || 8086:1e3a || mei<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 || 8086:1e2d || ehci_hcd<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller || 8086:1e20 || snd_hda_intel<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 || 8086:1e10 || pcieport<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 || 8086:1e12 || pcieport<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1|| 8086:1e26 || ehci_hcd<br />
|-<br />
| Intel Corporation HM76 Express Chipset LPC Controller || 8086:1e59 || lpc_ich<br />
|-<br />
| Intel Corporation 7 Series Chipset Family 6-port SATA Controller || 8086:1e03 || ahci<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller || 8086:1e22] || none<br />
|-<br />
| Intel Corporation 7 Series/C210 Series Chipset Family Thermal Management Controller || 8086:1e24 || none<br />
|-<br />
| Intel Corporation Centrino Advanced-N 6235 || 8086:088e || iwlwifi<br />
|}<br />
<br />
====Other Devices and Drivers====<br />
<br />
=====mei=====<br />
<br />
PCE device 8086:1e3a, the Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 and the associated device "/dev/mei" (10,59) relating to an Intel-specific hardware monitoring technology called "Advanced Management Technology". <br />
<br />
The MEI driver speaks to or through the "Local Manageability Service" or LMS. The LMS driver is available here. Note that with GCC 4.7.2-2, the driver will refuse to compile. I was able to convince it to compile by:<br />
*adding "#include <unistd.h>" to src/tools/ATVersion.cpp<br />
*adding "#include <stdio.h>" to src/tools/ATNetworkTool.cpp<br />
<br />
It then installs the driver file lms in /usr/local/sbin and the init.d-type daemon file lms in /etc/init.d/.<br />
<br />
=====rdrand=====<br />
<br />
The i7 Core CPU has an on-chip random number generator, rdrand, code named "Bull Mountain". It appears that since 3.2, this is used as a source for /dev/urandom. It is also used as a randomness source by rng-tools version 4.<br />
<br />
In contrast to other hardware random number generators, rdrand does not create a character device in /dev. However, rngd version 4 does appear to detect and use it.<br />
<br />
First, make sure rngd sees it:<br />
<br />
[root@asarum system]# rngd -v --no-tpm=1<br />
Available entropy sources:<br />
DRNG<br />
<br />
Second, start rngd:<br />
<br />
[root@asarum log]# rngd -f --no-tpm=1<br />
<br />
The options for rngd.service are found in /etc/conf.d/rngd. I modified the file as follows:<br />
<br />
# RNGD_OPTS="-o /dev/random -r /dev/urandom"<br />
RNGD_OPTS=" -o /dev/random --no-tpm=1"<br />
<br />
Test:<br />
<br />
[root@asarum system]# cat /dev/random | rngtest -c 1000<br />
rngtest 4<br />
Copyright (c) 2004 by Henrique de Moraes Holschuh<br />
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.<br />
<br />
rngtest: starting FIPS tests...<br />
rngtest: bits received from input: 20000032<br />
rngtest: FIPS 140-2 successes: 1000<br />
rngtest: FIPS 140-2 failures: 0<br />
rngtest: FIPS 140-2(2001-10-10) Monobit: 0<br />
rngtest: FIPS 140-2(2001-10-10) Poker: 0<br />
rngtest: FIPS 140-2(2001-10-10) Runs: 0<br />
rngtest: FIPS 140-2(2001-10-10) Long run: 0<br />
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0<br />
rngtest: input channel speed: (min=891.472; avg=2161.828; max=2788.585)Kibits/s<br />
rngtest: FIPS tests speed: (min=28.682; avg=47.816; max=146.719)Mibits/s<br />
rngtest: Program run time: 9434482 microseconds<br />
<br />
=====watchdog=====<br />
<br />
The chipset also has an hardware watchdog:<br />
<br />
root@asarum chris]# wdctl<br />
Device: /dev/watchdog<br />
Identity: iTCO_wdt [version 0]<br />
Timeout: 30 seconds<br />
Timeleft: 2 seconds<br />
FLAG DESCRIPTION STATUS BOOT-STATUS<br />
KEEPALIVEPING Keep alive ping reply 0 0<br />
MAGICCLOSE Supports magic close char 0 0<br />
SETTIMEOUT Set timeout (in seconds) 0 0<br />
<br />
Activating the watchdog under systemd is trivial, as systemd author Lennart Poettering explains in [http://0pointer.de/blog/projects/watchdog.html this blog post].<br />
<br />
All you do is go into /etc/systemd/system.conf, uncomment the RuntimeWatchdogSec=0 line and change zero to how long the watchdog should go without receiving a ping before it reboots the system. I used 30s, which is the default setting for iTCO_wdt and seemed sane.<br />
<br />
#RuntimeWatchdogSec=0<br />
RuntimeWatchdogSec=30<br />
<br />
Check after next boot:<br />
<br />
[root@asarum chris]# journalctl | grep -i watchdog<br />
Oct 06 06:36:27 asarum kernel: iTCO_wdt: Intel TCO WatchDog Timer Driver v1.10<br />
Oct 06 06:36:27 asarum systemd[1]: Hardware watchdog 'iTCO_wdt', version 0<br />
Oct 06 06:36:27 asarum systemd[1]: Set hardware watchdog to 30s.<br />
<br />
====Issue with ACPI and gpio_ich====<br />
<br />
The gpio_ich module causes the following error:<br />
<br />
ACPI Warning: 0x0000000000000428-0x000000000000042f SystemIO conflicts with Region \PMIO 2 (20120711/utaddress-251)<br />
ACPI Warning: 0x0000000000000500-0x000000000000053f SystemIO conflicts with Region \GPIO 1 (20120711/utaddress-251)<br />
ACPI Warning: 0x0000000000000500-0x000000000000053f SystemIO conflicts with Region \GP01 2 (20120711/utaddress-251)<br />
lpc_ich: Resource conflict(s) found affecting gpio_ich<br />
ACPI Warning: 0x000000000000f040-0x000000000000f05f SystemIO conflicts with Region \SMB0 1 (20120711/utaddress-251)<br />
ACPI Warning: 0x000000000000f040-0x000000000000f05f SystemIO conflicts with Region \_SB_.PCI0.SBUS.SMBI 2 (20120711/utaddress-251)<br />
<br />
In this case an lsmod shows that the gpio_ich module doesn't wind up being loaded <br />
<br />
# lsmod | grep gpio<br />
# <br />
<br />
I then rebooted with apci_enforce_resources=lax. A cat /proc/ioports showed the conflict:<br />
<br />
0420-042f : ACPI GPE0_BLK<br />
0428-042f : gpio_ich<br />
<br />
and<br />
<br />
0500-057f : pnp 00:05<br />
0500-053f : gpio_ich<br />
<br />
In contrast, here's the same lines without acpi_enforce_resources=lax:<br />
<br />
0420-042f : ACPI GPE0_BLK<br />
<br />
and<br />
<br />
0500-057f : pnp 00:05<br />
<br />
So, net/net, there's no real issue.<br />
<br />
====Issue with USB and Laptop_Mode_Tools====<br />
<br />
USB mouse problems and hotplug does not working in some cases with messages in dmesg like:<br />
<br />
xhci_hcd 0000:00:14.0: setting latency timer to 64<br />
xhci_hcd 0000:00:14.0: WARN Event TRB for slot 1 ep 0 with no TDs queued?<br />
<br />
The solution is to set "CONTROL_USB_AUTOSUSPEND" in /etc/laptop-mode/conf.d/usb-autosuspend.conf to 1 and having a long "AUTOSUSPEND_TIMEOUT"<br />
<br />
== Random kernel panics on boot ==<br />
<br />
If Archlinux boots without any issues sometimes, but locks up with a kernel panic other times, the cause (as described by Whef in this thread: https://bbs.archlinux.org/viewtopic.php?pid=1169781#p1169781) is likely the 'btusb' module.<br />
<br />
To fix the issue, blacklist the 'btusb' module on the next boot by running:<br />
<br />
sudo echo "blacklist btusb" > /etc/modprobe.d/disable_btusb.conf<br />
<br />
Then use rc.local to load it at the end of the boot process by running:<br />
<br />
sudo echo "modprobe btusb" >> /etc/rc.local<br />
<br />
This appears to avoid whatever race condition conflict that causes the kernel to panic on boot, but if you're still having the same issue, try removing 'modprobe btusb' from /etc/rc.local to avoid the module completely.<br />
<br />
==BIOS Version Issues==<br />
<br />
It seems that updating the BIOS to versions 215 and higher causes issues with ACPI handling of the battery charge levels. In particular it seems that one cannot charge the battery beyond 91%-93%. The issue does not seem to be present in Windows however. For further details please see the forum thread [https://bbs.archlinux.org/viewtopic.php?pid=1211033#p1211033 here]. The most up to date BIOS version without any issues is 212. Unless it's absolutely necessary, refrain from updating your BIOS.<br />
<br />
==See also==<br />
*[[Power saving]]<br />
<br />
== Additional resources ==<br />
*https://help.ubuntu.com/community/AsusZenbookPrime<br />
*http://ubuntuforums.org/showthread.php?t=2005999<br />
*[[ Wikipedia Zenbook#UX32.2C_UX42_and_UX52 ]]</div>Jmert