HARDWARE Motion Computing M1200

From Gentoo Linux Wiki

Jump to: navigation, search
This article is part of the Hardware series.
Laptops TV Tuner Cards Wireless Servers Storage Other Hardware Motherboards Related

Contents

[edit] Motion Computing M1200

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

[edit] Hardware Facts

  • 1024x768 12.1" TFT LCD (Later models offer a "ViewAnywhere" Display)
  • Wacom digitizer built into the display, compatible with presure sensitive digitizer pens
  • 933MHz Mobile Intel(R) Pentium(R) III ULV
  • 256MB - 1GB RAM
  • 20GB / 40GB / 60GB Harddisk
  • Intel i830 chipset
  • Intel i830MG Chipset Graphics Controller
  • Battery life: 2.5 - 3 hours
  • Broadcom Wifi (board BCM94301MP, chip BCM4301KPF)
  • 2x speakers
  • 1x Microphone connector
  • 1x Headphone connector
  • 2x USB 1.1 ports
  • 1x Firewire port
  • 1x PCMCIA slot
  • 1x External VGA
  • 1x RJ-45 Ethernet
  • 1x Modem connection

[edit] lspci output

Code: lspci
0000:00:00.0 Host bridge: Intel Corp. 82830 830 Chipset Host Bridge (rev 04)
0000:00:02.0 VGA compatible controller: Intel Corp. 82830 CGC [Chipset Graphics Controller] (rev 04)
0000:00:02.1 Display controller: Intel Corp. 82830 CGC [Chipset Graphics Controller]
0000:00:1d.0 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #1) (rev 02)
0000:00:1d.1 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #2) (rev 02)
0000:00:1d.2 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #3) (rev 02)
0000:00:1e.0 PCI bridge: Intel Corp. 82801 PCI Bridge (rev 42)
0000:00:1f.0 ISA bridge: Intel Corp. 82801CAM ISA Bridge (LPC) (rev 02)
0000:00:1f.1 IDE interface: Intel Corp. 82801CAM IDE U100 (rev 02)
0000:00:1f.3 SMBus: Intel Corp. 82801CA/CAM SMBus Controller (rev 02)
0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801CA/CAM AC'97 Audio Controller (rev 02)
0000:00:1f.6 Modem: Intel Corp. 82801CA/CAM AC'97 Modem Controller (rev 02)
0000:02:00.0 FireWire (IEEE 1394): Texas Instruments TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
0000:02:02.0 Network controller: Broadcom Corporation BCM4301 802.11b (rev 02)
0000:02:04.0 CardBus bridge: O2 Micro, Inc. OZ6912 Cardbus Controller
0000:02:07.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)

[edit] Sound

Works out of the box on any recent kernel with ALSA

[edit] Ethernet

Works out of the box.

Uses ~0.1 watt extra when connected.

[edit] USB & Firewire

Works, you should note it's only USB 1.1 "High Speed" and not USB 2.0 "Full speed".

[edit] Wifi

Please note that the built-in MiniPCI card only supports 802.11b.

Wifi is not working out of the box because Broadcom doesn't want to release the specs of the chip. A driver for Linux does exist. It can be found in the boot image of some Linksys Wifi routers. Problem is, it's binary only, and it's not for x86. The card works fine with NDISWrapper and Windows drivers (version 3.100.65.1). Apple iBook owners who want to run Linux have the same problem, but they can't use the Windows drivers. Bug Broadcom for this. Some people are developing a reverse-engineered linux driver.

The reverse engineered b43legacy driver hangs during boot. The machine will boot without the wireless card installed. So for the time being disable the driver:

File: /etc/modprobe.d/blacklist.local
blacklist b43legacy

st3 -a b43 driver developer- just got a similar MiniPCI card and will look into it shortly. The old bcm43xx driver might work.

[edit] Cardbus / PCMCIA slot

Works according to Rene Rask.

[edit] Modem

Untested..

Around kernel 2.6.8 'mutex' error messages began showing up. On 2.6.11 they are rather prevalent. According to people on LKML this is related to the snd_intel8x0m module which drives the modem. On 2.6.24 I haven't seen this message with the module loaded.

[edit] X11

You will need a (very) recent X.org, with an i810 driver that can change the videomodes by itself (not using the VideoBIOS). When you start X out of the box, you will be greeted by a black screen with a lit backlight. Hop over to a virtual console, enable {{{Option "ModeDebug" "true"}}} the xorg.conf Device section, and read the proper 1024x768 Modeline from the Xorg.0.log. Or just copy the following:

File: /etc/X11/xorg.conf
Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
	Option       "DPMS"
# 	DisplaySize   244 183 # Will give large fonts
	Modeline     "1024x768@60.0"   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync
	Option       "PreferredMode"  "1024x768@60.0"
EndSection

Section "Device"
	Identifier  "Card0"
	Driver      "i810"
	BusID       "PCI:0:2:0"
	VideoRam     65536
	Option      "VBERestore"  "false" # needed ? doesn't seem to break anything
	Option      "ModeDebug"   "true"
	Option      "Monitor-LVDS"  "Monitor0"
EndSection

Update - 10 march 2008: A patch got committed to the xorg intel driver that will make the screen work out of the box. The above isn't needed past that point.

[edit] Older X11

With older X.org & XFree86 versions you don't get higher than 800x600 due to a badly configured VideoBIOS. This is probably different from the "stolen memory" problem, as since the Video BIOS is merely severely broken. For example setting the graphics chips to the 'supported' 1024x600 crashes the BIOS. Xorg bug ticket1, ticket 2. Forum topic on Wim's BIOS.

Bug Motion Computing for this.

X works by default under XFree86 4.3.0.1, X.org 6.8.2 needs a little bit of handholding.

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).

