Red Hat Bugzilla – Bug 208721
usbhid must be a module loaded after appletouch for apple macbook
Last modified: 2008-08-02 19:40:35 EDT
Description of problem:
The appletouch driver does not function with a full set of fetures, tested on a
macbook 13", a basic explorer ps2 mouse is used instead of the synaptics driver
Steps to Reproduce:
1. Use a kernel built with usbhid builtin or load the usbhid module before
2. Start X
X puts out an error indicating that the synaptics touchpad cannot be found, two
finger tap and three finger tap cannot be enabled (especially anoying on a
machine with only one mouse button)
A fix for this bug is to build the usbhid driver as a module (I have done this
myself from kernel-2.6.18-1.2708 src), and the modules must be (re)loaded in the
correct order before X starts, currently I do this using a hack in my
/etc/rc.local as follows;
/sbin/rmmod usbhid appletouch
A better solution (still requiring the usbhid driver to be built as a module) is
to modify udev in some way in order to ensure the appletouch driver is loaded
earlier than the usbhid driver.
This fix is a great enabler for intel macs! I now have two finger tap for button
two and three finger for middle click and scrolling at the touchpad edges.
Module load order should never cause any change in operation. If that
happens, it's a bug.
Looks like the exclusion list is incorrect in hid.
The requestor would do good to attach /proc/bus/usb/devices so that
we have something concrete with which to go to Dmitry.
Created attachment 137493 [details]
usb devices as requested
After reading the upstream discussion I was wondering is there any resolution to
this in the kernel?
> it can't be blacklisted by the existing quirk bits, can it?
Implies that it can't as there is currently no reply, I hope to see this supported.
Yes, it turned out not to be a trivial patch as I hoped. So, someone has
to do the work, and I have other things on top of the pile.
I'm going to keep this bug open as a reminder.
Quoted from the mactel linux users mailing list.
This may help.
Soeren Sonnenburg wrote:
> On Sun, 05 Nov 2006 20:30:22 +0000, Jon Grosshart wrote:
>> Just suscribed so I'm not quoting Karl's original message. Sorry.
>> I'm having the same problem on my new MacBook Pro Core 2 Duo.... I've
>> scoured the web for days on end and can not get synaptics to recognize the
>> touchpad. Gives the same error that Karl is getting. I'm using
> well open the file drivers/usb/input/appletouch.c (kernel source) in an
> editor and replace
> #define GEYSER3_JIS_PRODUCT_ID 0x0219
> for testing with
> #define GEYSER3_JIS_PRODUCT_ID 0x021A
> if you applied the apply the usbhid.patch in
> do the same there rebuild+reboot and post results...
Thanks Soeren. That did the trick. Not sure why I didn't think of it
myself. I had to do something similar with alsa to get a card working a
few years back.
I've never used the synaptics driver before, but if you lightly touch
the pad and then move, it doesn't register. I'll assume that has
something to do with one of the many settings in xorg.conf.... Time to
Thanks again Soeren. Much appreciated. I'm really liking the double-tap
Are the any plans to patch appletouch with the new usbid's as per the mactel
Actually it looks like patch-2.6.20-rc6 contains that patch - so looks like it's
I have the same issue as the original reporter.
Running on a Macbook Pro Core Duo (first generation). I tried the latest kernel
with the included patch, but that doesn't seem to help.
[ruben@wodan ~]$ uname -a
Linux wodan.marshallplein.nl 2.6.19-1.2916.fc7 #1 SMP Tue Jan 30 17:59:57 EST
2007 i686 i686 i386 GNU/Linux
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=05ac ProdID=0218 Rev= 0.60
S: Manufacturer=Apple Computer
S: Product=Apple Internal Keyboard / Trackpad
C:* #Ifs= 3 Cfg#= 1 Atr=a0 MxPwr= 40mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid
E: Ad=83(I) Atr=03(Int.) MxPS= 8 Ivl=8ms
I: If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=8ms
I: If#= 2 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
E: Ad=84(I) Atr=03(Int.) MxPS= 1 Ivl=8ms
So it looks like I should have a GEYSER_3
Loading the Synaptics mouse driver fails though:
(II) Synaptics touchpad driver version 0.14.4 (1404)
(**) Option "Device" "/dev/input/mice"
(**) Option "SHMConfig" "on"
(**) Option "HorizScrollDelta" "0"
(EE) Touchpad no synaptics touchpad detected and no repeater device
(EE) Touchpad Unable to query/initialize Synaptics hardware.
(EE) PreInit failed for input device "Touchpad"
(II) UnloadModule: "synaptics"
(In reply to comment #4)
> > it can't be blacklisted by the existing quirk bits, can it?
> Implies that it can't as there is currently no reply,
Possibly there's a way to do this. Appletouch contains code to set the device
mode of Geyser 3 and 4 devices to something other than USB HID. If this would be
done in inside the HID driver too, somewhere before it starts to take control
over those devices, this should give us what we want. The keyboard part could be
handled through the HID driver, whereas the touchpad would be ignored and
eventually picked up by appletouch.
It's just a thought. I can't try it myself, because I have no way to get my
hands on a MacBook.
Well, somebody has already done the work:
> Soeren Sonnenburg [Mon, 5 Feb 2007 09:06:01 +0000 (10:06 +0100)]
> Some HID devices by Apple have both keyboard and mouse interfaces; the
> keyboard interface is handled by usbhid, but the mouse (really
> touchpad) interface must be handled by the separate 'appletouch'
> driver. Using HID_QUIRK_IGNORE will make hiddev ignore both
> interfaces, therefore a new quirk flag to ignore only the mouse
> interface is required.
git commit: a417a21e10831bca695b4ba9c74f4ddf5a95ac06
Not included in 2.6.20, though.
It's seems to be in 2.6.21-rc1. I haven't been able to try it yet, since that kernel won't boot on my
machine, but that's due to bug 229607.
I have the same problem as Ruben. The best solution so far is to backport patches
and compile usbhid as a module. To get the two button scrolling to work one also
has to upgrade the X driver.
*** Bug 235634 has been marked as a duplicate of this bug. ***
Karl, did you have a chance to try F-7? Does it work?
Fedora 7 works great, in fact I was meaning to come and close this bug.
:) Still waiting on two finger scroll, I can't figure out why the settings in
the man page don't work in X, although I've got edge scrolling working and
two/three finger tap.