# Toshiba Tecra M4

The Tecra M4 is a convertible-PC produced by Toshiba.

Mine includes 512MByte of RAM, 60Gbyte SATA-HDD, NVidia 6200 graphics card and a serial Wacom tablet.

This will be a short introduction on how to make everything work perfectly.

This tutorial is a bit work in progress so stay tuned ;)

# Installation

Just boot the ArchLinux Installation disc and install the basics

# Wireless drivers

This PC contains an intel wireless card, that is supported by the ipw2200.

Therefor run a

    # pacman -S ipw2200-fw

and afterwards reload the ipw2200 driver.

# Installing Wacom Tablet

Install xf86-input-wacom from AUR - if you installed aurpac like me:

     $ aurpac -S xf86-input-wacom

Now, you'll have to configure xorg.conf:

    # X -configure
    # cp /root/xorg.conf.new /etc/X11/xorg.conf
    # nano -w /etc/X11/xorg.conf

The ServerLayout Section should look like this:

    Section "ServerLayout"
    	Identifier      "Default Layout"
    	Screen "Screen0"
    	Inputdevice     "cursor" "SendCoreEvents"
    	Inputdevice     "stylus" "SendCoreEvents"
    	Inputdevice     "eraser" "SendCoreEvents"
    	Identifier     "X.org Configured"
    	Screen      0  "Screen0" 0 0
    	InputDevice    "Mouse0" "CorePointer"
    	InputDevice    "Keyboard0" "CoreKeyboard"
           InputDevice    "Touchpad"
    EndSection

In section "Module" add

    Load  "synaptics"

The Input-Sections:

    Section "InputDevice"
     Driver          "wacom"
     Identifier      "cursor"
     Option          "Device" "/dev/ttyS0"
     Option          "Type" "cursor"
     Option          "ForceDevice" "ISDV4"
     Option          "Rotate" "NONE"
    EndSection

    Section "InputDevice"
     Driver          "wacom"
     Identifier      "stylus"
     Option          "Device" "/dev/ttyS0"
     Option          "Type" "stylus"
     Option          "ForceDevice" "ISDV4"
     Option          "Rotate" "NONE"
    EndSection

    Section "InputDevice"
      Driver          "wacom"
      Identifier      "eraser"
      Option          "Device" "/dev/ttyS0"
      Option          "Type" "eraser"
      Option          "ForceDevice" "ISDV4"
      Option          "Rotate" "NONE"
    EndSection

This is my Input-Section for the touchpad

    Section "InputDevice"
      Identifier  "Synaptics Touchpad"
      Driver      "synaptics"
      Option      "AlwaysCore"        "true"  # send events to CorePointer
      Option      "Device"            "/dev/psaux"
      Option      "Protocol"          "auto-dev"
      Option      "SHMConfig"         "false" # configurable at runtime? security risk
      Option      "LeftEdge"          "1700"  # x coord left
      Option      "RightEdge"         "5300"  # x coord right
      Option      "TopEdge"           "1700"  # y coord top
      Option      "BottomEdge"        "4200"  # y coord bottom
      Option      "FingerLow"         "25"    # pressure below this level triggers release
      Option      "FingerHigh"        "30"    # pressure above this level triggers touch
      Option      "MaxTapTime"        "180"   # max time in ms for detecting tap
      Option      "VertEdgeScroll"    "true"  # enable vertical scroll zone
      Option      "HorizEdgeScroll"   "true"  # enable horizontal scroll zone
      Option      "CornerCoasting"    "true"  # enable continuous scroll with finger in corner
      Option      "CoastingSpeed"     "0.30"  # corner coasting speed
      Option      "VertScrollDelta"   "100"   # edge-to-edge scroll distance of the vertical scroll
      Option      "HorizScrollDelta"  "100"   # edge-to-edge scroll distance of the horizontal scroll
      Option      "MinSpeed"          "0.10"  # speed factor for low pointer movement
      Option      "MaxSpeed"          "0.60"  # maximum speed factor for fast pointer movement
      Option      "AccelFactor"       "0.0020"    # acceleration factor for normal pointer movements
      Option      "VertTwoFingerScroll"   "true"  # vertical scroll anywhere with two fingers
      Option      "HorizTwoFingerScroll"  "true"  # horizontal scroll anywhere with two fingers
      Option      "TapButton1" "1"
      Option      "TapButton2" "2"
      Option      "TapButton3" "3"
    EndSection

