[systemd-devel] Multi seats setup How-to

arnaud gaboury arnaud.gaboury at gmail.com
Thu Sep 3 04:51:06 PDT 2015


On Thu, Sep 3, 2015 at 1:26 PM, arnaud gaboury <arnaud.gaboury at gmail.com> wrote:
> 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.

Following this old blog[0], it seems I must FIRST assign the graphic
card to seat1. So I guess first is to take care of the /etc/X11 stuff.
Once I have correctly configured it, I must be able to see two cards,
right ?


> 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.
>
[0]http://code.lexarcana.com/posts/simple-multiseat-setup-on-fedora-17.html


-- 

google.com/+arnaudgabourygabx


More information about the systemd-devel mailing list