Difference between revisions of "ASUS Eee PC T101MT"

From ArchWiki
Jump to: navigation, search
(Rotating the touch screen in openbox)
(31 intermediate revisions by 9 users not shown)
Line 1: Line 1:
[[Category:ASUS (English)]]
+
[[Category:ASUS]]
 
{| style="float:right; border: 1px solid #000;"  
 
{| style="float:right; border: 1px solid #000;"  
 
| '''Device''' || '''Status''' || '''Information'''
 
| '''Device''' || '''Status''' || '''Information'''
Line 23: Line 23:
 
| Touchscreen || style="color:green" | '''Working''' || 3.0.0
 
| Touchscreen || style="color:green" | '''Working''' || 3.0.0
 
|-
 
|-
| Multi-Touch || style="color:red" | '''Not working''' ||  
+
| Multi-Touch || style="color:yellow" | '''Working''' ||
 
|}
 
|}
  
Line 40: Line 40:
  
 
for x86_x64
 
for x86_x64
<pre>
+
{{bc|<nowiki>
 
LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so skype
 
LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so skype
</pre>
+
</nowiki>}}
 
for i686
 
for i686
<pre>
+
{{bc|<nowiki>
 
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype
 
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype
</pre>
+
</nowiki>}}
  
 
To make this happen automatically just create a script named skyp (or anything you want it to be)
 
To make this happen automatically just create a script named skyp (or anything you want it to be)
  
<pre>
+
{{bc|<nowiki>
 
#!/bin/bash
 
#!/bin/bash
  
Line 65: Line 65:
 
       ;;
 
       ;;
 
esac
 
esac
</pre>
+
</nowiki>}}
  
 
Save this script as "skyp" and '#chmod +x skyp'. Move this script to '/usr/bin/' with '#mv skyp /usr/bin/'. From now on typing in skyp should load skype with the proper webcam orientation.
 
Save this script as "skyp" and '#chmod +x skyp'. Move this script to '/usr/bin/' with '#mv skyp /usr/bin/'. From now on typing in skyp should load skype with the proper webcam orientation.
Line 76: Line 76:
 
In openbox, editting ~/.config/rc.xml and appending (under <keyboard>); this was taken from https://wiki.archlinux.org/index.php/Openbox:
 
In openbox, editting ~/.config/rc.xml and appending (under <keyboard>); this was taken from https://wiki.archlinux.org/index.php/Openbox:
  
<pre>
+
{{bc|<nowiki>
 
   <!-- Keybindings for audio control -->
 
   <!-- Keybindings for audio control -->
 
   <keybind key="XF86AudioRaiseVolume">
 
   <keybind key="XF86AudioRaiseVolume">
Line 93: Line 93:
 
     </action>
 
     </action>
 
   </keybind>
 
   </keybind>
</pre>
+
</nowiki>}}
  
 
will make the audio keys work if alsa is installed.
 
will make the audio keys work if alsa is installed.
Line 101: Line 101:
 
OpenBox can be installed by issuing #pacman -S openbox. Follow the instructions on screen to copy the openbox scripts to '~/.config/openbox/'.
 
OpenBox can be installed by issuing #pacman -S openbox. Follow the instructions on screen to copy the openbox scripts to '~/.config/openbox/'.
  
==Rotating the touch screen in openbox==
+
==Rotating the touch screen==
 
Editing the openbox rc.xml file in '~/.config/openbox/rc.xml' will allow configuration of the Express Gate button. Open a terminal and run $xev (non-root) to find out the key associated with the Express Gate button (just click it while in xev). For my system it was key 248 (0xF8) in hexadecimal. Edit your ~/.config/openbox/rc.xml to include the following code under <keyboard>:
 
Editing the openbox rc.xml file in '~/.config/openbox/rc.xml' will allow configuration of the Express Gate button. Open a terminal and run $xev (non-root) to find out the key associated with the Express Gate button (just click it while in xev). For my system it was key 248 (0xF8) in hexadecimal. Edit your ~/.config/openbox/rc.xml to include the following code under <keyboard>:
  
