Asus T101MT

Aus Debacher-Wiki
Wechseln zu:Navigation, Suche

Asus hat seine EeePC-Reihe um ein 10'' Netbook erweitert, welches über ein druckempfindliches Display verfügt. Dieses Display lässt sich natürlich drehen und über die Tastatur legen (Netvertible). Ich halte das für eine sehr interessantes Gerät für den schulischen Einsatz. Aktuell (24. März 2010) hat Mediamarkt das Gerät für 449,00€ im Angebot. Offiziell soll es wohl 499,00€ kosten, bei anderen Händlern war es aber noch nicht verfügbar. Mal sehen, wo sich der Preis einpendelt und ob es das Gerät eventuell auch ohne Windows geben wird. Vermutlich gibt es auch ein T101 ohne MT, das MT steht nämlich für Multi-Touch.

  • CPU Atom N450 mit 2 x 1,66 GHz
  • 2 GByte Hauptspeicher DDR2
  • Wind7 Home Premium auf Recovery-Partition und Service-DVD
  • Grafikkarte Intel GMA 3150
  • 0,3 MPixel Camera
  • 4 Zellen Polymer-Akku
  • 320 GByte Festplatte

Die Festplatte ist recht unpraktisch partitioniert:

  • sda1 etwa 100 GByte NTFS (unter Wind7 als C:)
  • sda2 etwa 200 GByte NTFS (unter Wind7 als D:)
  • sda3 etwa 10,5 GByte Verst. W95 FAT32
  • sda4 17 MByte EFI (FAT-12/16/32)

Hierbei beinhaltet die dritte Partition das Recovery-System für das Wind7 und die vierte Partition ist eine EFI-Partition, die auf modernen Rechnern den BootBooster ermöglicht und damit ein etwas beschleunigtes Booten.

Windows 7

Mitgeliefert wird als Betriebssystem Windows 7, damit fühlt sich das Gerät recht zäh an. Die Ersteinrichtung dauert relativ lange (>20 Minuten) und der Rechner rebootet dreimal. Danach hat man dann einen recht unübersichtlichen Desktop, auf dem sich eine Menge Testsoftware befindet. Alles mögliche will erst einmal aktualisiert bzw. aktiviert werden.

Nett ist die Möglichkeit den Bildschirminhalt in 90° Schritten zu drehen, Dafür findet sich extra ein kleiner Knopf links unten am Display. Man kann das Display mit dem mitgelieferten Stift, oder mit den Fingern bedienen, das muss man aber in der Software passend konfigurieren. Die Gesten zum Zoomen, Drehen und Scrollen stehen nur im Finger-Modus zur Verfügung.

Linux

Zur Installation von Ubuntu habe ich die Partition sda2 gelöscht und durch eine erweiterte Partition ersetzt. In dieser erweiterten Partition habe ich dann zuerst eine 20GByte NTFS-Partition angelegt und formatiert. Diese Partition hat Wind7 beim nächsten Start als Laufwerk d: akzeptiert, ohne weitere Einstellungen.

Bei der Ubuntu-Installation habe ich den kompletten freien Bereich für das Ubuntu zur Verfügung gestellt. Das Ubuntu hat dann zwei Partitionen angelegt, eine große Linux-Partition und eine kleinere Swap-Partition.

Soweit ich das sehen kann funktioniert erst einmal alles, außer dem Treiber für das Touch-Display. Es gibt es auch eine Hardware-Beschleunigung für die Grafikkarte, zumindest funktionieren die Grafik-Effekte.

Hardware laut lspci:

  • Intel Corporation Pineview Integrated Graphics Controller (GMA 3150)
  • SATA: Intel 82801GR/GH AHCI-Controller
  • Attansic Atheros AR8132 / L1c Ethernet Adapter
  • Atheros AR9285 Wireless Adapter

Die CPUInfo liefert 2 x 3325 Bogomips, es handelt sich um einen Atom 450 Dualcore-Prozessor.

Es funktionieren Out-of-the Box:

  • Grafikkarte
  • WLAN
  • Soundkarte
  • Webcam (das Bild steht auf dem Kopf) Id 13d3:5111 IMC Networks
  • Bluetooth Id 0b05:1788 Asustek

