This is an old revision of the document!


GNOME 3, Surface Studio Display Issues

TL;DR: This is unsolved. I need GNOME to either ignore different “monitors” and treat all connected displays as a single display, or I need it to honor xrandr –setmonitor settings. It is possible that by hand hackery of monitors.xml would accomplish this, but I don't know the schema well enough to say if it would work.

Description of Problem

I've installed Arch Linux on a 2017-ish Surface Studio with an NVIDIA display. I would like to use GNOME as that is my DE of choice. As the display of the studio is very large, it presents itself as two DisplayPort panels, which research suggests is called “DisplayPort MSP.” It looks like this:

surface_gnome_split.jpg

Things I've Tried

TwinView and Mosaic

I tried using NVIDIA's built in TwinView and Mosaic configs with basic configs, but GNOME seems to read beyond that even the nvidiaXineramaInfo set to false. I tried disabling RandR completely as defined by NVIDIA, but GNOME doesn't even launch without that.

Here is the relevant section of my current xorg.conf:

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "MetaModes" "2250x3000+0+0, 2250x3000+2250+0"
    Option         "MetaModeOrientation" "RightOf"
    Option         "nvidiaXineramaInfo" "FALSE"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Use of VIRTUAL1

Searching around, I found someone on Twitter with the same problem. It linked an Arch Linux forum post where VIRTUAL1 was set up as a 4500×3000 display with DP-0 and DP-1 overlayed on top of it. Unfortunately, the proprietary NVIDIA drivers1) does not supply a VIRTUAL1 display. I tried applying it to DP-3, which is unused but that did not work.

The Closest I've Got: xrandr 1.5 settings

On a Reddit thread, it suggests using this command:

xrandr --setmonitor Surface 4500/596x3000/397+0+0 DP-0,DP-1

It is apparently part of RandR 1.5, and is precisely for this. The binary drivers appear to support this just fine, but gnome-settings-daemon impresses its own configuration on the X server at launch. I've tried running the command from a term, as an autostart script, and right out of xinit without gdm, and the results are the same. I've also tried adding the lines to gnome-session-properties, and that didn't change anything.

It does work with XFCE, though. I can work with that, but I've become kind of attached to GNOME for my workflow.

Best I've got so far.

If I can get gsd to not care about monitors, or change the schema to support the –setmonitor command, or set something in my xorg.conf, I'd be good to go. That's as far as I've got.

Running Wayland

I see the same thing, but here I don't have xrandr on my side to help. Wayland is not stable on NVIDIA binary, so I quickly turned this back off.

Extra Stuff

An Xorg.0.log

[    27.854] (--) Log file renamed from "/var/log/Xorg.pid-611.log" to "/var/log/Xorg.0.log"
[    27.855] (WW) Failed to open protocol names file lib/xorg/protocol.txt
[    27.856] 
X.Org X Server 1.20.5
X Protocol Version 11, Revision 0
[    27.856] Build Operating System: Linux Arch Linux
[    27.856] Current Operating System: Linux abomination 5.1.9-arch1-1-ARCH #1 SMP PREEMPT Tue Jun 11 16:18:09 UTC 2019 x86_64
[    27.856] Kernel command line: BOOT_IMAGE=/vmlinuz-linux root=/dev/mapper/aG0-abomination.root rw net.ifnames=0 audit=0 nomodeset quiet initrd=/intel-ucode.img,/initramfs-linux.img
[    27.856] Build Date: 30 May 2019  06:44:40PM
[    27.856]  
[    27.856] Current version of pixman: 0.38.4
[    27.856]     Before reporting problems, check [url]http://wiki.x.org[/url]
    to make sure that you have the latest version.
[    27.856] Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    27.856] (==) Log file: "/var/log/Xorg.0.log", Time: Thu Jun 13 00:41:43 2019
[    27.922] (==) Using config file: "/etc/X11/xorg.conf"
[    27.922] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[    28.011] (==) ServerLayout "Layout0"
[    28.012] (**) |-->Screen "Screen0" (0)
[    28.012] (**) |   |-->Monitor "Monitor0"
[    28.013] (**) |   |-->Device "Device0"
[    28.013] (**) |-->Input Device "Keyboard0"
[    28.013] (**) |-->Input Device "Mouse0"
[    28.013] (**) Option "Xinerama" "0"
[    28.013] (==) Automatically adding devices
[    28.014] (==) Automatically enabling devices
[    28.014] (==) Automatically adding GPU devices
[    28.014] (==) Automatically binding GPU devices
[    28.014] (==) Max clients allowed: 256, resource mask: 0x1fffff
[    28.046] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/misc".
[    28.046]     Entry deleted from font path.
[    28.047]     (Run 'mkfontdir' on "/usr/share/fonts/misc").
[    28.098] (WW) The directory "/usr/share/fonts/OTF" does not exist.
[    28.098]     Entry deleted from font path.
[    28.098] (WW) The directory "/usr/share/fonts/Type1" does not exist.
[    28.098]     Entry deleted from font path.
[    28.111] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/100dpi".
[    28.111]     Entry deleted from font path.
[    28.111]     (Run 'mkfontdir' on "/usr/share/fonts/100dpi").
[    28.112] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/75dpi".
[    28.112]     Entry deleted from font path.
[    28.112]     (Run 'mkfontdir' on "/usr/share/fonts/75dpi").
[    28.112] (==) FontPath set to:
    /usr/share/fonts/TTF
