Ubuntu 13.10, wrong settings for Apple (mouse) touchpad in Macbook 4,1

Bug #1246215 reported by Juan Rada-Vilela
28
This bug affects 5 people
Affects Status Importance Assigned to Milestone
xserver-xorg-input-synaptics (Ubuntu)
Fix Committed
Undecided
Unassigned

Bug Description

The default settings for the touchpad of a macbook 4,1 in Ubuntu 13.10 render an awkward mouse behaviour that is found during and after installation. The following issues are found:

1) Moving the cursor shows an intermittent behaviour because the parameters for FingerLow and FingerHigh are way too high, hence affecting the sensitivity and requiring more pressure to move the mouse.

2) Having enabled Two-finger tap for right click, using vertical scrolling with two fingers often ends up in a right click.

Fixes:

I have permanently fixed the settings by editing the first Section block in file "/usr/share/X11/xorg.conf.d/50-synaptics.conf"

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
# This option is recommend on all Linux systems using evdev, but cannot be
# enabled by default. See the following link for details:
# http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html
      MatchDevicePath "/dev/input/event*"
           Option "FingerLow" "30"
           Option "FingerHigh" "40"
           Option "MaxTapMove" "25"
EndSection

The added parts are:
           Option "FingerLow" "30"
           Option "FingerHigh" "40"
           Option "MaxTapMove" "25"

where FingerLow and FingerHigh fix issue (1), and MaxTapMove fixes issue (2).

Tags: patch
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in xserver-xorg-input-synaptics (Ubuntu):
status: New → Confirmed
Revision history for this message
KLEIN Stéphane (stephane-harobed) wrote :

By default on Ubuntu 13.10, I've this configuration :

* FingerLow : 70
* FingerHigh : 75

Touchpad with this parameters is not usable on my MacBook3.1.

But with this configuration below all work very well :

* FingerLow : 30
* FingerHigh : 40

Revision history for this message
KLEIN Stéphane (stephane-harobed) wrote :

How can we fix this configuration for all Ubuntu user ?

Can we set different value by hardware type based on "dmidecode -s system-product-name" ? or other value ?

Revision history for this message
Juan Rada-Vilela (jcrada) wrote : Re: [Bug 1246215] Re: Ubuntu 13.10, wrong settings for Apple (mouse) touchpad in Macbook 4, 1

Before fixing anything permanently, I think it is important to answer the
following questions:
1) What were those values in previous versions of Ubuntu?
2) Why were they changed in the current version?
3) Do current Macbooks work well with such settings?

If current Macbooks work well with such settings, it is necessary to find
out since what Macbook version the mousepad was changed. I believe it could
be since they merged the mouse pad and button together. Based on that, it
is possible to change the values based on the Macbook version as Klein
mentions using versions less than "Macbook x.y".

I am very interested in the answer to question (1) because, despite that my
mouse works well now, I think its operation was better ("smoother") in
previous versions, and I still have sometimes odd right-click behaviour.

Juan Rada-Vilela
<email address hidden>
http://www.fuzzylite.com/jcrada

On Mon, Jan 27, 2014 at 3:43 AM, KLEIN Stéphane <email address hidden>wrote:

> How can we fix this configuration for all Ubuntu user ?
>
> Can we set different value by hardware type based on "dmidecode -s
> system-product-name" ? or other value ?
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1246215
>
> Title:
> Ubuntu 13.10, wrong settings for Apple (mouse) touchpad in Macbook 4,1
>
> Status in “xserver-xorg-input-synaptics” package in Ubuntu:
> Confirmed
>
> Bug description:
> The default settings for the touchpad of a macbook 4,1 in Ubuntu 13.10
> render an awkward mouse behaviour that is found during and after
> installation. The following issues are found:
>
> 1) Moving the cursor shows an intermittent behaviour because the
> parameters for FingerLow and FingerHigh are way too high, hence
> affecting the sensitivity and requiring more pressure to move the
> mouse.
>
> 2) Having enabled Two-finger tap for right click, using vertical
> scrolling with two fingers often ends up in a right click.
>
> Fixes:
>
> I have permanently fixed the settings by editing the first Section
> block in file "/usr/share/X11/xorg.conf.d/50-synaptics.conf"
>
> Section "InputClass"
> Identifier "touchpad catchall"
> Driver "synaptics"
> MatchIsTouchpad "on"
> # This option is recommend on all Linux systems using evdev, but cannot
> be
> # enabled by default. See the following link for details:
> #
> http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html
> MatchDevicePath "/dev/input/event*"
> Option "FingerLow" "30"
> Option "FingerHigh" "40"
> Option "MaxTapMove" "25"
> EndSection
>
> The added parts are:
> Option "FingerLow" "30"
> Option "FingerHigh" "40"
> Option "MaxTapMove" "25"
>
> where FingerLow and FingerHigh fix issue (1), and MaxTapMove fixes
> issue (2).
>
> To manage notifications about this bug go to:
>
> https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-input-synaptics/+bug/1246215/+subscriptions
>

Revision history for this message
Clinton (sprc) wrote :

Looks like the old values were 29, 35 and 59 in 12.04.

The new values likely are meant for devices that use the newer kernel driver (bcm5974) instead of the old one (appletouch).