<pre>
+
{{bc|<nowiki>
 
   <!-- Keybindings for express gate button -->  
 
   <!-- Keybindings for express gate button -->  
 
   <keybind key="0xF8">
 
   <keybind key="0xF8">
Line 111: Line 111:
 
         </action>
 
         </action>
 
     </keybind>
 
     </keybind>
</pre>
+
</nowiki>}}
  
 
This will bind the express gate key to show the openbox menu whenever clicked.
 
This will bind the express gate key to show the openbox menu whenever clicked.
  
To rotate the screen, use the following script:
+
To rotate the screen, use the following script (note the following script can also be bound to the expressgate button itself to generate rotations (bypass any menu):
  
<pre>
+
** As of evdev 2.7.3-1, this script no longer properly rotates the touchscreen axes.
 +
 
 +
{{bc|<nowiki>
 
#!/bin/bash
 
#!/bin/bash
  
#Written by Mark Lee
+
echo "
#New and improved script to rotate the touch screen by pressing the 'Express Gate Button'
+
##############################################################
#Has both a command line interface as well as a single button click interface
+
#                                                            #
 +
#                Touch_Rotate for Asus T101mt                #
 +
#                     written by Mark Lee                   #
 +
#                                                           #
 +
# Command Line: touch_rotate <normal|right|left|upside-down> #
 +
#                                                            #
 +
#            Bind /usr/bin/touch_rotate to a button         #
 +
#                    to rotate clockwise                    #     
 +
#                                                            #
 +
##############################################################
 +
";
  
#works in the home directory
+
# Check if touch_rotate is set up in /usr/bin
cd ~/
+
if [ ! -f /usr/bin/touch_rotate ]; then sudo mv $PWD/touch_rotate /usr/bin; sudo chmod a+x /usr/bin/touch_rotate;fi
  
#Obtains the current rotation
+
# Obtain the current rotation
cur_rot=`cat cur_rot`;
+
cur_rot=`xrandr -q --verbose|grep LVDS1|cut -d ' ' -f5`
  
#Increases the current rotation variable by 1 to signify a change: $[++cur_rot]; increases cur_rot by 1.
+
# Convert the current rotation to a number
#Takes the modulus of the cur_rot by 4: var=$[$a % $b]; where $b is the modulus
+
case $cur_rot in
new_rot=$[$[++cur_rot] % 4];
+
normal)
 +
cur_rot=0;
 +
;;
 +
left)
 +
cur_rot=1;
 +
;;
 +
inverted)
 +
cur_rot=2;
 +
;;
 +
right)
 +
cur_rot=3;
 +
;;
 +
esac;
  
#Command line interface for rotating the monitor
+
# Obtain the id of the touchscreen
#If an argument is specified, it is converted to a digit
+
id=$(xinput -list | for a in `awk '/MultiTouch/' `xinput -list``;do echo $a | grep id | awk -F'=' '{print $2}';done)
case "$1" in
+
  normal)
+
  new_rot=0
+
  ;;
+
  left)
+
  new_rot=1
+
  ;;
+
  right)
+
  new_rot=3
+
  ;;
+
  upside_down)
+
  new_rot=2
+
  ;;
+
esac
+
  
#Rotates the screen based on current rotation
+
# Rotate clockwise by increasing cur_rot around mod 4
 +
if [ -z $1 ]; then new_rot=$[$[1+$cur_rot] % 4];else new_rot=$1;fi
 +
 
 +
# Rotate the touch screen
 
case $new_rot in
 
case $new_rot in
  0)
+
0|normal)
    #Rotates the display
+
xrandr -o 0; ## rotate screen to normal
    xrandr -o 0;
+
xinput set-prop $id "Evdev Axes Swap" 0; ## do not swap axis
    #find the device id of the touch screen with 'xinput list | grep Asus'
+
xinput set-prop $id "Evdev Axis Inversion" 0 0; ## do not invert axis
    #set the device id by switching out '10' with your device id number.
+
exit;
    #invert touch axes for (x,y) for device with id=10
+
;;
    xinput set-prop 10 "Evdev Axes Swap" 0;
+
1|left)
    #swaps the x and y axes of the touch screen for device with id=10
+
    xrandr -o 1;
    xinput set-prop 10 "Evdev Axis Inversion" 0 0;