[    28.112] (==) ModulePath set to "/usr/lib/xorg/modules"
[    28.112] (WW) Hotplugging is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.
[    28.112] (WW) Disabling Keyboard0
[    28.112] (WW) Disabling Mouse0
[    28.112] (II) Module ABI versions:
[    28.112]     X.Org ANSI C Emulation: 0.4
[    28.112]     X.Org Video Driver: 24.0
[    28.112]     X.Org XInput driver : 24.1
[    28.112]     X.Org Server Extension : 10.0
[    28.113] (++) using VT number 1

[    28.118] (II) systemd-logind: took control of session /org/freedesktop/login1/session/c1
[    28.119] (II) xfree86: Adding drm device (/dev/dri/card0)
[    28.120] (II) systemd-logind: got fd for /dev/dri/card0 226:0 fd 11 paused 0
[    28.123] (**) OutputClass "nvidia" ModulePath extended to "/usr/lib/nvidia/xorg,/usr/lib/xorg/modules,/usr/lib/xorg/modules"
[    28.123] (**) OutputClass "nvidia" setting /dev/dri/card0 as PrimaryGPU
[    28.125] (--) PCI:*(1@0:0:0) 10de:13d9:1414:0020 rev 161, Mem @ 0xb2000000/16777216, 0xa0000000/268435456, 0xb0000000/33554432, I/O @ 0x00003000/128, BIOS @ 0x????????/524288
[    28.125] (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
[    28.125] (II) LoadModule: "glx"
[    28.155] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    28.268] (II) Module glx: vendor="X.Org Foundation"
[    28.268]     compiled for 1.20.5, module version = 1.0.0
[    28.268]     ABI class: X.Org Server Extension, version 10.0
[    28.268] (II) LoadModule: "nvidia"
[    28.268] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
[    28.379] (II) Module nvidia: vendor="NVIDIA Corporation"
[    28.379]     compiled for 1.6.99.901, module version = 1.0.0
[    28.379]     Module class: X.Org Video Driver
[    28.391] (II) NVIDIA dlloader X Driver  430.26  Tue Jun  4 17:52:10 CDT 2019
[    28.391] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
[    28.392] (II) systemd-logind: releasing fd for 226:0
[    28.400] (II) Loading sub module "fb"
[    28.400] (II) LoadModule: "fb"
[    28.400] (II) Loading /usr/lib/xorg/modules/libfb.so
[    28.420] (II) Module fb: vendor="X.Org Foundation"
[    28.421]     compiled for 1.20.5, module version = 1.0.0
[    28.421]     ABI class: X.Org ANSI C Emulation, version 0.4
[    28.421] (II) Loading sub module "wfb"
[    28.421] (II) LoadModule: "wfb"
[    28.421] (II) Loading /usr/lib/xorg/modules/libwfb.so
[    28.427] (II) Module wfb: vendor="X.Org Foundation"
[    28.427]     compiled for 1.20.5, module version = 1.0.0
[    28.427]     ABI class: X.Org ANSI C Emulation, version 0.4
[    28.428] (II) Loading sub module "ramdac"
[    28.428] (II) LoadModule: "ramdac"
[    28.428] (II) Module "ramdac" already built-in
[    28.447] (**) NVIDIA(0): Depth 24, (--) framebuffer bpp 32
[    28.448] (==) NVIDIA(0): RGB weight 888
[    28.448] (==) NVIDIA(0): Default visual is TrueColor
[    28.448] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
[    28.448] (II) Applying OutputClass "nvidia" options to /dev/dri/card0
[    28.448] (**) NVIDIA(0): Option "MetaModeOrientation" "RightOf"
[    28.448] (**) NVIDIA(0): Option "nvidiaXineramaInfo" "FALSE"
[    28.448] (**) NVIDIA(0): Option "AllowEmptyInitialConfiguration"
[    28.448] (**) NVIDIA(0): Option "MetaModes" "2250x3000+0+0, 2250x3000+2250+0"
[    28.449] (**) NVIDIA(0): Enabling 2D acceleration
[    28.449] (II) Loading sub module "glxserver_nvidia"
[    28.449] (II) LoadModule: "glxserver_nvidia"
[    28.449] (II) Loading /usr/lib/nvidia/xorg/libglxserver_nvidia.so
[    28.956] (II) Module glxserver_nvidia: vendor="NVIDIA Corporation"
[    28.956]     compiled for 1.6.99.901, module version = 1.0.0
[    28.956]     Module class: X.Org Server Extension
[    28.972] (II) NVIDIA GLX Module  430.26  Tue Jun  4 17:50:01 CDT 2019
[    29.703] (--) NVIDIA(0): Valid display device(s) on GPU-0 at PCI:1:0:0
[    29.703] (--) NVIDIA(0):     DFP-0 (boot)
[    29.703] (--) NVIDIA(0):     DFP-1 (boot)
[    29.703] (--) NVIDIA(0):     DFP-2
[    29.703] (--) NVIDIA(0):     DFP-3
[    29.704] (II) NVIDIA(0): NVIDIA GPU GeForce GTX 965M (GM204-A) at PCI:1:0:0 (GPU-0)
[    29.704] (--) NVIDIA(0): Memory: 2097152 kBytes
[    29.704] (--) NVIDIA(0): VideoBIOS: 84.04.a0.00.08
[    29.704] (II) NVIDIA(0): Detected PCI Express Link width: 16X
[    29.704] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-0): connected
[    29.704] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-0): Internal DisplayPort
[    29.704] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-0): 960.0 MHz maximum pixel clock
[    29.704] (--) NVIDIA(GPU-0): 
[    29.705] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-1): connected
[    29.705] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-1): Internal DisplayPort
[    29.705] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-1): 960.0 MHz maximum pixel clock
[    29.705] (--) NVIDIA(GPU-0): 
[    29.705] (--) NVIDIA(GPU-0): DFP-2: disconnected
[    29.705] (--) NVIDIA(GPU-0): DFP-2: Internal DisplayPort
[    29.705] (--) NVIDIA(GPU-0): DFP-2: 960.0 MHz maximum pixel clock
[    29.705] (--) NVIDIA(GPU-0): 
[    29.705] (--) NVIDIA(GPU-0): DFP-3: disconnected
[    29.705] (--) NVIDIA(GPU-0): DFP-3: Internal TMDS
[    29.705] (--) NVIDIA(GPU-0): DFP-3: 165.0 MHz maximum pixel clock
[    29.705] (--) NVIDIA(GPU-0): 
[    29.707] (II) NVIDIA(0): Validated MetaModes:
[    29.707] (II) NVIDIA(0):     "2250x3000+0+0,2250x3000+2250+0"
[    29.707] (II) NVIDIA(0): Virtual screen size determined to be 4500 x 3000
[    29.709] (--) NVIDIA(0): DPI set to (184, 181); computed from "UseEdidDpi" X config
[    29.709] (--) NVIDIA(0):     option
[    29.710] (II) NVIDIA: Using 6144.00 MB of virtual memory for indirect memory
[    29.710] (II) NVIDIA:     access.
[    29.711] (WW) NVIDIA(0): ACPI: AC power state information is not available under
[    29.711] (WW) NVIDIA(0):     /sys/class/power_supply/ , nor under
[    29.711] (WW) NVIDIA(0):     /proc/acpi/ac_adapter/
[    29.713] (II) NVIDIA(0): ACPI: failed to connect to the ACPI event daemon; the daemon
[    29.713] (II) NVIDIA(0):     may not be running or the "AcpidSocketPath" X
[    29.713] (II) NVIDIA(0):     configuration option may not be set correctly.  When the
[    29.713] (II) NVIDIA(0):     ACPI event daemon is available, the NVIDIA X driver will
[    29.713] (II) NVIDIA(0):     try to use it to receive ACPI event notifications.  For
[    29.713] (II) NVIDIA(0):     details, please see the "ConnectToAcpid" and
[    29.713] (II) NVIDIA(0):     "AcpidSocketPath" X configuration options in Appendix B: X
[    29.713] (II) NVIDIA(0):     Config Options in the README.
[    31.792] (II) NVIDIA(0): Setting mode "2250x3000+0+0,2250x3000+2250+0"
[    33.244] (==) NVIDIA(0): Disabling shared memory pixmaps
[    33.244] (==) NVIDIA(0): Backing store enabled
[    33.244] (==) NVIDIA(0): Silken mouse disabled
[    33.244] (**) NVIDIA(0): DPMS enabled
[    33.244] (WW) NVIDIA(0): Option "PrimaryGPU" is not used
[    33.244] (WW) NVIDIA(0): Option "VirtualHeads" is not used
[    33.244] (II) Loading sub module "dri2"
[    33.244] (II) LoadModule: "dri2"
[    33.244] (II) Module "dri2" already built-in
[    33.244] (II) NVIDIA(0): [DRI2] Setup complete
[    33.244] (II) NVIDIA(0): [DRI2]   VDPAU driver: nvidia
[    33.259] (II) Initializing extension Generic Event Extension
[    33.259] (II) Initializing extension SHAPE
[    33.259] (II) Initializing extension MIT-SHM
[    33.259] (II) Initializing extension XInputExtension
[    33.259] (II) Initializing extension XTEST
[    33.259] (II) Initializing extension BIG-REQUESTS
[    33.260] (II) Initializing extension SYNC
[    33.260] (II) Initializing extension XKEYBOARD
[    33.260] (II) Initializing extension XC-MISC
[    33.260] (II) Initializing extension SECURITY
[    33.260] (II) Initializing extension XFIXES
[    33.260] (II) Initializing extension RENDER
[    33.260] (II) Initializing extension RANDR
[    33.260] (II) Initializing extension COMPOSITE
[    33.260] (II) Initializing extension DAMAGE
[    33.260] (II) Initializing extension MIT-SCREEN-SAVER
[    33.260] (II) Initializing extension DOUBLE-BUFFER
[    33.260] (II) Initializing extension RECORD
[    33.260] (II) Initializing extension DPMS
[    33.260] (II) Initializing extension Present
[    33.260] (II) Initializing extension DRI3
[    33.260] (II) Initializing extension X-Resource
[    33.260] (II) Initializing extension XVideo
[    33.260] (II) Initializing extension XVideo-MotionCompensation
[    33.260] (II) Initializing extension GLX
[    33.260] (II) Initializing extension GLX
[    33.260] (II) Indirect GLX disabled.
[    33.260] (II) GLX: Another vendor is already registered for screen 0
[    33.260] (II) Initializing extension XFree86-VidModeExtension
[    33.260] (II) Initializing extension XFree86-DGA
[    33.260] (II) Initializing extension XFree86-DRI
[    33.260] (II) Initializing extension DRI2
[    33.260] (II) Initializing extension NV-GLX
[    33.260] (II) Initializing extension NV-CONTROL
[    33.260] (II) Initializing extension XINERAMA
[    33.799] (II) config/udev: Adding input device Video Bus (/dev/input/event0)
[    33.799] (**) Video Bus: Applying InputClass "libinput keyboard catchall"
[    33.799] (II) LoadModule: "libinput"
[    33.799] (II) Loading /usr/lib/xorg/modules/input/libinput_drv.so
[    33.841] (II) Module libinput: vendor="X.Org Foundation"
[    33.841]     compiled for 1.20.3, module version = 0.28.2
[    33.841]     Module class: X.Org XInput Driver
[    33.841]     ABI class: X.Org XInput driver, version 24.1
[    33.841] (II) Using input driver 'libinput' for 'Video Bus'
[    33.843] (II) systemd-logind: got fd for /dev/input/event0 13:64 fd 32 paused 0
[    33.843] (**) Video Bus: always reports core events
[    33.843] (**) Option "Device" "/dev/input/event0"
[    33.843] (**) Option "_source" "server/udev"
[    33.877] (II) event0  - Video Bus: is tagged by udev as: Keyboard
[    33.877] (II) event0  - Video Bus: device is a keyboard
[    33.877] (II) event0  - Video Bus: device removed
[    33.877] (**) Option "config_info" "udev:/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/LNXVIDEO:00/input/input0/event0"
[    33.877] (II) XINPUT: Adding extended input device "Video Bus" (type: KEYBOARD, id 6)
[    33.880] (II) event0  - Video Bus: is tagged by udev as: Keyboard
[    33.880] (II) event0  - Video Bus: device is a keyboard
[    33.881] (II) config/udev: Adding input device Surface Pro 3/4 Buttons (/dev/input/event6)
[    33.881] (**) Surface Pro 3/4 Buttons: Applying InputClass "libinput keyboard catchall"
[    33.881] (II) Using input driver 'libinput' for 'Surface Pro 3/4 Buttons'
[    33.883] (II) systemd-logind: got fd for /dev/input/event6 13:70 fd 35 paused 0
[    33.883] (**) Surface Pro 3/4 Buttons: always reports core events
[    33.883] (**) Option "Device" "/dev/input/event6"
[    33.883] (**) Option "_source" "server/udev"
[    33.886] (II) event6  - Surface Pro 3/4 Buttons: is tagged by udev as: Keyboard
[    33.886] (II) event6  - Surface Pro 3/4 Buttons: device is a keyboard
[    33.886] (II) event6  - Surface Pro 3/4 Buttons: device removed
[    33.886] (**) Option "config_info" "udev:/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1a/PNP0C09:00/MSHW0040:00/input/input16/event6"
[    33.886] (II) XINPUT: Adding extended input device "Surface Pro 3/4 Buttons" (type: KEYBOARD, id 7)
[    33.889] (II) event6  - Surface Pro 3/4 Buttons: is tagged by udev as: Keyboard
[    33.889] (II) event6  - Surface Pro 3/4 Buttons: device is a keyboard
[    33.891] (II) config/udev: Adding input device HDA NVidia HDMI/DP,pcm=3 (/dev/input/event7)
[    33.891] (II) No input driver specified, ignoring this device.
[    33.891] (II) This device may have been added with another device file.
[    33.892] (II) config/udev: Adding input device Dell Dell USB Keyboard Hub (/dev/input/event1)
[    33.892] (**) Dell Dell USB Keyboard Hub: Applying InputClass "libinput keyboard catchall"
[    33.892] (II) Using input driver 'libinput' for 'Dell Dell USB Keyboard Hub'
[    33.894] (II) systemd-logind: got fd for /dev/input/event1 13:65 fd 36 paused 0
[    33.894] (**) Dell Dell USB Keyboard Hub: always reports core events
[    33.894] (**) Option "Device" "/dev/input/event1"
[    33.894] (**) Option "_source" "server/udev"
[    33.898] (II) event1  - Dell Dell USB Keyboard Hub: is tagged by udev as: Keyboard
[    33.898] (II) event1  - Dell Dell USB Keyboard Hub: device is a keyboard
[    33.898] (II) event1  - Dell Dell USB Keyboard Hub: device removed
[    33.898] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.1/1-4.1:1.0/0003:413C:2002.0001/input/input1/event1"
[    33.898] (II) XINPUT: Adding extended input device "Dell Dell USB Keyboard Hub" (type: KEYBOARD, id 8)
[    33.902] (II) event1  - Dell Dell USB Keyboard Hub: is tagged by udev as: Keyboard
[    33.902] (II) event1  - Dell Dell USB Keyboard Hub: device is a keyboard
[    33.904] (II) config/udev: Adding input device Dell Dell USB Keyboard Hub Consumer Control (/dev/input/event2)
[    33.904] (**) Dell Dell USB Keyboard Hub Consumer Control: Applying InputClass "libinput keyboard catchall"
[    33.904] (II) Using input driver 'libinput' for 'Dell Dell USB Keyboard Hub Consumer Control'
[    33.906] (II) systemd-logind: got fd for /dev/input/event2 13:66 fd 37 paused 0
[    33.906] (**) Dell Dell USB Keyboard Hub Consumer Control: always reports core events
[    33.906] (**) Option "Device" "/dev/input/event2"
[    33.906] (**) Option "_source" "server/udev"
[    33.909] (II) event2  - Dell Dell USB Keyboard Hub Consumer Control: is tagged by udev as: Keyboard
[    33.909] (II) event2  - Dell Dell USB Keyboard Hub Consumer Control: device is a keyboard
[    33.910] (II) event2  - Dell Dell USB Keyboard Hub Consumer Control: device removed
[    33.910] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.1/1-4.1:1.1/0003:413C:2002.0002/input/input2/event2"
[    33.910] (II) XINPUT: Adding extended input device "Dell Dell USB Keyboard Hub Consumer Control" (type: KEYBOARD, id 9)
[    33.912] (II) event2  - Dell Dell USB Keyboard Hub Consumer Control: is tagged by udev as: Keyboard
[    33.912] (II) event2  - Dell Dell USB Keyboard Hub Consumer Control: device is a keyboard
[    33.914] (II) config/udev: Adding input device Dell Dell USB Keyboard Hub System Control (/dev/input/event3)
[    33.914] (**) Dell Dell USB Keyboard Hub System Control: Applying InputClass "libinput keyboard catchall"
[    33.914] (II) Using input driver 'libinput' for 'Dell Dell USB Keyboard Hub System Control'
[    33.915] (II) systemd-logind: got fd for /dev/input/event3 13:67 fd 38 paused 0
[    33.915] (**) Dell Dell USB Keyboard Hub System Control: always reports core events
[    33.915] (**) Option "Device" "/dev/input/event3"
[    33.915] (**) Option "_source" "server/udev"
[    33.917] (II) event3  - Dell Dell USB Keyboard Hub System Control: is tagged by udev as: Keyboard
[    33.917] (II) event3  - Dell Dell USB Keyboard Hub System Control: device is a keyboard
[    33.917] (II) event3  - Dell Dell USB Keyboard Hub System Control: device removed
[    33.917] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.1/1-4.1:1.1/0003:413C:2002.0002/input/input3/event3"
[    33.917] (II) XINPUT: Adding extended input device "Dell Dell USB Keyboard Hub System Control" (type: KEYBOARD, id 10)
[    33.919] (II) event3  - Dell Dell USB Keyboard Hub System Control: is tagged by udev as: Keyboard
[    33.919] (II) event3  - Dell Dell USB Keyboard Hub System Control: device is a keyboard
[    33.920] (II) config/udev: Adding input device HID 04b3:3108 (/dev/input/event4)
[    33.920] (**) HID 04b3:3108: Applying InputClass "libinput pointer catchall"
[    33.920] (II) Using input driver 'libinput' for 'HID 04b3:3108'
[    33.976] (II) systemd-logind: got fd for /dev/input/event4 13:68 fd 39 paused 0
[    33.976] (**) HID 04b3:3108: always reports core events
[    33.976] (**) Option "Device" "/dev/input/event4"
[    33.976] (**) Option "_source" "server/udev"
[    33.980] (II) event4  - HID 04b3:3108: is tagged by udev as: Mouse
[    33.980] (II) event4  - HID 04b3:3108: device is a pointer
[    33.980] (II) event4  - HID 04b3:3108: device removed
[    33.980] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.3/1-4.3:1.0/0003:04B3:3108.0003/input/input5/event4"
[    33.980] (II) XINPUT: Adding extended input device "HID 04b3:3108" (type: MOUSE, id 11)
[    33.980] (**) Option "AccelerationScheme" "none"
[    33.980] (**) HID 04b3:3108: (accel) selected scheme none/0
[    33.980] (**) HID 04b3:3108: (accel) acceleration factor: 2.000
[    33.980] (**) HID 04b3:3108: (accel) acceleration threshold: 4
[    33.984] (II) event4  - HID 04b3:3108: is tagged by udev as: Mouse
[    33.984] (II) event4  - HID 04b3:3108: device is a pointer
[    33.985] (II) config/udev: Adding input device HID 04b3:3108 (/dev/input/mouse0)
[    33.985] (II) No input driver specified, ignoring this device.
[    33.985] (II) This device may have been added with another device file.
[    33.987] (II) config/udev: Adding input device Microsoft LifeCam Front: Micros (/dev/input/event10)
[    33.987] (**) Microsoft LifeCam Front: Micros: Applying InputClass "libinput keyboard catchall"
[    33.987] (II) Using input driver 'libinput' for 'Microsoft LifeCam Front: Micros'
[    33.992] (II) systemd-logind: got fd for /dev/input/event10 13:74 fd 40 paused 0
[    33.992] (**) Microsoft LifeCam Front: Micros: always reports core events
[    33.992] (**) Option "Device" "/dev/input/event10"
[    33.992] (**) Option "_source" "server/udev"
[    33.993] (II) event10 - Microsoft LifeCam Front: Micros: is tagged by udev as: Keyboard
[    33.993] (II) event10 - Microsoft LifeCam Front: Micros: device is a keyboard
[    33.993] (II) event10 - Microsoft LifeCam Front: Micros: device removed
[    33.993] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/input/input20/event10"
[    33.993] (II) XINPUT: Adding extended input device "Microsoft LifeCam Front: Micros" (type: KEYBOARD, id 12)
[    33.994] (II) event10 - Microsoft LifeCam Front: Micros: is tagged by udev as: Keyboard
[    33.994] (II) event10 - Microsoft LifeCam Front: Micros: device is a keyboard
[    33.995] (II) config/udev: Adding input device Microsoft IR Camera Front: Micr (/dev/input/event11)
[    33.995] (**) Microsoft IR Camera Front: Micr: Applying InputClass "libinput keyboard catchall"
[    33.995] (II) Using input driver 'libinput' for 'Microsoft IR Camera Front: Micr'
[    33.998] (II) systemd-logind: got fd for /dev/input/event11 13:75 fd 41 paused 0
[    33.998] (**) Microsoft IR Camera Front: Micr: always reports core events
[    33.998] (**) Option "Device" "/dev/input/event11"
[    33.998] (**) Option "_source" "server/udev"
[    33.999] (II) event11 - Microsoft IR Camera Front: Micr: is tagged by udev as: Keyboard
[    33.999] (II) event11 - Microsoft IR Camera Front: Micr: device is a keyboard
[    33.999] (II) event11 - Microsoft IR Camera Front: Micr: device removed
[    33.999] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/input/input21/event11"
[    33.999] (II) XINPUT: Adding extended input device "Microsoft IR Camera Front: Micr" (type: KEYBOARD, id 13)
[    34.000] (II) event11 - Microsoft IR Camera Front: Micr: is tagged by udev as: Keyboard
[    34.000] (II) event11 - Microsoft IR Camera Front: Micr: device is a keyboard
[    34.001] (II) config/udev: Adding input device HDA Intel PCH Mic (/dev/input/event8)
[    34.001] (II) No input driver specified, ignoring this device.
[    34.001] (II) This device may have been added with another device file.
[    34.001] (II) config/udev: Adding input device HDA Intel PCH Headphone (/dev/input/event9)
[    34.001] (II) No input driver specified, ignoring this device.
[    34.001] (II) This device may have been added with another device file.
[    34.001] (II) config/udev: Adding input device PC Speaker (/dev/input/event5)
[    34.001] (II) No input driver specified, ignoring this device.
[    34.001] (II) This device may have been added with another device file.
[    34.005] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-0): connected
[    34.005] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-0): Internal DisplayPort
[    34.005] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-0): 960.0 MHz maximum pixel clock
[    34.005] (--) NVIDIA(GPU-0): 
[    34.005] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-1): connected
[    34.005] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-1): Internal DisplayPort
[    34.005] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-1): 960.0 MHz maximum pixel clock
[    34.005] (--) NVIDIA(GPU-0): 
[    38.495] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-0): connected
[    38.495] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-0): Internal DisplayPort
[    38.495] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-0): 960.0 MHz maximum pixel clock
[    38.495] (--) NVIDIA(GPU-0): 
[    38.496] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-1): connected
[    38.496] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-1): Internal DisplayPort
[    38.496] (--) NVIDIA(GPU-0): Seiko/Epson (DFP-1): 960.0 MHz maximum pixel clock
[    38.496] (--) NVIDIA(GPU-0): 
[    38.496] (--) NVIDIA(GPU-0): DFP-2: disconnected
[    38.496] (--) NVIDIA(GPU-0): DFP-2: Internal DisplayPort
[    38.496] (--) NVIDIA(GPU-0): DFP-2: 960.0 MHz maximum pixel clock
[    38.496] (--) NVIDIA(GPU-0): 
[    38.496] (--) NVIDIA(GPU-0): DFP-3: disconnected
[    38.496] (--) NVIDIA(GPU-0): DFP-3: Internal TMDS
[    38.496] (--) NVIDIA(GPU-0): DFP-3: 165.0 MHz maximum pixel clock
[    38.496] (--) NVIDIA(GPU-0): 
[   164.971] (II) config/udev: Adding input device Surface Touch Device (/dev/input/mouse1)
[   164.971] (II) No input driver specified, ignoring this device.
[   164.971] (II) This device may have been added with another device file.
[   164.972] (II) config/udev: Adding input device Surface Touch Device (/dev/input/mouse2)
[   164.972] (II) No input driver specified, ignoring this device.
[   164.972] (II) This device may have been added with another device file.
[   165.204] (II) config/udev: Adding input device Surface Touch Device (/dev/input/event13)
[   165.204] (**) Surface Touch Device: Applying InputClass "libinput touchscreen catchall"
[   165.204] (II) Using input driver 'libinput' for 'Surface Touch Device'
[   165.263] (II) systemd-logind: got fd for /dev/input/event13 13:77 fd 51 paused 0
[   165.263] (**) Surface Touch Device: always reports core events
[   165.263] (**) Option "Device" "/dev/input/event13"
[   165.263] (**) Option "_source" "server/udev"
[   165.267] (II) event13 - Surface Touch Device: is tagged by udev as: Touchscreen
[   165.267] (II) event13 - Surface Touch Device: device is a touch device
[   165.267] (II) event13 - Surface Touch Device: device removed
[   165.267] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.3/1-5.3:1.0/0003:045E:0911.0005/input/input24/event13"
[   165.267] (II) XINPUT: Adding extended input device "Surface Touch Device" (type: TOUCHSCREEN, id 14)
[   165.268] (**) Option "AccelerationScheme" "none"
[   165.269] (**) Surface Touch Device: (accel) selected scheme none/0
[   165.269] (**) Surface Touch Device: (accel) acceleration factor: 2.000
[   165.269] (**) Surface Touch Device: (accel) acceleration threshold: 4
[   165.273] (II) event13 - Surface Touch Device: is tagged by udev as: Touchscreen
[   165.273] (II) event13 - Surface Touch Device: device is a touch device
[   165.275] (II) config/udev: Adding input device Surface Touch Device (/dev/input/event12)
[   165.275] (**) Surface Touch Device: Applying InputClass "libinput tablet catchall"
[   165.275] (II) Using input driver 'libinput' for 'Surface Touch Device'
[   165.277] (II) systemd-logind: got fd for /dev/input/event12 13:76 fd 52 paused 0
[   165.277] (**) Surface Touch Device: always reports core events
[   165.277] (**) Option "Device" "/dev/input/event12"
[   165.277] (**) Option "_source" "server/udev"
[   165.281] (II) event12 - Surface Touch Device: is tagged by udev as: Tablet
[   165.302] (II) event12 - Surface Touch Device: tablet 'Surface Touch Device' unknown to libwacom
[   165.303] (II) event12 - Surface Touch Device: device is a tablet
[   165.303] (II) event12 - Surface Touch Device: device removed
[   165.303] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.3/1-5.3:1.0/0003:045E:0911.0005/input/input23/event12"
[   165.303] (II) XINPUT: Adding extended input device "Surface Touch Device" (type: TABLET, id 15)
[   165.306] (II) event12 - Surface Touch Device: is tagged by udev as: Tablet
[   165.316] (II) event12 - Surface Touch Device: tablet 'Surface Touch Device' unknown to libwacom
[   165.316] (II) event12 - Surface Touch Device: device is a tablet
[   165.317] (II) config/udev: Adding input device Surface Touch Device UNKNOWN (/dev/input/event14)
[   165.317] (II) No input driver specified, ignoring this device.
[   165.317] (II) This device may have been added with another device file.
2019/06/13 21:50 · sam

