ToshibaPortegeM700

Toshiba Portege M700 Tablet

An ultimate guide to set up everything (mostly) to work in Ubuntu (Hardy, Intrepid, Jaunty, and Karmic Final)

  • Hardy Contact: vlandi at gmail dot com
  • Intrepid/Jaunty/Karmic Contact: rfestag at gmail dot com
  • Make: Toshiba
  • Brand: Portege
  • Model: M700-S7008X
  • Website:

Current Issues

  • Tablet (bezel) buttons don't work OTB - solution below
  • Fingerprint reader doesn't work OTB - solution below

System Info

TOSHIBA PORTEGE M700 PPM70U-0T901J

Hardware details

Screen

Screen detected with 1200x800 resolution @57Hz which is OK Note that in the base install of Jaunty, Desktop Effects are disabled, but the kernel updates fix this issue.

Network

Both WiFi and NIC work without any problems. Note however that there are known issues with the wireless card causing Jaunty to hang on reboot. This problem can be fixed by installing the backports package:

sudo apt-get install linux-backports-modules-jaunty

CD/DVD writer

Works OTB

Sound

As of Karmic Koala (9.10), Sound works OTB. For older versions, you can download linux-backports-modules-hardy or linux-backports-modules-intrepid, whichever applies to your version (You no longer need the backports in Jaunty). So, for Hardy, you can do the following:

sudo apt-get install linux-backports-modules-hardy

Regardless of the version, you must also add the line

options snd-hda-intel model=toshiba

at the end of /etc/modprobe.d/alsa-base and restart (This must be done for all versions, including Jaunty).

Mic & headphones also works fine after that.

Hint - for other linux systems - this model uses Realtek ALS268 the same as Toshiba R400, so you can google how they resolve it in your distribution for that model.

Multimedia and Fn-buttons

Most of standard buttons (volume, brightness, sleep etc. work OTB)

About bezel buttons - below

ACPI, suspend, sleep

Works OTB

Build in camera

Works OTB (you can quickly check it with Ekiga softphone)

Touchscreen

The touchscreen (both active and passive digitizers) work OTB in Karmic. For older versions, see below.

To get stylus working in Hardy

Toshiba uses serial port 0x338 for a touch input, so first you have to install setserial

sudo apt-get install setserial

and add line:

/bin/setserial /dev/ttyS0 port 0x338 irq 4 autoconfig

at the end of /etc/rc.local

Next install xserver-xorg-input-wacom and wacom-tools

sudo apt get install xserver-xorg-input-wacom wacom-tools

and edit /etc/X11/xorg.conf file and add lines:

Section "InputDevice"
        Identifier      "stylus"
        Driver          "wacom"
        Option          "Device"        "/dev/ttyS0"
        Option          "Type"          "stylus"
        Option          "ForceDevice"   "ISDV4"
        Option          "Mode"          "absolute"
        Option          "SendCoreEvents"        "true"
        Option          "Button2"       "3"
EndSection

Section "InputDevice"
        Identifier      "eraser"
        Driver          "wacom"
        Option          "Device"        "/dev/ttyS0"
        Option          "Type"          "eraser"
        Option          "ForceDevice"   "ISDV4"
        Option          "Mode"          "absolute"
        Option          "SendCoreEvents"        "true"
        Option          "Button2"       "3"
EndSection

and

        InputDevice     "stylus"        "SendCoreEvents"
        InputDevice     "eraser"        "SendCoreEvents"
        InputDevice     "cursor"        "SendCoreEvents"

in section ServerLayout at the end of the same file

Restart and you should be able to use stylus

Finger touchscreen (Hardy Only. For Intrepid, see stylus instructions below)

This is unfortunately more complicated. Current wacom driver doesn't support this model. Thanks to Rene vanPaassen there is a patch to the source code to make it work (you can omit this section if you're happy only with stylus)

Easy way