[edit] Digitizer Pen

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

File: /etc/X11/xorg.conf
# Here we define the Tablet/Pen devices, you need to
# "emerge linuxwacom" to add the appropriate driver
# ("wacom") to your system.
Section "InputDevice"
   Identifier "stylus"
   Driver     "wacom"
   Option     "Device"        "/dev/ttyS3"
   Option      "Type"          "stylus"
   Option      "ForceDevice"   "ISDV4"
   Option     "SendCoreEvents"
   Option     "Button2" "3" # The pen button is for right click, not middle click
EndSection

Section "InputDevice"
   Identifier "cursor"
   Driver     "wacom"
   Option     "Device"        "/dev/ttyS3"
   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"

[edit] Older kernels

The tablet is connected via an internal serial port which needs to be initialized with setserial at boot time. It seems somewhere between kernel 2.6.16 and 2.6.24 the behaviour changed. On newer kernels the wacom digitizer now is automatically available on /dev/ttyS0. If your digitizer is not, you need to do the following:

Please emerge setserial first. Then test the digitizer's serial device from the commandline:

# setserial /dev/ttyS3 port 0x0238 irq 4 autoconfig
# wacdump /dev/ttyS3

The magic number 0x0238 is taken from the Windows driver.

Wacdump will now show lots of output when you move the stylus over the screen. When the digitizer is already working under X and you run wacdump then the pen might stop working untill your restart X.

Now add the working command to /etc/serial.conf:

/dev/ttyS3 port 0x0238 irq 4 autoconfig

Change /dev/ttyS0 in the xorg.conf to /dev/ttyS3.

[edit] Working XF86Config-4 (old)

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/psaux"
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

[edit] Working xorg.conf

With DRI using the i915 kernel module:

File: /etc/X11/xorg.conf
Section "ServerLayout"
	Identifier     "XFree86 Configured"
	Screen 0       "Screen0" 0 0
	InputDevice    "Touchpad" "SendCoreEvents"
	InputDevice    "Mouse1" "SendCoreEvents"
	InputDevice    "cursor" "CorePointer"
	InputDevice    "stylus" "SendCoreEvents"
	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
	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  "type1"
	Load  "synaptics"
EndSection

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "keyboard"
EndSection
Section "InputDevice"
  Identifier "Touchpad"
  Driver "synaptics"
  Option "SendCoreEvents"
  Option "Device" "/dev/input/event0" # eventX number may vary depending on the laptop model.
  Option "Protocol" "event"
  # Next line required only if you want to disable the mousepad while typing:
  Option "SHMConfig" "on"
  # The rest of the options are NOT required, just a default similar to the Windows drivers with non of the extra features.
  Option "LeftEdge" "1900"
  Option "RightEdge" "5400"
  Option "TopEdge" "1400"
  Option "BottomEdge" "4500"
  Option "FingerLow" "25"
  Option "FingerHigh" "30"
  Option "MaxTapTime" "180"
  Option "MaxTapMove" "220"
  Option "VertScrollDelta" "100"
  Option "MinSpeed" "0.02"
  Option "MaxSpeed" "0.18"
  Option "AccelFactor" "0.0010"
EndSection
Section "InputDevice"
	Identifier  "Mouse1"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/psaux"
EndSection
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/ttS0"
	Option "Type" "cursor"
	Option "ForceDevice" "ISDV4"
	Option "SendCoreEvents"
EndSection

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
# 	DisplaySize   244 183 # Will give large fonts
	Modeline "1024x768@60.0"   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync
	Option "PreferredMode" "1024x768@60.0"
	Option       "DPMS"
EndSection
Section "Device"
	Identifier  "Card0"
	Driver      "i810"
	VideoRam     65536
	BusID       "PCI:0:2:0"
	Option      "VBERestore" "false"
	Option      "ModeDebug" "true"
	Option "Monitor-LVDS" "Monitor0"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	DefaultDepth 24

	Subsection "Display"
		Depth       8
		Modes       "1024x768" "800x600" "640x480"
	EndSubsection

	Subsection "Display"
		Depth       16
		Modes       "1024x768" "800x600" "640x480"
	EndSubsection
	
	Subsection "Display"
		Depth       24
		Modes       "1024x768" "800x600" "640x480"
	EndSubsection

	# Does not work..
	Subsection "Display"
		Depth       32
		Modes       "1024x768" "800x600" "640x480"
	EndSubsection
EndSection

Section "DRI"
	Mode 0666
EndSection

Nowadays a much more empty xorg.conf can be used. I haven't tried stripping options.

Note: For pen/digitizer of M1400, use wacom0 instead of ttyS0

[edit] Dimming the backlight

As root:

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

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

Total power usage: 8 Watt (dark) -> 11.8 Watt (bright)

[edit] ACPI

Standby and wakeup works from X:

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

[edit] Deeper sleep states

On older kernels the pen stops working when the TabletPC wakes up from standby. On 2.6.24 the tablet hangs on wakeup (in X11). Haven't dug very deep.

'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

[edit] Suspend to RAM

Get the above mentioned `hibernate` application. Edit /etc/hibernate/ram.conf and add at the bottom:

File: /etc/hibernate/ram.conf
USuspendToRamForce yes
USuspendToRamACPISleep 3
SwitchToTextMode yes

[edit] Suspend to Disk

Works out of the box when hibernate and uswsusp tools are installed and configured. Run `dpgk-reconfigure uswsusp` when on Debian. Watch if /etc/uswsusp.conf exists. Then run:

hibernate-disk

Or use KLaptop for example to trigger running s2disk.

[edit] Battery monitoring

Works out of the box.

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

[edit] External keyboard

The external keyboard seems to use ~0.25 watt.

[edit] See Also

An old Wiki that's now only available from archive.org

Personal tools