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
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 ??
- 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
SergioZanchetta/Old/ToshibaPortegeM700 (last edited 2010-02-26 15:00:52 by host226-241-dynamic)