+
    xinput set-prop $id "Evdev Axes Swap" 1;
    #Sets the new cur_rot as a file
+
    xinput set-prop $id "Evdev Axis Inversion" 1 0;
    echo $new_rot >cur_rot;
+
    exit;
    #Exits the script
+
    ;;
    exit;
+
2|upside-down)
    ;;
+
xrandr -o 2;
  1)
+
    xinput set-prop $id "Evdev Axes Swap" 0;
    xrandr -o 1;
+
    xinput set-prop $id "Evdev Axis Inversion" 1 1;
    xinput set-prop 10 "Evdev Axes Swap" 1;
+
    exit;
    xinput set-prop 10 "Evdev Axis Inversion" 1 0;
+
    ;;
    echo $new_rot >cur_rot;
+
3|right)
    exit;
+
    xrandr -o 3;
    ;;
+
    xinput set-prop $id "Evdev Axes Swap" 1;
  2)
+
    xinput set-prop $id "Evdev Axis Inversion" 0 1;
    xrandr -o 2;
+
    exit;
    xinput set-prop 10 "Evdev Axes Swap" 0;
+
    ;;
    xinput set-prop 10 "Evdev Axis Inversion" 1 1;
+
esac
    echo $new_rot >cur_rot;
+
</nowiki>}}
    exit;
+
    ;;
+
  3)
+
    xrandr -o 3;
+
    xinput set-prop 10 "Evdev Axes Swap" 1;
+
    xinput set-prop 10 "Evdev Axis Inversion" 0 1;
+
    echo $new_rot >cur_rot;
+
    exit;
+
    ;;
+
esac
+
</pre>
+
 
+
<pre>
+
#!/bin/bash
+
 
+
#This script rotates the touchscreen based on input from openbox or console
+
 
+
#checks to see if the type of rotation is specified as the first argument
+
if [ "$1" = "" ];
+
    then
+
        {
+
        echo 'Which orientation do you want the screen to be rotated?';
+
        #asks which orientation the user wants the screen to be rotated
+
          #stores answer as variable 'rot'
+
        select rot in "left" "right" "upside_down" "normal";
+
                do
+
                  #rotates the screen
+
  case $rot in
+
      left)
+
                          #rotate display left
+
  xrandr -o 1;
+
                          #find the device id of the touch screen with 'xinput list | grep Asus'
+
                          #set the device id by switching out '10' with your device id number.
+
                          #invert touch axes for (x,y) for device with id=10
+
  xinput set-prop 10 "Evdev Axis Inversion" 1 0;
+
                          #swaps the x and y axes of the touch screen for device with id=10
+
  xinput set-prop 10 "Evdev Axes Swap" 1;
+
                          #tells nitrogen to rescale the wallpaper (~/wallpaper.jpg
+
                          #located in home under the name wallpaper.jpg) for the new orientation
+
  nitrogen --set-scaled ~/wallpaper.jpg;
+
                          #exit the script
+
                          exit;
+
  ;;
+
      right)
+
  xrandr -o 3;
+
  xinput set-prop 10 "Evdev Axis Inversion" 0 1;
+
  xinput set-prop 10 "Evdev Axes Swap" 1;
+
  nitrogen --set-scaled ~/wallpaper.jpg;
+
                          exit;
+
  ;;
+
      upside_down)
+
  xrandr -o 2;
+
  xinput set-prop 10 "Evdev Axes Swap" 0;
+
  xinput set-prop 10 "Evdev Axis Inversion" 1 1;
+
  nitrogen --set-scaled ~/wallpaper.jpg;
+
                          exit;
+
  ;;
+
      normal)
+
  xrandr -o 0;
+
  xinput set-prop 10 "Evdev Axes Swap" 0;
+
  xinput set-prop 10 "Evdev Axis Inversion" 0 0;
+
  nitrogen --set-scaled ~/wallpaper.jpg;
+
                          exit;
+
                          ;;
+
      esac
+
done
+
        }
+
    else
+
        {
+
        #user already specified the rotation desired; stored as variable 'rot'
+
        rot=$1;
+
        #rotates the screen according to 'rot'
+
case $rot in
+
      left)
+
  xrandr -o 1;