Revision history for this message
Clinton (sprc) wrote :

This looks relevant:

-commit d5ff9d8b0b186cf39695df84a10984eac559b746
+ Turn down the default sensitivity for unibody MacBook touchpads
+
+ The touchpads are too sensitive by default. A touch is activated when a
+ finger hovers a millimeter off the device. This change turns down the
+ default sensitivity so that accidental touchpad interactions are
+ lessened and pointer interaction accuracy is increased.
+
+ Signed-off-by: Chase Douglas <email address hidden>
+ Reviewed-by: Peter Hutterer <email address hidden>
+ Signed-off-by: Peter Hutterer <email address hidden>
+
+commit 4fa880d2b1e1805e90827af5bbb483e268ac68a3
+Author: Chase Douglas <email address hidden>
+Date: Fri Jun 8 13:53:37 2012 -0700
+
+ Add MODEL_UNIBODY_MACBOOK touchpad model for bcm5974 devices
+
+ Initially, treat them the same as MODEL_APPLETOUCH devices, as that is
+ what they were recognized as before.
+
+ Signed-off-by: Chase Douglas <email address hidden>
+ Signed-off-by: Peter Hutterer <email address hidden>
+

...

 static void
 calculate_edge_widths(SynapticsPrivate * priv, int *l, int *r, int *t, int *b)
 {
@@ -372,7 +299,8 @@
         ewidth = width * .15;
         eheight = height * .15;
     }
- else if (priv->model == MODEL_APPLETOUCH) {
+ else if (priv->model == MODEL_APPLETOUCH ||
+ priv->model == MODEL_UNIBODY_MACBOOK) {
         ewidth = width * .085;
         eheight = height * .085;
     }
@@ -389,22 +317,26 @@

 static void
 calculate_tap_hysteresis(SynapticsPrivate * priv, int range,
- int *fingerLow, int *fingerHigh, int *fingerPress)
+ int *fingerLow, int *fingerHigh)
 {
- if (priv->model == MODEL_ELANTECH) {
+ switch (priv->model) {
+ case MODEL_ELANTECH:
         /* All Elantech touchpads don't need the Z filtering to get the
          * number of fingers correctly. See Documentation/elantech.txt
          * in the kernel.
          */
         *fingerLow = priv->minp + 1;
         *fingerHigh = priv->minp + 1;
- }
- else {
+ break;
+ case MODEL_UNIBODY_MACBOOK:
+ *fingerLow = 70;
+ *fingerHigh = 75;
+ break;
+ default:
         *fingerLow = priv->minp + range * (25.0 / 256);
         *fingerHigh = priv->minp + range * (30.0 / 256);
+ break;
     }
-
- *fingerPress = priv->minp + range * 1.000;
 }

Revision history for this message
Clinton (sprc) wrote :

In eventcomm.c:

static struct model_lookup_t model_lookup_table[] = {
    {0x0002, 0x0007, 0x0007, MODEL_SYNAPTICS},
    {0x0002, 0x0008, 0x0008, MODEL_ALPS},
    {0x05ac, PRODUCT_ANY, 0x222, MODEL_APPLETOUCH},
    {0x05ac, 0x223, PRODUCT_ANY, MODEL_UNIBODY_MACBOOK},
    {0x0002, 0x000e, 0x000e, MODEL_ELANTECH},
    {0x0, 0x0, 0x0, 0x0}
};

http://www.linux-usb.org/usb.ids lists 0x222 as the last "aluminum" keyboard and 0x223 forward are ostensibly fancier.

However, the Macbook 3,1 (which uses appletouch) reports as "0x5ac 0x229", which puts it in the MODEL_UNIBODY_MACBOOK range instead of MODEL_APPLETOUCH. (Also, the website above seems to think 0x229 indicates a Macbook Pro, which it is not. That might explain some of the confusion.)

Elsewhere on the internet I found a couple other values that ostensibly fall after 0x223 that loaded appletouch instead of bcm5974 - 0x22a a few times, but also a single reference to 0x30b. I'm not sure what 0x30b is. 0x22a looks like it's probably a Macbook ?,1.

Could we just look at what driver we're loading instead of trying to figure it out from the vendor/product id? Appletouch = old behavior, bcm5974 = new.

If not, I propose moving the cutoff to <=0x22b for MODEL_APPLETOUCH and >=0x230 for MODEL_UNIBODY_MACBOOK.

Revision history for this message
Clinton (sprc) wrote :

The attached patch moves the cutoff to <=0x22f for MODEL_APPLETOUCH and >=0x230 for MODEL_UNIBODY_MACBOOK.

Revision history for this message
Ubuntu Foundations Team Bug Bot (crichton) wrote :

The attachment "0001-PATCH-xf86-input-synaptics-Fix-product-ID-cutoff-for.patch" seems to be a patch. If it isn't, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are a member of the ~ubuntu-reviewers, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issues please contact him.]

tags: added: patch
Clinton (sprc)
Changed in xserver-xorg-input-synaptics (Ubuntu):
status: Confirmed → Fix Committed
Revision history for this message
Clinton (sprc) wrote :

Fix is in synaptics 1.8.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.