[SOLVED] New kernel driver for the BCM5974 touchpad (Macbook Air, Penryn)
UPDATED 25OCT2008
Apple USB BCM5974 (Macbook Air and Penryn Macbook Pro) multitouch driver
This driver adds support for the multitouch trackpad on the new
Apple Macbook Air and Macbook Pro Penryn laptops. It replaces the
appletouch driver on those computers, and integrates well with the
synaptics driver of the Xorg system.
Known to work on Macbook Air, Macbook Pro Penryn and the new Unibody
Macbook 5 and Macbook Pro 5.
Support for the latest Macbooks is not upstream yet, but available in the mactel PPA.
Make sure you have these lines in /etc/apt/sources.list:
Code:
deb http://ppa.launchpad.net/mactel-support/ubuntu intrepid main
deb-src http://ppa.launchpad.net/mactel-support/ubuntu intrepid main
When changing /etc/apt/sources.list, one needs to update:
Code:
sudo apt-get update
With the mactel PPA in place, install the bcm5974-dkms package
Code:
sudo apt-get install bcm5974-dkms
Enjoy!
For more information or troubleshooting, see http://bitmath.org/code/bcm5974-dkms/
Credit for finding out how to initialize the trackpad goes to Scott Shawcroft and the touchd user-space driver.
Re: New kernel driver for the BCM5974 touchpad (Macbook Air, Penryn)
A new version of the bcm5974 driver is out, yielding a somewhat more stable trackpad motion. Some of the secondary motions like hand resting on the trackpad and accidental swiping of the trackpad are mostly ignored, even though it could be improved further.
I am curious to hear if anyone managed to make it work on the Macbook Pro Penryn?
Re: New kernel driver for the BCM5974 touchpad (Macbook Air, Penryn)
Edge scrolling does not mix very well with two-finger scrolling, I think. In either case, here are the exact trackpad dimensions of the bcm5974 driver:
Code:
Option "LeftEdge" "0"
Option "RightEdge" "1280"
Option "TopEdge" "0"
Option "BottomEdge" "800"
Setting the above lines in the /etc/X11/xorg.conf will in it self turn edge scrolling off, by leaving zero room around the edges. With my old settings, I experienced oddities like occasional corner taps; the new settings made that problem go away.
Re: New kernel driver for the BCM5974 touchpad (Macbook Air, Penryn)
Not to sound ignorant but i am kinda new. Once this module has been appended to the kernel how does one go about and configure the touchpad device? Is there a .conf file somewhere or does a GUI app take care of that for you. I just appended it and I don't know how to determine its inner working. Thanks for any new info on this module.
Ed
MB Air 1.6 Ghz 2GB RAM and the works!!!!
Re: New kernel driver for the BCM5974 touchpad (Macbook Air, Penryn)
There is a nice introduction to synaptics configuration in the sticky thread on top of the page: http://ubuntuforums.org/showthread.php?t=493393
Did you get the driver working? What is the output of this command:
Re: New kernel driver for the BCM5974 touchpad (Macbook Air, Penryn)
Hmmm maybe i did something wrong during the setup when i run the command given this is my output:
xxxx@xxxx-air:~$ synclient -l
Can't access shared memory area. SHMConfig disabled?
When I followed the above link I did not compile I went with the first option. Any ideas?
Ed
Re: New kernel driver for the BCM5974 touchpad (Macbook Air, Penryn)
It might be several different things:
1. The mouseemu module interfers with the touchpad motion, please stop it.
2. The bcm5974 might not be loaded properly (most likely case).
3. The usbhid and bcm5974 seems to compete to claim the device (hence the module ordering in the download instructions).
4. Something else, there are tips in this thread: http://ubuntuforums.org/showthread.php?t=795830
To test 2), unload the bcm5974 driver, load it again, and check the dmesg output. You should see these lines:
Code:
usbcore: deregistering interface driver bcm5974
input: bcm5974 disconnected
bcm5974: Wellspring mode initialized.
input: bcm5974 as /devices/[somepath]
usbcore: registered new interface driver bcm5974
If the input: line does not appear, the device could not be claimed, suggesting some other module got to it first. If the wellspring mode is not initialized, the device could not be found, meaning the device detection failed. It would be very helpful if you can provide the usb details of your machine:
Code:
sudo lsusb -v | grep -B1 idProduct
Re: New kernel driver for the BCM5974 touchpad (Macbook Air, Penryn)
Here is the output of sudo lsusb -v | grep -B1 idProduct
idVendor 0x05ac Apple Computer, Inc.
idProduct 0x8505
--
idVendor 0x0000
idProduct 0x0000
--
idVendor 0x0000
idProduct 0x0000
--
idVendor 0x05ac Apple Computer, Inc.
idProduct 0x0223
--
idVendor 0x05ac Apple Computer, Inc.
idProduct 0x8242
--
idVendor 0x0000
idProduct 0x0000
--
idVendor 0x0000
idProduct 0x0000
--
idVendor 0x05ac Apple Computer, Inc.
idProduct 0x820b
--
idVendor 0x05ac Apple Computer, Inc.
idProduct 0x820a
--
idVendor 0x05ac Apple Computer, Inc.
idProduct 0x8210
--
idVendor 0x0a5c Broadcom Corp.
idProduct 0x4500
--
idVendor 0x0000
idProduct 0x0000
--
idVendor 0x0000
idProduct 0x0000
--
idVendor 0x0000
idProduct 0x0000
Here you go I will attempt to unload and redo steps let me know if you see anything.
More Info:
I places this entry in my blacklist:
# put in place to support touchpad driver macbook air
usbhid
This in my entry in modules:
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
fuse
lp
ndiswrapper
usbnet
patasix
bcm5974
usbhid
Re: New kernel driver for the BCM5974 touchpad (Macbook Air, Penryn)
From the looks of it, you have a macbook air, and the same module loading order as in my setup. I am very curious as to what your dmesg says as you unload and reload the bcm5974 driver.
UPDATE: the post above should read "blacklist usbhid", as explained in succeeding posts.
Re: New kernel driver for the BCM5974 touchpad (Macbook Air, Penryn)
To "unload the module" do I just remove the file that I added into the kernel directory and depmod again? What exactly is the procedure for "removal". I will try both and output the dmesg when I do that.