[systemd-devel] Multi seats setup How-to

arnaud gaboury arnaud.gaboury at gmail.com
Thu Sep 3 04:26:24 PDT 2015


I plan to use the systemd mutli-seat features, but I am not sure at
all how I must proceed and in waht order. I understand the main
principle for mouse and keyboard: detect the device then
$ loginctl attach seatNumber DevicePath
As for the graphic card, I am lost.

OS: Fedora 22
gdm
1 nvidia card
1 USB3 plugable dockin station for the second monitor
Nvidia driver (I would like to avoid using Nouveau if possible).

The actual configuration:

----------------------------------------
$ loginctl seat-status seat0

seat0
        Sessions: 2 *1 c1
         Devices:
                  ├─/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
                  │ input:input1 "Power Button"
                  ├─/sys/device...XSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
                  │ input:input0 "Power Button"
                  ├─/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0
                  │ drm:card0
                  ├─/sys/device...0:00/0000:00:01.0/0000:01:00.0/drm/renderD128
                  │ drm:renderD128
                  ├─/sys/device...000:00/0000:00:01.0/0000:01:00.0/graphics/fb0
                  │ [MASTER] graphics:fb0 "nouveaufb"
                  ├─/sys/device...0000:00/0000:00:01.0/0000:01:00.1/sound/card1
                  │ sound:card1 "NVidia"
                  │ ├─/sys/device...00:00:01.0/0000:01:00.1/sound/card1/input14
                  │ │ input:input14 "HDA NVidia HDMI/DP,pcm=3"
                  │ ├─/sys/device...00:00:01.0/0000:01:00.1/sound/card1/input15
                  │ │ input:input15 "HDA NVidia HDMI/DP,pcm=7"
                  │ ├─/sys/device...00:00:01.0/0000:01:00.1/sound/card1/input16
                  │ │ input:input16 "HDA NVidia HDMI/DP,pcm=8"
                  │ └─/sys/device...00:00:01.0/0000:01:00.1/sound/card1/input17
                  │   input:input17 "HDA NVidia HDMI/DP,pcm=9"
├─/sys/devices/pci0000:00/0000:00:14.0/usb1
                  │ usb:usb1
                  │ └─/sys/devices/pci0000:00/0000:00:14.0/usb1/1-10
                  │   usb:1-10
                  │   └─/sys/devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10.4
                  │     usb:1-10.4
                  │     ├─/sys/devic....1:1.0/0003:046D:C534.0004/input/input18
                  │     │ input:input18 "Logitech USB Receiver"
                  │     ├─/sys/devic....1:1.1/0003:046D:C534.0005/input/input19
                  │     │ input:input19 "Logitech USB Receiver"
                  │     └─/sys/devic...B.0008/0003:046D:4003.0009/input/input20
                  │       input:input20 "Logitech K270"
                  ├─/sys/devices/pci0000:00/0000:00:14.0/usb2
                  │ usb:usb2
                  │ └─/sys/devices/pci0000:00/0000:00:14.0/usb2/2-6
                  │   usb:2-6
                  │   └─/sys/device...14.0/usb2/2-6/2-6.1/2-6.1:1.2/sound/card2
                  │     sound:card2 "UD3900"
                  ├─/sys/devices/pci0000:00/0000:00:1a.0/usb5
                  │ usb:usb5
                  │ └─/sys/devices/pci0000:00/0000:00:1a.0/usb5/5-1
                  │   usb:5-1
                  ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0
                  │ sound:card0 "PCH"
                  │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0/input10
                  │ │ input:input10 "HDA Intel PCH Rear Mic"
                  │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0/input11
                  │ │ input:input11 "HDA Intel PCH Line"
                  │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0/input12
                  │ │ input:input12 "HDA Intel PCH Line Out"
                  │ ├─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0/input13
                  │ │ input:input13 "HDA Intel PCH Front Headphone"
                  │ └─/sys/devices/pci0000:00/0000:00:1b.0/sound/card0/input9
                  │   input:input9 "HDA Intel PCH Front Mic"
                 ├─/sys/devices/pci0000:00/0000:00:1c.4/0000:04:00.0/usb3
                  │ usb:usb3
                  ├─/sys/devices/pci0000:00/0000:00:1c.4/0000:04:00.0/usb4
                  │ usb:usb4
                  ├─/sys/devices/pci0000:00/0000:00:1d.0/usb6
                  │ usb:usb6
                  │ └─/sys/devices/pci0000:00/0000:00:1d.0/usb6/6-1
                  │   usb:6-1
                  ├─/sys/device...1f.2/ata6/host5/target5:0:0/5:0:0:0/block/sr0
                  │ block:sr0
                  ├─/sys/device...a6/host5/target5:0:0/5:0:0:0/scsi_generic/sg2
                  │ scsi_generic:sg2
                  ├─/sys/devices/platform/eeepc-wmi/input/input8
                  │ input:input8 "Eee PC WMI hotkeys"
                  ├─/sys/devices/virtual/misc/kvm
                  │ misc:kvm
                  └─/sys/devices/virtual/misc/rfkill
                    misc:rfkill

