Search:  
Gentoo Wiki

Motion_Computing_M1400

This article is part of the Hardware series.
Laptops TV Tuner Cards Wireless Servers Storage Other Hardware Motherboards Related

Contents

Motion Computing M1400

The Motion Computing M1400 is a so called "Slate" TabletPC. It doesn't have a keyboard attached like normal laptops do.

Hardware Facts

lspci output

Code: lspci
00:00.0 Host bridge: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
00:00.1 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
00:00.3 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
00:02.0 VGA compatible controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)
00:02.1 Display controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 83)
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 03)
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 03)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03)
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 03)
02:00.0 FireWire (IEEE 1394): Texas Instruments TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
02:01.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG Network Connection (rev 05)
02:04.0 CardBus bridge: ENE Technology Inc CB1410 Cardbus Controller (rev 01)

Sound

Works out of the box on any recent kernel with ALSA, but besides unmuting the channels and setting volume You have to set-up the 'LineIn Jack' to 'Mixer Output' and turn off the 'External Amplifier' to get an output from the speakers. The driver is i810 and You can put:

ALSA_CARDS="intel8x0 intel8x0m"

in Your /etc/make.conf to compile only the i8x0 drivers.

Ethernet

Works out of the box. (8139too driver)

USB

Works out of the box.

WLAN

See this guide.

PC Card

See this guide.

Modem

Untested..

Kernel

The hardware in the M1400 has a quirk and the current kernel versions (now 2.6.18) need a patch to reboot/halt properly (and the lavg is at least 1.0 always so I recommend patching). The patch can be found here

X11

X works normally with the i810 driver.

A working setup can be generated from the commandline either with (XFree86)

# Xfree86 -configure

X.org autoconfigure fails with "Missing output drivers. Configuration failed."

# Xorg -configure

Follow the instructions you see on the commandline to test your configuration. If X works you can copy the generated file to /etc/X11/XF86Config-4 (XFree86 and X.org) or /etc/X11/xorg.conf (X.org only, has priority over the previous file).

Digitizer Pen

The serial port of the digitizer is automatically detected on kernels after ~2.6.17, and it has /dev/ttyS0 assigned, so you can skip the following serial.conf details in newer kernels.

Simply put the following in your serial.conf and add serial to the default runlevel.

Code: /etc/serial.conf

/dev/ttyS0 port 0x238 irq 4 autoconfig

Now add the following to your X configuration file or use the example config files below:

File: /etc/X11/xorg.conf or /etc/X11/XF86Config-4

Now add the following to your X configuration file or use the example config files below:

# Here we define the Tablet/Pen devices, you need to
# "emerge linuxwacom" to add the appropriate driver
# ("wacom") to your system.
# The tablet is connected via an internal serial port
# which needs to be initialized with setserial at
# boot time.
# Please "emerge setserial" and add the following line
# to /etc/serial.conf:
# /dev/ttyS0 port 0x0238 irq 4 autoconfig
Section "InputDevice"
   Identifier "stylus"
   Driver     "wacom"
   Option     "Device"        "/dev/ttyS0"
   Option      "Type"          "stylus"
   Option      "ForceDevice"   "ISDV4"
   Option     "SendCoreEvents"
EndSection

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

Follow the instructions as described in the newly added config data.

And add this in your ServerLayout section:

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

On the fly Rotation

The x11-drivers/linuxwacom in portage does not support it, but luckily there is a patch and I made a ebuild for handling it.

emerge gentoolkit-dev
File: /etc/gensync/tabletpc.syncsource

TabletPC Gensync configuration

 # This id must be unique among all the ids in /etc/gensync/*.syncsource
 id="tabletpc"
 
 # This is a human-readable description of the source
 description="TabletPC Overlay"
 
 # The rsync url
 rsync="rsync://rsync.burazin.net/tabletpc"

Now fetch the ebuilds:

gensync tabletpc

and install the patched linuwacom

emerge "=x11-drivers/linuxwacom-0.7.4_p3-r1" 

