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

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP








up vote
1
down vote

favorite
1












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.










share|improve this question



























    up vote
    1
    down vote

    favorite
    1












    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.










    share|improve this question

























      up vote
      1
      down vote

      favorite
      1









      up vote
      1
      down vote

      favorite
      1






      1





      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.










      share|improve this question















      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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 18 at 15:15

























      asked Mar 18 at 13:33









      JPT

      1309




      1309




















          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 choose seat-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:rfkill



          • add 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/input23



            • This 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"
            EndSection


          • I 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


          • permanently

            • delete your udev files /etc/udev/rules.d/72-*

            • delete your /etc/X11/xorg.conf.multseat folder


          What now?



          • What am I missing?

          • How does the Server Layout work?

          • Mele keyboard somehow is not attached to seat-tv?





          share|improve this answer






















            Your Answer







            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "89"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: false,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













             

            draft saved


            draft discarded


















            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






























            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 choose seat-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:rfkill



            • add 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/input23



              • This 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"
              EndSection


            • I 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


            • permanently

              • delete your udev files /etc/udev/rules.d/72-*

              • delete your /etc/X11/xorg.conf.multseat folder


            What now?



            • What am I missing?

            • How does the Server Layout work?

            • Mele keyboard somehow is not attached to seat-tv?





            share|improve this answer


























              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 choose seat-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:rfkill



              • add 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/input23



                • This 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"
                EndSection


              • I 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


              • permanently

                • delete your udev files /etc/udev/rules.d/72-*

                • delete your /etc/X11/xorg.conf.multseat folder


              What now?



              • What am I missing?

              • How does the Server Layout work?

              • Mele keyboard somehow is not attached to seat-tv?





              share|improve this answer
























                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 choose seat-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:rfkill



                • add 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/input23



                  • This 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"
                  EndSection


                • I 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


                • permanently

                  • delete your udev files /etc/udev/rules.d/72-*

                  • delete your /etc/X11/xorg.conf.multseat folder


                What now?



                • What am I missing?

                • How does the Server Layout work?

                • Mele keyboard somehow is not attached to seat-tv?





                share|improve this answer














                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 choose seat-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:rfkill



                • add 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/input23



                  • This 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"
                  EndSection


                • I 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


                • permanently

                  • delete your udev files /etc/udev/rules.d/72-*

                  • delete your /etc/X11/xorg.conf.multseat folder


                What now?



                • What am I missing?

                • How does the Server Layout work?

                • Mele keyboard somehow is not attached to seat-tv?






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Mar 18 at 15:10


























                community wiki





                4 revs
                JPT




























                     

                    draft saved


                    draft discarded















































                     


                    draft saved


                    draft discarded














                    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













































































                    Popular posts from this blog

                    GRUB: Fatal! inconsistent data read from (0x84) 0+xxxxxx

                    `kcmshell` modules relation with `/usr/share/applications`

                    How to enroll fingerprints to Ubuntu 17.10 with VFS491