Das System ist also erst einmal nutzbar, für das Touch-Display muss ich erst einmal ein bisschen recherchieren. Das Gerät ist ein D-WAV mit der Id 0eef:480d. Das Kalibrierungstool calibrate_touchscreen funktioniert wie erwartet, es fehlt nur noch die Anbindung an die normale Oberfläche.

Was wirklich toll klappt ist Suspend to RAM. Der Rechner legt sich sehr schnell schlafen und ist nach einem Druck auf eine beliebige Taste sofort wieder da.


Touchscreen

Der Touchscreen läuft mit dem eGalax-Treiber von der EEti-Homepage. Es hat eine Weile gedauert bis das alles geklappt hat, weil ich ursprünglich das Paket xserver-xorg-input-evtouch mit installiert hatte. Erst nach dem Deinstallieren dieses Paketes funktionierte der eGalax-Treiber.

Ich habe mir zuerst eine xorg.conf erzeugen lassen mittels:

 xorg -configure

Die Datei landet im Homeverzeichnis als xorg.conf.new Diese Datei habe ich dann ins Verzeichnis /etc/X11 kopiert. Wenn es keine xorg.conf gibt, dann lässt sicher der Treiber nicht installieren. Vermutlich dürfte die Datei aber auch leer sein.

Unter http://home.eeti.com.tw/web20/eGalaxTouchDriver/linuxDriver.htm gibt es dann einen aktuellen Treiber für den Tochscreen. Das Archiv habe ich mittels

tar xvfz eGalaxTouch-3.00.3719-32b-k26.tar.gz 

entpackt und dann mittels

cd eGalaxTouch32
sudo sh setup.sh

installiert. Ein paar Informationen zu dem Gerät:

xorg.conf

In der xorg.conf habe ich nur die folgenden Zeilen belassen:

Section "ServerLayout"
       InputDevice "EETI" "SendCoreEvents"
       Identifier     "X.org Configured"
EndSection


### Touch Configuration Beginning ###
Section "InputDevice"
       Identifier "EETI"
       Driver "egalax"
       Option "Device" "usbauto"
       Option "Parameters" "/var/lib/eeti.param"
       Option "ScreenNo" "0"
EndSection
### Touch Configuration End ###

Hinweis: Da mehrfach Nachfragen nach meiner xorg.conf gekommen sind. Dies ist die komplette Datei, mehr Zeilen gibt es nicht. Moderne Linux-Distributionen benutzen keine xorg.conf mehr, die Einstellungen werden zu Laufzeit erstellt.

eGalaxTouch

Mit dem Treiber geliefert wird auch ein Programm zur Kalibrierung, dass unter /usr/bin/eGalaxTouch zu finden ist. Mittels

 eGalaxTouch

kann man das Touchpad dann konfigurieren. Seine Einstellungen speichert das Programm in der Datei /var/lib/eeti.param (siehe xorg.conf).

EGalax1.png

Im Reiter Tool finden sich die Kalibrierungsfunktionen. Das ist eigentlich recht einfach und funktioniert gut. Im Reiter Misc findet sich eine ganz wichtige Einstellmöglichkeit:

EGalax2.png

Unter MouseMode legt man fest, wir das Pad sich verhält. In der Standardeinstellung folgt der Mauscursor nämlich nicht der Stiftposition, dazu muss man auf die Betriebsart Desktop umschalten.

xinput list

Mittels

xinput list

kann man feststellen, ob das Gerät eingebunden wird. Der entsprechende Ausschnitt sieht bei mir folgendermaßen aus:

"egalax"	id=2	[XExtensionPointer]
	Type is egalax
	Num_buttons is 1
	Num_axes is 2
	Mode is Absolute
	Motion_buffer is 10
	Axis 0 :
		Min_value is 0
		Max_value is 2048
		Resolution is 9500
	Axis 1 :
		Min_value is 0
		Max_value is 2048
		Resolution is 10500


lsusb

lsub -vv

liefert

