Apple Magic Trackpad unter Gentoo mit Multitouch

Layman sollte funktionieren und eingerichtet sein. sabotageandi hat mit der Portierung der utouch sourcen von Ubuntu/Canonical gute Arbeit geleistet.

Hier ein paar Links dazu:

Vorarbeit

Ihr benötigt tools, die ihr vielleicht nicht installiert habt. Also:

mkdir -p /etc/portage/package.keywords
echo "sys-apps/input-utils" >/etc/portage/package.keywords/input-utils
emerge input-utils

Zuerst sorgt bitte dafür, das eure Bluetooth-Verbindung stimmt. Das Modul „btusb“ muss entweder im Kernel fest einkompiliert oder als Modul nachgeladen werden. Dazu gehört noch das Modul „hid-magicmouse“.

Probleme mit hid-magicmouse bei Kernel 3.0.0

Ich habe beim Kernel den 3.0.0er genommen, der hat aber (seit 2.6.38 scheinbar) einen Bug mit einem Fallback beim hid-magicmouse. Bitte patchen:

Siehe https://patchwork.kernel.org/patch/797922/

diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c
index 0ec91c1..a5eda4c 100644
--- a/drivers/hid/hid-magicmouse.c
+++ b/drivers/hid/hid-magicmouse.c
@@ -501,9 +501,17 @@  static int magicmouse_probe(struct hid_device *hdev,
 	}
 	report->size = 6;
 
+	/*
+	 * The device reponds with 'invalid report id' when feature
+	 * report switching it into multitouch mode is sent to it.
+	 *
+	 * This results in -EIO from the _raw low-level transport callback,
+	 * but there seems to be no other way of switching the mode.
+	 * Thus the super-ugly hacky success check below.
+	 */
 	ret = hdev->hid_output_raw_report(hdev, feature, sizeof(feature),
 			HID_FEATURE_REPORT);