+
  xinput set-prop 10 "Evdev Axis Inversion" 1 0;
+
  xinput set-prop 10 "Evdev Axes Swap" 1;
+
  nitrogen --set-scaled ~/wallpaper.jpg;
+
                          exit;
+
  ;;
+
      right)
+
  xrandr -o 3;
+
  xinput set-prop 10 "Evdev Axis Inversion" 0 1;
+
  xinput set-prop 10 "Evdev Axes Swap" 1;
+
  nitrogen --set-scaled ~/wallpaper.jpg;
+
                          exit;
+
  ;;
+
      upside_down)
+
  xrandr -o 2;
+
  xinput set-prop 10 "Evdev Axes Swap" 0;
+
  xinput set-prop 10 "Evdev Axis Inversion" 1 1;
+
  nitrogen --set-scaled ~/wallpaper.jpg;
+
                          exit;
+
  ;;
+
      normal)
+
  xrandr -o 0;
+
  xinput set-prop 10 "Evdev Axes Swap" 0;
+
  xinput set-prop 10 "Evdev Axis Inversion" 0 0;
+
  nitrogen --set-scaled ~/wallpaper.jpg;
+
                          exit;
+
                          ;;
+
esac
+
        }
+
fi
+
 
+
</pre>
+
 
+
Save this script as 'rotate_touch_screen' (or whatever you want to name it) and make it executable with '#chmod +x rotate_touch_screen'. Move it to /usr/bin with '#mv rotate_touch_screen /usr/bin/'.
+
  
 
Edit '~/.config/openbox/menu.xml' to include the following code:
 
Edit '~/.config/openbox/menu.xml' to include the following code:
  
<pre>
+
{{bc|<nowiki>
 
<menu id="root-menu-773645" label="Rotate Screen">
 
<menu id="root-menu-773645" label="Rotate Screen">
 
<item label="Normal">
 
<item label="Normal">
 
<action name="Execute">
 
<action name="Execute">
 
<execute>
 
<execute>
rotate_touch_screen normal
+
touch_rotate normal
 
</execute>
 
</execute>
 
</action>
 
</action>
Line 302: Line 207:
 
<action name="Execute">
 
<action name="Execute">
 
<execute>
 
<execute>
rotate_touch_screen right
+
touch_rotate right
 
</execute>
 
</execute>
 
</action>
 
</action>
Line 309: Line 214:
 
<action name="Execute">
 
<action name="Execute">
 
<execute>
 
<execute>
rotate_touch_screen upside_down
+
touch_rotate upside-down
 
</execute>
 
</execute>
 
</action>
 
</action>
Line 316: Line 221:
 
<action name="Execute">
 
<action name="Execute">
 
<execute>
 
<execute>
rotate_touch_screen left
+
touch_rotate left
 
</execute>
 
</execute>
 
</action>
 
</action>
 
</item>
 
</item>
</pre>
+
</nowiki>}}
  
 
You can edit the position of this piece of code (if you know XML) or just add it in somewhere before the last line '</openbox_menu>' of the script. Change the position by using obmenu (GUI interface for editing openbox menu).
 
You can edit the position of this piece of code (if you know XML) or just add it in somewhere before the last line '</openbox_menu>' of the script. Change the position by using obmenu (GUI interface for editing openbox menu).
 +
 +
===Xbindkeys===
 +
 +
Install xbindkeys `pacman -S xbindkeys` and run `xbindkeys --default >~/.xbindkeysrc`. Press the express gate button to determine the key code. Copy the resultant output to xbindkeysrc. Change "No command" to "touch_rotate".
 +
 +
Launch xbindkeys in gnome3 via gnome-session-properties. Add it as a launcher app (xbindkeys).
  
 
===On Screen Keyboard===
 
===On Screen Keyboard===
  
 
Install kvkbd with from the Arch user repository (if using packer : packer -S kvkbd). Make sure you have some sort of system tray (I used tint2) and edit '~/.config/openbox/autostart' to include the following statement:
 
Install kvkbd with from the Arch user repository (if using packer : packer -S kvkbd). Make sure you have some sort of system tray (I used tint2) and edit '~/.config/openbox/autostart' to include the following statement:
<pre>
+
{{bc|
 
kvkbd &
 
kvkbd &
</pre>
+
}}
 
