[systemd-devel] Bad accelerometer values cause incorrect screen rotation

Daniel Drake drake at endlessm.com
Thu Sep 5 10:38:21 UTC 2019


On Thu, Sep 5, 2019 at 6:07 PM Bastien Nocera <hadess at hadess.net> wrote:
> I've read through this, and I'm happy blacklisting the hp_accel driver
> in code. For the other devices, I'd rather leave it as-is.

That would indeed avoid most problem cases that I've seen, and the
current case, probably enough to stop me grumbling for another year or
so until this happens again in some other context :)
So I support that idea. Do you have any preference on where we blacklist it?

In the hwdb it's quite easy to match DMI vendor HP & driver lis3lv02d.
But we'd really want a new way of saying "ignore the accelerometer" as
ACCEL_POSITION=base doesn't seem like the right way to express that.

Or we could blacklist it in iio-sensor-proxy but since there's no
mention of hp_accel in the udev properties for the device (you just
get the driver as li3lv02d) then you'd need to grab the DMI vendor
name from /sys/class/dmi/id or something like that.

> > When this unfortunate situation happens, the user experience is
> > really
> > terrible. Except for workarounds that involve going to the command
> > line, the best workaround under GNOME seems to be to physically
> > rotate
> > the device into a position that causes the screen orientation to be
> > normal/unrotated, then while maintaining and holding the device in
> > that highly awkward position with one hand, try your very best to
> > manipulate the mouse cursor with your other hand and navigate the
> > menu
> > to enable Orientation Lock.
>
> FYI, Windows+O in GNOME to toggle the orientation lock setting.

Good to know, thanks! I just tried though and it's also seriously
difficult... Especially because the Windows key is quite a distance
from the O key, it's really hard to press this key combo with one hand
when you're busy trying to sustain the device at a fixed angle in an
awkward position with your other hand.

> Where would we get this information? From the same DSDT that doesn't
> have enough information? That doesn't sound like a good idea.

My initial idea is DMI/DSDT plus a whitelist, I realise its not ideal
but I'm trying to think towards something that (in my eyes) would be
better than the current state.

> If we disable iio-sensor-proxy's functionality by default, I'll be sent
> more bug reports than I already receive from folks where the sensor
> drivers aren't working or not compiled in, so that's a big no-no from
> me.

In my eyes, having some users that accidently don't get their screens
rotated by the accelerometer (with a relatively simple fix of
whitelisting the product) is a better outcome than having some users
that go through the miserable experience of having your screen rotated
incorrectly (which is hard to recover from and tricky for a developer
to fix without physical device access). This may just be a difference
of opinion.

> Also, it would be pretty trivial changing the default GNOME
> configuration to have the accelerometer pegged to the default
> orientation.

I appreciate the suggestion especially if its trivial but I don't
understand what you wrote here- can you explain a bit more?

Thanks,
Daniel


More information about the systemd-devel mailing list