Packages

Differences between revisions 18 and 19
Revision 18 as of 2014-02-20 03:22:23
Size: 15023
Editor: c-76-118-178-97
Comment: xorg-server status: add links to gmane threads
Revision 19 as of 2014-02-20 12:13:17
Size: 15370
Editor: b123af5f
Comment:
Deletions are marked like this. Additions are marked like this.
Line 15: Line 15:
 * [[https://launchpad.net/bugs/1209008|bug #1209008]]: fix card detection on non-`seat0` seats '''(sent upstream - [[http://lists.x.org/archives/xorg-devel/2014-January/040262.html|review needed]] ([[http://thread.gmane.org/gmane.comp.freedesktop.xorg.devel/39678|thread]]))'''  * [[https://launchpad.net/bugs/1209008|bug #1209008]], [[https://bugs.freedesktop.org/show_bug.cgi?id=66851|upstream bug #66851]]: fix card detection on non-`seat0` seats '''(sent upstream - [[http://lists.x.org/archives/xorg-devel/2014-January/040262.html|review needed]] ([[http://thread.gmane.org/gmane.comp.freedesktop.xorg.devel/39678|thread]]))'''
Line 17: Line 17:
 * bug #???: enable Xephyr window placement using `-screen WxH+X+Y` option '''(sent upstream - [[http://lists.x.org/archives/xorg-devel/2014-February/040604.html|review needed]] ([[http://thread.gmane.org/gmane.comp.freedesktop.xorg.devel/40020|thread]]))'''  * [[https://bugs.freedesktop.org/show_bug.cgi?id=68397|upstream bug #68397]]: enable Xephyr window placement using `-screen WxH+X+Y` option '''(sent upstream - [[http://lists.x.org/archives/xorg-devel/2014-February/040604.html|review needed]] ([[http://thread.gmane.org/gmane.comp.freedesktop.xorg.devel/40020|thread]]))'''
Line 23: Line 23:
 * bug #???: Add patch to fix automatic/timed login in multiseat context
 * --(bug #???: Add patch to explicitly set variable `XDG_VTNR` for `seat0` (needed to avoid getting inactive graphical sessions for `seat0` in some multiseat setups))-- Now rely on patched `xorg-server` package from this PPA.
 * [[https://bugzilla.gnome.org/show_bug.cgi?id=704581|upstream bug #704581]]: Add patch to fix automatic/timed login in multiseat context
 * --([[https://bugzilla.gnome.org/show_bug.cgi?id=711253|upstream bug #711253]]: Add patch to explicitly set variable `XDG_VTNR` for `seat0` (needed to avoid getting inactive graphical sessions for `seat0` in some multiseat setups))-- Now rely on patched `xorg-server` package from this PPA.
Line 229: Line 229:
 2014-02-20::
  * update `gdm` status
  * update `xorg-server` status

Introduction

The MultiseatTeam maintains packages in the multiseat PPA. These packages are Ubuntu packages that have been patched to improve support for multiseat.

Status

TODO: document what patches have been applied to what packages, whether those patches have been submitted upstream, and whether they have been accepted upstream

lightdm

The lightdm package in the PPA contains some patches that make it possible to support multiseat, although at the moment you must configure the seats manually (see the instructions below). Automatic multiseat support has not yet been added (see bug #1190581).

xorg-server

The xorg-server package in the multiseat PPA includes patches and changes for the following issues:

gdm

The gdm package in the multiseat PPA includes patches and changes for the following issues:

  • upstream bug #704581: Add patch to fix automatic/timed login in multiseat context

  • upstream bug #711253: Add patch to explicitly set variable XDG_VTNR for seat0 (needed to avoid getting inactive graphical sessions for seat0 in some multiseat setups) Now rely on patched xorg-server package from this PPA.

Others

The PPA contains some packages from saucy that have been backported to raring to complete logind support. The initial list of packages came from the ubuntu-core-dev team's logind PPA. Please contact the Ubuntu Multiseat team if you are aware of any additional packages that need backporting to raring.

Instructions

1. Name Your Seats

Come up with names for your seats. You must have a primary seat named seat0. All other seat names must begin with seat (see the rules for seat naming). Note that VT switching (and thus fast user switching) is (currently) only possible on seat0.

2. Configure Seat Hardware

Assign hardware devices to your seats by setting up udev rules.

Per-Device Configuration

A device that is associated with a seat must be configured as follows:

  • It MUST be tagged with seat. This is required, even for seat0. The existing udev rules do this properly 99% of the time, but exotic hardware, proprietary drivers, or unusual circumstances may require you to write your own udev rules to tag a device with seat or to prevent a device from being tagged with seat.

  • Tag it with the seat name (e.g., seat1). This is optional for seat0 but required for other seats.

  • Set the ID_SEAT property to the seat name (e.g., seat1). This is optional for seat0 but required for other seats.

master-of-seat

One of the devices for your seat MUST be tagged with master-of-seat. This tag signals to logind that the seat hardware is ready (enough) to start a display manager on that seat. If the tag doesn't exist on any of the seat's hardware, logind won't tell the display manager about the seat, and might not set device permissions properly if a user logs into that seat (TODO: confirm).

The udev rules that come with open-source video drivers tag the video card with master-of-seat for you. You should only need to set up a rule to tag master-of-seat if you are using a proprietary video card driver.

It is recommended that you apply the master-of-seat tag to the video card, but you may tag a different device instead. Tagging the video card with master-of-seat is recommended because it is often the only device that is critical for the seat.

Example #1

Example system #1 has two seats (seat0 and seat1) and uses open-source video drivers. The file /etc/udev/rules.d/99-multiseat.rules was created and the following rules were added to it:

  • # assign USB ports
    TAG=="seat", DEVPATH=="/devices/pci0000:00/0000:00:1d.7/usb2/*", ENV{ID_SEAT}="seat1", TAG+="seat1"
    
    # assign video cards
    TAG=="seat", DEVPATH=="/devices/pci0000:00/0000:00:07.0/0000:03:00.0/*", ENV{ID_SEAT}="seat1", TAG+="seat1"

Example #2

Example system #2 has two seats (seat0 and seat1) and uses the proprietary NVIDIA driver. The file /etc/udev/rules.d/99-multiseat.rules was created and the following rules were added to it:

  • # assign USB ports
    TAG=="seat", DEVPATH=="/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.6/*", ENV{ID_SEAT}="seat1", TAG+="seat1"
    
    # assign video cards
    TAG=="seat", DEVPATH=="/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/*", ENV{ID_SEAT}="seat1", TAG+="seat1"
    
    # add master-of-seat tag to video cards
    TAG=="seat", DEVPATH=="/devices/pci0000:00/0000:00:01.0/0000:01:00.0/*", TAG+="master-of-seat"
    TAG=="seat", DEVPATH=="/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/*", TAG+="master-of-seat"

Tips and Troubleshooting

You MUST NOT have any newlines in a rule.

Use udevadm trigger after you edit your rules to make them take effect

Use udevadm info --export-db to see what udev did with your devices (to debug your rules).

3. Configure lightdm

Modify your lightdm.conf and make sure you have an entry per seat. Add xdg-seat=<seatname> to each seat and add xserver-vt=0 to each seat EXCEPT seat0.

Also, add user-authority-in-system-dir=true to the SeatDefaults section. This prevents LightDM from trying to use the same Xauthority file for all seats, which causes permission denied problems.

If you do not use the version of X from the multiseat PPA, you will need to tell LightDM to start /lib/systemd/systemd-multi-seat-x instead of X. This program is a small wrapper around X that prevents input events on non-seat0 seats from going to seat0 and disables VT switching on non-seat0 seats. It is only available in Ubuntu 13.10 (saucy) and newer.

Example:

  • [SeatDefaults]
    user-authority-in-system-dir=true
    # for saucy and newer: the following line is only needed if you're not
    # using the version of X from the multiseat PPA (but it shouldn't hurt
    # if you are)
    xserver-command=/lib/systemd/systemd-multi-seat-x
    
    [Seat:0]
    xdg-seat=seat0
    
    [Seat:1]
    xdg-seat=seat1
    xserver-vt=0

4. (if needed) Configure X.Org Server

Suppose you need to modify your xorg.conf to change some video driver settings for seat1. You have a couple of options:

  1. Create a file like /etc/X11/xorg.conf.seat1 that contains all X settings for seat1, then set xserver-config in your /etc/lightdm/lightdm.conf:

    • [Seat:1]
      xdg-seat=seat1
      xserver-vt=0
      xserver-config=/etc/X11/xorg.conf.seat1

    Note: This will not work if you use the systemd-multi-seat-x wrapper because it generates its own config file that overrides the xserver-config value.

  2. Create a file like /etc/X11/xorg.conf.d/90-seat1.conf and put the settings there. This config file will be read by all seats, so use the MatchSeat directive to target the settings to a particular seat. For example:

    • Section "Device"
          Identifier "card0"
          Driver "nvidia"
          Option "NoLogo" "True"
          MatchSeat "seat1"
      EndSection

5. Install PPA Packages

Upgrade to the packages in the multiseat PPA by running the following commands:

  • sudo apt-add-repository ppa:ubuntu-multiseat/ppa
    sudo apt-get update
    sudo apt-get upgrade

6. (raring only) install libpam-systemd

The libpam-systemd package replaces libpam-xdg-support. Ubuntu 13.10 (saucy) and newer already have libpam-systemd installed.

7. Reboot

8. Profit!

Known Issues

  • DVB device ACLs and MythTV: udev and logind want only logged-in users to have access to attached DVB devices. This is accomplished by setting up /dev ACLs when a user logs in. Unfortunately, this conflicts with MythTV, which always wants access to the TV tuner device(s). I'm not exactly sure how to fix this. Modifying /lib/udev/rules.d/70-uaccess.rules and 70-udev-acl.rules and commenting out the dvb lines seems to work, but is fragile -- those files will be replaced the next time systemd-services and udev are upgraded. udev apparently doesn't provide a way to remove a tag once one has been set, so putting a new file in /etc/udev/rules.d won't work. Anyone have any ideas?

  • bug #976124: On some systems, only one user can be logged in by typing a password at a time. All other users must be automatically logged in via LightDM's autologin-user setting.

  • Due to a technical limitation in Linux's virtual terminal subsystem and how it interacts with X, only seat0 can switch users. To switch users on another seat you must first log out and then log back in as the other user. Perhaps Mir, Wayland, and/or kmscon will address this.

  • LightDM is unaware that user switching is unsupported on non-seat0 seats. It will allow you to try to switch, but fails to switch.

  • bug #1190581: Automatic multiseat support has not yet been implemented.

ChangeLog

2013-07-11
  • initial upload of packages for raring
  • initial draft of instructions
2013-07-12
  • update instructions
  • update known issues
2013-07-14
  • interpret LightDM xserver-vt=0 setting to mean -sharevts

  • add documentation for the new LightDM settings
  • improve LightDM logging
  • update instructions
  • update known issues
  • backport newer upstream (saucy) packages to get better logind support

  • add backported acpi-support package to drop consolekit dependency

2013-07-15
  • update known issues
2013-07-17
  • update known issues
  • update dbus

2013-07-18
  • backport newer indicator-session

  • remove known issues that I believe are fixed by the newer indicator-session

2013-07-20
  • upload lightdm for saucy

2013-08-04
  • update lightdm to the latest upstream version

  • lightdm: change xserver-seat setting name to xdg-seat

  • other miscellaneous internal lightdm cleanups in preparation for submission upstream

2013-08-07
2013-08-08
  • add unity-greeter with fix for bug #1201122 integrated

  • add xorg-server with fix for bug #1209008 integrated

  • update known issues
2013-08-10
  • update patch for unity-greeter

2013-08-14
  • update xorg-server and unity-greeter for saucy

  • update lightdm multiseat patch from multiseat bzr branch

2013-10-19
  • raring dbus: cherry-pick changes from saucy 1.6.12-0ubuntu6 and 1.6.12-0ubuntu7

  • raring network-manager: cherry-pick bluetooth bug fix from saucy 0.9.8.0-0ubuntu22 (also raring 0.9.8.0-0ubuntu6.1)

  • raring policykit-1: update to latest saucy version

  • saucy unity-greeter: remove; new upstream version has been released with multiseat change integrated

  • xorg-server: apply fix for bug #1209008 to latest version

  • raring gnome-screensaver, gnome-settings-daemon: update to newer saucy versions to get logind fixes

  • lightdm: apply multiseat patches to latest version

2013-10-23
2013-10-24
2013-10-25
  • backport newer saucy gdm to raring to get logind support; add multiseat automatic login patch that was just added to the saucy version of gdm

2013-11-01
2013-11-07
  • lightdm: update to newer upstream version

2013-12-27
  • raring systemd: cherry-pick changes made for 198-0ubuntu12 (to get org.freedesktop.login1 dbus service)

2014-02-14
2014-02-16
  • update lightdm configuration instructions

2014-02-17
  • saucy xorg-server: update to newer upstream version

  • update xorg-server status

  • added MatchSeat example for xorg-server configuration

2014-02-18
  • saucy gdm: revert patch introduced at 2013-11-01 (see above)

  • add more details to udev instructions
2014-02-19
  • update X.Org server configuration instructions
  • update xorg-server status

2014-02-20
  • update gdm status

  • update xorg-server status


CategoryMultiseatTeam

MultiseatTeam/Packages (last edited 2015-03-17 15:49:33 by bb42d0d7)