Bug 208721 - usbhid must be a module loaded after appletouch for apple macbook
usbhid must be a module loaded after appletouch for apple macbook
Status: CLOSED CURRENTRELEASE
Product: Fedora
Classification: Fedora
Component: kernel (Show other bugs)
6
i686 Linux
medium Severity high
: ---
: ---
Assigned To: Pete Zaitcev
Brian Brock
:
: 235634 (view as bug list)
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2006-09-30 16:53 EDT by Karl Lattimer
Modified: 2008-08-02 19:40 EDT (History)
6 users (show)

See Also:
Fixed In Version: Fedora 7 (kernel 2.6.22+)
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2007-08-28 10:59:01 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
usb devices as requested (5.94 KB, text/plain)
2006-10-01 03:15 EDT, Karl Lattimer
no flags Details

  None (edit)
Description Karl Lattimer 2006-09-30 16:53:32 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
in Xorg

Steps to Reproduce:
1. Use a kernel built with usbhid builtin or load the usbhid module before
appletouch
2. Start X
  
Actual results:
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)

Additional info:
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
/sbin/modprobe appletouch
/sbin/modprobe usbhid

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.
Comment 1 Pete Zaitcev 2006-09-30 17:15:39 EDT
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.
Comment 2 Karl Lattimer 2006-10-01 03:15:53 EDT
Created attachment 137493 [details]
usb devices as requested
Comment 3 Pete Zaitcev 2006-10-01 03:55:42 EDT
Upstream discussion:
 http://lkml.org/lkml/2006/9/30/181
Comment 4 Karl Lattimer 2006-10-12 05:57:12 EDT
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. 
Comment 5 Pete Zaitcev 2006-10-12 12:39:48 EDT
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.
Comment 6 Karl Lattimer 2006-11-06 03:54:59 EST
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
>> synaptics-0.14.6....
>>     
>
> 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
> mactel/mactel-linux-trunk/kernel/mactel-patches-2.6.18/
>
> do the same there rebuild+reboot and post results...
>
> Soeren
>


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 
poke around.

Thanks again Soeren. Much appreciated. I'm really liking the double-tap 
right click.
Comment 7 Andrew Cathrow 2007-01-28 22:40:57 EST
Are the any plans to patch appletouch with the new usbid's as per the mactel
patches?
Comment 8 Andrew Cathrow 2007-01-28 23:02:52 EST
Actually it looks like patch-2.6.20-rc6 contains that patch - so looks like it's
en-route .....
Comment 9 Ruben Kerkhof 2007-02-01 19:13:08 EST
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

/proc/bus/usb/devices:

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"

Comment 10 Frank Arnold 2007-02-28 01:13:28 EST
(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.
Comment 11 Frank Arnold 2007-02-28 03:12:21 EST
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.
Comment 12 Ruben Kerkhof 2007-02-28 16:02:45 EST
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.
Comment 13 Rafael Ávila de Espíndola 2007-03-02 02:19:30 EST
I have the same problem as Ruben. The best solution so far is to backport patches

00081d3729a450c37afb01c01528f4f305806d86
009ad0e7b43d6cabd74e47db6180f14315b71417
e5d9A832c207f952e15ccddda5f2d52c94036acd7

and compile usbhid as a module. To get the two button scrolling to work one also
has to upgrade the X driver.
Comment 14 Matěj Cepl 2007-05-22 11:54:35 EDT
*** Bug 235634 has been marked as a duplicate of this bug. ***
Comment 15 Pete Zaitcev 2007-08-27 23:38:44 EDT
Karl, did you have a chance to try F-7? Does it work?
Comment 16 Karl Lattimer 2007-08-28 10:59:01 EDT
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.
Comment 17 Karl Lattimer 2007-08-28 10:59:38 EDT
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.

Note You need to log in before you can comment on or make changes to this bug.