You are not logged in.

#1 2025-09-20 12:28:19

arus1830
Member
Registered: 2025-09-20
Posts: 2

[SOLVED] problem w/ switching between console and X after systemd 258

Hello,

I have problem after upgrading systemd/systemd-libs/systemd-sysvcompat from 257.9 to 258 (both -1/-2). I cannot switch back to Xorg from console.

Problem replication path:

  1. I power on computer. It starts. I login.

  2. I start Xorg server (using startx). It works OK.

  3. I switch to a console (eg. ctrl-alt-f2). Still everything works.

  4. I can login as a different user (and, optionally, I can run another X server - it does not matter, as both cases lead to the same result) or I do nothing at all.

  5. I try to switch back to the first X server (ctrl-alt-f1).

  6. The screen freezes. I see either console or window manager (the second one), depending on where I was before pressing ctrl-alt-f1.

After that, I cannot switch to another console, ctrl-alt-del does not work (maybe because I am in X). However, power off button works and, after pressing it, it looks like the screen unfreezes - I see system services stopping and system goes off.

All other packages are upgraded. There were no other changes in configuration beyond daily system upgrades. System: Dell laptop/Intel wifi and gfx, Xorg, Openbox-session, Tint2, xbindkeys, xss-lock, slock, libinput/evdev - I have used it this way for the last four or five years.

I restored system from backup and confirmed that one of these three packages is introducing this problem (at first i suspected intel-firmware). Downgrade of systemd also solves the problem.

I see nothing special in system logs. Nothing in X logs except:

[    64.673] (WW) xf86CloseConsole: KDSETMODE failed: Input/output error
[    64.673] (WW) xf86CloseConsole: VT_GETMODE failed: Input/output error
[    64.673] (WW) xf86OpenConsole: VT_GETSTATE failed: Input/output error

I see that there are no reports of similar problems neither here nor on systemd's github, so I guess it must be something in my configuration.

Any hint what might be wrong?

Last edited by arus1830 (2025-09-23 11:16:56)

Offline

#2 2025-09-20 13:02:13

Head_on_a_Stick
Member
From: The Wirral
Registered: 2014-02-20
Posts: 8,999
Website

Re: [SOLVED] problem w/ switching between console and X after systemd 258

It would be better to post the full X.Org log, just in case you've missed something. A full journal would probably also be appropriate.

What is your graphics hardware?

lspci -knn -d ::03xx

I'm gonna guess it's NVIDIA...

EDIT: always search the error message before posting: https://bbs.archlinux.org/viewtopic.php?id=278640 ← is this relevant?

Last edited by Head_on_a_Stick (2025-09-20 13:03:29)


Jin, Jîyan, Azadî

Offline

#3 2025-09-23 10:59:31

arus1830
Member
Registered: 2025-09-20
Posts: 2

Re: [SOLVED] problem w/ switching between console and X after systemd 258

No, I do not have a Nvidia Card. It is Intel.

I had searched for those errors previously, but the results do not seem related. It is not Nvidia. Is is a recent breaking change. I do not use xorg.conf. And Xorg works to some degree - If I used only one X server and did not switch to console, I would not notice this problem at all.

===
After more research, I found out that my keyboard is the problem.

It is Keychron C1 Pro 8K wired keyboard. I have the same problem using Keychron K1 Pro with wired connection. If I switch to wired Logitech G713, problem disappears.

All of this keyboards have many virtual subdevices. It looks like the combination of Keychron's subdevice(s), systemd 258, systemd-logind, udev rules/hwdb, and/or Xorg's libinput causes my problem.

I tried many approaches using Monte Carlo method. I added/removed udev TAGS seat/uaccess/power-switch or ENVS ID_INPUT_MOUSE/ID_INPUT_KEYBOARD/ID_INPUT_JOYSITCK without luck. Udev rules did not help. But hwdb override helped.

It turns out that one of keyboard's subdevices is marked as joystick (ID_INPUT_JOYSTICK=1). UDEV rule

ACTION!="remove", ATTRS{idVendor}=="3434", ATTRS{idProduct}=="0521", ENV{ID_INPUT_JOYSTICK}=""

cleans the marker, but it is too late apparently.

However, if I use hwdb override for this (v)endor and (p)roduct:

id-input:modalias:input:*v3434p0521*
 ID_INPUT_JOYSTICK=

it solves my problem.

This indicates that the problem may be on the lower level, below Xorg - that is why I think it might have something to do with systemd-logind.

I tried to diff systemd rules and hardware db, but I could not find anything suspicious. However, I am not going to pretend that I understand what I am doing - it is too difficult for me.

Last but not least, under systemd 257.9 one of the subdevices was also marked with ID_INPUT_JOYSTICK=1, yet everything worked without custom fixes.

Last edited by arus1830 (2025-09-23 11:19:43)

Offline

Board footer

Powered by FluxBB