$ lspci

00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM
Controller (rev 06)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core
Processor PCI Express x16 Controller (rev 06)
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset
Family USB xHCI (rev 05)
00:16.0 Communication controller: Intel Corporation 8 Series/C220
Series Chipset Family MEI Controller #1 (rev 04)
00:19.0 Ethernet controller: Intel Corporation Ethernet Connection
I217-V (rev 05)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset
Family USB EHCI #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset
High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
Family PCI Express Root Port #1 (rev d5)
00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
Family PCI Express Root Port #4 (rev d5)
00:1c.4 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset
Family PCI Express Root Port #5 (rev d5)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset
Family USB EHCI #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation Z87 Express LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series
Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family
SMBus Controller (rev 05)
01:00.0 VGA compatible controller: NVIDIA Corporation GK104 [GeForce
GTX 770] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GK104 HDMI Audio Controller (rev a1)
03:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network
Adapter (rev 01)
04:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
------------------------------------------------------------------------------

Now please correct me if I am wrong. Below is how I think I shal proceed

***********************
To create a new seat (seat1) I must first attach a device.
Say I want to attach the following keyboard to seat 1. After unpluging/pluging:

$ dmseg | tail -n 4
[ 2745.330956] input: Logitech USB Keyboard as
/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:046D:C31C.0010/input/input24
[ 2745.381514] hid-generic 0003:046D:C31C.0010: input,hidraw4: USB HID
v1.10 Keyboard [Logitech USB Keyboard] on usb-0000:00:14.0-4/input0
[ 2745.387992] input: Logitech USB Keyboard as
/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.1/0003:046D:C31C.0011/input/input25
[ 2745.438483] hid-generic 0003:046D:C31C.0011: input,hidraw5: USB HID
v1.10 Device [Logitech USB Keyboard] on usb-0000:00:14.0-4/input1

1- I am not sure which line I shall use. I would say this one:
/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.1/0003:046D:C31C.0011/input/input25

so the command would be
$ loginctl attach
/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.1/0003:046D:C31C.0011/input/input25
seat1

2- I create a /etc/udev/rules.d/72-seat1-keyboard.rules
TAG=="seat", ENV{ID_FOR_SEAT}=="????????", ENV{ID_SEAT}="seat1"

No idea how to setup/find the ENV{ID_FOR_SEAT} variable value for the keyboard.

3- do the same for the mouse

----------------------------------------
Now the nvidia card

1- write /etc/udev/rules.d/99-nvidia-multiseats.rules
    SUBSYSTEM=="drm", KERNEL=="card[0-9]*", ATTRS{vendor}=="0x10de",
DRIVERS=="nvidia", TAG+="master-of-seat"

    SUBSYSTEM=="pci", ATTRS{vendor}=="0x10de", DRIVER=="nvidia",
TAG+="seat", TAG+="master-of-seat"

2- create the appropriate /etc/X11/xorg.conf.d/90-nvidia.conf which
will have two Section "Device" with Identifier Seat0 and Seat1.
As for the BusID, I am not sur how to find it ($ lspci ?)

----------------------------------------------
Now attach a seat to a user.

Need to modify /etc/gdm/custom.conf ? If yes, how ?

****************************************************************************

Thank you for any hint/advice/pointer, as documentation is rather few.


-- 

google.com/+arnaudgabourygabx


More information about the systemd-devel mailing list