This will start up kvkbd everytime openbox starts up. Once kvkbd is started up it will appear in the system tray, simply clicking the icon in the tray will pop out the virtual keyboard.
 
This will start up kvkbd everytime openbox starts up. Once kvkbd is started up it will appear in the system tray, simply clicking the icon in the tray will pop out the virtual keyboard.
  
Line 335: Line 246:
  
 
Touchscreen is not working afterwards.
 
Touchscreen is not working afterwards.
 +
 +
It will work after you reload hid_multitouch kernel module:
 +
{{bc|<nowiki>
 +
# rmmod hid_multitouch
 +
# modprobe hid_multitouch
 +
</nowiki>}}
 +
 +
As a workaround, you can add the following line to the file '/etc/pm/config.d/modules':
 +
 +
{{bc|<nowiki>
 +
SUSPEND_MODULES="hid_multitouch"
 +
</nowiki>}}
 +
 +
This way the kernel module will be explicitly unloaded before suspend.
 +
 +
If you are using twofing you also need to restart it:
 +
{{bc|<nowiki>
 +
$ killall twofing
 +
$ twofing --wait
 +
</nowiki>}}
 +
 +
[http://www.pc-freak.net/blog/setting-script-to-be-executed-before-and-after-suspend-and-resume-in-hibernate-on-debian-squeeze/ This instruction may be useful for solving this problem]
  
 
===Hibernate===
 
===Hibernate===
Line 342: Line 275:
 
===Multi-Touch===
 
===Multi-Touch===
  
Not Working.
+
Modern kernels out-of-the-box support multitouch in our devises, but not Xorg. In Ubuntu there is some Xorg patches for a multitouch support and utouch (ginn) for multitouch gestures, but in other linux distributives you can use twofing. You can find utouch packages in AUR, but they are untested on our device.
 +
 
 +
But you can use twofing experimental daemon to use some gestures.
 +
 
 +
While we are waiting someone to build AUR packages, we can install it from sources. Get the latest git version [https://aur.archlinux.org/packages.php?ID=55306 here].
 +
 
 +
After this, you must fix '''/etc/udev/rules.d/70-touchscreen-egalax.rules''' file. Replace custom touchscreen code rule to following:
 +
 
 +
{{bc|<nowiki>
 +
SUBSYSTEMS=="usb",ACTION=="add",KERNEL=="event*",ATTRS{idProduct}=="0186",SYMLINK+="twofingtouch",RUN+="/bin/chmod a+r /dev/twofingtouch"
 +
</nowiki>}}
 +
Replace idProduct variable to idProduct of latest model touchscreen ID. To to check it, try this
 +
{{bc|<nowiki>
 +
lsusb | grep "ASUS Comp"</nowiki>}}
 +
Then, create symlink to touchscreen device:
 +
{{bc|<nowiki>
 +
ln -s /dev/input/mouse1 /dev/twofingtouch
 +
</nowiki>}}
 +
 
 +
Add 'twofing --wait' command to start with user session.
 +
You can read more about it [https://help.ubuntu.com/community/T101MT#Experimental_Two-Finger_Touch_Daemon here].
 +
It works on all linux distributives with actual hid_multitouch module.
 +
 
 +
==Brightness==
 +
With some Eee PC's, the brightness setting are either too low, or are sometimes a little inconstant or arbitrary (cycling high/low/completely off).
 +
If you have issues with this, issue this command to fix it:
 +
 
 +
And regenerate the grub2 file:
 +
# setpci -s 00:02.0 f4.b=80
 +
 
 +
The 80 represents the highest brightness level in hexadecimal, which can be replaced with up to FF if desired. 80 is about half, being approximately the same brightness range as windows or grub.
 +
 
 +
This is not perminent, so it can be added to rc.local:
 +
 
 +
{{hc|/etc/rc.d/rc.local|2=
 +
#!/bin/sh
 +
 
 +
...
 +
 
 +
setpci -s 00:02.0 f4.b=80
 +
}}
  
 
==Hardware==
 
==Hardware==
  
 
For N450 versions:
 
For N450 versions:
<pre>
+
{{bc|
 
$ lspci
 
$ lspci
 
00:00.0 Host bridge: Intel Corporation Pineview DMI Bridge
 
00:00.0 Host bridge: Intel Corporation Pineview DMI Bridge
Line 366: Line 339:
 
01:00.0 Ethernet controller: Atheros Communications Atheros AR8132 / L1c Gigabit Ethernet Adapter (rev c0)
 
01:00.0 Ethernet controller: Atheros Communications Atheros AR8132 / L1c Gigabit Ethernet Adapter (rev c0)
 
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
 
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
</pre>
+
}}
  
 
For N570 versions:
 
For N570 versions:
<pre>
+
{{bc|
 
00:00.0 Host bridge: Intel Corporation N10 Family DMI Bridge (rev 02)
 
00:00.0 Host bridge: Intel Corporation N10 Family DMI Bridge (rev 02)
 
00:02.0 VGA compatible controller: Intel Corporation N10 Family Integrated Graphics Controller (rev 02)
 
00:02.0 VGA compatible controller: Intel Corporation N10 Family Integrated Graphics Controller (rev 02)
Line 387: Line 360:
 
01:00.0 Ethernet controller: Atheros Communications AR8132 Fast Ethernet (rev c0)
 
01:00.0 Ethernet controller: Atheros Communications AR8132 Fast Ethernet (rev c0)
 
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
 
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
</pre>
+
}}
  
 
==More Resources==
 
==More Resources==
 
* [[Asus Eee PC]] General Guide for EEE PCs on Arch
 
* [[Asus Eee PC]] General Guide for EEE PCs on Arch
 
* [http://ubuntuforums.org/showthread.php?t=1468376 Ubuntu T101MT Howto]
 
* [http://ubuntuforums.org/showthread.php?t=1468376 Ubuntu T101MT Howto]

Revision as of 14:58, 14 August 2012

Device Status Information
Graphics Working Intel GMA 3150
Ethernet Working
Wireless Working
Audio Working
Camera Working 3.0.0
Card Reader Working
Function Keys Working
Suspend2RAM Working
Hibernate Not working
Touchscreen Working 3.0.0
Multi-Touch Working

Installing Arch

This wiki page supplements these pages: Beginners Guide, the Official Install Guide, and Installing Arch Linux on the Asus EEE PC. Please refer to those guides first before following the eeepc-specific pointers on this page.

Following the Beginners Guide

Graphics, Ethernet, Wireless, Audio and the Card Reader work "out of the box".

Camera

Is working fine with Ekiga, Skype displays the image upside-down
to fix this use command:

for x86_x64

LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so skype

for i686

LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype

To make this happen automatically just create a script named skyp (or anything you want it to be)

#!/bin/bash

#get the architecture of the system
arch=`uname -m`

#corrects upside down webcam in skype
case $arch in
     x86_64)
       LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so skype;
       ;;
     i686)
       LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype;
       ;;
esac

Save this script as "skyp" and '#chmod +x skyp'. Move this script to '/usr/bin/' with '#mv skyp /usr/bin/'. From now on typing in skyp should load skype with the proper webcam orientation.

Function Keys

Suspend-, Brightness- and Audiokeys work. Others may need special configuration. My Suspendkey was executing the suspend from KDE and from the acpi Interface. I disabled the KDE event, and now Suspend works.

In openbox, editting ~/.config/rc.xml and appending (under <keyboard>); this was taken from https://wiki.archlinux.org/index.php/Openbox:

   <!-- Keybindings for audio control -->
   <keybind key="XF86AudioRaiseVolume">
     <action name="Execute">
       <command>amixer set Master 5%+ unmute</command>
     </action>
   </keybind>
   <keybind key="XF86AudioLowerVolume">
     <action name="Execute">
       <command>amixer set Master 5%- unmute</command>
     </action>
   </keybind>
   <keybind key="XF86AudioMute">
     <action name="Execute">
       <command>amixer set Master toggle</command>
     </action>
   </keybind>

will make the audio keys work if alsa is installed.

Installing OpenBox

OpenBox can be installed by issuing #pacman -S openbox. Follow the instructions on screen to copy the openbox scripts to '~/.config/openbox/'.

Rotating the touch screen

Editing the openbox rc.xml file in '~/.config/openbox/rc.xml' will allow configuration of the Express Gate button. Open a terminal and run $xev (non-root) to find out the key associated with the Express Gate button (just click it while in xev). For my system it was key 248 (0xF8) in hexadecimal. Edit your ~/.config/openbox/rc.xml to include the following code under <keyboard>:

   <!-- Keybindings for express gate button --> 
   <keybind key="0xF8">
       <action name="ShowMenu">
         <menu>root-menu</menu>
        </action>
    </keybind>

This will bind the express gate key to show the openbox menu whenever clicked.

To rotate the screen, use the following script (note the following script can also be bound to the expressgate button itself to generate rotations (bypass any menu):

    • As of evdev 2.7.3-1, this script no longer properly rotates the touchscreen axes.
#!/bin/bash

echo "
##############################################################
#                                                            #
#                Touch_Rotate for Asus T101mt                #
#                     written by Mark Lee                    #
#                                                            #
# Command Line: touch_rotate <normal|right|left|upside-down> #
#                                                            #
#            Bind /usr/bin/touch_rotate to a button          #
#                     to rotate clockwise                    #      
#                                                            #
##############################################################
";

# Check if touch_rotate is set up in /usr/bin
if [ ! -f /usr/bin/touch_rotate ]; then sudo mv $PWD/touch_rotate /usr/bin; sudo chmod a+x /usr/bin/touch_rotate;fi

# Obtain the current rotation
cur_rot=`xrandr -q --verbose|grep LVDS1|cut -d ' ' -f5`

# Convert the current rotation to a number
case $cur_rot in
	normal)
		cur_rot=0;
		;;
	left)
		cur_rot=1;
		;;
	inverted)
		cur_rot=2;
		;;
	right)
		cur_rot=3;
		;;
	esac;