Bus 003 Device 002: ID 0eef:480d D-WAV Scientific Co., Ltd 
Device Descriptor:
 bLength                18
 bDescriptorType         1
 bcdUSB               1.10
 bDeviceClass            0 (Defined at Interface level)
 bDeviceSubClass         0 
 bDeviceProtocol         0 
 bMaxPacketSize0        64
 idVendor           0x0eef D-WAV Scientific Co., Ltd
 idProduct          0x480d 
 bcdDevice            2.00
 iManufacturer           1 
 iProduct                2 
 iSerial                 0 
 bNumConfigurations      1
 Configuration Descriptor:
   bLength                 9
   bDescriptorType         2
   wTotalLength           34
   bNumInterfaces          1
   bConfigurationValue     1
   iConfiguration          1 
   bmAttributes         0xa0
     (Bus Powered)
     Remote Wakeup
   MaxPower              100mA
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       0
     bNumEndpoints           1
     bInterfaceClass         3 Human Interface Device
     bInterfaceSubClass      0 No Subclass
     bInterfaceProtocol      0 None
     iInterface              0 
     ** UNRECOGNIZED:  09 21 00 01 00 01 22 d5 01
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0040  1x 64 bytes
       bInterval               1

lshal

lshal 

liefert eines sehr umfangreiche Ausgabe:

udi = '/org/freedesktop/Hal/devices/usb_device_eef_480d_noserial'
 info.linux.driver = 'usb'  (string)
 info.parent = '/org/freedesktop/Hal/devices/usb_device_1d6b_1_0000_00_1d_1'  (string)
 info.product = 'USB TouchController'  (string)
 info.subsystem = 'usb_device'  (string)
 info.udi = '/org/freedesktop/Hal/devices/usb_device_eef_480d_noserial'  (string)
 info.vendor = 'D-WAV Scientific Co., Ltd'  (string)
 linux.device_file = '/dev/bus/usb/003/002'  (string)
 linux.hotplug_type = 2  (0x2)  (int)
 linux.subsystem = 'usb'  (string)
 linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.1/usb3/3-2'  (string)
 usb_device.bus_number = 3  (0x3)  (int)
 usb_device.can_wake_up = true  (bool)
 usb_device.configuration = 'eGalax Inc.'  (string)
 usb_device.configuration_value = 1  (0x1)  (int)
 usb_device.device_class = 0  (0x0)  (int)
 usb_device.device_protocol = 0  (0x0)  (int)
 usb_device.device_revision_bcd = 512  (0x200)  (int)
 usb_device.device_subclass = 0  (0x0)  (int)
 usb_device.is_self_powered = false  (bool)
 usb_device.linux.device_number = 2  (0x2)  (int)
 usb_device.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.1/usb3/3-2'  (string)
 usb_device.max_power = 100  (0x64)  (int)
 usb_device.num_configurations = 1  (0x1)  (int)
 usb_device.num_interfaces = 1  (0x1)  (int)
 usb_device.num_ports = 0  (0x0)  (int)
 usb_device.product = 'USB TouchController'  (string)
 usb_device.product_id = 18445  (0x480d)  (int)
 usb_device.speed = 12.0 (12) (double)
 usb_device.vendor = 'D-WAV Scientific Co., Ltd'  (string)
 usb_device.vendor_id = 3823  (0xeef)  (int)
 usb_device.version = 1.1 (1.1) (double)