My Device Section

    Section "Device"
    	Identifier  "Card0"
    	Option	"NoLogo" "1" # I do not like the NVidia Logo
    	Option "RandRRotation" "true" # making it possible to rotate the screen
    	Option "Coolbits" "1"
    	Option "RegistryDwords" "PerfLevelSrc=0x3333" # for saving battery lifetime
    	Driver      "nvidia"
    	VendorName  "nVidia Corporation"
    	BoardName   "NV43 [Geforce Go 6600TE/6200TE]"
    	BusID       "PCI:1:0:0"
    EndSection

# Optimizing battery lifetime

## CPUFreq

Just install cpufrequtils

## PHC

I reduced VCores to make my battery live longer: install intel-phc and linux-phc-optimize from AUR

    $ aurpac -S intel-phc linux-phc-optimize

then run

    # linux-phc-optimize

remember the original and the optimized values - you'll need them ;) then I created the following script /etc/rc.d/phc

    #!/bin/bash

    case "$1" in
     start)
       stat_busy "Optimizing PHC VIDs"
       echo "14:21 12:15 10:9 8:4 6:3" > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
         stat_done
       ;;
     stop)
       stat_busy "Resetting PHC VIDs"
       echo "14:41 12:36 10:30 8:24 6:18" > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
         stat_done
       ;;
     restart)
       $0 stop
       sleep 1
       $0 start
       ;;
     *)
       echo "usage: $0 {start|stop|restart}"
    esac
    exit 0

the bold passages are the optimized and original values - these are for my Pentium M 1,86GHz the formate is the following:

    14:value_for_full_speed 12:value_for_speed2 10:value_for_speed3

etc etc in the "Optimizing" part insert the optimized values and in the "Resetting" part the original values.

# Mapping screen-key to something that makes sense

by default, the buttons on the screen return the combinations Super_L + [1-7] I prefer this tiny joystick to use as page up and page down - so I tried xmodmap

    $ nano -w .Xmodmap

change the line of keycode 134 to

    keycode 134 = Mode_switch NoSymbol Mode_switch NoSymbol Super_R

and the following lines:

    keycode  10 = 1 exclam Prior Prior onesuperior exclamdown
    keycode  11 = 2 quotedbl Next Next twosuperior oneeighth
    keycode  12 = 3 section Prior Prior threesuperior sterling
    keycode  13 = 4 dollar Next Next onequarter currency

that produces: tablet is landscape and orientation "normal" - joystick up -> page up, down -> page down tablet is portrait and orientation "left" - joystick up -> page up, down -> page down

# Script for changing orientation

    # nano -w /usr/bin/rotate

    #!/bin/bash

    #### rotate.sh - A script for tablet PCs to rotate the display.

    ## This software is licensed under the CC-GNU GPL.
    ## http://creativecommons.org/licenses/GPL/2.0/

    ## https://wiki.archlinux.org/index.php/Tablet_PC
    ## REQUIRES: linuxwacom (http://sourceforge.net/apps/mediawiki/linuxwacom/index.php?title=Main_Page)

    #### Function(s)
    function set_normal {
     xrandr -o normal
     xsetwacom set "stylus" Rotate NONE
     xsetwacom set "cursor" Rotate NONE
     xsetwacom set "eraser" Rotate NONE
     orientation="normal"
    }

    function set_left {
     xrandr -o left
     xsetwacom set "stylus" Rotate CCW
     xsetwacom set "cursor" Rotate CCW
     xsetwacom set "eraser" Rotate CCW
     orientation="left"
    }

    #### Variable(s)
    orientation="$(xrandr --query --verbose | grep '(normal left inverted right) 0mm x 0mm' | awk '{print $5}')"

    #### Main
    if [ "$orientation" = "normal" ]; then
    	set_left
    elif [ "$orientation" = "right" ]; then
    	set_normal
    elif [ "$orientation" = "inverted" ]; then
    	set_normal
    elif [ "$orientation" = "left" ]; then
    	set_normal
    fi

    #### EOF

    # chmod 0755 /usr/bin/rotate

I customized the given script a bit, because turning right and inverted made no sense for me. This script can now be used with gnome-keybinding-properties

# What does not work

- Mapping joystick to page_up/down AND using the rotate button in gnome-keybinding-properties at the same time
- sound does work, if you reload the snd_intel8x0 module after boot - do not know, why

Category:

- Toshiba