# Obtain the id of the touchscreen
id=$(xinput -list | for a in `awk '/MultiTouch/' `xinput -list``;do echo $a | grep id | awk -F'=' '{print $2}';done)

# Rotate clockwise by increasing cur_rot around mod 4
if [ -z $1 ]; then new_rot=$[$[1+$cur_rot] % 4];else new_rot=$1;fi

# Rotate the touch screen
case $new_rot in
	0|normal)
		xrandr -o 0;  ## rotate screen to normal
		xinput set-prop $id "Evdev Axes Swap" 0;  ## do not swap axis
		xinput set-prop $id "Evdev Axis Inversion" 0 0;  ## do not invert axis
		exit;
		;;
	1|left)
    		xrandr -o 1;
    		xinput set-prop $id "Evdev Axes Swap" 1;
    		xinput set-prop $id "Evdev Axis Inversion" 1 0;
    		exit;
    		;;
	2|upside-down)
		xrandr -o 2;
    		xinput set-prop $id "Evdev Axes Swap" 0;
    		xinput set-prop $id "Evdev Axis Inversion" 1 1;
    		exit;
    		;;
	3|right)
    		xrandr -o 3;
    		xinput set-prop $id "Evdev Axes Swap" 1;
    		xinput set-prop $id "Evdev Axis Inversion" 0 1;
    		exit;
    		;;
	esac