udi = '/org/freedesktop/Hal/devices/usb_device_eef_480d_noserial_if0'
 info.linux.driver = 'usbhid'  (string)
 info.parent = '/org/freedesktop/Hal/devices/usb_device_eef_480d_noserial'  (string)
 info.product = 'USB HID Interface'  (string)
 info.subsystem = 'usb'  (string)
 info.udi = '/org/freedesktop/Hal/devices/usb_device_eef_480d_noserial_if0'  (string)
 linux.hotplug_type = 2  (0x2)  (int)
 linux.subsystem = 'usb'  (string)
 linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.0'  (string)
 usb.bus_number = 3  (0x3)  (int)
 usb.can_wake_up = true  (bool)
 usb.configuration = 'eGalax Inc.'  (string)
 usb.configuration_value = 1  (0x1)  (int)
 usb.device_class = 0  (0x0)  (int)
 usb.device_protocol = 0  (0x0)  (int)
 usb.device_revision_bcd = 512  (0x200)  (int)
 usb.device_subclass = 0  (0x0)  (int)
 usb.interface.class = 3  (0x3)  (int)
 usb.interface.number = 0  (0x0)  (int)
 usb.interface.protocol = 0  (0x0)  (int)
 usb.interface.subclass = 0  (0x0)  (int)
 usb.is_self_powered = false  (bool)
 usb.linux.device_number = 2  (0x2)  (int)
 usb.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.0'  (string)
 usb.max_power = 100  (0x64)  (int)
 usb.num_configurations = 1  (0x1)  (int)
 usb.num_interfaces = 1  (0x1)  (int)
 usb.num_ports = 0  (0x0)  (int)
 usb.product = 'USB HID Interface'  (string)
 usb.product_id = 18445  (0x480d)  (int)
 usb.speed = 12.0 (12) (double)
 usb.vendor = 'D-WAV Scientific Co., Ltd'  (string)
 usb.vendor_id = 3823  (0xeef)  (int)
 usb.version = 1.1 (1.1) (double)

udi = '/org/freedesktop/Hal/devices/usb_device_eef_480d_noserial_if0_logicaldev_input'
 info.capabilities = {'input', 'input.touchpad'} (string list)
 info.category = 'input'  (string)
 info.parent = '/org/freedesktop/Hal/devices/usb_device_eef_480d_noserial_if0'  (string)
 info.product = 'eGalax Inc. USB TouchController'  (string)
 info.subsystem = 'input'  (string)
 info.udi = '/org/freedesktop/Hal/devices/usb_device_eef_480d_noserial_if0_logicaldev_input'  (string)
 input.device = '/dev/input/event6'  (string)
 input.originating_device = '/org/freedesktop/Hal/devices/usb_device_eef_480d_noserial_if0'  (string)
 input.product = 'eGalax Inc. USB TouchController'  (string)
 input.x11_driver = 'synaptics'  (string)
 linux.device_file = '/dev/input/event6'  (string)
 linux.hotplug_type = 2  (0x2)  (int)
 linux.subsystem = 'input'  (string)
 linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.0/input/input6/event6'  (string)

dmesg

dmesg

zeigt folgende Zeilen

[    2.353181] usbcore: registered new interface driver hiddev
[    2.365964] input: eGalax Inc. USB TouchController as /devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.0/input/input6
[    2.366272] generic-usb 0003:0EEF:480D.0001: input,hiddev96,hidraw0: USB HID v1.00 Pointer [eGalax Inc. USB TouchController] on usb-0000:00:1d.1-2/input0
[    2.366317] usbcore: registered new interface driver usbhid
[    2.366326] usbhid: v2.6:USB HID core driver


Kernelmodul

Wie man an den dmesg-Zeilen sieht wird das Touchpad von dem Treiber usbhid bedient. Es findet sich in dem Paket eGalaxTouch-3.00.3719-32b-k26.tar.gz aber auch die Quellen für ein Kernelmodul namens tksub. Dieses Modul wird anscheinend nicht benötigt, zumindest hat es bei mir keine Funktion gezeigt. Falls jemand damit experimentieren möchte, so muss er wissen, dass es sich unter Ubuntu 9.10 nicht ohne Änderung übersetzen lässt. Die Quelltexte befinden sich in einem Archiv namens eGalaxTouch.tar.gz. Packt man dieses Archiv aus (das setup-Tool entpackt dieses Archiv nach /usr/local/eGalaxTouch32), so befindet sich im entstehenden Verzeichnis ein Unterverzeichnis namens USBsrc. Dort soll man laut Anleitung aus dem Ordner Guide einfach mittels sudo make all das Modul erstellen. Das scheitert aber daran, dass ein Pfad verändert ist. Zum erfolgreichen Compilieren muss man in der Datei tksub.h in Zeile 25 eine kleine Änderung vornehmen. Im Original steht dort:

#include <asm/semaphore.h>

das muss gändert werden zu

#include <linux/semaphore.h>

danach lässt sich das Modul übersetzen.