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>