Download linuxwacom patched driver from here and replace original driver in /usr/lib/xorg/modules/input/ .

cd <directory with downloaded driver>
sudo mv /usr/lib/xorg/modules/input/wacom_drv.so /usr/lib/xorg/modules/input/wacom_drv.so.backup
sudo cp wacom_drv.so /usr/lib/xorg/modules/input/

Restart and your finger touchscreen should work.

Hard way

Download the isdv4.patch from here or here

Download the obsolete linuxwacom-0.7.9-7 sources from repositories (google for linuxwacom-0.7.9-7.tar.bz2) or from here

Download build-essential if you don't have it, along with tk,tk-dev and patch. Unpack sources, patch, make and install

cd <directory with patch and sources>
sudo apt-get install build-essential tk tk-dev patch
tar xvjf linuxwacom-0.7.9-7.tar.bz2
cd linuxwacom-0.7.9-7
patch -p1 <../isdv4.patch
./configure
make
sudo make install

If everything went fine, you should have a new driver in /usr/lib/xorg/modules/input

To get stylus and touch screen working in Intrepid

Just as above, you will need to install setserial and configure it to set up the tablet on boot.

sudo apt-get install setserial

and add line:

/bin/setserial /dev/ttyS0 port 0x338 irq 4 autoconfig

at the end of /etc/rc.local

Unfortunately, the current versions of xserver-xorg-input-wacom and wacom-tools in the repositories have a bug that makes the touch screen erratic and unusable, and causes problems with Compiz when the screen is rotated. First, make sure they are uninstalled

sudo apt-get remove xserver-org-input-wacom wacom-tools

Then we can download, compile, and install a working driver (at least 0.8.2 from linuxwacom.sourceforge.net)

sudo apt-get install build-essential
sudo apt-get build-dep wacom-tools
wget http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.2.tar.bz2
tar -xjvf linuxwacom-0.8.2.tar.bz2 
cd linuxwacom-0.8.2
./configure --enable-wacom --prefix=/usr
make
sudo make uninstall
sudo make install

Make sure there were no errors before continuing. For reference, these instructions were derived from https://bugs.launchpad.net/ubuntu/+source/wacom-tools/+bug/300980 and https://help.ubuntu.com/community/Wacom/LatestDriver, which may be useful for troubleshooting.

Finally, backup your current xorg.conf, and replace it with the following:

Section "Monitor"
        Identifier      "Configured Monitor"
EndSection

Section "Screen"
        Identifier      "Default Screen"
        Monitor         "Configured Monitor"
        Device          "Configured Video Device"
EndSection

Section "InputDevice"
        Identifier      "stylus"
        Driver          "wacom"
        Option          "Device"        "/dev/ttyS0"
        Option          "Type"          "stylus"
        Option          "ForceDevice"   "ISDV4"
        Option          "Mode"          "absolute"
        Option          "SendCoreEvents"        "true"
        Option          "Button2"       "3"
EndSection

Section "InputDevice"
        Identifier      "eraser"
        Driver          "wacom"
        Option          "Device"        "/dev/ttyS0"
        Option          "Type"          "eraser"
        Option          "ForceDevice"   "ISDV4"
        Option          "Mode"          "absolute"
        Option          "SendCoreEvents"        "true"
        Option          "Button1"       "2"
EndSection

Section "InputDevice"
        Identifier      "touch"
        Driver          "wacom"
        Option          "Device"        "/dev/ttyS0"
        Option          "Type"          "touch"
        Option          "ForceDevice"   "ISDV4"
        Option          "Mode"          "absolute"
        Option          "SendCoreEvents"        "true"
EndSection

Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Default Screen"
        InputDevice     "stylus"        "SendCoreEvents"
        InputDevice     "eraser"        "SendCoreEvents"
        InputDevice     "touch"        "SendCoreEvents"
EndSection

Section "Device"
        Identifier      "Configured Video Device"
        Option          "RandRRotation" "true"