restart X

/etc/init.d/xdm restart


File: /usr/bin/rotate

and use the following script for rotating

 #!/bin/bash
 
 STATUS_FILE=~/.rotate-status
 
 function rotate() {
    case "$1" in
        3|right) N=3; T=cw ;;
        1|left) N=1; T=ccw ;;
        2|inverted) N=2; T=half ;;
        0|normal) N=0; T=none ;;
        *)
           echo -e "Useage:\n  $(basename $0) [left|right|inverted|normal]\n\nIf no option is given, rotates the screen 90 degrees to the right.\n";
           exit 1
           ;;
    esac
    xrandr -o $N & \
    xsetwacom set stylus Rotate $T & \
    echo $N > $STATUS_FILE
 }

 if [ "$#" == "0" ]; then
    rotate $(((3+0$(cat $STATUS_FILE 2>/dev/null))%4))
 else
    rotate $1
 fi

Working XF86Config-4

File: /etc/X11/XF86Config-4
Section "ServerLayout"
	Identifier     "XFree86 Configured"
	Screen 0       "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "cursor" "SendCoreEvents"
	InputDevice    "stylus" "SendCoreEvents"
#	InputDevice    "eraser" "SendCoreEvents"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
	RgbPath      "/usr/X11R6/lib/X11/rgb"
	ModulePath   "/usr/X11R6/lib/modules"
	FontPath     "/usr/X11R6/lib/X11/fonts/misc/"
	FontPath     "/usr/X11R6/lib/X11/fonts/Speedo/"
	FontPath     "/usr/X11R6/lib/X11/fonts/Type1/"
	FontPath     "/usr/X11R6/lib/X11/fonts/CID/"
	FontPath     "/usr/X11R6/lib/X11/fonts/75dpi/"
	FontPath     "/usr/X11R6/lib/X11/fonts/100dpi/"
EndSection

Section "Module"
	Load  "dbe"
	Load  "dri"
	Load  "extmod"
	Load  "glx"
	Load  "record"
	Load  "xtrap"
	Load  "speedo"
	Load  "type1"
EndSection

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "keyboard"
EndSection

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/input/mice"
EndSection

# Here we define the Tablet/Pen devices, you need to
# "emerge linuxwacom" to add the appropriate driver
# ("wacom") to your system.
# The tablet is connected via an internal serial port
# which needs to be initialized with setserial at
# boot time.
# Please "emerge setserial" and add the following line
# to /etc/serial.conf:
# /dev/ttyS3 port 0x0238 irq 4 autoconfig
Section "InputDevice"
	Identifier "stylus"
	Driver "wacom"
	Option "Device" "/dev/ttyS3"
	Option "Type" "stylus"
	Option "ForceDevice" "ISDV4"
	Option "SendCoreEvents"
EndSection

Section "InputDevice"
	Identifier "cursor"
	Driver "wacom"
	Option "Device" "/dev/ttyS3"
	Option "Type" "cursor"
	Option "ForceDevice" "ISDV4"
	Option "SendCoreEvents"
EndSection

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
EndSection

Section "Device"
	Identifier  "Card0"
#	VideoRam    16384
	VideoRam    32768
	Driver      "i810"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	DefaultDepth 24
	SubSection "Display"
		Depth     1
		Modes     "1024x768 800x600"
	EndSubSection
	SubSection "Display"
		Depth     4
		Modes     "1024x768 800x600"
	EndSubSection
	SubSection "Display"
		Depth     8
		Modes     "1024x768 800x600"
	EndSubSection
	SubSection "Display"
		Depth     15
		Modes     "1024x768 800x600"
	EndSubSection
	SubSection "Display"
		Depth     16
		Modes     "1024x768 800x600"
	EndSubSection
	SubSection "Display"
		Depth     24
		Modes     "1024x768 800x600"
	EndSubSection
EndSection

Section "DRI"
	Mode 0666
EndSection

Working xorg.conf

With DRI using the i915 kernel module:

File: /etc/X11/xorg.conf
Section "ServerLayout"
        Identifier     "Layout0"
        Screen      0  "Screen0" 0 0
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "stylus" "SendCoreEvents"
        InputDevice    "eraser" "SendCoreEvents"
        Option         "BlankTime" "9"
        Option         "OffTime" "10"
EndSection
                                                
Section "Files"
        RgbPath      "/usr/share/X11/rgb"
        ModulePath   "/usr/lib/xorg/modules"
        FontPath     "/usr/share/fonts/misc"
        FontPath     "/usr/share/fonts/75dpi"
        FontPath     "/usr/share/fonts/100dpi"
        FontPath     "/usr/share/fonts/TTF"
        FontPath     "/usr/share/fonts/Type1"
EndSection

Section "Module"
        Load  "record"
        Load  "dbe"
        Load  "xtrap"
        Load  "dri"
        Load  "extmod"
        Load  "glx"
        Load  "freetype"
        Load  "type1"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
EndSection

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option	    "Protocol" "auto"
        Option 	    "ButtonNumber" "5"
        Option	    "Device" "/dev/input/mice"
        Option	    "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
EndSection

Section "Device"
        ### Available Driver options are:-
        ### Values: : integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
        ### [arg]: arg optional
        #Option     "NoAccel"            	# [<bool>]
        #Option     "SWcursor"           	# [<bool>]
        #Option     "ColorKey"           	# <i>
        #Option     "CacheLines"         	# <i>
        #Option     "Dac6Bit"            	# [<bool>]
        #Option     "DRI"                	# [<bool>]
        #Option     "NoDDC"              	# [<bool>]
        #Option     "ShowCache"          	# [<bool>]
        #Option     "XvMCSurfaces"       	# <i>
        #Option     "PageFlip"           	# [<bool>]
        Identifier  "Card0"
        Driver      "i810"
        VendorName  "Intel Corporation"
        BoardName   "82852/855GM Integrated Graphics Device"
        BusID       "PCI:0:2:0"
        Option	    "DPMS"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
EndSection

Section "InputDevice"
        Identifier  "stylus"
        Driver      "wacom"
        Option      "type" "stylus"
        Option      "Device" "/dev/ttyS3"
        Option      "ForceDevice" "ISDV4"
# in standard configuration, holding the extra button on the side of the pen and clicking
# will produce a mouse click of the "middle" mouse button.
# make it a click of the right mouse button:
        Option      "Button2" "3"
# when rotating the screen, uncomment according
#       Option      "Rotate" "CW"
#       Option      "Rotate" "CCW"
EndSection

Section "InputDevice"
        Identifier  "eraser"
        Driver      "wacom"
        Option      "type" "eraser"
        Option      "Device" "/dev/ttyS3"
        Option      "ForceDevice" "ISDV4"
# in standard configuration, eraser will cause a normal mouse click.
# make it a click of the middle mouse button:
        Option      "Button1" "2"
# when rotating the screen, uncomment according
#       Option      "Rotate" "CW"
#       Option      "Rotate" "CCW"
EndSection


Section "DRI"
        Mode 0666
EndSection

</div>

Dimming the backlight

As root:

echo N > /proc/acpi/video/GRFX/LCD/brightness

Where N is a number between 0 (very dark) and 15 (very bright)

ACPI

Standby and wakeup works from X:

# echo -n "standby" > /sys/power/state

The pen stops working when the TabletPC wakes up from standby.

'mem' seems to cause a kernel hang. The 'disk' methode is not tested. There are some handy scripts standby/suspend related available:

emerge -av hibernate-scripts
nano -w  /etc/hibernate/hibernate.conf

With suspend2-sources and supplied hibernate script everything works fine.

Battery monitoring

Needs the appropriate modules modprobed, these can be found in /lib/modules/<kernelname>/kernel/drivers/acpi/

Links

Retrieved from "http://www.gentoo-wiki.info/Motion_Computing_M1400"

Last modified: Thu, 28 Aug 2008 21:17:00 +0000 Hits: 9,193