GPIO on Arch Linux ARM for Raspberry Pi 3 (aarch64)

While everyone appears to prefer that you don't, performance is a bit better on 64bit ALARM vs. 32bit for what I'm doing. Also, I get that warm, tingly feeling of running upstream kernel without odd Broadcom or RPi Foundation patches.

That said, a lot of the basic stuff for managing GPIO isn't available. I had to poke for a few days to figure out what's going on, so I thought I'd document it, partially to save other people time, and partially so it's all in one place when I get back to it.

Anyway.

Talking to GPIO

Don't bother with any of the simplified “Arduino-like” libraries for GPIO. Even if there are patches, they don't function very well. Pins in the sysfs GPIO system have an offset in recent kernels, and the usual libraries don't understand it.

I started looking at fixing the library, but the work required was large enough that just polling the sysfs system started to look like the lazier method after all, when lo and behold: sysfs for gpio is deprecated and is being removed next year. In it's place is GPIO chips as a character device. That's nice, but how to I talk to it?

That's the good part. Apparently, the preferred way to talk to it is with a library called libgpiod, which stands for (lib) GPIO Device, and isn't some weird sort of library/daemon stunt like one finds in libvirtd. It is already in AUR so installing it was dead simple. It's apparently super easy to talk to, but it's really new, was only recently accepted as a kernel project, and is still evolving. Also, not much in the way of documentation as I've been able to find.