EndSection

Restart and you should have access to the stylus and the touch screen. You will also be able to send right-clicks by pressing the side button. Additionally, the eraser now acts as Button3, which is useful in some applications (like Xournal) for actually acting like an eraser.

To get stylus and touch screen working in Jaunty

Just as above, you will need to install setserial and configure it to set up the tablet on boot.

sudo apt-get install setserial

and add line:

/bin/setserial /dev/ttyS0 port 0x338 irq 4 autoconfig

at the end of /etc/rc.local

The latest versions of xserver-xorg-input-wacom and wacom-tools in the repositories do work, so simply install them.

sudo apt-get install xserver-xorg-input wacom wacom-tools

We can use the xorg.conf file shown above for Intrepid to configure X11 for Jaunty. After you reboot, you should have full access to both the touch screen and the stylus.

Screen Rotation

Screen Rotate in Karmic

For reference, these instructions were derived from this thread.

First, backup your 10-linuxwacom.fdi file.

sudo cp /usr/share/hal/fdi/policy/20thirdparty/10-linuxwacom.fdi ~/Desktop/10-linuxwacom.bak

Then run the following command to edit the file.

gksudo gedit /usr/share/hal/fdi/policy/20thirdparty/10-linuxwacom.fdi

Delete the contents of it, and replace it with the following. This will allow left and right clicks, and allow for the eraser end of the stylus to be used as an eraser in Xournal:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- Wacom:  tablets, tablet pc's, and touch screen laptops -->
<deviceinfo version="0.2">
  <!-- for all Wacom USB tablets -->
  <device>
    <match key="input.originating_device" contains="if0">
      <match key="info.product" contains="Wacom">
        <merge key="input.x11_driver" type="string">wacom</merge>
        <merge key="input.x11_options.Type" type="string">stylus</merge>
        <append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
        <append key="wacom.types" type="strlist">eraser</append>
        <append key="wacom.types" type="strlist">cursor</append>
        <append key="wacom.types" type="strlist">pad</append>
        <!-- for HP dv3-2250 multi-touch laptop -->
        <match key="info.udi" contains="e2">
          <merge key="input.x11_options.Type" type="string">touch</merge>
        </match>
      </match>
    </match>
  </device>
  <!-- for most Wacom USB tablets with touch -->
  <device>
    <match key="input.originating_device" contains="if1">
      <match key="info.product" contains="Wacom">
        <merge key="input.x11_driver" type="string">wacom</merge>
        <merge key="input.x11_options.Type" type="string">touch</merge>
        <!-- for Bamboo Pen & Touch tablets -->
        <append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
        <append key="wacom.types" type="strlist">pad</append>
      </match>
    </match>
  </device>
  <!-- for Wacom Serial tablets -->
  <device>
    <match key="info.capabilities" contains="serial">
      <match key="@info.parent:pnp.id" contains_outof="WACf;FUJ02e5;FUJ02e7">
        <append key="info.capabilities" type="strlist">input</append>
        <merge key="input.x11_driver" type="string">wacom</merge>
        <merge key="input.x11_options.Type" type="string">stylus</merge>
        <merge key="input.x11_options.ForceDevice" type="string">ISDV4</merge>
        <merge key="input.device" type="copy_property">serial.device</merge>
        <append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
        <append key="wacom.types" type="strlist">eraser</append>
        <append key="wacom.types" type="strlist">cursor</append>
        <!-- Serial tablets with touch capabilities -->
        <match key="@info.parent:pnp.id" contains_outof="WACf008;WACf009;WACf010;WACf008A;WACf00B;WACf00C;WACf00D;WACf00E;FUJ02e7">
          <append key="wacom.types" type="strlist">touch</append>
        </match>
        <!-- Serial tablets that operate at higher baud rate -->
        <match key="@info.parent:pnp.id" contains_outof="WACf008">
          <merge key="input.x11_options.BaudRate" type="string">38400</merge>
        </match>
      </match>
    </match>
  </device>
  <!-- Match the Wacom Bluetooth A5 pen tablet -->
  <device>
    <match key="info.capabilities" contains="input.mouse">
      <match key="info.product" contains="WACOM">
        <match key="info.product" contains="Tablet">
          <merge key="input.x11_driver" type="string">wacom</merge>
          <merge key="input.x11_options.Type" type="string">stylus</merge>
          <append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
          <append key="wacom.types" type="strlist">eraser</append>
          <append key="wacom.types" type="strlist">cursor</append>
        </match>
      </match>
    </match>
  </device>
  <!-- Wacom names "parser" -->
  <device>
    <match key="info.udi" contains_not="subdev_0">
    <match key="info.udi" contains_not="subdev_1">
    <match key="info.udi" contains_not="subdev_2">
      <match key="input.x11_options.Type" contains="stylus">
        <merge key="info.product" type="string">stylus</merge>
        <merge key="input.x11_options.Button2" type="string">3</merge>
      </match>
      <match key="input.x11_options.Type" contains="eraser">
        <merge key="info.product" type="string">eraser</merge>
        <merge key="input.x11_options.Button1" type="string">2</merge>
      </match>
      <match key="input.x11_options.Type" contains="cursor">
        <merge key="info.product" type="string">cursor</merge>
      </match>
      <match key="input.x11_options.Type" contains="pad">
        <merge key="info.product" type="string">pad</merge>
      </match>
      <match key="input.x11_options.Type" contains="touch">
        <merge key="info.product" type="string">touch</merge>
      </match>
    </match>
    </match>
    </match>
  </device>