-	if (ret != sizeof(feature)) {
+	if (ret != -EIO) {
 		hid_err(hdev, "unable to request touch data (%d)\n", ret);
 		goto err_stop_hw;
 	}

Gui-Stuff

Bei Gnome-Usern sollte Bluez sowie gnome-bluetooth installiert sein (net-wireless/bluez und net-wireless/gnome-bluetooth).

KDE user helfen sich bitte selbst oder schicken mir Text den ich hier einpflegen kann, ich selbst nutze kein KDE.

Mit dem bluetooth-applet unter gnome könnt ihr leicht eine Verbindung zum Trackpad aufbauen. Trackpad einschalten, notfalls etwas länger draufdrücken damit er mit blinken der LED anfängt (wenn da nichts blinkt oder nicht angeht ist die Batterie leer oder zu schwach). Passwort wird 0000 sein, hat zumindest bei mir funktioniert, also vorher in den Einstellungen vom Peering umstellen. Bei weiteren Logins sollte dann bei geladenem applet das peering selbst stattfinden.

Testing - Hardwareseitige Verbindung

Nach Eingabe von lsinput müsste irgendwo ein

/dev/input/event9
   bustype : BUS_BLUETOOTH
   vendor  : 0x5ac
   product : 0x30e
   version : 352
   name    : "Apple Wireless Trackpad"
   phys    : "XX:XX:XX:XX:XX:XX"
   uniq    : "XX:XX:XX:XX:XX:XX"
   bits ev : EV_SYN EV_KEY EV_ABS EV_MSC

Das muss nicht event9 sein, wichtig ist nur, das er auftaucht.

Falls da nichts auftaucht, bitte unter /var/log/messages die Ausgaben prüfen und schauen ob ihr bei

udevadm monitor

eine Ausgabe bekommt, wenn ihr das Trackpad per Bluetooth trennt oder verbindet.

Trennen:

KERNEL[1313849982.919719] remove   /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/input9/event9 (input)
UDEV  [1313849982.919959] remove   /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/input9/event9 (input)
KERNEL[1313849983.110095] remove   /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/input9 (input)
KERNEL[1313849983.110119] remove   /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/0005:05AC:030E.0007/hidraw/hidraw6 (hidraw)
KERNEL[1313849983.110135] remove   /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/0005:05AC:030E.0007 (hid)
UDEV  [1313849983.110388] remove   /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/input9 (input)
UDEV  [1313849983.110407] remove   /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/0005:05AC:030E.0007/hidraw/hidraw6 (hidraw)
UDEV  [1313849983.110454] remove   /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/0005:05AC:030E.0007 (hid)

Verbinden:

KERNEL[1313849986.273703] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/0005:05AC:030E.0008 (hid)
KERNEL[1313849986.274113] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/input10 (input)
UDEV  [1313849986.274129] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/0005:05AC:030E.0008 (hid)
KERNEL[1313849986.274519] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/input10/event9 (input)
KERNEL[1313849986.274535] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/0005:05AC:030E.0008/hidraw/hidraw6 (hidraw)
UDEV  [1313849986.274696] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/0005:05AC:030E.0008/hidraw/hidraw6 (hidraw)
UDEV  [1313849986.329680] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/input10 (input)
UDEV  [1313849986.353134] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-5/1-5.1/1-5.1.4/1-5.1.4:1.0/bluetooth/hci0/hci0:43/input10/event9 (input)

Wenn da nur jeweils zwei Reihen kommen, fehlt der hid-magicmouse Treiber. Dann habt ihr zwar eine Verbindung zum Trackpad, könnt es aber nicht als Event nutzen.

Das ist erstmal die reine Verbindung gewesen.

Hinweis: ignoriert die Webseiten mit dem „hidd“ Daemon von bluez, das war in älteren Versionen und funktioniert so nicht mehr mit bluez4. Momentan geht das Ganze über dbus und den Kernel direkt!

utouch Stuff - sabotageandi

Per layman das sabotageandi hinzufügen.

layman -a sabotageandi

Utouch keywords flicken (bleeding edge):

cat << EOF >/etc/portage/package.keywords/utouch
x11-apps/ginn
x11-libs/bamf
x11-libs/utouch-geis
x11-libs/utouch-grail
x11-libs/utouch-frame
x11-libs/mtdev
x11-libs/utouch-evemu
EOF

Dann auf zum fröhlichen mergen.

emerge -uD glib inputproto xf86-input-evdev libXi xorg-server ginn utouch-frame utouch-geis utouch-grail mtdev bamf

Es ist möglich, das beim compilen Probleme auftreten, dann stimmen irgendwelche Abhängigkeiten nicht. Einfach in anderer Reihenfolge mergen, zumindest auf jeden Fall zuerst das glib und xorg Kram.

xorg sollte nach abmelden und neustart per /etc/init.d/xdm restart wieder ohne Probleme funktionieren.

Ich habe irgendwo gelesen, das noch eine Anpassung bei xorg notwendig ist:

Das kann entweder in die 60-magictrackpad.conf oder direkt in die /etc/X11/xorg.conf (bei mir ist es in der xorg.conf:

cat << EOF > >/usr/share/X11/xorg.conf.d/60-magictrackpad.conf
 # Apple Magic Trackpad
 Section "InputClass"
      Identifier "Magic Trackpad"
      MatchUSBID "05ac:030e"
      Driver "evdev"
 EndSection
EOF

Bei einigen Webseiten findet man den Eintrag mit dem Treiber „synaptics“. Das ist in sofern richtig, aber falsch. Richtig für normale Nutzung als Trackpad ohne Multitouch, falsch für die Nutzung mit den späteren utouch tools über evdev, da sich beide zusammen beißen / nicht funktionieren. Also - entweder - oder. Alles was mit „synaptics“ als Treiber zu finden ist, ist momentan nicht multitouch!

Testing - Softwareseitige Verbindung

Prüft mit lsinput, wo euer Trackpad liegt, bei mir ist es /dev/input/event9.

dann mit

mtdev-test /dev/input/event9 

den Test starten und schauen ob bei Berührung oder Bewegung auf dem Trackpad etwas passiert. Ja? Prima, ihr seid mit dem nächsten Step fertig. Nicht? Viel Spaß beim Fehlersuchen.

Nutzen

Fügt „ginn“ (/usr/bin/ginn) unter gnome zu euren Startprogrammen hinzu, dieses Programm ist ein Daemon, der die Multitouch-Gesten auf normale Key-Events um-mapt, sodaß normale nicht-multitouch apps auch genutzt werden können.

Das war's schon.

Cosmetics

https://wiki.ubuntu.com/Multitouch/AppleMagicTrackpad schreibt, ginn wäre noch etwas instabil.

Bad hack script dazu, von der gleichen Webseite:

#!/bin/bash

while true; do
  ginn
done

Speichern nach /usr/bin/ginn-wrapper und anstatt ginn nun ginn-wrapper unter den Startprogrammen eintragen.

Besseres Handling über ginn (rechte Maustaste-Emulation etc)

Unter https://wiki.ubuntu.com/Multitouch/AppleMagicTrackpad?action=AttachFile&do=view&target=wishes.xml

findet ihr eine von ubuntu angepasste ginn config, die auch rechte und mittlere Maustaste „emuliert“. Die könnt ihr dann nach /etc/ginn/wishes.xml speichern (vorher vielleicht das Original sichern?).

 
 
         
         
   
(17041 views) gentoo_magic_trackpad_multitouch.txt · Zuletzt geändert: 2011/08/22 12:55 von terminar