Well, except for these examples I found. They make it pretty clear that libgpiod is pretty easy to use. Shame I don't speak French. Also the header files turned out to be pretty well documented.

Pull me Up, Pull me Down

One thing libgpiod doesn't handle is built in resistors for pull-up or pull-down operations. I found a recent GitHub thread talking about it, and reading about it was an emotional rollercoaster. Basically, libgpiod dev didn't want to do it because controlling those resistors isn't something generalized in the kernel, and closed the bug. Dev read ladyada's comment, thought “wait, no, that's bad” and is currently thinking about how best to implement it, because using them is totally in the use case of people using pins. That was last month. So, ultimately it's a positive emotional rollercoaster, but in the meantime libgpiod doesn't handle them.

Instead, they added a method of turning them on in /boot/config.txt, and that seems to do the trick quite well. Otherwise it's device tree overlay or register futzing, which just seems like too much work to read a rotary encoder without wimping out and tossing in some other microcontroller.

All for a resistor I'll probably solder in anyway.

Sam Should Stop Looking for A Pinout Image

Because I'm putting it here.

It comes from Microsoft, of all places.

Notes to Self

  • For whatever reason, XFS doesn't work well on an RPi with an SD card.
2019/02/10 03:38 · sam

Simpler internal bridge for Xen on Arch using netctl