</deviceinfo>

Now, create a new init.d script to replace the default input device names with the names xsetwacom expects:

gksudo gedit /etc/init.d/wacom-names

Place the following contents into the file:

## find any wacom devices
for udi in `hal-find-by-property --key input.x11_driver --string wacom`
do
   type=`hal-get-property --udi $udi --key input.x11_options.Type`
   echo $type

   ## rewrite the names that the Xserver will use
   hal-set-property --udi $udi --key info.product --string $type
done

Make the new script executable:

sudo chmod +x /etc/init.d/wacom-names

Finally, set it to run at boot as follows:

sudo update-rc.d wacom-names start 27 2 3 4 5 .

Reboot the system. When it comes back up, you can install wacom-tools:

sudo apt-get install wacom wacom-tools

You should now be able to run the xsetwacom command to rotate the input. You can use the following script to rotate the screen and inputs at the same time:

# Toshiba M700 rotate script for bezel button

if [ -f /tmp/rotated ]; then
        xrandr -o normal
        xsetwacom set "stylus" Rotate none
        xsetwacom set "cursor" Rotate none
        xsetwacom set "eraser" Rotate none
        rm -f /tmp/rotated && exit 0
else
        xrandr -o right
        xsetwacom set "stylus" Rotate CW
        xsetwacom set "cursor" Rotate CW
        xsetwacom set "eraser" Rotate CW
        echo 1 > /tmp/rotated && exit 0
fi

Save this script /usr/local/bin/toshiba-rotate, and make it executable

sudo chmod 755 /usr/local/bin/toshiba-rotate

You can now either use the xbindkeys method described later for mapping bezel keys, or you can change the gnome key bindings:

System -> Preferences -> Keyboard Shortcuts

Click "Add", and enter a name (Rotate) and the command (/usr/local/bin/toshiba-rotate). Locate the new entry (Rotate) in the list, click "Disabled" under the "Shortcut" column, and press the button you want to map to that.

A nice solution for arbitrary re-orientation is the create a separate script for rotating left, right, halfway, and normal, and mapping each of the four directions on the switch button on the bezel to one of those directions, using the same basic instructions above.

Screen Rotate in pre-Karmic releases

First you have to enable resolution and rotation in X by putting the following line:

        Option          "RandRRotation" "true"

