Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 5 Oct 2019 20:36:24 +0300
From:      Vasily Postnicov <shamaz.mazum@gmail.com>
To:        greg@unrelenting.technology
Cc:        freebsd-x11@freebsd.org
Subject:   Re: Xorg with evdev input devices
Message-ID:  <CADnZ6BnCi%2BSZ46ECtLx0QJP2-eycKyrueJNoUXJ%2B26KMGoPH8g@mail.gmail.com>
In-Reply-To: <300f65b7469c608ad4cd32a9ad6c41d6@unrelenting.technology>
References:  <CADnZ6B=foNChKaH6j%2Bx4pv4Z6g2ycCL7yiuLvDZSAOBHOa4ugw@mail.gmail.com> <bceb7ed1804dd98d9c186c42b08473c1@unrelenting.technology> <CADnZ6Bnzdk_kr608wg8t8Ugth%2BS8zMDy18w7KhoLWbLoBXCjJg@mail.gmail.com> <300f65b7469c608ad4cd32a9ad6c41d6@unrelenting.technology>

next in thread | previous in thread | raw e-mail | index | archive | help
Hello again, Greg. I have some more time to play with Wayland. I'm trying
to resolve permission errors when accessing /dev/input/event* using
consolekit2. I did as you said and have active consolekit session when I
log in.

> ck-list-sessions
Session5:
        unix-user =3D '1001'
        realname =3D 'Vasily Postnicov'
        seat =3D 'Seat1'
        session-type =3D 'unspecified'
        session-class =3D 'user'
        session-state =3D 'online'
        active =3D FALSE
        x11-display =3D ''
        x11-display-device =3D ''
        display-device =3D '/dev/ttyv0'
        remote-host-name =3D ''
        is-local =3D TRUE
        on-since =3D '2019-10-05T15:25:27.297123Z'
        login-session-id =3D ''
        XDG_RUNTIME_DIR =3D '/var/run/user/1001'
        VTNr =3D '1'

When I start sway I have this now:

vasily@vonbraun:~ % sway
2019-10-05 19:44:54 - [backend/drm/legacy.c:15] HDMI-A-2: Failed to set
CRTC: Permission denied
2019-10-05 19:44:54 - [backend/drm/legacy.c:15] DVI-D-1: Failed to set
CRTC: Permission denied
2019-10-05 19:44:54 - [main.c:521] Missing a required Wayland interface

Using just chmod 666 /dev/input/* without consolekit works fine.

UPD: Using truss I've found what ioctl DRM_IOCTL_MODE_SETCRTC fails (see
https://i.postimg.cc/cWVcb8wc/IMG-20191005-201103.jpg). I use amdgpu driver
from graphics/drm-fbsd12.0-kmod-4.16.g20190814.
After changing line
> DRM_IOCTL_DEF(DRM_IOCTL_MODE_SETCRTC, drm_mode_setcrtc,
DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED),
to
> DRM_IOCTL_DEF(DRM_IOCTL_MODE_SETCRTC, drm_mode_setcrtc,
DRM_CONTROL_ALLOW|DRM_UNLOCKED),
in drivers/gpu/drm/drm_ioctl.c ioctl call works fine, but sway still cannot
see input devices.

My verdict: before using ConsoleKit2 we must at least fix this ioctl issue.
I don't know what DRM_MASTER is and if it is safe to remove it. Maybe
consolekit itself and not the driver must be fixed.

=D0=B2=D1=81, 22 =D1=81=D0=B5=D0=BD=D1=82. 2019 =D0=B3. =D0=B2 19:31, <greg=
@unrelenting.technology>:

> September 22, 2019 7:12 PM, "Vasily Postnicov" <shamaz.mazum@gmail.com>
> wrote:
>
> > Thanks, it works. The purpose of my evdev kernel support testing is
> eventually switch to wayland.
> > For this time I have all related ports recompiled with WAYLAND option
> and also have x11-wm/sway
> > installed. Then I run following commands in terminal (I mean, without
> xorg server running):
> >
> >> setenv XDG_RUNTIME_DIR /tmp
> >
> >> sway -d
> >
> > Sway fails to start with the following log:
> https://pastebin.com/M3eExb0C
> >
> >> 2019-09-22 18:53:04 - [backend/libinput/backend.c:55] Initializing
> libinput
> >> 2019-09-22 18:53:04 - [backend/libinput/backend.c:84] libinput
> initialization failed, no input
> > devices
> >> 2019-09-22 18:53:04 - [backend/libinput/backend.c:85] Set
> WLR_LIBINPUT_NO_DEVICES=3D1 to suppress
> > this check
> >> 2019-09-22 18:53:04 - [backend/multi/backend.c:32] Failed to initializ=
e
> backend.
> >> 2019-09-22 18:53:04 - [sway/server.c:195] Failed to start backend
> >
> > I've tried to run "setenv WLR_LIBINPUT_NO_DEVICES 1" as suggested and
> got sway started (but without
> > input devices, I suppose). What's wrong with my libinput? It seems it
> works OK with Xorg
>
> Your sway process doesn't have permission to access /dev/input/*.
>
> [re: the little follow-up email: setuid does not help, because input
> devices are attached after dropping root, because input devices need to b=
e
> hotpluggable anyway. setuid is bad, use consolekit2 as described below]
>
> The good (but a bit involved for now) fix:
>
> - run 'sysctl kern.evdev.input' to make sure you have a recent enough
> kernel -- my patch for this is not in 12.0-RELEASE, but should be in
> 12.1-BETA I'm pretty sure
> - build libudev-devd with
> https://github.com/myfreeweb/freebsd-ports-dank/blob/lite/devel/libudev-d=
evd/Makefile
> (i.e. update to the latest git commit)
> - build consolekit2 with https://reviews.freebsd.org/D18754
> - build wlroots with CONSOLEKIT option
> - enable automatic CK2 session creation on login: add 'session
>  optional        pam_ck_connector.so' to the '# session' section of
> /etc/pam.d/login
> - log out, log in, just run sway
> - (you can launch sway under ck-launch-session if the automatic session
> gets screwed up somehow, but it works for me pretty well)
>
> The bad (but quick) fix:
>
> - chmod/chown /dev/input/* to be accessible to your account
> - (there's some devfs config thing that can do this automatically)
> - (this exposes input devices to any program running as your account,
> which defeats the "no keyloggers allowed" advantage of wayland)
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADnZ6BnCi%2BSZ46ECtLx0QJP2-eycKyrueJNoUXJ%2B26KMGoPH8g>