Just change 'Interface' and 'Dummy' appropriately, and you'll have a nice internal bridge for VMs without having to vswitch things.

Description='internal bridge for xen'
Interface=in0
Dummy=dummy0
Connection=bridge
IP=no
IPCustom=("link add $Dummy type dummy"
          "link set $Dummy up"
          "link set $Dummy master $Interface")
2019/01/10 17:37 · sam

Fix Thunderbird's Dumb Reply-To Behavior

  1. Open up the config editor in Edit>Preferences>Advanced, search for “mail.override_list_reply_to”, set to false.
  2. Try to find a better mail client.
  3. Cry at the state of desktop mail apps in Linux.
2018/10/18 19:12 · sam

Oregon Trail Device Board

I saw on Liliputing that they were selling one of those single game systems that had Oregon Trail instead of Frogger or whatever. I thought it might hold local interest a little longer than arcade games that only few of us remember. And then once done, I could do something terrible to it.

Also, I was wondering if they were doing something interesting in the hardware. Alas…

Click on the image for a full size image.

Those are some biggish COB blobs. I instantly thought NES-on-a-chip2) but they look a bit bigger than the standard dual NoaC and ROM splurts onto the substrate.

I should probe around a bit, because of the LCD panel. It looks like a standard panel, and I could probably fit one of the ILI9341 or so panels from ebay in it with few changes.

Also, if it *is* a NoaC, it might have composite video somewhere on the board. That could be interesting.

2018/03/06 21:15 · sam

Older entries >>

1)
Nouveau refuses to work
2)
of which I have a few samples to work with