into the Device section describing your graphic card in /etc/X11/xorg.conf and Restart X

I put simple script to rotate and restore screen to landscape.

NOTE - In Hardy, you will have to disable compiz System->Preferences->Appearence->VisualEffects->None to make rotation work. This is no longer an issue in Intrepid.

Save script:

# Toshiba M700 rotate script for bezel button

if [ -f /tmp/rotated ]; then
        xrandr -o normal
        xsetwacom set "stylus" Rotate none
        xsetwacom set "cursor" Rotate none
        xsetwacom set "eraser" Rotate none
        rm -f /tmp/rotated && exit 0
else
        xrandr -o right
        xsetwacom set "stylus" Rotate CW
        xsetwacom set "cursor" Rotate CW
        xsetwacom set "eraser" Rotate CW
        echo 1 > /tmp/rotated && exit 0
fi

as for example /usr/local/bin/toshiba-rotate and make it executable

sudo chmod 755 /usr/local/bin/toshiba-rotate

Then everytime you run the script it will rotate screen right and back to landscape. On how to assign this script to a button in next section.

Bezel buttons

There is no easy way of assigning a meta-buttons function, so I used xbindkeys and xte from xautomation package

sudo apt-get install xbindkeys xbindkeys-config xautomation

Next create a default configuration file and run xbindkeys-config

cd ~
xbindkeys --defaults >./.xbindkeysrc
xbindkeys-config

GUI should open and you can edit/add new key assignments.

For example to add screen rotation click "New", then in Edit section enter the name you like, click "Get Key" and press bezel button. Something like "Mod4 + 6|m0x40+c:15" should appear. Then in "Action" enter "/usr/local/bin/toshiba-rotate" then click "Save&Apply&Exit".

Now if you run xbindkeys you should be able to rotate your screen using bezel button. Remeber, you have to add xbindkeys to your session startup scripts in System->Preferences->Sessions

Hint: if you want to assing a keypress to bezel button (for example pagedown) use command below as "Action" in GUI

/usr/bin/xte "key Page_Down"

For more keys - look at xte manual (man xte)

NOTE - You may want to disable the pre-defined key bindings that refer to xterm, or uninstall xterm. Otherwise, when you press ctrl+f to search (say, in Firefox), it will open a terminal instead.

Fingerprint reader

Toshiba uses Authentec device, which is NOT supported by thinkfinger package. Instead look at fprint project here and here

Quick way (if you're lazy Smile :)

Add this line at the end of sources list:

deb http://ppa.launchpad.net/madman2k/ubuntu hardy main restricted universe multiverse 

update, sources and install all fprint packages:

sudo apt-get update && sudo apt-get install libfprint fprint-demo libpam-fprint

Then you can use

sudo fprint-demo

To enroll and play a bit.

To use it as authentication method insert to /etc/pam.d/common-auth:

auth    sufficient    pam_fprint.so
auth    required      pam_unix.so nullok_secure

NOTE - this is funny to play, but is not supported by many applications using gksu etc. I found it crashed a few times, so I think I will just wait for more mature version.

Media card reader

Unfortunately tifm driver reads only SD (and some MMC) cards will work albeit slowly. Unless someone will start developing the driver again there is no chance to get other cards working.

Bluetooth

Bluetooth only works OTB with Jaunty.

Unchecked so far

  • Modem - who uses it anyway today ?? Wink ;-)

  • Firewire

Some useful applications

If you're new using tablets in Linux - there are some great programs to play with:

  • Cellwriter - handwriting recognition software with onscreen keyboard

  • Xournal - similar to M$ onenote

  • Gournal - another pen journal

  • Jarnal - Java based journal

  • Memoranda - another Java based journal


CategoryLaptop CategoryLaptop CategoryLaptop

SergioZanchetta/Old/ToshibaPortegeM700 (last edited 2010-02-26 15:00:52 by primes2h)