Edit '~/.config/openbox/menu.xml' to include the following code:

		<menu id="root-menu-773645" label="Rotate Screen">
			<item label="Normal">
				<action name="Execute">
					<execute>
						touch_rotate normal
					</execute>
				</action>
			</item>
			<item label="Right">
				<action name="Execute">
					<execute>
						touch_rotate right
					</execute>
				</action>
			</item>
			<item label="Upside Down">
				<action name="Execute">
					<execute>
						touch_rotate upside-down
					</execute>
				</action>
			</item>
			<item label="Left">
				<action name="Execute">
					<execute>
						touch_rotate left
					</execute>
				</action>
			</item>

You can edit the position of this piece of code (if you know XML) or just add it in somewhere before the last line '</openbox_menu>' of the script. Change the position by using obmenu (GUI interface for editing openbox menu).

Xbindkeys

Install xbindkeys `pacman -S xbindkeys` and run `xbindkeys --default >~/.xbindkeysrc`. Press the express gate button to determine the key code. Copy the resultant output to xbindkeysrc. Change "No command" to "touch_rotate".

Launch xbindkeys in gnome3 via gnome-session-properties. Add it as a launcher app (xbindkeys).

On Screen Keyboard

Install kvkbd with from the Arch user repository (if using packer : packer -S kvkbd). Make sure you have some sort of system tray (I used tint2) and edit '~/.config/openbox/autostart' to include the following statement:

kvkbd &

This will start up kvkbd everytime openbox starts up. Once kvkbd is started up it will appear in the system tray, simply clicking the icon in the tray will pop out the virtual keyboard.

Suspend2RAM

Touchscreen is not working afterwards.

It will work after you reload hid_multitouch kernel module:

# rmmod hid_multitouch
# modprobe hid_multitouch

As a workaround, you can add the following line to the file '/etc/pm/config.d/modules':

SUSPEND_MODULES="hid_multitouch"

This way the kernel module will be explicitly unloaded before suspend.

If you are using twofing you also need to restart it:

$ killall twofing
$ twofing --wait

This instruction may be useful for solving this problem

Hibernate

Not Working.

Multi-Touch

Modern kernels out-of-the-box support multitouch in our devises, but not Xorg. In Ubuntu there is some Xorg patches for a multitouch support and utouch (ginn) for multitouch gestures, but in other linux distributives you can use twofing. You can find utouch packages in AUR, but they are untested on our device.

But you can use twofing experimental daemon to use some gestures.

While we are waiting someone to build AUR packages, we can install it from sources. Get the latest git version here.

After this, you must fix /etc/udev/rules.d/70-touchscreen-egalax.rules file. Replace custom touchscreen code rule to following:

SUBSYSTEMS=="usb",ACTION=="add",KERNEL=="event*",ATTRS{idProduct}=="0186",SYMLINK+="twofingtouch",RUN+="/bin/chmod a+r /dev/twofingtouch"

Replace idProduct variable to idProduct of latest model touchscreen ID. To to check it, try this

lsusb | grep "ASUS Comp"

Then, create symlink to touchscreen device:

ln -s /dev/input/mouse1 /dev/twofingtouch

Add 'twofing --wait' command to start with user session. You can read more about it here. It works on all linux distributives with actual hid_multitouch module.

Brightness

With some Eee PC's, the brightness setting are either too low, or are sometimes a little inconstant or arbitrary (cycling high/low/completely off). If you have issues with this, issue this command to fix it:

And regenerate the grub2 file:

# setpci -s 00:02.0 f4.b=80

The 80 represents the highest brightness level in hexadecimal, which can be replaced with up to FF if desired. 80 is about half, being approximately the same brightness range as windows or grub.

This is not perminent, so it can be added to rc.local:

/etc/rc.d/rc.local
#!/bin/sh

...

setpci -s 00:02.0 f4.b=80

Hardware

For N450 versions:

$ lspci
00:00.0 Host bridge: Intel Corporation Pineview DMI Bridge
00:02.0 VGA compatible controller: Intel Corporation Pineview Integrated Graphics Controller
00:02.1 Display controller: Intel Corporation Pineview Integrated Graphics Controller
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)
00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 4 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation Tigerpoint LPC Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801GR/GH (ICH7 Family) SATA AHCI Controller (rev 02)
01:00.0 Ethernet controller: Atheros Communications Atheros AR8132 / L1c Gigabit Ethernet Adapter (rev c0)
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)

For N570 versions:

00:00.0 Host bridge: Intel Corporation N10 Family DMI Bridge (rev 02)
00:02.0 VGA compatible controller: Intel Corporation N10 Family Integrated Graphics Controller (rev 02)
00:02.1 Display controller: Intel Corporation N10 Family Integrated Graphics Controller (rev 02)
00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 2 (rev 02)
00:1c.3 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 4 (rev 02)
00:1d.0 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation NM10 Family LPC Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation N10/ICH7 Family SATA AHCI Controller (rev 02)
01:00.0 Ethernet controller: Atheros Communications AR8132 Fast Ethernet (rev c0)
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)

More Resources