Multi-Seat with Kubuntu 17.10 / Artful (systemd, sddm, KDE)


up vote
1
down vote
favorite
I want to set up multi-seat on my PC. I already added a second VGA adapter to make things easier/possible?.
We have got:
- Kubuntu Artful 17.10 (KDE)
- systemd
- sddm (we probably have to use lightdm, as sddm lacks multi-seat features)
- Intel i5-4570S on-die gfx
- really old ATI RV710/Radeon HD4350/4550
Let us try to document a generic solution for recent Kubuntu/Ubuntu versions.
I am stuck that if I start X I don't have any input on seat0
and random noise on seat-tv
.
I created a new question because those existing questions/answers are either specialized in hardware or incomplete in explaining background. At least I wasn't able to solve the problem using existing sources.
I created a community answer, so feel free to edit the answer below.
When finished I might add how to start Kodi only without display-manager and window-manager on seat-tv.
xorg multiple-monitors udev
add a comment |Â
up vote
1
down vote
favorite
I want to set up multi-seat on my PC. I already added a second VGA adapter to make things easier/possible?.
We have got:
- Kubuntu Artful 17.10 (KDE)
- systemd
- sddm (we probably have to use lightdm, as sddm lacks multi-seat features)
- Intel i5-4570S on-die gfx
- really old ATI RV710/Radeon HD4350/4550
Let us try to document a generic solution for recent Kubuntu/Ubuntu versions.
I am stuck that if I start X I don't have any input on seat0
and random noise on seat-tv
.
I created a new question because those existing questions/answers are either specialized in hardware or incomplete in explaining background. At least I wasn't able to solve the problem using existing sources.
I created a community answer, so feel free to edit the answer below.
When finished I might add how to start Kodi only without display-manager and window-manager on seat-tv.
xorg multiple-monitors udev
add a comment |Â
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I want to set up multi-seat on my PC. I already added a second VGA adapter to make things easier/possible?.
We have got:
- Kubuntu Artful 17.10 (KDE)
- systemd
- sddm (we probably have to use lightdm, as sddm lacks multi-seat features)
- Intel i5-4570S on-die gfx
- really old ATI RV710/Radeon HD4350/4550
Let us try to document a generic solution for recent Kubuntu/Ubuntu versions.
I am stuck that if I start X I don't have any input on seat0
and random noise on seat-tv
.
I created a new question because those existing questions/answers are either specialized in hardware or incomplete in explaining background. At least I wasn't able to solve the problem using existing sources.
I created a community answer, so feel free to edit the answer below.
When finished I might add how to start Kodi only without display-manager and window-manager on seat-tv.
xorg multiple-monitors udev
I want to set up multi-seat on my PC. I already added a second VGA adapter to make things easier/possible?.
We have got:
- Kubuntu Artful 17.10 (KDE)
- systemd
- sddm (we probably have to use lightdm, as sddm lacks multi-seat features)
- Intel i5-4570S on-die gfx
- really old ATI RV710/Radeon HD4350/4550
Let us try to document a generic solution for recent Kubuntu/Ubuntu versions.
I am stuck that if I start X I don't have any input on seat0
and random noise on seat-tv
.
I created a new question because those existing questions/answers are either specialized in hardware or incomplete in explaining background. At least I wasn't able to solve the problem using existing sources.
I created a community answer, so feel free to edit the answer below.
When finished I might add how to start Kodi only without display-manager and window-manager on seat-tv.
xorg multiple-monitors udev
xorg multiple-monitors udev
edited Mar 18 at 15:15
asked Mar 18 at 13:33
JPT
1309
1309
add a comment |Â
add a comment |Â
1 Answer
1
active
oldest
votes
up vote
0
down vote
Before starting
- Backup your system and/or etc
- Install
openssh-server
and make sure you can login from another PC in case your local login doesn't work - disable automatic start of display manager:
sudo systemctl set-default multi-user.target
- think about a good name for your seats. Conventions says it has to start with
seat-
. I chooseseat-tv
.
Set-up udev rules
- read about udev rules here https://docs.oracle.com/cd/E37670_01/E41138/html/ch07s03.html http://www.reactivated.net/writing_udev_rules.html
find your hardware by using one of these
$ lspci -nn
[stripped non-audio, nongraphics]
00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06)
00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
00:1b.0 Audio device [0403]: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller [8086:8c20] (rev 05)
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710 [Radeon HD 4350/4550] [1002:954f]
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
$ lsusb
[stripped non-audio, non-input]
Bus 003 Device 019: ID 413c:a503 Dell Computer Corp. [Soundbar]
Bus 003 Device 018: ID 03f0:034a Hewlett-Packard Elite Keyboard
Bus 003 Device 017: ID 046d:c050 Logitech, Inc. RX 250 Optical Mouse
Bus 003 Device 023: ID 1915:0196 Nordic Semiconductor ASA [Mele USB remote keyboard and mouse]
# how do I get a more useful output from lsusb?
$ loginctl seat-status
Devices:
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
â input:input1 "Power Button"
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input5
â input:input5 "Video Bus"
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
â input:input0 "Power Button"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/renderD128
â drm:renderD128
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1
â [MASTER] drm:card1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1
â â [MASTER] drm:card1-DP-1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1
â â [MASTER] drm:card1-HDMI-A-1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-2
â â [MASTER] drm:card1-HDMI-A-2
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-3
â â [MASTER] drm:card1-HDMI-A-3
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-VGA-1
â [MASTER] drm:card1-VGA-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/renderD129
â drm:renderD129
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/graphics/fb1
â [MASTER] graphics:fb1 "inteldrmfb"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0
â sound:card0 "HDMI_1"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input10
â â input:input10 "HDA Intel HDMI HDMI/DP,pcm=8"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input11
â â input:input11 "HDA Intel HDMI HDMI/DP,pcm=9"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input12
â â input:input12 "HDA Intel HDMI HDMI/DP,pcm=10"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input8
â â input:input8 "HDA Intel HDMI HDMI/DP,pcm=3"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input9
â input:input9 "HDA Intel HDMI HDMI/DP,pcm=7"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3
â usb:usb3
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1915:0196.0027/input/input47
â â input:input47 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1915:0196.0028/input/input48
â â input:input48 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:1915:0196.0029/input/input49
â â input:input49 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5
â usb:3-5
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.1/3-5.1:1.0/0003:046D:C050.0017/input/input34
â â input:input34 "Logitech USB-PS/2 Optical Mouse"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.0/0003:03F0:034A.0018/input/input35
â â input:input35 "Chicony HP Elite USB Keyboard"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.1/0003:03F0:034A.0019/input/input36
â â input:input36 "Chicony HP Elite USB Keyboard"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.0/sound/card3
â â sound:card3 "SoundBar"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.3/0003:413C:A503.001A/input/input37
â input:input37 "Dell Dell AC511 USB SoundBar"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb4
â usb:usb4
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1a.0/usb1
â usb:usb1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1
â usb:1-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1
â sound:card1 "PCH"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input13
â â input:input13 "HDA Intel PCH Front Mic"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input14
â â input:input14 "HDA Intel PCH Rear Mic"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input15
â â input:input15 "HDA Intel PCH Line"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input16
â â input:input16 "HDA Intel PCH Line Out"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input17
â input:input17 "HDA Intel PCH Front Headphone"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1d.0/usb2
â usb:usb2
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1
â usb:2-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sr0
â block:sr0
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/scsi_generic/sg0
â scsi_generic:sg0
âÂÂâÂÂ/sys/devices/platform/eeepc-wmi/input/input6
â input:input6 "Eee PC WMI hotkeys"
âÂÂâÂÂ/sys/devices/virtual/misc/kvm
â misc:kvm
âÂÂâÂÂ/sys/devices/virtual/misc/rfkill
misc:rfkilladd rules by ...
using
loginctl
plus above pathes to create the udev rules, but I don't recommend it. Do the bus IDs remain the same?# gfx
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
# hdmi audio
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2
# mele remote
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1915:0196.0008/input/input21
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1915:0196.0009/input/input22
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:1915:0196.000A/input/input23This adds rule files like the following. The rule sets ID_SEAT to seat-tv if ID_FOR_SEAT matches the given.
$ cat /etc/udev/rules.d/72-seat-graphics-pci-0000_01_00_0.rules`
TAG=="seat", ENVID_FOR_SEAT=="graphics-pci-0000_01_00_0", ENVID_SEAT="seat-tv"or creating the udev rules manually. I prefer VendorID/ProductID for identification. File names should start with 72 because other seat related stuff in
/lib/udev/rules.d
is 71 or 73.$ cat 72-seat0.rules
# do I really need to set up anything for seat0?
# It should just grab anything not allocated to another seat?
# Intel GFX
# if TAG contains seat and vendor and product match the hex codes than set ID_SEAT to seat0
TAG=="seat", ATTRSidVendor=="0x8086", ATTRSidProduct=="0x0412", ENVID_SEAT="seat0"
# Dell AC511 Sound
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.0/sound/card3
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.3/0003:413C:A503.001A/input/input37
TAG=="seat", ATTRSidVendor=="0x413c", ATTRSidProduct=="0xa503", ENVID_SEAT="seat0"
# HP Keyboard
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.0/0003:03F0:034A.0018/input/input35
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.1/0003:03F0:034A.0019/input/input36
SUBSYSTEM=="input", ATTRSidVendor=="0x03f0", ATTRSidProduct=="0x034a", ENVID_INPUT.tags="input_seat0"
# Logitech Mouse
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.1/3-5.1:1.0/0003:046D:C050.0017/input/input34
SUBSYSTEM=="input", ATTRSidVendor=="0x046d", ATTRSidProduct=="0xc050", ENVID_INPUT.tags="input_seat0"
$ cat 72-seat-tv.rules
# ATI RV710
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
# any graphics card should already have the master-of-seat TAG,
# see /lib/udev/rules.d/71-u-d-c-gpu-detection.rules
#SUBSYSTEM=="drm", KERNEL=="card[0-9]*", ATTRSidVendor=="0x1002", ATTRSidProduct=="0x954f", TAG+="master-of-seat"
TAG=="seat", ATTRSidVendor=="0x1002", ATTRSidProduct=="0x954f" , ENVID_SEAT="seat-tv"
# ATI HDMI audio
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input7
TAG=="seat", ATTRSidVendor=="0x1002", ATTRSidProduct=="0xaa38", ENVID_SEAT="seat-tv"
#TAG=="seat", ENVID_FOR_SEAT=="sound-pci-0000_01_00_1", ENVID_SEAT="seat-tv"
# Mele USB remote keyboard and mouse
#1915:0196
SUBSYSTEM=="input", ATTRSidVendor=="0x1915", ATTRSidProduct=="0x0196", ENVID_INPUT.tags="input_seat-tv", ENVID_SEAT="seat-tv"
# TODO usb hub where all attached devices belong to this seat
#SUBSYSTEM=="input", DEVPATH=="/devices/pci0000:00/0000:00:1d.0/usb2/*", ENVID_INPUT.tags="input_seat-tv"
you should now (after display manager restart?) realize the following
- the inputs assigned to other seats should not work any more on seat0
- screens assigned to other seats should disappear from system settings/display
- same for the audio device
Set-Up Xorg
- create a dir like /etc/X11/xorg.conf.multiseat so it won't change your default set-up.
- fetch current xorg config with
sudo Xorg :2 -configure
create file
/etc/X11/xorg.conf.multiseat/90-seat-tv.conf
Section "Device"
# get this from Xorg -configure
Identifier "Card0"
Driver "amdgpu"
BusID "PCI:1:0:0"
MatchSeat "seat-tv"
# Identifier "Seat-TV"
# Option "ProbeAllGpus" "FALSE"
EndSection
#Section "Device"
# Identifier "Card1"
# Driver "amdgpu"
# BusID "PCI:1:0:1"
#EndSection
Section "InputClass"
Identifier "ignore_other_seats"
Option "Ignore" "yes"
EndSection
Section "InputClass"
Identifier "use_seat_devices"
MatchTag "input_seat-tv"
Option "Ignore" "no"
EndSectionI don't know about the commented entries.
- Do I need a similar file for seat0 or are the defaults ok?
- TODO: Server Layout
Test
- logout from gui and shutdown your window manager using
sudo service sddm stop
- start X on all your seats - one after the other - and see what happens.
startx -- -layout seat0 -config xorg.conf.multiseat
, see https://wiki.archlinux.org/index.php/Xorg_multiseat
Undo
- temporarily
- enable your window manager again
sudo systemctl set-default graphical.target
- enable your window manager again
- permanently
- delete your udev files
/etc/udev/rules.d/72-*
- delete your
/etc/X11/xorg.conf.multseat
folder
- delete your udev files
What now?
- What am I missing?
- How does the Server Layout work?
- Mele keyboard somehow is not attached to seat-tv?
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
Before starting
- Backup your system and/or etc
- Install
openssh-server
and make sure you can login from another PC in case your local login doesn't work - disable automatic start of display manager:
sudo systemctl set-default multi-user.target
- think about a good name for your seats. Conventions says it has to start with
seat-
. I chooseseat-tv
.
Set-up udev rules
- read about udev rules here https://docs.oracle.com/cd/E37670_01/E41138/html/ch07s03.html http://www.reactivated.net/writing_udev_rules.html
find your hardware by using one of these
$ lspci -nn
[stripped non-audio, nongraphics]
00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06)
00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
00:1b.0 Audio device [0403]: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller [8086:8c20] (rev 05)
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710 [Radeon HD 4350/4550] [1002:954f]
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
$ lsusb
[stripped non-audio, non-input]
Bus 003 Device 019: ID 413c:a503 Dell Computer Corp. [Soundbar]
Bus 003 Device 018: ID 03f0:034a Hewlett-Packard Elite Keyboard
Bus 003 Device 017: ID 046d:c050 Logitech, Inc. RX 250 Optical Mouse
Bus 003 Device 023: ID 1915:0196 Nordic Semiconductor ASA [Mele USB remote keyboard and mouse]
# how do I get a more useful output from lsusb?
$ loginctl seat-status
Devices:
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
â input:input1 "Power Button"
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input5
â input:input5 "Video Bus"
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
â input:input0 "Power Button"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/renderD128
â drm:renderD128
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1
â [MASTER] drm:card1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1
â â [MASTER] drm:card1-DP-1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1
â â [MASTER] drm:card1-HDMI-A-1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-2
â â [MASTER] drm:card1-HDMI-A-2
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-3
â â [MASTER] drm:card1-HDMI-A-3
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-VGA-1
â [MASTER] drm:card1-VGA-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/renderD129
â drm:renderD129
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/graphics/fb1
â [MASTER] graphics:fb1 "inteldrmfb"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0
â sound:card0 "HDMI_1"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input10
â â input:input10 "HDA Intel HDMI HDMI/DP,pcm=8"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input11
â â input:input11 "HDA Intel HDMI HDMI/DP,pcm=9"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input12
â â input:input12 "HDA Intel HDMI HDMI/DP,pcm=10"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input8
â â input:input8 "HDA Intel HDMI HDMI/DP,pcm=3"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input9
â input:input9 "HDA Intel HDMI HDMI/DP,pcm=7"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3
â usb:usb3
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1915:0196.0027/input/input47
â â input:input47 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1915:0196.0028/input/input48
â â input:input48 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:1915:0196.0029/input/input49
â â input:input49 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5
â usb:3-5
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.1/3-5.1:1.0/0003:046D:C050.0017/input/input34
â â input:input34 "Logitech USB-PS/2 Optical Mouse"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.0/0003:03F0:034A.0018/input/input35
â â input:input35 "Chicony HP Elite USB Keyboard"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.1/0003:03F0:034A.0019/input/input36
â â input:input36 "Chicony HP Elite USB Keyboard"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.0/sound/card3
â â sound:card3 "SoundBar"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.3/0003:413C:A503.001A/input/input37
â input:input37 "Dell Dell AC511 USB SoundBar"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb4
â usb:usb4
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1a.0/usb1
â usb:usb1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1
â usb:1-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1
â sound:card1 "PCH"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input13
â â input:input13 "HDA Intel PCH Front Mic"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input14
â â input:input14 "HDA Intel PCH Rear Mic"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input15
â â input:input15 "HDA Intel PCH Line"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input16
â â input:input16 "HDA Intel PCH Line Out"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input17
â input:input17 "HDA Intel PCH Front Headphone"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1d.0/usb2
â usb:usb2
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1
â usb:2-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sr0
â block:sr0
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/scsi_generic/sg0
â scsi_generic:sg0
âÂÂâÂÂ/sys/devices/platform/eeepc-wmi/input/input6
â input:input6 "Eee PC WMI hotkeys"
âÂÂâÂÂ/sys/devices/virtual/misc/kvm
â misc:kvm
âÂÂâÂÂ/sys/devices/virtual/misc/rfkill
misc:rfkilladd rules by ...
using
loginctl
plus above pathes to create the udev rules, but I don't recommend it. Do the bus IDs remain the same?# gfx
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
# hdmi audio
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2
# mele remote
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1915:0196.0008/input/input21
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1915:0196.0009/input/input22
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:1915:0196.000A/input/input23This adds rule files like the following. The rule sets ID_SEAT to seat-tv if ID_FOR_SEAT matches the given.
$ cat /etc/udev/rules.d/72-seat-graphics-pci-0000_01_00_0.rules`
TAG=="seat", ENVID_FOR_SEAT=="graphics-pci-0000_01_00_0", ENVID_SEAT="seat-tv"or creating the udev rules manually. I prefer VendorID/ProductID for identification. File names should start with 72 because other seat related stuff in
/lib/udev/rules.d
is 71 or 73.$ cat 72-seat0.rules
# do I really need to set up anything for seat0?
# It should just grab anything not allocated to another seat?
# Intel GFX
# if TAG contains seat and vendor and product match the hex codes than set ID_SEAT to seat0
TAG=="seat", ATTRSidVendor=="0x8086", ATTRSidProduct=="0x0412", ENVID_SEAT="seat0"
# Dell AC511 Sound
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.0/sound/card3
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.3/0003:413C:A503.001A/input/input37
TAG=="seat", ATTRSidVendor=="0x413c", ATTRSidProduct=="0xa503", ENVID_SEAT="seat0"
# HP Keyboard
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.0/0003:03F0:034A.0018/input/input35
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.1/0003:03F0:034A.0019/input/input36
SUBSYSTEM=="input", ATTRSidVendor=="0x03f0", ATTRSidProduct=="0x034a", ENVID_INPUT.tags="input_seat0"
# Logitech Mouse
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.1/3-5.1:1.0/0003:046D:C050.0017/input/input34
SUBSYSTEM=="input", ATTRSidVendor=="0x046d", ATTRSidProduct=="0xc050", ENVID_INPUT.tags="input_seat0"
$ cat 72-seat-tv.rules
# ATI RV710
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
# any graphics card should already have the master-of-seat TAG,
# see /lib/udev/rules.d/71-u-d-c-gpu-detection.rules
#SUBSYSTEM=="drm", KERNEL=="card[0-9]*", ATTRSidVendor=="0x1002", ATTRSidProduct=="0x954f", TAG+="master-of-seat"
TAG=="seat", ATTRSidVendor=="0x1002", ATTRSidProduct=="0x954f" , ENVID_SEAT="seat-tv"
# ATI HDMI audio
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input7
TAG=="seat", ATTRSidVendor=="0x1002", ATTRSidProduct=="0xaa38", ENVID_SEAT="seat-tv"
#TAG=="seat", ENVID_FOR_SEAT=="sound-pci-0000_01_00_1", ENVID_SEAT="seat-tv"
# Mele USB remote keyboard and mouse
#1915:0196
SUBSYSTEM=="input", ATTRSidVendor=="0x1915", ATTRSidProduct=="0x0196", ENVID_INPUT.tags="input_seat-tv", ENVID_SEAT="seat-tv"
# TODO usb hub where all attached devices belong to this seat
#SUBSYSTEM=="input", DEVPATH=="/devices/pci0000:00/0000:00:1d.0/usb2/*", ENVID_INPUT.tags="input_seat-tv"
you should now (after display manager restart?) realize the following
- the inputs assigned to other seats should not work any more on seat0
- screens assigned to other seats should disappear from system settings/display
- same for the audio device
Set-Up Xorg
- create a dir like /etc/X11/xorg.conf.multiseat so it won't change your default set-up.
- fetch current xorg config with
sudo Xorg :2 -configure
create file
/etc/X11/xorg.conf.multiseat/90-seat-tv.conf
Section "Device"
# get this from Xorg -configure
Identifier "Card0"
Driver "amdgpu"
BusID "PCI:1:0:0"
MatchSeat "seat-tv"
# Identifier "Seat-TV"
# Option "ProbeAllGpus" "FALSE"
EndSection
#Section "Device"
# Identifier "Card1"
# Driver "amdgpu"
# BusID "PCI:1:0:1"
#EndSection
Section "InputClass"
Identifier "ignore_other_seats"
Option "Ignore" "yes"
EndSection
Section "InputClass"
Identifier "use_seat_devices"
MatchTag "input_seat-tv"
Option "Ignore" "no"
EndSectionI don't know about the commented entries.
- Do I need a similar file for seat0 or are the defaults ok?
- TODO: Server Layout
Test
- logout from gui and shutdown your window manager using
sudo service sddm stop
- start X on all your seats - one after the other - and see what happens.
startx -- -layout seat0 -config xorg.conf.multiseat
, see https://wiki.archlinux.org/index.php/Xorg_multiseat
Undo
- temporarily
- enable your window manager again
sudo systemctl set-default graphical.target
- enable your window manager again
- permanently
- delete your udev files
/etc/udev/rules.d/72-*
- delete your
/etc/X11/xorg.conf.multseat
folder
- delete your udev files
What now?
- What am I missing?
- How does the Server Layout work?
- Mele keyboard somehow is not attached to seat-tv?
add a comment |Â
up vote
0
down vote
Before starting
- Backup your system and/or etc
- Install
openssh-server
and make sure you can login from another PC in case your local login doesn't work - disable automatic start of display manager:
sudo systemctl set-default multi-user.target
- think about a good name for your seats. Conventions says it has to start with
seat-
. I chooseseat-tv
.
Set-up udev rules
- read about udev rules here https://docs.oracle.com/cd/E37670_01/E41138/html/ch07s03.html http://www.reactivated.net/writing_udev_rules.html
find your hardware by using one of these
$ lspci -nn
[stripped non-audio, nongraphics]
00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06)
00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
00:1b.0 Audio device [0403]: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller [8086:8c20] (rev 05)
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710 [Radeon HD 4350/4550] [1002:954f]
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
$ lsusb
[stripped non-audio, non-input]
Bus 003 Device 019: ID 413c:a503 Dell Computer Corp. [Soundbar]
Bus 003 Device 018: ID 03f0:034a Hewlett-Packard Elite Keyboard
Bus 003 Device 017: ID 046d:c050 Logitech, Inc. RX 250 Optical Mouse
Bus 003 Device 023: ID 1915:0196 Nordic Semiconductor ASA [Mele USB remote keyboard and mouse]
# how do I get a more useful output from lsusb?
$ loginctl seat-status
Devices:
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
â input:input1 "Power Button"
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input5
â input:input5 "Video Bus"
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
â input:input0 "Power Button"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/renderD128
â drm:renderD128
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1
â [MASTER] drm:card1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1
â â [MASTER] drm:card1-DP-1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1
â â [MASTER] drm:card1-HDMI-A-1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-2
â â [MASTER] drm:card1-HDMI-A-2
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-3
â â [MASTER] drm:card1-HDMI-A-3
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-VGA-1
â [MASTER] drm:card1-VGA-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/renderD129
â drm:renderD129
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/graphics/fb1
â [MASTER] graphics:fb1 "inteldrmfb"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0
â sound:card0 "HDMI_1"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input10
â â input:input10 "HDA Intel HDMI HDMI/DP,pcm=8"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input11
â â input:input11 "HDA Intel HDMI HDMI/DP,pcm=9"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input12
â â input:input12 "HDA Intel HDMI HDMI/DP,pcm=10"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input8
â â input:input8 "HDA Intel HDMI HDMI/DP,pcm=3"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input9
â input:input9 "HDA Intel HDMI HDMI/DP,pcm=7"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3
â usb:usb3
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1915:0196.0027/input/input47
â â input:input47 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1915:0196.0028/input/input48
â â input:input48 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:1915:0196.0029/input/input49
â â input:input49 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5
â usb:3-5
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.1/3-5.1:1.0/0003:046D:C050.0017/input/input34
â â input:input34 "Logitech USB-PS/2 Optical Mouse"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.0/0003:03F0:034A.0018/input/input35
â â input:input35 "Chicony HP Elite USB Keyboard"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.1/0003:03F0:034A.0019/input/input36
â â input:input36 "Chicony HP Elite USB Keyboard"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.0/sound/card3
â â sound:card3 "SoundBar"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.3/0003:413C:A503.001A/input/input37
â input:input37 "Dell Dell AC511 USB SoundBar"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb4
â usb:usb4
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1a.0/usb1
â usb:usb1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1
â usb:1-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1
â sound:card1 "PCH"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input13
â â input:input13 "HDA Intel PCH Front Mic"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input14
â â input:input14 "HDA Intel PCH Rear Mic"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input15
â â input:input15 "HDA Intel PCH Line"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input16
â â input:input16 "HDA Intel PCH Line Out"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input17
â input:input17 "HDA Intel PCH Front Headphone"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1d.0/usb2
â usb:usb2
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1
â usb:2-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sr0
â block:sr0
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/scsi_generic/sg0
â scsi_generic:sg0
âÂÂâÂÂ/sys/devices/platform/eeepc-wmi/input/input6
â input:input6 "Eee PC WMI hotkeys"
âÂÂâÂÂ/sys/devices/virtual/misc/kvm
â misc:kvm
âÂÂâÂÂ/sys/devices/virtual/misc/rfkill
misc:rfkilladd rules by ...
using
loginctl
plus above pathes to create the udev rules, but I don't recommend it. Do the bus IDs remain the same?# gfx
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
# hdmi audio
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2
# mele remote
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1915:0196.0008/input/input21
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1915:0196.0009/input/input22
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:1915:0196.000A/input/input23This adds rule files like the following. The rule sets ID_SEAT to seat-tv if ID_FOR_SEAT matches the given.
$ cat /etc/udev/rules.d/72-seat-graphics-pci-0000_01_00_0.rules`
TAG=="seat", ENVID_FOR_SEAT=="graphics-pci-0000_01_00_0", ENVID_SEAT="seat-tv"or creating the udev rules manually. I prefer VendorID/ProductID for identification. File names should start with 72 because other seat related stuff in
/lib/udev/rules.d
is 71 or 73.$ cat 72-seat0.rules
# do I really need to set up anything for seat0?
# It should just grab anything not allocated to another seat?
# Intel GFX
# if TAG contains seat and vendor and product match the hex codes than set ID_SEAT to seat0
TAG=="seat", ATTRSidVendor=="0x8086", ATTRSidProduct=="0x0412", ENVID_SEAT="seat0"
# Dell AC511 Sound
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.0/sound/card3
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.3/0003:413C:A503.001A/input/input37
TAG=="seat", ATTRSidVendor=="0x413c", ATTRSidProduct=="0xa503", ENVID_SEAT="seat0"
# HP Keyboard
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.0/0003:03F0:034A.0018/input/input35
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.1/0003:03F0:034A.0019/input/input36
SUBSYSTEM=="input", ATTRSidVendor=="0x03f0", ATTRSidProduct=="0x034a", ENVID_INPUT.tags="input_seat0"
# Logitech Mouse
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.1/3-5.1:1.0/0003:046D:C050.0017/input/input34
SUBSYSTEM=="input", ATTRSidVendor=="0x046d", ATTRSidProduct=="0xc050", ENVID_INPUT.tags="input_seat0"
$ cat 72-seat-tv.rules
# ATI RV710
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
# any graphics card should already have the master-of-seat TAG,
# see /lib/udev/rules.d/71-u-d-c-gpu-detection.rules
#SUBSYSTEM=="drm", KERNEL=="card[0-9]*", ATTRSidVendor=="0x1002", ATTRSidProduct=="0x954f", TAG+="master-of-seat"
TAG=="seat", ATTRSidVendor=="0x1002", ATTRSidProduct=="0x954f" , ENVID_SEAT="seat-tv"
# ATI HDMI audio
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input7
TAG=="seat", ATTRSidVendor=="0x1002", ATTRSidProduct=="0xaa38", ENVID_SEAT="seat-tv"
#TAG=="seat", ENVID_FOR_SEAT=="sound-pci-0000_01_00_1", ENVID_SEAT="seat-tv"
# Mele USB remote keyboard and mouse
#1915:0196
SUBSYSTEM=="input", ATTRSidVendor=="0x1915", ATTRSidProduct=="0x0196", ENVID_INPUT.tags="input_seat-tv", ENVID_SEAT="seat-tv"
# TODO usb hub where all attached devices belong to this seat
#SUBSYSTEM=="input", DEVPATH=="/devices/pci0000:00/0000:00:1d.0/usb2/*", ENVID_INPUT.tags="input_seat-tv"
you should now (after display manager restart?) realize the following
- the inputs assigned to other seats should not work any more on seat0
- screens assigned to other seats should disappear from system settings/display
- same for the audio device
Set-Up Xorg
- create a dir like /etc/X11/xorg.conf.multiseat so it won't change your default set-up.
- fetch current xorg config with
sudo Xorg :2 -configure
create file
/etc/X11/xorg.conf.multiseat/90-seat-tv.conf
Section "Device"
# get this from Xorg -configure
Identifier "Card0"
Driver "amdgpu"
BusID "PCI:1:0:0"
MatchSeat "seat-tv"
# Identifier "Seat-TV"
# Option "ProbeAllGpus" "FALSE"
EndSection
#Section "Device"
# Identifier "Card1"
# Driver "amdgpu"
# BusID "PCI:1:0:1"
#EndSection
Section "InputClass"
Identifier "ignore_other_seats"
Option "Ignore" "yes"
EndSection
Section "InputClass"
Identifier "use_seat_devices"
MatchTag "input_seat-tv"
Option "Ignore" "no"
EndSectionI don't know about the commented entries.
- Do I need a similar file for seat0 or are the defaults ok?
- TODO: Server Layout
Test
- logout from gui and shutdown your window manager using
sudo service sddm stop
- start X on all your seats - one after the other - and see what happens.
startx -- -layout seat0 -config xorg.conf.multiseat
, see https://wiki.archlinux.org/index.php/Xorg_multiseat
Undo
- temporarily
- enable your window manager again
sudo systemctl set-default graphical.target
- enable your window manager again
- permanently
- delete your udev files
/etc/udev/rules.d/72-*
- delete your
/etc/X11/xorg.conf.multseat
folder
- delete your udev files
What now?
- What am I missing?
- How does the Server Layout work?
- Mele keyboard somehow is not attached to seat-tv?
add a comment |Â
up vote
0
down vote
up vote
0
down vote
Before starting
- Backup your system and/or etc
- Install
openssh-server
and make sure you can login from another PC in case your local login doesn't work - disable automatic start of display manager:
sudo systemctl set-default multi-user.target
- think about a good name for your seats. Conventions says it has to start with
seat-
. I chooseseat-tv
.
Set-up udev rules
- read about udev rules here https://docs.oracle.com/cd/E37670_01/E41138/html/ch07s03.html http://www.reactivated.net/writing_udev_rules.html
find your hardware by using one of these
$ lspci -nn
[stripped non-audio, nongraphics]
00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06)
00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
00:1b.0 Audio device [0403]: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller [8086:8c20] (rev 05)
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710 [Radeon HD 4350/4550] [1002:954f]
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
$ lsusb
[stripped non-audio, non-input]
Bus 003 Device 019: ID 413c:a503 Dell Computer Corp. [Soundbar]
Bus 003 Device 018: ID 03f0:034a Hewlett-Packard Elite Keyboard
Bus 003 Device 017: ID 046d:c050 Logitech, Inc. RX 250 Optical Mouse
Bus 003 Device 023: ID 1915:0196 Nordic Semiconductor ASA [Mele USB remote keyboard and mouse]
# how do I get a more useful output from lsusb?
$ loginctl seat-status
Devices:
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
â input:input1 "Power Button"
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input5
â input:input5 "Video Bus"
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
â input:input0 "Power Button"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/renderD128
â drm:renderD128
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1
â [MASTER] drm:card1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1
â â [MASTER] drm:card1-DP-1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1
â â [MASTER] drm:card1-HDMI-A-1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-2
â â [MASTER] drm:card1-HDMI-A-2
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-3
â â [MASTER] drm:card1-HDMI-A-3
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-VGA-1
â [MASTER] drm:card1-VGA-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/renderD129
â drm:renderD129
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/graphics/fb1
â [MASTER] graphics:fb1 "inteldrmfb"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0
â sound:card0 "HDMI_1"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input10
â â input:input10 "HDA Intel HDMI HDMI/DP,pcm=8"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input11
â â input:input11 "HDA Intel HDMI HDMI/DP,pcm=9"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input12
â â input:input12 "HDA Intel HDMI HDMI/DP,pcm=10"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input8
â â input:input8 "HDA Intel HDMI HDMI/DP,pcm=3"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input9
â input:input9 "HDA Intel HDMI HDMI/DP,pcm=7"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3
â usb:usb3
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1915:0196.0027/input/input47
â â input:input47 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1915:0196.0028/input/input48
â â input:input48 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:1915:0196.0029/input/input49
â â input:input49 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5
â usb:3-5
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.1/3-5.1:1.0/0003:046D:C050.0017/input/input34
â â input:input34 "Logitech USB-PS/2 Optical Mouse"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.0/0003:03F0:034A.0018/input/input35
â â input:input35 "Chicony HP Elite USB Keyboard"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.1/0003:03F0:034A.0019/input/input36
â â input:input36 "Chicony HP Elite USB Keyboard"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.0/sound/card3
â â sound:card3 "SoundBar"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.3/0003:413C:A503.001A/input/input37
â input:input37 "Dell Dell AC511 USB SoundBar"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb4
â usb:usb4
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1a.0/usb1
â usb:usb1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1
â usb:1-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1
â sound:card1 "PCH"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input13
â â input:input13 "HDA Intel PCH Front Mic"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input14
â â input:input14 "HDA Intel PCH Rear Mic"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input15
â â input:input15 "HDA Intel PCH Line"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input16
â â input:input16 "HDA Intel PCH Line Out"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input17
â input:input17 "HDA Intel PCH Front Headphone"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1d.0/usb2
â usb:usb2
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1
â usb:2-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sr0
â block:sr0
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/scsi_generic/sg0
â scsi_generic:sg0
âÂÂâÂÂ/sys/devices/platform/eeepc-wmi/input/input6
â input:input6 "Eee PC WMI hotkeys"
âÂÂâÂÂ/sys/devices/virtual/misc/kvm
â misc:kvm
âÂÂâÂÂ/sys/devices/virtual/misc/rfkill
misc:rfkilladd rules by ...
using
loginctl
plus above pathes to create the udev rules, but I don't recommend it. Do the bus IDs remain the same?# gfx
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
# hdmi audio
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2
# mele remote
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1915:0196.0008/input/input21
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1915:0196.0009/input/input22
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:1915:0196.000A/input/input23This adds rule files like the following. The rule sets ID_SEAT to seat-tv if ID_FOR_SEAT matches the given.
$ cat /etc/udev/rules.d/72-seat-graphics-pci-0000_01_00_0.rules`
TAG=="seat", ENVID_FOR_SEAT=="graphics-pci-0000_01_00_0", ENVID_SEAT="seat-tv"or creating the udev rules manually. I prefer VendorID/ProductID for identification. File names should start with 72 because other seat related stuff in
/lib/udev/rules.d
is 71 or 73.$ cat 72-seat0.rules
# do I really need to set up anything for seat0?
# It should just grab anything not allocated to another seat?
# Intel GFX
# if TAG contains seat and vendor and product match the hex codes than set ID_SEAT to seat0
TAG=="seat", ATTRSidVendor=="0x8086", ATTRSidProduct=="0x0412", ENVID_SEAT="seat0"
# Dell AC511 Sound
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.0/sound/card3
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.3/0003:413C:A503.001A/input/input37
TAG=="seat", ATTRSidVendor=="0x413c", ATTRSidProduct=="0xa503", ENVID_SEAT="seat0"
# HP Keyboard
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.0/0003:03F0:034A.0018/input/input35
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.1/0003:03F0:034A.0019/input/input36
SUBSYSTEM=="input", ATTRSidVendor=="0x03f0", ATTRSidProduct=="0x034a", ENVID_INPUT.tags="input_seat0"
# Logitech Mouse
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.1/3-5.1:1.0/0003:046D:C050.0017/input/input34
SUBSYSTEM=="input", ATTRSidVendor=="0x046d", ATTRSidProduct=="0xc050", ENVID_INPUT.tags="input_seat0"
$ cat 72-seat-tv.rules
# ATI RV710
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
# any graphics card should already have the master-of-seat TAG,
# see /lib/udev/rules.d/71-u-d-c-gpu-detection.rules
#SUBSYSTEM=="drm", KERNEL=="card[0-9]*", ATTRSidVendor=="0x1002", ATTRSidProduct=="0x954f", TAG+="master-of-seat"
TAG=="seat", ATTRSidVendor=="0x1002", ATTRSidProduct=="0x954f" , ENVID_SEAT="seat-tv"
# ATI HDMI audio
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input7
TAG=="seat", ATTRSidVendor=="0x1002", ATTRSidProduct=="0xaa38", ENVID_SEAT="seat-tv"
#TAG=="seat", ENVID_FOR_SEAT=="sound-pci-0000_01_00_1", ENVID_SEAT="seat-tv"
# Mele USB remote keyboard and mouse
#1915:0196
SUBSYSTEM=="input", ATTRSidVendor=="0x1915", ATTRSidProduct=="0x0196", ENVID_INPUT.tags="input_seat-tv", ENVID_SEAT="seat-tv"
# TODO usb hub where all attached devices belong to this seat
#SUBSYSTEM=="input", DEVPATH=="/devices/pci0000:00/0000:00:1d.0/usb2/*", ENVID_INPUT.tags="input_seat-tv"
you should now (after display manager restart?) realize the following
- the inputs assigned to other seats should not work any more on seat0
- screens assigned to other seats should disappear from system settings/display
- same for the audio device
Set-Up Xorg
- create a dir like /etc/X11/xorg.conf.multiseat so it won't change your default set-up.
- fetch current xorg config with
sudo Xorg :2 -configure
create file
/etc/X11/xorg.conf.multiseat/90-seat-tv.conf
Section "Device"
# get this from Xorg -configure
Identifier "Card0"
Driver "amdgpu"
BusID "PCI:1:0:0"
MatchSeat "seat-tv"
# Identifier "Seat-TV"
# Option "ProbeAllGpus" "FALSE"
EndSection
#Section "Device"
# Identifier "Card1"
# Driver "amdgpu"
# BusID "PCI:1:0:1"
#EndSection
Section "InputClass"
Identifier "ignore_other_seats"
Option "Ignore" "yes"
EndSection
Section "InputClass"
Identifier "use_seat_devices"
MatchTag "input_seat-tv"
Option "Ignore" "no"
EndSectionI don't know about the commented entries.
- Do I need a similar file for seat0 or are the defaults ok?
- TODO: Server Layout
Test
- logout from gui and shutdown your window manager using
sudo service sddm stop
- start X on all your seats - one after the other - and see what happens.
startx -- -layout seat0 -config xorg.conf.multiseat
, see https://wiki.archlinux.org/index.php/Xorg_multiseat
Undo
- temporarily
- enable your window manager again
sudo systemctl set-default graphical.target
- enable your window manager again
- permanently
- delete your udev files
/etc/udev/rules.d/72-*
- delete your
/etc/X11/xorg.conf.multseat
folder
- delete your udev files
What now?
- What am I missing?
- How does the Server Layout work?
- Mele keyboard somehow is not attached to seat-tv?
Before starting
- Backup your system and/or etc
- Install
openssh-server
and make sure you can login from another PC in case your local login doesn't work - disable automatic start of display manager:
sudo systemctl set-default multi-user.target
- think about a good name for your seats. Conventions says it has to start with
seat-
. I chooseseat-tv
.
Set-up udev rules
- read about udev rules here https://docs.oracle.com/cd/E37670_01/E41138/html/ch07s03.html http://www.reactivated.net/writing_udev_rules.html
find your hardware by using one of these
$ lspci -nn
[stripped non-audio, nongraphics]
00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06)
00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
00:1b.0 Audio device [0403]: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller [8086:8c20] (rev 05)
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710 [Radeon HD 4350/4550] [1002:954f]
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
$ lsusb
[stripped non-audio, non-input]
Bus 003 Device 019: ID 413c:a503 Dell Computer Corp. [Soundbar]
Bus 003 Device 018: ID 03f0:034a Hewlett-Packard Elite Keyboard
Bus 003 Device 017: ID 046d:c050 Logitech, Inc. RX 250 Optical Mouse
Bus 003 Device 023: ID 1915:0196 Nordic Semiconductor ASA [Mele USB remote keyboard and mouse]
# how do I get a more useful output from lsusb?
$ loginctl seat-status
Devices:
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
â input:input1 "Power Button"
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input5
â input:input5 "Video Bus"
âÂÂâÂÂ/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
â input:input0 "Power Button"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/renderD128
â drm:renderD128
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1
â [MASTER] drm:card1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-DP-1
â â [MASTER] drm:card1-DP-1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-1
â â [MASTER] drm:card1-HDMI-A-1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-2
â â [MASTER] drm:card1-HDMI-A-2
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-HDMI-A-3
â â [MASTER] drm:card1-HDMI-A-3
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-VGA-1
â [MASTER] drm:card1-VGA-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/drm/renderD129
â drm:renderD129
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:02.0/graphics/fb1
â [MASTER] graphics:fb1 "inteldrmfb"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0
â sound:card0 "HDMI_1"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input10
â â input:input10 "HDA Intel HDMI HDMI/DP,pcm=8"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input11
â â input:input11 "HDA Intel HDMI HDMI/DP,pcm=9"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input12
â â input:input12 "HDA Intel HDMI HDMI/DP,pcm=10"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input8
â â input:input8 "HDA Intel HDMI HDMI/DP,pcm=3"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:03.0/sound/card0/input9
â input:input9 "HDA Intel HDMI HDMI/DP,pcm=7"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3
â usb:usb3
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1915:0196.0027/input/input47
â â input:input47 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1915:0196.0028/input/input48
â â input:input48 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:1915:0196.0029/input/input49
â â input:input49 "MELE RI"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5
â usb:3-5
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.1/3-5.1:1.0/0003:046D:C050.0017/input/input34
â â input:input34 "Logitech USB-PS/2 Optical Mouse"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.0/0003:03F0:034A.0018/input/input35
â â input:input35 "Chicony HP Elite USB Keyboard"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.1/0003:03F0:034A.0019/input/input36
â â input:input36 "Chicony HP Elite USB Keyboard"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.0/sound/card3
â â sound:card3 "SoundBar"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.3/0003:413C:A503.001A/input/input37
â input:input37 "Dell Dell AC511 USB SoundBar"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:14.0/usb4
â usb:usb4
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1a.0/usb1
â usb:usb1
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1
â usb:1-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1
â sound:card1 "PCH"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input13
â â input:input13 "HDA Intel PCH Front Mic"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input14
â â input:input14 "HDA Intel PCH Rear Mic"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input15
â â input:input15 "HDA Intel PCH Line"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input16
â â input:input16 "HDA Intel PCH Line Out"
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1b.0/sound/card1/input17
â input:input17 "HDA Intel PCH Front Headphone"
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1d.0/usb2
â usb:usb2
â âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1
â usb:2-1
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sr0
â block:sr0
âÂÂâÂÂ/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/scsi_generic/sg0
â scsi_generic:sg0
âÂÂâÂÂ/sys/devices/platform/eeepc-wmi/input/input6
â input:input6 "Eee PC WMI hotkeys"
âÂÂâÂÂ/sys/devices/virtual/misc/kvm
â misc:kvm
âÂÂâÂÂ/sys/devices/virtual/misc/rfkill
misc:rfkilladd rules by ...
using
loginctl
plus above pathes to create the udev rules, but I don't recommend it. Do the bus IDs remain the same?# gfx
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
# hdmi audio
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2
# mele remote
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:1915:0196.0008/input/input21
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1/0003:1915:0196.0009/input/input22
sudo loginctl attach seat-tv /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2/0003:1915:0196.000A/input/input23This adds rule files like the following. The rule sets ID_SEAT to seat-tv if ID_FOR_SEAT matches the given.
$ cat /etc/udev/rules.d/72-seat-graphics-pci-0000_01_00_0.rules`
TAG=="seat", ENVID_FOR_SEAT=="graphics-pci-0000_01_00_0", ENVID_SEAT="seat-tv"or creating the udev rules manually. I prefer VendorID/ProductID for identification. File names should start with 72 because other seat related stuff in
/lib/udev/rules.d
is 71 or 73.$ cat 72-seat0.rules
# do I really need to set up anything for seat0?
# It should just grab anything not allocated to another seat?
# Intel GFX
# if TAG contains seat and vendor and product match the hex codes than set ID_SEAT to seat0
TAG=="seat", ATTRSidVendor=="0x8086", ATTRSidProduct=="0x0412", ENVID_SEAT="seat0"
# Dell AC511 Sound
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.0/sound/card3
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.3/3-5.3:1.3/0003:413C:A503.001A/input/input37
TAG=="seat", ATTRSidVendor=="0x413c", ATTRSidProduct=="0xa503", ENVID_SEAT="seat0"
# HP Keyboard
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.0/0003:03F0:034A.0018/input/input35
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.2/3-5.2:1.1/0003:03F0:034A.0019/input/input36
SUBSYSTEM=="input", ATTRSidVendor=="0x03f0", ATTRSidProduct=="0x034a", ENVID_INPUT.tags="input_seat0"
# Logitech Mouse
#/sys/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5.1/3-5.1:1.0/0003:046D:C050.0017/input/input34
SUBSYSTEM=="input", ATTRSidVendor=="0x046d", ATTRSidProduct=="0xc050", ENVID_INPUT.tags="input_seat0"
$ cat 72-seat-tv.rules
# ATI RV710
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
# any graphics card should already have the master-of-seat TAG,
# see /lib/udev/rules.d/71-u-d-c-gpu-detection.rules
#SUBSYSTEM=="drm", KERNEL=="card[0-9]*", ATTRSidVendor=="0x1002", ATTRSidProduct=="0x954f", TAG+="master-of-seat"
TAG=="seat", ATTRSidVendor=="0x1002", ATTRSidProduct=="0x954f" , ENVID_SEAT="seat-tv"
# ATI HDMI audio
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2
#/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2/input7
TAG=="seat", ATTRSidVendor=="0x1002", ATTRSidProduct=="0xaa38", ENVID_SEAT="seat-tv"
#TAG=="seat", ENVID_FOR_SEAT=="sound-pci-0000_01_00_1", ENVID_SEAT="seat-tv"
# Mele USB remote keyboard and mouse
#1915:0196
SUBSYSTEM=="input", ATTRSidVendor=="0x1915", ATTRSidProduct=="0x0196", ENVID_INPUT.tags="input_seat-tv", ENVID_SEAT="seat-tv"
# TODO usb hub where all attached devices belong to this seat
#SUBSYSTEM=="input", DEVPATH=="/devices/pci0000:00/0000:00:1d.0/usb2/*", ENVID_INPUT.tags="input_seat-tv"
you should now (after display manager restart?) realize the following
- the inputs assigned to other seats should not work any more on seat0
- screens assigned to other seats should disappear from system settings/display
- same for the audio device
Set-Up Xorg
- create a dir like /etc/X11/xorg.conf.multiseat so it won't change your default set-up.
- fetch current xorg config with
sudo Xorg :2 -configure
create file
/etc/X11/xorg.conf.multiseat/90-seat-tv.conf
Section "Device"
# get this from Xorg -configure
Identifier "Card0"
Driver "amdgpu"
BusID "PCI:1:0:0"
MatchSeat "seat-tv"
# Identifier "Seat-TV"
# Option "ProbeAllGpus" "FALSE"
EndSection
#Section "Device"
# Identifier "Card1"
# Driver "amdgpu"
# BusID "PCI:1:0:1"
#EndSection
Section "InputClass"
Identifier "ignore_other_seats"
Option "Ignore" "yes"
EndSection
Section "InputClass"
Identifier "use_seat_devices"
MatchTag "input_seat-tv"
Option "Ignore" "no"
EndSectionI don't know about the commented entries.
- Do I need a similar file for seat0 or are the defaults ok?
- TODO: Server Layout
Test
- logout from gui and shutdown your window manager using
sudo service sddm stop
- start X on all your seats - one after the other - and see what happens.
startx -- -layout seat0 -config xorg.conf.multiseat
, see https://wiki.archlinux.org/index.php/Xorg_multiseat
Undo
- temporarily
- enable your window manager again
sudo systemctl set-default graphical.target
- enable your window manager again
- permanently
- delete your udev files
/etc/udev/rules.d/72-*
- delete your
/etc/X11/xorg.conf.multseat
folder
- delete your udev files
What now?
- What am I missing?
- How does the Server Layout work?
- Mele keyboard somehow is not attached to seat-tv?
edited Mar 18 at 15:10
community wiki
4 revs
JPT
add a comment |Â
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1016994%2fmulti-seat-with-kubuntu-17-10-artful-systemd-sddm-kde%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password