games-on-whales / wolf

Stream virtual desktops and games running in Docker
https://games-on-whales.github.io/wolf/stable/
MIT License
292 stars 20 forks source link

Running Wolf inside an LXC container #73

Open jefflewis opened 4 weeks ago

jefflewis commented 4 weeks ago

I'm attempting to set up a wolf deployment on an LXC container in Proxmox. I have the v550 Nvidia drivers installed and all the required devices configured on the container. The system does run, but will often disconnect the moonlight client with either a termination error or a UDP port error. When the launch does succeed, I can install games and the steam app UI is very responsive. Sound and gamepad controls work just as expected.

When I launch a game, I only get a black screen. The GPU lists wolf as a process, and when I set WOLF_RENDER_NODE to use /dev/dri/renderD129, it lists many other processes as well. (There is an integrated intel GPU available as well).

In the container logs, I see many errors around inputs. Could this be part of the flakiness of the connection? I see no errors logged when the screen goes black. What can I do to further troubleshoot what is wrong with my setup?

wolf-wolf-1  | 22:40:17.673815539 INFO  | [DOCKER] Starting container: /WolfSteam_17432744545756172703
wolf-wolf-1  | libinput error: libinput bug: udev device never initialized (/dev/input/event19)
wolf-wolf-1  | libinput error: client bug: Invalid path /dev/input/event19
wolf-wolf-1  | 1:18:02.316807954     1 0x70b02400c290 WARN                audiosrc gstaudiosrc.c:227:audioringbuffer_thread_func:<pulsesrc3> error reading data -1 (reason: Success), skipping segment
wolf-wolf-1  | 23:38:26.619393300 INFO  | RTP server started on port: 48100
wolf-wolf-1  | 23:38:26.619709651 INFO  | RTP server started on port: 48200
wolf-wolf-1  | 1:18:05.279971655     1 0x70b040001340 WARN        cudaconvertscale gstcudaconvertscale.c:1265:gst_cuda_base_convert_set_info:<cudaconvertscale6> Can't calculate borders
wolf-wolf-1  | 1:18:05.374750564     1 0x70b045045a20 WARN                  appsrc gstappsrc.c:2610:gst_app_src_push_internal:<wolf_wayland_source> Dropping old item buffer: 0x70b01ca4e6e0, pts 0:00:00.066666664, dts 0:00:00.066666664, dur 0:00:00.016666666, size 3686400, offset none, offset_end none, flags 0x0
wolf-wolf-1  | 1:19:23.753439042     1 0x70b0780013f0 WARN                audiosrc gstaudiosrc.c:227:audioringbuffer_thread_func:<pulsesrc4> error reading data -1 (reason: Success), skipping segment

docker-compose

version: "3.8"
services:
  wolf:
    image: ghcr.io/games-on-whales/wolf:stable
    environment:
      - XDG_RUNTIME_DIR=/tmp/sockets
      - NVIDIA_DRIVER_VOLUME_NAME=nvidia-driver-vol
      - HOST_APPS_STATE_FOLDER=/etc/wolf
      - WOLF_RENDER_NODE=/dev/dri/renderD129
    volumes:
      - /etc/wolf/:/etc/wolf:rw
      - /tmp/sockets:/tmp/sockets:rw
      - /var/run/docker.sock:/var/run/docker.sock:rw
      - /dev/shm:/dev/shm:rw
      - /dev/input:/dev/input:rw
      - /run/udev:/run/udev:rw
      - nvidia-driver-vol:/usr/nvidia:rw
    devices:
      - /dev/dri
      - /dev/uinput
      - /dev/nvidia-uvm
      - /dev/nvidia-uvm-tools
      - /dev/nvidia-caps/nvidia-cap1
      - /dev/nvidia-caps/nvidia-cap2
      - /dev/nvidiactl
      - /dev/nvidia0
      - /dev/nvidia-modeset
    device_cgroup_rules:
      - c 13:* rmw
    network_mode: host
    restart: unless-stopped
volumes:
  nvidia-driver-vol:
    external: true
networks: {}

lxc conf

arch: amd64
cores: 2
features: nesting=1
hostname: dockge
memory: 2048
net0: name=eth0,bridge=vmbr0,hwaddr=BC:24:11:3B:C4:02,ip=dhcp,type=veth
onboot: 1
ostype: debian
rootfs: local-zfs-2:subvol-307-disk-0,size=318G
swap: 512
tags: proxmox-helper-scripts
lxc.cgroup2.devices.allow: a
lxc.cap.drop:
lxc.cgroup2.devices.allow: c 188:* rwm
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/serial/by-id  dev/serial/by-id  none bind,optional,create=dir
lxc.mount.entry: /dev/ttyUSB0       dev/ttyUSB0       none bind,optional,create=file
lxc.mount.entry: /dev/ttyUSB1       dev/ttyUSB1       none bind,optional,create=file
lxc.mount.entry: /dev/ttyACM0       dev/ttyACM0       none bind,optional,create=file
lxc.mount.entry: /dev/ttyACM1       dev/ttyACM1       none bind,optional,create=file
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD129 dev/dri/renderD129 none bind,optional,create=file
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net dev/net none bind,optional,create=dir
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
lxc.cgroup2.devices.allow: c 10:223 rwm
lxc.mount.entry: /dev/uinput dev/uinput none bind,optional,create=file
lxc.mount.entry: /dev/input dev/input none bind,optional,create=dir
lxc.cgroup2.devices.allow: c 195:* rwm
lxc.cgroup2.devices.allow: c 506:* rwm
lxc.mount.entry: /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry: /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-caps/ dev/nvidia-caps none bind,optional,create=dir
lxc.mount.entry: /dev/nvidia-caps/nvidia-cap1 dev/nvidia-caps/nvidia-cap1 none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-caps/nvidia-cap2 dev/nvidia-caps/nvidia-cap2 none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file

nvidia-smi

root@pve1:/dev/dri# nvidia-smi
Tue Jun  4 19:57:07 2024       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.78                 Driver Version: 550.78         CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA RTX A2000 12GB          Off |   00000000:01:00.0  On |                  Off |
| 50%   77C    P2             30W /   70W |     399MiB /  12282MiB |      8%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A    493382    C+G   /wolf/wolf                                    172MiB |
|    0   N/A  N/A    494482    C+G   /usr/games/gamescope                           33MiB |
|    0   N/A  N/A    494533      G   Xwayland                                       26MiB |
|    0   N/A  N/A    494550      G   mangoapp                                       20MiB |
|    0   N/A  N/A    494705      G   ...bian-installation/ubuntu12_32/steam          3MiB |
|    0   N/A  N/A    495115      G   ./steamwebhelper                               20MiB |
|    0   N/A  N/A    495136      G   ...atal,SpareRendererForSitePerProcess         96MiB |
+-----------------------------------------------------------------------------------------+
ABeltramo commented 4 weeks ago

Thanks for the detailed issue, running a Docker container inside an LXC container might get tricky, but I'll try to help where I can.

The system does run, but will often disconnect the moonlight client with either a termination error or a UDP port error.

Wolf will definitely log something here, someone on Discord reported random warnings about binding the RTP port, could that be your case too?

When I launch a game, I only get a black screen

Bear in mind that the very first time you launch a game that is expected since Docker is actually downloading the image (and we don't have an easy way to report that progress, yet). The stream should stay open with a black screen until the app is actually running.

In the container logs, I see many errors around inputs.

From the few log lines that you've posted it seems that our custom compositor is not able to access the virtual devices (mouse and keyboard) that Wolf creates. I've noticed that you have a bunch of lxc.mount.entry in your config; our virtual mouse and keyboard will have major 13 so maybe you should add something like

lxc.cgroup2.devices.allow: c 13:* rwm

What can I do to further troubleshoot what is wrong with my setup?

Generally setting WOLF_LOG_LEVEL=DEBUG is helpful in troubleshooting issues. You can post a full log run here, and I'll try to help you!

jefflewis commented 4 weeks ago

Thanks so much for the help! I know this is one of the more complex ways to run this. My goal is to be able to share this GPU with other services for when it's not used for game streaming (ML, etc).

Adding the extra conf for control group 13 seemed to let me actually start up into a game further than I had before! I still see the machine drop its connection and not be able to resume. When I've seen it launch to a black screen, it seems more than a "loading" state, as I've let it sit for 30 minutes and it just stays. I

I looked at the host machine's /dev/input directory, and it is in fact missing any event > 16, which are all events that fail in the wolf logs. I don't know what those events correlate to or why they are missing on the host.

root@pve1:~# ls -al /dev/input
total 0
drwxr-xr-x  4 root root     440 Jun  5 08:17 .
drwxr-xr-x 21 root root    5340 Jun  4 13:25 ..
drwxr-xr-x  2 root root      80 Jun  4 12:57 by-id
drwxr-xr-x  2 root root     100 Jun  4 12:57 by-path
crw-rw----  1 root input 13, 64 Jun  4 12:57 event0
crw-rw----  1 root input 13, 65 Jun  4 12:57 event1
crw-rw----  1 root input 13, 74 Jun  4 12:57 event10
crw-rw----  1 root input 13, 75 Jun  4 12:57 event11
crw-rw----  1 root input 13, 76 Jun  4 12:57 event12
crw-rw----  1 root input 13, 77 Jun  4 12:57 event13
crw-rw----  1 root input 13, 78 Jun  4 12:57 event14
crw-rw----  1 root input 13, 79 Jun  4 12:57 event15
crw-rw----  1 root input 13, 80 Jun  4 12:57 event16
crw-rw----  1 root input 13, 66 Jun  4 12:57 event2
crw-rw----  1 root input 13, 67 Jun  4 12:57 event3
crw-rw----  1 root input 13, 68 Jun  4 12:57 event4
crw-rw----  1 root input 13, 69 Jun  4 12:57 event5
crw-rw----  1 root input 13, 70 Jun  4 12:57 event6
crw-rw----  1 root input 13, 71 Jun  4 12:57 event7
crw-rw----  1 root input 13, 72 Jun  4 12:57 event8
crw-rw----  1 root input 13, 73 Jun  4 12:57 event9
crw-rw----  1 root input 13, 63 Jun  4 12:57 mice

Here's an example launch session log with the connection being terminated before steam ever launches:

wolf-wolf-1  | 12:16:48.602991894 DEBUG | 10.0.0.157 [GET] HTTPS://10.0.0.9/launch
wolf-wolf-1  | 12:16:48.603068404 DEBUG | Host app state folder: /etc/wolf/1782870069566224235/Steam, creating paths
wolf-wolf-1  | 12:16:48.605797557 DEBUG | [STREAM_SESSION] Create virtual audio sink
wolf-wolf-1  | 12:16:48.605832738 DEBUG | [STREAM_SESSION] Create wayland compositor
wolf-wolf-1  | 12:16:48.605842558 DEBUG | [WAYLAND] Creating wayland display
wolf-wolf-1  | 12:16:48.606208759 DEBUG | [PULSE] Created virtual sink: 19
wolf-wolf-1  | 12:16:48.620569332 DEBUG | [RTSP] received command OPTIONS
wolf-wolf-1  | 12:16:48.631846205 DEBUG | [RTSP] received command DESCRIBE
wolf-wolf-1  | 12:16:48.633157134 DEBUG | WAYLAND_DISPLAY=/tmp/sockets/wayland-2
wolf-wolf-1  | 12:16:48.641026876 DEBUG | /dev/dri/renderD129 vendor: NVIDIA Corporation
wolf-wolf-1  | 12:16:48.641046713 INFO  | Mounting nvidia driver nvidia-driver-vol:/usr/nvidia
wolf-wolf-1  | 12:16:48.648119580 DEBUG | [RTSP] received command SETUP
wolf-wolf-1  | 12:16:48.649374917 DEBUG | /dev/dri/renderD129 vendor: NVIDIA Corporation
wolf-wolf-1  | 12:16:48.649412762 DEBUG | [DOCKER] Using fake-udev, creating /etc/wolf/1782870069566224235/Steam/udev/data
wolf-wolf-1  | 12:16:48.663863475 DEBUG | [RTSP] received command SETUP
wolf-wolf-1  | 12:16:48.679351545 DEBUG | [RTSP] received command SETUP
wolf-wolf-1  | 12:16:48.692810576 DEBUG | [RTSP] received command ANNOUNCE
wolf-wolf-1  | 12:16:48.692867929 DEBUG | [RTSP] Moonlight requested video format HEVC
wolf-wolf-1  | 12:16:48.692897189 INFO  | RTP server started on port: 48101
wolf-wolf-1  | 12:16:48.692961287 INFO  | RTP server started on port: 48201
wolf-wolf-1  | 12:16:48.692975070 DEBUG | Video session 1782870069566224235, waiting for PING...
wolf-wolf-1  | 12:16:48.693023555 DEBUG | Audio session 1782870069566224235, waiting for PING...
wolf-wolf-1  | 12:16:48.704036330 DEBUG | [RTSP] received command PLAY
wolf-wolf-1  | 12:16:48.706543945 DEBUG | [ENET] connected client: 10.0.0.157:57838
wolf-wolf-1  | 12:16:48.706763482 DEBUG | RTP server on port: 48101 stopped
wolf-wolf-1  | 12:16:48.706839662 DEBUG | Starting video pipeline: appsrc name=wolf_wayland_source is-live=true block=false format=3 stream-type=0 ! queue ! cudaupload ! cudaconvertscale !
wolf-wolf-1  | video/x-raw(memory:CUDAMemory), width=1280, height=720,
wolf-wolf-1  | chroma-site=mpeg2, format=NV12, colorimetry=bt601, pixel-aspect-ratio=1/1
wolf-wolf-1  |  ! nvh265enc preset=low-latency-hq zerolatency=true gop-size=-1 rc-mode=cbr-ld-hq bitrate=7500 aud=false !
wolf-wolf-1  | h265parse !
wolf-wolf-1  | video/x-h265, profile=main, stream-format=byte-stream
wolf-wolf-1  |  ! rtpmoonlightpay_video name=moonlight_pay
wolf-wolf-1  | payload_size=1392 fec_percentage=20 min_required_fec_packets=2 !
wolf-wolf-1  | udpsink bind-port=48101 host=10.0.0.157 port=56881 sync=true
wolf-wolf-1  | 
wolf-wolf-1  | 12:16:48.788078387 DEBUG | Setting up wolf_wayland_source
wolf-wolf-1  | 12:16:48.788787508 WARN  | [GSTREAMER] cudaconvertscale - Can't calculate borders ../subprojects/gst-plugins-bad/sys/nvcodec/gstcudaconvertscale.c:gst_cuda_base_convert_set_info:1265
wolf-wolf-1  | 12:16:49.184964437 DEBUG | RTP server on port: 48201 stopped
wolf-wolf-1  | 12:16:49.185280407 DEBUG | Starting audio pipeline: pulsesrc device="virtual_sink_1782870069566224235.monitor" server="/tmp/sockets/pulse-socket"
wolf-wolf-1  |  ! audio/x-raw, channels=2 ! opusenc bitrate=48000 bitrate-type=constrained-vbr frame-size=5 bandwidth=fullband
wolf-wolf-1  | audio-type=restricted-lowdelay max-payload-size=1400
wolf-wolf-1  |  ! rtpmoonlightpay_audio name=moonlight_pay packet_duration=5 encrypt=true
wolf-wolf-1  | aes_key="7ebf8a965d4b89de5a3176bc7ff0831b" aes_iv="241433879"  !
wolf-wolf-1  | udpsink bind-port=48201 host=10.0.0.157 port=59460 sync=true
wolf-wolf-1  | 
wolf-wolf-1  | 12:16:49.561243103 DEBUG | [GSTREAMER] Forcing IDR
wolf-wolf-1  | libinput error: libinput bug: udev device never initialized (/dev/input/event20)
wolf-wolf-1  | libinput error: client bug: Invalid path /dev/input/event20
wolf-wolf-1  | libinput error: libinput bug: udev device never initialized (/dev/input/event21)
wolf-wolf-1  | libinput error: client bug: Invalid path /dev/input/event21
wolf-wolf-1  | libinput error: libinput bug: udev device never initialized (/dev/input/event22)
wolf-wolf-1  | libinput error: client bug: Invalid path /dev/input/event22
wolf-wolf-1  | 12:16:55.061484464 DEBUG | [GSTREAMER] Forcing IDR
wolf-wolf-1  | 12:16:58.163225248 INFO  | [DOCKER] Starting container: /WolfSteam_1782870069566224235
wolf-wolf-1  | 12:16:58.163286934 DEBUG | [DOCKER] Starting container: {
wolf-wolf-1  |  id: c8ecfab9644ff0391d8fd5ac186bf23d68565edfa1584b70eb42c43efb73bbe1
wolf-wolf-1  |  name: /WolfSteam_1782870069566224235
wolf-wolf-1  |  image: ghcr.io/games-on-whales/steam:edge
wolf-wolf-1  |  status: 0
wolf-wolf-1  |  ports: []
wolf-wolf-1  |  mounts: [/tmp/sockets/pulse-socket:/tmp/sockets/pulse-socket:rw, /tmp/sockets/wayland-2:/tmp/sockets/wayland-2:rw, /etc/wolf/1782870069566224235/Steam:/home/retro:rw, nvidia-driver-vol:/usr/nvidia:rw, /etc/wolf/1782870069566224235/Steam/udev:/run/udev/:rw, /etc/wolf/fake-udev:/usr/bin/fake-udev:ro]
wolf-wolf-1  |  devices: [/dev/dri/card2:/dev/dri/card2:mrw, /dev/dri/renderD129:/dev/dri/renderD129:mrw, /dev/dri/card2:/dev/dri/card2:mrw, /dev/nvidia0:/dev/nvidia0:mrw, /dev/nvidia-modeset:/dev/nvidia-modeset:mrw, /dev/nvidia-uvm:/dev/nvidia-uvm:mrw, /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools:mrw, /dev/nvidiactl:/dev/nvidiactl:mrw]
wolf-wolf-1  |  env: ["PROTON_LOG=1", "RUN_GAMESCOPE=true", "GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*", "PULSE_SOURCE=virtual_sink_1782870069566224235.monitor", "GAMESCOPE_REFRESH=60", "PULSE_SINK=virtual_sink_1782870069566224235", "WAYLAND_DISPLAY=wayland-2", "GAMESCOPE_HEIGHT=720", "PULSE_SERVER=/tmp/sockets/pulse-socket", "XDG_RUNTIME_DIR=/tmp/sockets", "GAMESCOPE_WIDTH=1280", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "PUID=1000", "PGID=1000", "UMASK=000", "UNAME=retro", "HOME=/home/retro", "TZ=Europe/London", "DEBIAN_FRONTEND=noninteractive", "NEEDRESTART_SUSPEND=1", "GAMESCOPE_VERSION=3.12.5", "BUILD_ARCHITECTURE=amd64", "DEB_BUILD_OPTIONS=noddebs"]
wolf-wolf-1  | }
wolf-wolf-1  | 12:16:58.163330790 DEBUG | [DOCKER] Writing hwdb file: /etc/wolf/1782870069566224235/Steam/udev/data/c13:84
wolf-wolf-1  | 12:16:58.163469153 DEBUG | [DOCKER] Writing hwdb file: /etc/wolf/1782870069566224235/Steam/udev/data/c13:85
wolf-wolf-1  | 12:16:58.163577960 DEBUG | [DOCKER] Executing command: mkdir -p /dev/input && mknod /dev/input/event20 c 13 84 && chmod 777 /dev/input/event20 && fake-udev -m LklOUFVUX0NMQVNTPW1vdXNlAEFDVElPTj1hZGQAQ1VSUkVOVF9UQUdTPTpzZWF0OnVhY2Nlc3M6AERFVk5BTUU9L2Rldi9pbnB1dC9ldmVudDIwAERFVlBBVEg9L2RldmljZXMvdmlydHVhbC9pbnB1dC9pbnB1dDMyMy9ldmVudDIwAElEX0lOUFVUPTEASURfSU5QVVRfTU9VU0U9MQBJRF9TRVJJQUw9bm9zZXJpYWwATUFKT1I9MTMATUlOT1I9ODQAU0VRTlVNPTcAU1VCU1lTVEVNPWlucHV0AFRBR1M9OnNlYXQ6dWFjY2VzczoAVVNFQ19JTklUSUFMSVpFRD0xNzE3NTg5ODE4AA==
wolf-wolf-1  | 12:16:58.209594187 DEBUG | [DOCKER] Executing command: mkdir -p /dev/input && mknod /dev/input/event21 c 13 85 && chmod 777 /dev/input/event21 && fake-udev -m LklOUFVUX0NMQVNTPW1vdXNlAEFDVElPTj1hZGQAQ1VSUkVOVF9UQUdTPTpzZWF0OnVhY2Nlc3M6AERFVk5BTUU9L2Rldi9pbnB1dC9ldmVudDIxAERFVlBBVEg9L2RldmljZXMvdmlydHVhbC9pbnB1dC9pbnB1dDMyNC9ldmVudDIxAElEX0lOUFVUPTEASURfSU5QVVRfVE9VQ0hQQUQ9MQBJRF9TRVJJQUw9bm9zZXJpYWwATUFKT1I9MTMATUlOT1I9ODUAU0VRTlVNPTcAU1VCU1lTVEVNPWlucHV0AFRBR1M9OnNlYXQ6dWFjY2VzczoAVVNFQ19JTklUSUFMSVpFRD0xNzE3NTg5ODE4AA==
wolf-wolf-1  | 12:16:58.244738381 DEBUG | [DOCKER] Writing hwdb file: /etc/wolf/1782870069566224235/Steam/udev/data/c13:86
wolf-wolf-1  | 12:16:58.244867471 DEBUG | [DOCKER] Executing command: mkdir -p /dev/input && mknod /dev/input/event22 c 13 86 && chmod 777 /dev/input/event22 && fake-udev -m LklOUFVUX0NMQVNTPWtleWJvYXJkAEFDVElPTj1hZGQAQ1VSUkVOVF9UQUdTPTpzZWF0OnVhY2Nlc3M6AERFVk5BTUU9L2Rldi9pbnB1dC9ldmVudDIyAERFVlBBVEg9L2RldmljZXMvdmlydHVhbC9pbnB1dC9pbnB1dDMyNS9ldmVudDIyAElEX0lOUFVUPTEASURfSU5QVVRfS0VZQk9BUkQ9MQBJRF9TRVJJQUw9bm9zZXJpYWwATUFKT1I9MTMATUlOT1I9ODYAU0VRTlVNPTcAU1VCU1lTVEVNPWlucHV0AFRBR1M9OnNlYXQ6dWFjY2VzczoAVVNFQ19JTklUSUFMSVpFRD0xNzE3NTg5ODE4AA==
wolf-wolf-1 exited with code 0

Here's a session log of when I receive a UDP port error on launch:

wolf-wolf-1  | 12:31:11.668767081 DEBUG | 10.0.0.35 [GET] HTTPS://10.0.0.9/launch
wolf-wolf-1  | 12:31:11.669022775 DEBUG | Host app state folder: /etc/wolf/14937286610247286775/Steam, creating paths
wolf-wolf-1  | 12:31:11.669443783 DEBUG | [STREAM_SESSION] Create virtual audio sink
wolf-wolf-1  | 12:31:11.673464846 DEBUG | [STREAM_SESSION] Create wayland compositor
wolf-wolf-1  | 12:31:11.673571369 DEBUG | [WAYLAND] Creating wayland display
wolf-wolf-1  | 12:31:11.682773724 DEBUG | [PULSE] Created virtual sink: 4
wolf-wolf-1  | 12:31:11.712636070 DEBUG | [RTSP] received command OPTIONS
wolf-wolf-1  | 12:31:11.716347773 DEBUG | WAYLAND_DISPLAY=/tmp/sockets/wayland-1
wolf-wolf-1  | 12:31:11.728017913 DEBUG | /dev/dri/renderD129 vendor: NVIDIA Corporation
wolf-wolf-1  | 12:31:11.728181892 INFO  | Mounting nvidia driver nvidia-driver-vol:/usr/nvidia
wolf-wolf-1  | 12:31:11.729260258 DEBUG | [RTSP] received command DESCRIBE
wolf-wolf-1  | 12:31:11.734292101 DEBUG | /dev/dri/renderD129 vendor: NVIDIA Corporation
wolf-wolf-1  | 12:31:11.734497443 DEBUG | [DOCKER] Using fake-udev, creating /etc/wolf/14937286610247286775/Steam/udev/data
wolf-wolf-1  | 12:31:11.747819040 DEBUG | [RTSP] received command SETUP
wolf-wolf-1  | 12:31:11.759162748 DEBUG | [RTSP] received command SETUP
wolf-wolf-1  | 12:31:11.780531658 DEBUG | [RTSP] received command SETUP
wolf-wolf-1  | 12:31:11.798914598 DEBUG | [RTSP] received command ANNOUNCE
wolf-wolf-1  | 12:31:11.799223080 WARN  | [RTSP] Received unparsable value ("a", "x-nv-aqo")
wolf-wolf-1  | 12:31:11.799371207 DEBUG | [RTSP] Moonlight requested video format HEVC
wolf-wolf-1  | 12:31:11.800392597 WARN  | [RTP] Unable to start RTP server on 48100: bind: Address already in use [system:98 at /usr/include/boost/asio/detail/reactive_socket_service.hpp:161:33 in function 'bind']
wolf-wolf-1  | 12:31:11.800686103 INFO  | RTP server started on port: 48200
wolf-wolf-1  | 12:31:11.801213466 DEBUG | Video session 14937286610247286775, waiting for PING...
wolf-wolf-1  | 12:31:11.801423058 DEBUG | Audio session 14937286610247286775, waiting for PING...
wolf-wolf-1  | 12:31:12.011626033 INFO  | [DOCKER] Starting container: /WolfSteam_14937286610247286775
wolf-wolf-1  | 12:31:12.011807802 DEBUG | [DOCKER] Starting container: {
wolf-wolf-1  |  id: 51d426ba70fb89c8a4d2248946f0e409901959fce161e0075a0c61630d346140
wolf-wolf-1  |  name: /WolfSteam_14937286610247286775
wolf-wolf-1  |  image: ghcr.io/games-on-whales/steam:edge
wolf-wolf-1  |  status: 0
wolf-wolf-1  |  ports: []
wolf-wolf-1  |  mounts: [/tmp/sockets/pulse-socket:/tmp/sockets/pulse-socket:rw, /tmp/sockets/wayland-1:/tmp/sockets/wayland-1:rw, /etc/wolf/14937286610247286775/Steam:/home/retro:rw, nvidia-driver-vol:/usr/nvidia:rw, /etc/wolf/14937286610247286775/Steam/udev:/run/udev/:rw, /etc/wolf/fake-udev:/usr/bin/fake-udev:ro]
wolf-wolf-1  |  devices: [/dev/dri/card2:/dev/dri/card2:mrw, /dev/dri/renderD129:/dev/dri/renderD129:mrw, /dev/dri/card2:/dev/dri/card2:mrw, /dev/nvidia0:/dev/nvidia0:mrw, /dev/nvidia-modeset:/dev/nvidia-modeset:mrw, /dev/nvidia-uvm:/dev/nvidia-uvm:mrw, /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools:mrw, /dev/nvidiactl:/dev/nvidiactl:mrw]
wolf-wolf-1  |  env: ["PROTON_LOG=1", "RUN_GAMESCOPE=true", "GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*", "PULSE_SOURCE=virtual_sink_14937286610247286775.monitor", "GAMESCOPE_REFRESH=60", "PULSE_SINK=virtual_sink_14937286610247286775", "WAYLAND_DISPLAY=wayland-1", "GAMESCOPE_HEIGHT=720", "PULSE_SERVER=/tmp/sockets/pulse-socket", "XDG_RUNTIME_DIR=/tmp/sockets", "GAMESCOPE_WIDTH=1280", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "PUID=1000", "PGID=1000", "UMASK=000", "UNAME=retro", "HOME=/home/retro", "TZ=Europe/London", "DEBIAN_FRONTEND=noninteractive", "NEEDRESTART_SUSPEND=1", "GAMESCOPE_VERSION=3.12.5", "BUILD_ARCHITECTURE=amd64", "DEB_BUILD_OPTIONS=noddebs"]
wolf-wolf-1  | }
wolf-wolf-1  | 12:31:12.012503957 DEBUG | [DOCKER] Writing hwdb file: /etc/wolf/14937286610247286775/Steam/udev/data/c13:81
wolf-wolf-1  | 12:31:12.012625777 DEBUG | [DOCKER] Writing hwdb file: /etc/wolf/14937286610247286775/Steam/udev/data/c13:82
wolf-wolf-1  | 12:31:12.012736633 DEBUG | [DOCKER] Executing command: mkdir -p /dev/input && mknod /dev/input/event17 c 13 81 && chmod 777 /dev/input/event17 && fake-udev -m LklOUFVUX0NMQVNTPW1vdXNlAEFDVElPTj1hZGQAQ1VSUkVOVF9UQUdTPTpzZWF0OnVhY2Nlc3M6AERFVk5BTUU9L2Rldi9pbnB1dC9ldmVudDE3AERFVlBBVEg9L2RldmljZXMvdmlydHVhbC9pbnB1dC9pbnB1dDMyOS9ldmVudDE3AElEX0lOUFVUPTEASURfSU5QVVRfTU9VU0U9MQBJRF9TRVJJQUw9bm9zZXJpYWwATUFKT1I9MTMATUlOT1I9ODEAU0VRTlVNPTcAU1VCU1lTVEVNPWlucHV0AFRBR1M9OnNlYXQ6dWFjY2VzczoAVVNFQ19JTklUSUFMSVpFRD0xNzE3NTkwNjcyAA==
wolf-wolf-1  | 12:31:12.064908663 DEBUG | [DOCKER] Executing command: mkdir -p /dev/input && mknod /dev/input/event18 c 13 82 && chmod 777 /dev/input/event18 && fake-udev -m LklOUFVUX0NMQVNTPW1vdXNlAEFDVElPTj1hZGQAQ1VSUkVOVF9UQUdTPTpzZWF0OnVhY2Nlc3M6AERFVk5BTUU9L2Rldi9pbnB1dC9ldmVudDE4AERFVlBBVEg9L2RldmljZXMvdmlydHVhbC9pbnB1dC9pbnB1dDMzMC9ldmVudDE4AElEX0lOUFVUPTEASURfSU5QVVRfVE9VQ0hQQUQ9MQBJRF9TRVJJQUw9bm9zZXJpYWwATUFKT1I9MTMATUlOT1I9ODIAU0VRTlVNPTcAU1VCU1lTVEVNPWlucHV0AFRBR1M9OnNlYXQ6dWFjY2VzczoAVVNFQ19JTklUSUFMSVpFRD0xNzE3NTkwNjcyAA==
wolf-wolf-1  | 12:31:12.119997538 DEBUG | [DOCKER] Writing hwdb file: /etc/wolf/14937286610247286775/Steam/udev/data/c13:83
wolf-wolf-1  | 12:31:12.120167384 DEBUG | [DOCKER] Executing command: mkdir -p /dev/input && mknod /dev/input/event19 c 13 83 && chmod 777 /dev/input/event19 && fake-udev -m LklOUFVUX0NMQVNTPWtleWJvYXJkAEFDVElPTj1hZGQAQ1VSUkVOVF9UQUdTPTpzZWF0OnVhY2Nlc3M6AERFVk5BTUU9L2Rldi9pbnB1dC9ldmVudDE5AERFVlBBVEg9L2RldmljZXMvdmlydHVhbC9pbnB1dC9pbnB1dDMzMS9ldmVudDE5AElEX0lOUFVUPTEASURfSU5QVVRfS0VZQk9BUkQ9MQBJRF9TRVJJQUw9bm9zZXJpYWwATUFKT1I9MTMATUlOT1I9ODMAU0VRTlVNPTcAU1VCU1lTVEVNPWlucHV0AFRBR1M9OnNlYXQ6dWFjY2VzczoAVVNFQ19JTklUSUFMSVpFRD0xNzE3NTkwNjcyAA==
wolf-wolf-1  | 12:31:13.379512460 DEBUG | 10.0.0.157 [GET] HTTP://10.0.0.9/serverinfo
wolf-wolf-1  | 12:31:13.561317481 DEBUG | 10.0.0.157 [GET] HTTPS://10.0.0.9/serverinfo
wolf-wolf-1  | libinput error: libinput bug: udev device never initialized (/dev/input/event17)
wolf-wolf-1  | libinput error: client bug: Invalid path /dev/input/event17
wolf-wolf-1  | 12:31:15.685738881 DEBUG | [DOCKER] Container logs: 
wolf-wolf-1  | [2024-06-05 13:31:12] 
wolf-wolf-1  | J[2024-06-05 13:31:12] [ /etc/cont-init.d/10-setup_user.sh: executing... ]
wolf-wolf-1  | 7[2024-06-05 13:31:12] **** Configure default user ****
wolf-wolf-1  | K[2024-06-05 13:31:12] Setting default user uid=1000(retro) gid=1000(retro)
wolf-wolf-1  | 8userdel: ubuntu mail spool (/var/mail/ubuntu) not found
wolf-wolf-1  | Auseradd: warning: the home directory /home/retro already exists.
wolf-wolf-1  | ;useradd: Not copying any file from skel directory into it.
wolf-wolf-1  | +[2024-06-05 13:31:12] Setting umask to 000
wolf-wolf-1  | >[2024-06-05 13:31:12] Ensure retro home directory is writable
wolf-wolf-1  | 9[2024-06-05 13:31:12] Ensure XDG_RUNTIME_DIR is writable
wolf-wolf-1  |  DONE
wolf-wolf-1  | [2024-06-05 13:31:12] 
wolf-wolf-1  | M[2024-06-05 13:31:12] [ /etc/cont-init.d/15-setup_devices.sh: executing... ]
wolf-wolf-1  | 2[2024-06-05 13:31:12] **** Configure devices ****
wolf-wolf-1  | )[2024-06-05 13:31:12] Exec device groups
wolf-wolf-1  | L[2024-06-05 13:31:12] Adding user 'retro' to groups: gow-gid-104,video,root
wolf-wolf-1  |  DONE
wolf-wolf-1  | [2024-06-05 13:31:12] 
wolf-wolf-1  | F[2024-06-05 13:31:12] [ /etc/cont-init.d/30-nvidia.sh: executing... ]
wolf-wolf-1  | -[2024-06-05 13:31:12] Nvidia driver detected
wolf-wolf-1  | .[2024-06-05 13:31:12] [nvidia] Add Vulkan ICD
wolf-wolf-1  | 9[2024-06-05 13:31:12] [nvidia] Add EGL external platform
wolf-wolf-1  | .[2024-06-05 13:31:12] [nvidia] Add egl-vendor
wolf-wolf-1  | /[2024-06-05 13:31:12] [nvidia] Add gbm backend
wolf-wolf-1  | [2024-06-05 13:31:12] 
wolf-wolf-1  | [2024-06-05 13:31:12] 
wolf-wolf-1  | K[2024-06-05 13:31:12] [ /etc/cont-init.d/init-gamescope.sh: executing... ]
wolf-wolf-1  | 5[2024-06-05 13:31:12] **** Setting up Gamescope ****
wolf-wolf-1  | [2024-06-05 13:31:12] 
wolf-wolf-1  | L[2024-06-05 13:31:12] [ /etc/cont-init.d/system-services.sh: executing... ]
wolf-wolf-1  | *** DBus started ***
wolf-wolf-1  | *** Bluez started ***
wolf-wolf-1  | 'bluetoothd[169]: Bluetooth daemon 5.72
wolf-wolf-1  | Tbluetoothd[169]: src/adapter.c:adapter_init() Failed to access management interface
wolf-wolf-1  | Jbluetoothd[169]: src/main.c:main() Adapter handling initialization failed
wolf-wolf-1  | *** NetworkManager started ***
wolf-wolf-1  | O[2024-06-05 13:31:12] Launching the container's startup script as user 'retro'
wolf-wolf-1  | 3[2024-06-05 13:31:12] Starting Steam with DISPLAY=
wolf-wolf-1  | IClaimed global gamescope stats session at "/tmp/sockets/gamescope-stats"
wolf-wolf-1  | GNo CAP_SYS_NICE, falling back to regular-priority compute and threads.
wolf-wolf-1  | Performance will be affected.
wolf-wolf-1  | Dwlserver: [backend/headless/backend.c:68] Creating headless backend
wolf-wolf-1  | gamescope failed
wolf-wolf-1  | 
wolf-wolf-1  | 12:31:15.685755410 DEBUG | [DOCKER] Stopping container: /WolfSteam_14937286610247286775
wolf-wolf-1  | 12:31:15.697608515 INFO  | Stopped container: /WolfSteam_14937286610247286775
wolf-wolf-1  | 12:31:15.697828455 DEBUG | [STREAM_SESSION] Remove virtual audio sink
wolf-wolf-1  | 12:31:15.701483896 DEBUG | [PULSE] Removed virtual sink, status: 1
wolf-wolf-1  | 12:31:15.701797202 DEBUG | Deleting WaylandSession 14937286610247286775
wolf-wolf-1  | 12:31:15.701945120 DEBUG | [ENET] Unable to find enet client 14937286610247286775
wolf-wolf-1  | libinput error: libinput bug: udev device never initialized (/dev/input/event18)
wolf-wolf-1  | libinput error: client bug: Invalid path /dev/input/event18
wolf-wolf-1  | 12:31:16.660778850 DEBUG | 10.0.0.157 [GET] HTTP://10.0.0.9/serverinfo
wolf-wolf-1  | 12:31:16.820182561 DEBUG | 10.0.0.157 [GET] HTTPS://10.0.0.9/serverinfo
wolf-wolf-1  | libinput error: libinput bug: udev device never initialized (/dev/input/event19)
wolf-wolf-1  | libinput error: client bug: Invalid path /dev/input/event19
wolf-wolf-1  | 12:31:19.889003808 DEBUG | 10.0.0.157 [GET] HTTP://10.0.0.9/serverinfo
wolf-wolf-1  | 12:31:20.023180637 DEBUG | 10.0.0.157 [GET] HTTPS://10.0.0.9/serverinfo
ABeltramo commented 4 weeks ago

I think there are two different issues here:

UDP bind error

I've just pushed an update that should fix this. Make sure to update the Wolf Docker image by downloading the latest with:

docker pull ghcr.io/games-on-whales/wolf:stable

Virtual devices

There's something in that LXC container that is blocking creating and/or accessing the virtual devices that Wolf needs to create in order to relay the remote inputs.

I looked at the host machine's /dev/input directory, and it is in fact missing any event > 16, which are all events that fail in the wolf logs. I don't know what those events correlate to or why they are missing on the host.

If they are missing from the host it probably means that Wolf is not able to access /dev/uinput (notice the u): normally when you start a session from Moonlight, Wolf will create the necessary virtual devices (mouse, keyboard, joypad, ...) and they'll be visible under /dev/input but in your case you get the error message:

libinput error: libinput bug: udev device never initialized

Now one thing I noticed is that you've missed the LXC mount for /run/udev, which is required, but I don't think that's going to fix this. We have to figure out why uinput doesn't work inside your container..

Can I suggest trying out with a privileged LXC container first and then, if that works, trying to drop the privileges?

jefflewis commented 4 weeks ago

The latest stable container image seems to have cleared up the UDP errors, thanks!

I am running a privileged container (I planned to try it unprivileged once I got a known container working 😅)

I may have mispoken for the "host". By that I meant physical Proxmox install is missing those inputs. Without them in the root Debian install, they are naturally missing from being passed into the container.

For missing /dev/uinput... that is odd. That file is mounted in the container config and has the appropriate major allow group. I'll note that when running on an android tablet with a gamepad, the gamepad controls do control the steam library UI. I've not yet gotten any game past the launch screens, but it feels so close.

I'd love to be able to add a setup wiki page for running wolf on proxmox, as if this can get to be working well feels very slick. I really love all that you've done with wolf and gow ❤️

jefflewis commented 4 weeks ago

Here's a log with the updated container and mounted /run/udev directory. I started the container and immediately attempted to run with a connected moonlight client. The connection started and then terminated with code -1 on the client display, and with these associated server logs.

wolf-wolf-1  | [2024-06-05 22:59:32] 
wolf-wolf-1  | [2024-06-05 22:59:32] [ /etc/cont-init.d/10-setup_user.sh: executing... ]
wolf-wolf-1  | [2024-06-05 22:59:32] **** Configure default user ****
wolf-wolf-1  | [2024-06-05 22:59:32] Container running as root. Nothing to do.
wolf-wolf-1  | [2024-06-05 22:59:32] DONE
wolf-wolf-1  | [2024-06-05 22:59:32] 
wolf-wolf-1  | [2024-06-05 22:59:32] [ /etc/cont-init.d/15-setup_devices.sh: executing... ]
wolf-wolf-1  | [2024-06-05 22:59:32] **** Configure devices ****
wolf-wolf-1  | [2024-06-05 22:59:32] Exec device groups
wolf-wolf-1  | [2024-06-05 22:59:32] Adding user 'root' to groups: messagebus,root
wolf-wolf-1  | [2024-06-05 22:59:32] DONE
wolf-wolf-1  | [2024-06-05 22:59:32] 
wolf-wolf-1  | [2024-06-05 22:59:32] [ /etc/cont-init.d/30-nvidia.sh: executing... ]
wolf-wolf-1  | [2024-06-05 22:59:32] 
wolf-wolf-1  | [2024-06-05 22:59:32] 
wolf-wolf-1  | [2024-06-05 22:59:32] [ /etc/cont-init.d/init-gamescope.sh: executing... ]
wolf-wolf-1  | [2024-06-05 22:59:32] **** Setting up Gamescope ****
wolf-wolf-1  | [2024-06-05 22:59:32] Launching the container's startup script as user 'root'
wolf-wolf-1  | 0:00:00.009385205   138 0x57f8983b1d80 WARN                 default gstvaapi.c:231:plugin_init: Cannot create a VA display
wolf-wolf-1  | 0:00:00.027512692   138 0x57f8983b1d80 WARN      GST_PLUGIN_LOADING gstplugin.c:534:gst_plugin_register_func: plugin "/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/validate/libgstvalidatessim.so" failed to initialise
wolf-wolf-1  | 0:00:00.056010479   138 0x57f8983b1d80 WARN               vadisplay gstvadisplay.c:316:gst_va_display_initialize:<vadisplaydrm1> vaInitialize: unknown libva error
wolf-wolf-1  | libva info: VA-API version 1.20.0
wolf-wolf-1  | libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
wolf-wolf-1  | libva info: Found init function __vaDriverInit_1_20
wolf-wolf-1  | libva info: va_openDriver() returns 0
wolf-wolf-1  | 0:00:00.100863608   138 0x57f8983b1d80 WARN                 default ges-meta-container.c:236:_set_value:<GESAsset@0x57f898fcafb0> Could not set value on item: format-version
wolf-wolf-1  | 0:00:00.100880203   138 0x57f8983b1d80 WARN                 default ges-meta-container.c:236:_set_value:<GESAsset@0x57f8987c5470> Could not set value on item: format-version
wolf-wolf-1  | 0:00:00.100886291   138 0x57f8983b1d80 WARN                 default ges-meta-container.c:236:_set_value:<GESAsset@0x57f8987c5a50> Could not set value on item: format-version
wolf-wolf-1  | 0:00:00.101235724   138 0x57f8983b1d80 WARN               structure gststructure.c:2334:priv_gst_structure_parse_fields: Failed to find delimiter, r=mimetype
wolf-wolf-1  | 0:00:00.128988250   138 0x57f8983b1d80 WARN               vadisplay gstvadisplay.c:316:gst_va_display_initialize:<vadisplaydrm3> vaInitialize: unknown libva error
wolf-wolf-1  | 0:00:00.167945231   138 0x57f8983b1d80 WARN          adaptivedemux2 gstadaptivedemuxelement.c:41:adaptivedemux2_base_element_init: Failed to load libsoup library
wolf-wolf-1  | 0:00:00.168024286   138 0x57f8983b1d80 WARN          adaptivedemux2 gstadaptivedemuxelement.c:41:adaptivedemux2_base_element_init: Failed to load libsoup library
wolf-wolf-1  | 0:00:00.168092991   138 0x57f8983b1d80 WARN          adaptivedemux2 gstadaptivedemuxelement.c:41:adaptivedemux2_base_element_init: Failed to load libsoup library
wolf-wolf-1  | 0:00:00.170253699   138 0x57f8983b1d80 WARN              cudaloader gstcudaloader.c:169:gst_cuda_load_library: Could not open library libcuda.so.1, libcuda.so.1: cannot open shared object file: No such file or directory
wolf-wolf-1  | 0:00:00.170264236   138 0x57f8983b1d80 WARN                 nvcodec plugin.c:94:plugin_init: Failed to load cuda library
wolf-wolf-1  | 0:00:00.171671127   138 0x57f8983b1d80 WARN      GST_PLUGIN_LOADING gstplugin.c:534:gst_plugin_register_func: plugin "/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvalidatessim.so" failed to initialise
wolf-wolf-1  | 0:00:00.173227875     1 0x6312cbbd2880 WARN            GST_REGISTRY gstregistry.c:457:gst_registry_add_plugin:<registry0> Not replacing plugin because new one (/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvalidatessim.so) is blacklisted but for a different location than existing one (/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/validate/libgstvalidatessim.so)
wolf-wolf-1  | 0:00:00.172445233   138 0x57f8983b1d80 WARN      GST_PLUGIN_LOADING gstplugin.c:534:gst_plugin_register_func: plugin "/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/validate/libgstvalidatessim.so" failed to initialise
wolf-wolf-1  | 0:00:00.174358726   138 0x57f8983b1d80 WARN      GST_PLUGIN_LOADING gstplugin.c:534:gst_plugin_register_func: plugin "/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvalidatessim.so" failed to initialise
wolf-wolf-1  | 0:00:00.178258417     1 0x6312cbbd2880 WARN            GST_REGISTRY gstregistry.c:457:gst_registry_add_plugin:<registry0> Not replacing plugin because new one (/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvalidatessim.so) is blacklisted but for a different location than existing one (/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/validate/libgstvalidatessim.so)
wolf-wolf-1  | 21:59:32.502100427 INFO  | Gstreamer version: 1.22.7-0
wolf-wolf-1  | 21:59:32.502620807 DEBUG | XDG_RUNTIME_DIR=/tmp/sockets
wolf-wolf-1  | 21:59:32.502639402 INFO  | Reading config file from: /etc/wolf/cfg/config.toml
wolf-wolf-1  | 0:00:00.197511555     1 0x6312cbbd2880 WARN     GST_ELEMENT_FACTORY gstelementfactory.c:712:gst_element_factory_make_with_properties: no such element factory "nvh264enc"!
wolf-wolf-1  | 0:00:00.202697989     1 0x6312cbbd2880 WARN               vadisplay gstvadisplay.c:316:gst_va_display_initialize:<vadisplaydrm1> vaInitialize: unknown libva error
wolf-wolf-1  | libva info: VA-API version 1.20.0
wolf-wolf-1  | libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
wolf-wolf-1  | libva info: Found init function __vaDriverInit_1_20
wolf-wolf-1  | libva info: va_openDriver() returns 0
wolf-wolf-1  | 0:00:00.235484814     1 0x6312cbbd2880 WARN               vadisplay gstvadisplay.c:316:gst_va_display_initialize:<vadisplaydrm3> vaInitialize: unknown libva error
wolf-wolf-1  | 21:59:32.582727372 INFO  | Selected H264 encoder: qsv
wolf-wolf-1  | 0:00:00.266739674     1 0x6312cbbd2880 WARN     GST_ELEMENT_FACTORY gstelementfactory.c:712:gst_element_factory_make_with_properties: no such element factory "nvh265enc"!
wolf-wolf-1  | 21:59:32.582833239 INFO  | Selected HEVC encoder: qsv
wolf-wolf-1  | 21:59:32.583319799 DEBUG | Loading server certificates from disk: /etc/wolf/cfg/cert.pem /etc/wolf/cfg/key.pem
wolf-wolf-1  | XDG_RUNTIME_DIR (/tmp/sockets) is not owned by us (uid 0), but by uid 1000! (This could e.g. happen if you try to connect to a non-root PulseAudio as a root user, over the native protocol. Don't do that.)
wolf-wolf-1  | 21:59:32.584289755 DEBUG | [PULSE] Connecting...
wolf-wolf-1  | 21:59:32.584325229 DEBUG | [PULSE] Context failed
wolf-wolf-1  | 21:59:32.584331060 WARN  | [PULSE] Unable to connect, Access denied
wolf-wolf-1  | 21:59:32.585532818 INFO  | HTTPS server listening on port: 47984 
wolf-wolf-1  | 21:59:32.585581331 INFO  | RTSP server started on port: 48010
wolf-wolf-1  | 21:59:32.585620624 INFO  | Starting PulseAudio docker container
wolf-wolf-1  | 21:59:32.585829004 INFO  | HTTP server listening on port: 47989 
wolf-wolf-1  | 21:59:32.586240304 WARN  | [DOCKER] Container WolfPulseAudio already present, removing first
wolf-wolf-1  | 21:59:32.586290837 INFO  | Control server started on port: 47999
wolf-wolf-1  | 21:59:37.423338824 DEBUG | 10.0.20.204 [GET] HTTP://10.0.20.100/serverinfo
wolf-wolf-1  | 21:59:37.442336138 DEBUG | 10.0.20.204 [GET] HTTPS://10.0.20.100/serverinfo
wolf-wolf-1  | 21:59:37.446177807 DEBUG | 10.0.20.204 [GET] HTTPS://10.0.20.100/serverinfo
wolf-wolf-1  | 21:59:37.449550508 DEBUG | 10.0.20.204 [GET] HTTP://10.0.20.100/serverinfo
wolf-wolf-1  | 21:59:37.462442403 DEBUG | 10.0.20.204 [GET] HTTPS://10.0.20.100/applist
wolf-wolf-1  | 21:59:37.469193613 DEBUG | 10.0.20.204 [GET] HTTP://10.0.20.100/serverinfo
wolf-wolf-1  | 21:59:37.469204876 DEBUG | 10.0.20.204 [GET] HTTPS://10.0.20.100/serverinfo
wolf-wolf-1  | 21:59:37.481402554 DEBUG | 10.0.20.204 [GET] HTTPS://10.0.20.100/serverinfo
wolf-wolf-1  | 21:59:39.093541514 DEBUG | [PULSE] Connecting...
wolf-wolf-1  | 21:59:39.094028014 DEBUG | [PULSE] Pulse connection ready
wolf-wolf-1  | 21:59:39.494129519 DEBUG | 10.0.20.204 [GET] HTTP://10.0.20.100/serverinfo
wolf-wolf-1  | 21:59:39.527234154 DEBUG | 10.0.20.204 [GET] HTTPS://10.0.20.100/serverinfo
wolf-wolf-1  | 21:59:40.055703726 DEBUG | 10.0.20.204 [GET] HTTPS://10.0.20.100/serverinfo
wolf-wolf-1  | 21:59:40.072419078 DEBUG | 10.0.20.204 [GET] HTTPS://10.0.20.100/launch
wolf-wolf-1  | 21:59:40.072487611 DEBUG | Host app state folder: /etc/wolf/14820504867156543389/Steam, creating paths
wolf-wolf-1  | 21:59:40.073294291 DEBUG | [STREAM_SESSION] Create virtual audio sink
wolf-wolf-1  | 21:59:40.073365623 INFO  | RTP server started on port: 48200
wolf-wolf-1  | 21:59:40.073436597 INFO  | RTP server started on port: 48100
wolf-wolf-1  | 21:59:40.073544581 DEBUG | [STREAM_SESSION] Create wayland compositor
wolf-wolf-1  | 21:59:40.073555095 DEBUG | [WAYLAND] Creating wayland display
wolf-wolf-1  | 21:59:40.074014780 DEBUG | [PULSE] Created virtual sink: 3
wolf-wolf-1  | 21:59:40.085770090 DEBUG | [RTSP] received command OPTIONS
wolf-wolf-1  | 21:59:40.090013942 DEBUG | [RTSP] received command DESCRIBE
wolf-wolf-1  | 21:59:40.096758785 DEBUG | [RTSP] received command SETUP
wolf-wolf-1  | 21:59:40.106370729 DEBUG | [RTSP] received command SETUP
wolf-wolf-1  | 21:59:40.112910215 DEBUG | [RTSP] received command SETUP
wolf-wolf-1  | 21:59:40.118985545 DEBUG | [RTSP] received command ANNOUNCE
wolf-wolf-1  | 21:59:40.119049727 DEBUG | [RTSP] Moonlight requested video format HEVC
wolf-wolf-1  | 21:59:40.119184185 DEBUG | Video session 14820504867156543389, waiting for PING...
wolf-wolf-1  | 21:59:40.119292163 DEBUG | Audio session 14820504867156543389, waiting for PING...
wolf-wolf-1  | 21:59:40.123922404 DEBUG | [RTSP] received command PLAY
wolf-wolf-1  | 21:59:40.125611952 DEBUG | [ENET] connected client: 10.0.20.204:34295
wolf-wolf-1  | 21:59:40.145043885 DEBUG | WAYLAND_DISPLAY=/tmp/sockets/wayland-1
wolf-wolf-1  | 21:59:40.145251026 DEBUG | Starting video pipeline: appsrc name=wolf_wayland_source is-live=true block=false format=3 stream-type=0 ! queue !
wolf-wolf-1  | vapostproc !
wolf-wolf-1  | video/x-raw(memory:VAMemory), chroma-site=mpeg2, width=1920,
wolf-wolf-1  | height=1080, format=NV12, colorimetry=bt601
wolf-wolf-1  |  ! qsvh265enc low-latency=true b-frames=0 gop-size=0 idr-interval=1 ref-frames=1 bitrate=100000 !
wolf-wolf-1  | h265parse !
wolf-wolf-1  | video/x-h265, profile=main, stream-format=byte-stream
wolf-wolf-1  |  ! rtpmoonlightpay_video name=moonlight_pay
wolf-wolf-1  | payload_size=1024 fec_percentage=20 min_required_fec_packets=2 !
wolf-wolf-1  | udpsink bind-port=48100 host=10.0.20.204 port=53141 sync=true
wolf-wolf-1  | 
wolf-wolf-1  | 21:59:40.145314513 DEBUG | /proc/driver/nvidia/gpus/0000:00:02.0/information doesn't exists, this might be normal if the GPU is not Nvidia
wolf-wolf-1  | 21:59:40.152484499 DEBUG | /dev/dri/renderD128 vendor: Intel Corporation
wolf-wolf-1  | 21:59:40.169315772 DEBUG | Setting up wolf_wayland_source
wolf-wolf-1  | 21:59:40.172106920 DEBUG | /dev/dri/renderD128 vendor: Intel Corporation
wolf-wolf-1  | 21:59:40.172416800 DEBUG | [DOCKER] Using fake-udev, creating /etc/wolf/14820504867156543389/Steam/udev/data
wolf-wolf-1  | 21:59:40.174538532 DEBUG | [WAYLAND] Start feeding app-src
wolf-wolf-1  | 21:59:40.631811001 DEBUG | Starting audio pipeline: pulsesrc device="virtual_sink_14820504867156543389.monitor" server="/tmp/sockets/pulse-socket"
wolf-wolf-1  |  ! audio/x-raw, channels=2 ! opusenc bitrate=48000 bitrate-type=constrained-vbr frame-size=5 bandwidth=fullband
wolf-wolf-1  | audio-type=restricted-lowdelay max-payload-size=1400
wolf-wolf-1  |  ! rtpmoonlightpay_audio name=moonlight_pay packet_duration=5 encrypt=true
wolf-wolf-1  | aes_key="6D9100B578A1A830DD190EF8386AD22F" aes_iv="-857191049"  !
wolf-wolf-1  | udpsink bind-port=48200 host=10.0.20.204 port=61444 sync=true
wolf-wolf-1  | 
wolf-wolf-1  | libinput error: libinput bug: udev device never initialized (/dev/input/event17)
wolf-wolf-1  | libinput error: client bug: Invalid path /dev/input/event17
wolf-wolf-1  | 21:59:44.074931020 DEBUG | RTP server on port: 48100 stopped
wolf-wolf-1  | 21:59:44.075358761 DEBUG | RTP server on port: 48200 stopped
wolf-wolf-1  | libinput error: libinput bug: udev device never initialized (/dev/input/event18)
wolf-wolf-1  | libinput error: client bug: Invalid path /dev/input/event18
wolf-wolf-1  | libinput error: libinput bug: udev device never initialized (/dev/input/event19)
wolf-wolf-1  | libinput error: client bug: Invalid path /dev/input/event19
wolf-wolf-1  | 21:59:48.246218354 DEBUG | [GSTREAMER] Forcing IDR
wolf-wolf-1  | 21:59:48.753205805 INFO  | [DOCKER] Starting container: /WolfSteam_14820504867156543389
wolf-wolf-1  | 21:59:48.753725113 DEBUG | [DOCKER] Starting container: {
wolf-wolf-1  |  id: 51d250ad79785a0b6018b7d57a0750ae3254cc5dcc6f89a8cd58cb4c3ba8fd14
wolf-wolf-1  |  name: /WolfSteam_14820504867156543389
wolf-wolf-1  |  image: ghcr.io/games-on-whales/steam:edge
wolf-wolf-1  |  status: 0
wolf-wolf-1  |  ports: []
wolf-wolf-1  |  mounts: [/tmp/sockets/pulse-socket:/tmp/sockets/pulse-socket:rw, /tmp/sockets/wayland-1:/tmp/sockets/wayland-1:rw, /etc/wolf/14820504867156543389/Steam:/home/retro:rw, /etc/wolf/14820504867156543389/Steam/udev:/run/udev/:rw, /etc/wolf/fake-udev:/usr/bin/fake-udev:ro]
wolf-wolf-1  |  devices: [/dev/dri/card1:/dev/dri/card1:mrw, /dev/dri/renderD128:/dev/dri/renderD128:mrw, /dev/dri/card1:/dev/dri/card1:mrw]
wolf-wolf-1  |  env: ["PROTON_LOG=1", "RUN_GAMESCOPE=true", "GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*", "PULSE_SOURCE=virtual_sink_14820504867156543389.monitor", "GAMESCOPE_REFRESH=60", "INTEL_DEBUG=norbc", "PULSE_SINK=virtual_sink_14820504867156543389", "WAYLAND_DISPLAY=wayland-1", "GAMESCOPE_HEIGHT=1080", "PULSE_SERVER=/tmp/sockets/pulse-socket", "XDG_RUNTIME_DIR=/tmp/sockets", "GAMESCOPE_WIDTH=1920", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "PUID=1000", "PGID=1000", "UMASK=000", "UNAME=retro", "HOME=/home/retro", "TZ=Europe/London", "DEBIAN_FRONTEND=noninteractive", "NEEDRESTART_SUSPEND=1", "GAMESCOPE_VERSION=3.12.5", "BUILD_ARCHITECTURE=amd64", "DEB_BUILD_OPTIONS=noddebs"]
wolf-wolf-1  | }
wolf-wolf-1  | 21:59:48.754321646 DEBUG | [DOCKER] Writing hwdb file: /etc/wolf/14820504867156543389/Steam/udev/data/c13:81
wolf-wolf-1  | 21:59:48.754529415 DEBUG | [DOCKER] Writing hwdb file: /etc/wolf/14820504867156543389/Steam/udev/data/c13:82
wolf-wolf-1  | 21:59:48.754700025 DEBUG | [DOCKER] Executing command: mkdir -p /dev/input && mknod /dev/input/event17 c 13 81 && chmod 777 /dev/input/event17 && fake-udev -m LklOUFVUX0NMQVNTPW1vdXNlAEFDVElPTj1hZGQAQ1VSUkVOVF9UQUdTPTpzZWF0OnVhY2Nlc3M6AERFVk5BTUU9L2Rldi9pbnB1dC9ldmVudDE3AERFVlBBVEg9L2RldmljZXMvdmlydHVhbC9pbnB1dC9pbnB1dDQ5OC9ldmVudDE3AElEX0lOUFVUPTEASURfSU5QVVRfTU9VU0U9MQBJRF9TRVJJQUw9bm9zZXJpYWwATUFKT1I9MTMATUlOT1I9ODEAU0VRTlVNPTcAU1VCU1lTVEVNPWlucHV0AFRBR1M9OnNlYXQ6dWFjY2VzczoAVVNFQ19JTklUSUFMSVpFRD0xNzE3NjI0Nzg4AA==
wolf-wolf-1  | 21:59:48.808000208 DEBUG | [DOCKER] Executing command: mkdir -p /dev/input && mknod /dev/input/event18 c 13 82 && chmod 777 /dev/input/event18 && fake-udev -m LklOUFVUX0NMQVNTPW1vdXNlAEFDVElPTj1hZGQAQ1VSUkVOVF9UQUdTPTpzZWF0OnVhY2Nlc3M6AERFVk5BTUU9L2Rldi9pbnB1dC9ldmVudDE4AERFVlBBVEg9L2RldmljZXMvdmlydHVhbC9pbnB1dC9pbnB1dDQ5OS9ldmVudDE4AElEX0lOUFVUPTEASURfSU5QVVRfVE9VQ0hQQUQ9MQBJRF9TRVJJQUw9bm9zZXJpYWwATUFKT1I9MTMATUlOT1I9ODIAU0VRTlVNPTcAU1VCU1lTVEVNPWlucHV0AFRBR1M9OnNlYXQ6dWFjY2VzczoAVVNFQ19JTklUSUFMSVpFRD0xNzE3NjI0Nzg4AA==
wolf-wolf-1  | 21:59:48.844326878 DEBUG | [DOCKER] Writing hwdb file: /etc/wolf/14820504867156543389/Steam/udev/data/c13:83
wolf-wolf-1  | 21:59:48.844474050 DEBUG | [DOCKER] Executing command: mkdir -p /dev/input && mknod /dev/input/event19 c 13 83 && chmod 777 /dev/input/event19 && fake-udev -m LklOUFVUX0NMQVNTPWtleWJvYXJkAEFDVElPTj1hZGQAQ1VSUkVOVF9UQUdTPTpzZWF0OnVhY2Nlc3M6AERFVk5BTUU9L2Rldi9pbnB1dC9ldmVudDE5AERFVlBBVEg9L2RldmljZXMvdmlydHVhbC9pbnB1dC9pbnB1dDUwMC9ldmVudDE5AElEX0lOUFVUPTEASURfSU5QVVRfS0VZQk9BUkQ9MQBJRF9TRVJJQUw9bm9zZXJpYWwATUFKT1I9MTMATUlOT1I9ODMAU0VRTlVNPTcAU1VCU1lTVEVNPWlucHV0AFRBR1M9OnNlYXQ6dWFjY2VzczoAVVNFQ19JTklUSUFMSVpFRD0xNzE3NjI0Nzg4AA==
wolf-wolf-1  | 22:00:04.452330296 DEBUG | [DOCKER] Container logs: 
wolf-wolf-1  | [2024-06-05 22:59:48] 
wolf-wolf-1  | J[2024-06-05 22:59:48] [ /etc/cont-init.d/10-setup_user.sh: executing... ]
wolf-wolf-1  | 7[2024-06-05 22:59:48] **** Configure default user ****
wolf-wolf-1  | K[2024-06-05 22:59:48] Setting default user uid=1000(retro) gid=1000(retro)
wolf-wolf-1  | 8userdel: ubuntu mail spool (/var/mail/ubuntu) not found
wolf-wolf-1  | Auseradd: warning: the home directory /home/retro already exists.
wolf-wolf-1  | ;useradd: Not copying any file from skel directory into it.
wolf-wolf-1  | +[2024-06-05 22:59:48] Setting umask to 000
wolf-wolf-1  | >[2024-06-05 22:59:48] Ensure retro home directory is writable
wolf-wolf-1  | 9[2024-06-05 22:59:48] Ensure XDG_RUNTIME_DIR is writable
wolf-wolf-1  |  DONE
wolf-wolf-1  | [2024-06-05 22:59:48] 
wolf-wolf-1  | M[2024-06-05 22:59:48] [ /etc/cont-init.d/15-setup_devices.sh: executing... ]
wolf-wolf-1  | 2[2024-06-05 22:59:48] **** Configure devices ****
wolf-wolf-1  | )[2024-06-05 22:59:48] Exec device groups
wolf-wolf-1  | :[2024-06-05 22:59:48] Path '/dev/nvidia*' is not present.
wolf-wolf-1  | L[2024-06-05 22:59:48] Adding user 'retro' to groups: gow-gid-104,video,root
wolf-wolf-1  |  DONE
wolf-wolf-1  | [2024-06-05 22:59:49] 
wolf-wolf-1  | F[2024-06-05 22:59:49] [ /etc/cont-init.d/30-nvidia.sh: executing... ]
wolf-wolf-1  | [2024-06-05 22:59:49] 
wolf-wolf-1  | [2024-06-05 22:59:49] 
wolf-wolf-1  | K[2024-06-05 22:59:49] [ /etc/cont-init.d/init-gamescope.sh: executing... ]
wolf-wolf-1  | 5[2024-06-05 22:59:49] **** Setting up Gamescope ****
wolf-wolf-1  | [2024-06-05 22:59:49] 
wolf-wolf-1  | L[2024-06-05 22:59:49] [ /etc/cont-init.d/system-services.sh: executing... ]
wolf-wolf-1  | *** DBus started ***
wolf-wolf-1  | *** Bluez started ***
wolf-wolf-1  | 'bluetoothd[131]: Bluetooth daemon 5.72
wolf-wolf-1  | Tbluetoothd[131]: src/adapter.c:adapter_init() Failed to access management interface
wolf-wolf-1  | Jbluetoothd[131]: src/main.c:main() Adapter handling initialization failed
wolf-wolf-1  | *** NetworkManager started ***
wolf-wolf-1  | O[2024-06-05 22:59:49] Launching the container's startup script as user 'retro'
wolf-wolf-1  | 3[2024-06-05 22:59:49] Starting Steam with DISPLAY=
wolf-wolf-1  | IClaimed global gamescope stats session at "/tmp/sockets/gamescope-stats"
wolf-wolf-1  | GNo CAP_SYS_NICE, falling back to regular-priority compute and threads.
wolf-wolf-1  | Performance will be affected.
wolf-wolf-1  | Dwlserver: [backend/headless/backend.c:68] Creating headless backend
wolf-wolf-1  | :Couldn't open plugin directory: No such file or directory
wolf-wolf-1  | 1No plugins found, falling back on no decorations
wolf-wolf-1  | pvulkan: physical device 8086:a7a0 compute queue doesn't support presenting on our surface, using graphics queue
wolf-wolf-1  | Nvulkan: selecting physical device 'Intel(R) Graphics (RPL-P)': queue family 0
wolf-wolf-1  | 6vulkan: physical device supports DRM format modifiers
wolf-wolf-1  | 2vulkan: supported DRM formats for sampling usage:
wolf-wolf-1  | vulkan:   AR24 (0x34325241)
wolf-wolf-1  | vulkan:   XR24 (0x34325258)
wolf-wolf-1  | vulkan:   AB24 (0x34324241)
wolf-wolf-1  | vulkan:   XB24 (0x34324258)
wolf-wolf-1  | vulkan:   NV12 (0x3231564E)
wolf-wolf-1  | vulkan:   AB4H (0x48344241)
wolf-wolf-1  | vulkan:   XB4H (0x48344258)
wolf-wolf-1  | vulkan:   AB48 (0x38344241)
wolf-wolf-1  | vulkan:   XB48 (0x38344258)
wolf-wolf-1  | vulkan:   AB30 (0x30334241)
wolf-wolf-1  | vulkan:   XB30 (0x30334258)
wolf-wolf-1  | vulkan:   AR30 (0x30335241)
wolf-wolf-1  | vulkan:   XR30 (0x30335258)
wolf-wolf-1  | >wlserver: Running compositor on wayland display 'gamescope-0'
wolf-wolf-1  | Dwlserver: [backend/headless/backend.c:16] Starting headless backend
wolf-wolf-1  | �wlserver: [xwayland/sockets.c:118] Created /tmp/.X11-unix ourselves -- other users will be unable to create X11 UNIX sockets of their own
wolf-wolf-1  | :wlserver: [xwayland/server.c:108] Starting Xwayland on :0
wolf-wolf-1  | 1The XKEYBOARD keymap compiler (xkbcomp) reports:
wolf-wolf-1  | D> Warning:          Could not resolve keysym XF86CameraAccessEnable
wolf-wolf-1  | E> Warning:          Could not resolve keysym XF86CameraAccessDisable
wolf-wolf-1  | D> Warning:          Could not resolve keysym XF86CameraAccessToggle
wolf-wolf-1  | => Warning:          Could not resolve keysym XF86NextElement
wolf-wolf-1  | A> Warning:          Could not resolve keysym XF86PreviousElement
wolf-wolf-1  | G> Warning:          Could not resolve keysym XF86AutopilotEngageToggle
wolf-wolf-1  | >> Warning:          Could not resolve keysym XF86MarkWaypoint
wolf-wolf-1  | 5> Warning:          Could not resolve keysym XF86Sos
wolf-wolf-1  | :> Warning:          Could not resolve keysym XF86NavChart
wolf-wolf-1  | >> Warning:          Could not resolve keysym XF86FishingChart
wolf-wolf-1  | B> Warning:          Could not resolve keysym XF86SingleRangeRadar
wolf-wolf-1  | @> Warning:          Could not resolve keysym XF86DualRangeRadar
wolf-wolf-1  | >> Warning:          Could not resolve keysym XF86RadarOverlay
wolf-wolf-1  | B> Warning:          Could not resolve keysym XF86TraditionalSonar
wolf-wolf-1  | >> Warning:          Could not resolve keysym XF86ClearvuSonar
wolf-wolf-1  | => Warning:          Could not resolve keysym XF86SidevuSonar
wolf-wolf-1  | 9> Warning:          Could not resolve keysym XF86NavInfo
wolf-wolf-1  | 2Errors from xkbcomp are not fatal to the X server
wolf-wolf-1  | [wlserver: [types/wlr_compositor.c:681] New wlr_surface 0x61ab9a9251c0 (res 0x61ab9a8ff210)
wolf-wolf-1  | 3wlserver: [xwayland/server.c:273] Xserver is ready
wolf-wolf-1  | ;xwm: Failed to load host cursor. Falling back to left_ptr.
wolf-wolf-1  | 4steam.sh[197]: Running Steam on ubuntu 24.04 64-bit
wolf-wolf-1  | 6steam.sh[197]: STEAM_RUNTIME is enabled automatically
wolf-wolf-1  | 5setup.sh[267]: Steam runtime environment up-to-date!
wolf-wolf-1  | 9steam.sh[197]: Steam client's requirements are satisfied
wolf-wolf-1  | 506/05 22:59:49 minidumps folder is set to /tmp/dumps
wolf-wolf-1  | i06/05 22:59:49 Init: Installing breakpad exception handler for appid(steam)/version(1716584667)/tid(332)
wolf-wolf-1  | [wlserver: [types/wlr_compositor.c:681] New wlr_surface 0x61ab9a906810 (res 0x61ab9a901ba0)
wolf-wolf-1  | [[2024-06-05 22:59:49.486] [info] [config.cpp:123] parsing config: '/tmp/mangohud.tdgWYRnZ'
wolf-wolf-1  | T[2024-06-05 22:59:49.514] [error] [cpu.cpp:568] Failed to initialize CPU power data
wolf-wolf-1  | �[2024-06-05 22:59:49.514] [error] [loader_nvctrl.cpp:39] Failed to open 64bit libXNVCtrl.so.0: libXNVCtrl.so.0: cannot open shared object file: No such file or directory
wolf-wolf-1  | P[2024-06-05 22:59:49.514] [error] [nvctrl.cpp:45] XNVCtrl loader failed to load
wolf-wolf-1  | �[2024-06-05 22:59:49.514] [error] [file_utils.cpp:46] Error opening directory '/sys/class/drm/card0/device/hwmon/': No such file or directory
wolf-wolf-1  | ][2024-06-05 22:59:49.514] [info] [overlay.cpp:808] Uploading is disabled (permit_upload = 0)
wolf-wolf-1  | =xwm: Rejecting WM_CHANGE_STATE to ICONIC for window 0x400007
wolf-wolf-1  | �dbus-daemon[196]: [session uid=1000 pid=196] Activating service name='org.freedesktop.portal.IBus' requested by ':1.0' (uid=1000 pid=332 comm="/home/retro/.steam/debian-installation/ubuntu12_32" label="unconfined")
wolf-wolf-1  | jdbus-daemon[196]: [session uid=1000 pid=196] Successfully activated service 'org.freedesktop.portal.IBus'
wolf-wolf-1  | =steamwebhelper.sh[387]: === Wed Jun  5 22:59:50 BST 2024 ===
wolf-wolf-1  | �steamwebhelper.sh[387]: Starting steamwebhelper under bootstrap sniper steam runtime at /home/retro/.steam/debian-installation/ubuntu12_64/steam-runtime-sniper
wolf-wolf-1  | dWARNING: setlocale('en_US.UTF-8') failed, using locale: 'C'. International characters may not work.
wolf-wolf-1  | C[2024-06-05 22:59:49] Startup - updater built May 24 2024 20:46:19
wolf-wolf-1  | �[2024-06-05 22:59:49] Startup - Steam Client launched with: '/home/retro/.steam/debian-installation/ubuntu12_32/steam' '-nominidumps' '-nobreakpad' '-bigpicture'
wolf-wolf-1  | �[2024-06-05 22:59:49] Loading cached metrics from disk (/home/retro/.steam/debian-installation/package/steam_client_metrics.bin)
wolf-wolf-1  | r[2024-06-05 22:59:49] Failed to load cached hosts file (File 'update_hosts_cached.vdf' not found), using defaults
wolf-wolf-1  | W[2024-06-05 22:59:49] Using the following download hosts for Public, Realm steamglobal
wolf-wolf-1  | w[2024-06-05 22:59:49] 1. https://cdn.steamstatic.com, /client/, Realm 'steamglobal', weight was 1, source = 'baked in'
wolf-wolf-1  | 0[2024-06-05 22:59:49] Verifying installation...
wolf-wolf-1  | ,[2024-06-05 22:59:49] Verification complete
wolf-wolf-1  | UpdateUI: skip show logo
wolf-wolf-1  | RSteam logging initialized: directory: /home/retro/.steam/debian-installation/logs
wolf-wolf-1  | 
wolf-wolf-1  | KXRRGetOutputInfo Workaround: initialized with override: 1 real: 0xe201e370
wolf-wolf-1  | IXRRGetCrtcInfo Workaround: initialized with override: 1 real: 0xe201ccc0
wolf-wolf-1  | BCAppInfoCacheReadFromDiskThread took 0 milliseconds to initialize
wolf-wolf-1  | �flock /sys/power/suspend_stats/success LOCK_SH failed. errno = 13Steam Runtime Launch Service: starting steam-runtime-launcher-service
wolf-wolf-1  | PSteam Runtime Launch Service: steam-runtime-launcher-service is running pid 472
wolf-wolf-1  | >bus_name=com.steampowered.PressureVessel.LaunchAlongsideSteam
wolf-wolf-1  | [wlserver: [types/wlr_compositor.c:681] New wlr_surface 0x61ab9a8f9770 (res 0x61ab9a919490)
wolf-wolf-1  | Jxwm: Unhandled NET_WM_STATE property change: _NET_WM_STATE_MAXIMIZED_VERT
wolf-wolf-1  | Jxwm: Unhandled NET_WM_STATE property change: _NET_WM_STATE_MAXIMIZED_HORZ
wolf-wolf-1  | 4xwm: got the same buffer committed twice, ignoring.
wolf-wolf-1  | 1The XKEYBOARD keymap compiler (xkbcomp) reports:
wolf-wolf-1  | ?> Warning:          Unsupported maximum keycode 708, clipping.
wolf-wolf-1  | ;>                   X11 cannot support keycodes above 255.
wolf-wolf-1  | D> Warning:          Could not resolve keysym XF86CameraAccessEnable
wolf-wolf-1  | E> Warning:          Could not resolve keysym XF86CameraAccessDisable
wolf-wolf-1  | D> Warning:          Could not resolve keysym XF86CameraAccessToggle
wolf-wolf-1  | => Warning:          Could not resolve keysym XF86NextElement
wolf-wolf-1  | A> Warning:          Could not resolve keysym XF86PreviousElement
wolf-wolf-1  | G> Warning:          Could not resolve keysym XF86AutopilotEngageToggle
wolf-wolf-1  | >> Warning:          Could not resolve keysym XF86MarkWaypoint
wolf-wolf-1  | 5> Warning:          Could not resolve keysym XF86Sos
wolf-wolf-1  | :> Warning:          Could not resolve keysym XF86NavChart
wolf-wolf-1  | >> Warning:          Could not resolve keysym XF86FishingChart
wolf-wolf-1  | B> Warning:          Could not resolve keysym XF86SingleRangeRadar
wolf-wolf-1  | @> Warning:          Could not resolve keysym XF86DualRangeRadar
wolf-wolf-1  | >> Warning:          Could not resolve keysym XF86RadarOverlay
wolf-wolf-1  | B> Warning:          Could not resolve keysym XF86TraditionalSonar
wolf-wolf-1  | >> Warning:          Could not resolve keysym XF86ClearvuSonar
wolf-wolf-1  | => Warning:          Could not resolve keysym XF86SidevuSonar
wolf-wolf-1  | 9> Warning:          Could not resolve keysym XF86NavInfo
wolf-wolf-1  | 2Errors from xkbcomp are not fatal to the X server
wolf-wolf-1  | [wlserver: [types/wlr_compositor.c:681] New wlr_surface 0x61ab9a9087a0 (res 0x61ab9a91bb60)
wolf-wolf-1  | [wlserver: [types/wlr_compositor.c:681] New wlr_surface 0x61ab9a908b00 (res 0x61ab9a91c580)
wolf-wolf-1  | Qxwm: error 3: BadWindow (invalid Window parameter) request 8 minor 0 serial 2017
wolf-wolf-1  | 4xwm: got the same buffer committed twice, ignoring.
wolf-wolf-1  | 4xwm: got the same buffer committed twice, ignoring.
wolf-wolf-1  | Rxwm: error 3: BadWindow (invalid Window parameter) request 41 minor 0 serial 2246
wolf-wolf-1  | Rxwm: error 3: BadWindow (invalid Window parameter) request 20 minor 0 serial 2804
wolf-wolf-1  | [2024-06-05 23:00:02] Shutdown
wolf-wolf-1  | 
wolf-wolf-1  | 22:00:04.452351707 DEBUG | [DOCKER] Stopping container: /WolfSteam_14820504867156543389
wolf-wolf-1  | 22:00:04.463823110 INFO  | Stopped container: /WolfSteam_14820504867156543389
wolf-wolf-1  | 22:00:04.465738429 DEBUG | [STREAM_SESSION] Remove virtual audio sink
wolf-wolf-1  | 22:00:04.466375306 DEBUG | [PULSE] Removed virtual sink, status: 1
wolf-wolf-1  | 22:00:04.466441935 DEBUG | [GSTREAMER] Stopping pipeline: 14820504867156543389
wolf-wolf-1  | 22:00:04.466465811 DEBUG | [GSTREAMER] Stopping pipeline: 14820504867156543389
wolf-wolf-1  | 22:00:04.466505931 DEBUG | Deleting WaylandSession 14820504867156543389
wolf-wolf-1  | 0:00:32.151299683     1 0x74d974001a60 WARN                audiosrc gstaudiosrc.c:227:audioringbuffer_thread_func:<pulsesrc0> error reading data -1 (reason: Success), skipping segment
wolf-wolf-1  | 22:00:04.493897486 WARN  | [ENET] Received packet from unrecognised client 10.0.20.204:34295
jefflewis commented 4 weeks ago

After a few config tweaks and lots of reboots, I was able to get multiple clients running and playing games. I had one playing Cyberpunk 2077 at near 60fps 😃. The original container config I had was woefully underpowered, so I suspect some of my issues were from the system trying to do too much. I gave it 26GB of RAM and 12 CPU cores and things seemed to start to be more reliable.

I've still seen lots of immediate disconnects when starting up the app for the first time. But continuing to retry does seem to eventually boot into a valid session. I'll get a good log file showing this soon.

I also haven't seen my keyboard and mouse work when connecting from a PC client (vs the mobile devices with gamepads). Could input events 17+ be those perhaps?

Thanks again for your help and hopefully this can be used to help others get a similar setup running.

ABeltramo commented 3 weeks ago

I've still seen lots of immediate disconnects when starting up the app for the first time. But continuing to retry does seem to eventually boot into a valid session. I'll get a good log file showing this soon.

If you could gather those I'd be happy to look into it!

I also haven't seen my keyboard and mouse work when connecting from a PC client (vs the mobile devices with gamepads). Could input events 17+ be those perhaps?

That is very odd.. If gamepads works that means that Wolf is indeed able to create those devices using uinput. They'll too will appear as additional /dev/input/event** and /dev/input/js** in your host, can you check if they are present?

Btw, have you added the /run/udev mount in the LXC container like I've mentioned before?

jefflewis commented 3 weeks ago

If you could gather those I'd be happy to look into it!

It's hard for me to get a good log set for these... I'll get that soon, but after more use, when this errors is when the app is quit and then restarted. Connections on restart can take quite a few connections to get started. I've not seen mid-session dropouts since boosting the container's resource specs.

That is very odd.. If gamepads works that means that Wolf is indeed able to create those devices using uinput. They'll too will appear as additional /dev/input/event and /dev/input/js in your host, can you check if they are present?

Agreed! Here's the listing for /dev and /dev/input for the proxmox host and lxc container

In the proxmox host (pve1):

root@pve1:~# ls /dev/input
by-id    event1   event12  event15  event18  event20  event5  event8  js1     mouse1
by-path  event10  event13  event16  event19  event3   event6  event9  mice
event0   event11  event14  event17  event2   event4   event7  js0     mouse0
root@pve1:~# ls /dev
autofs           i2c-15            nvme0n1    tty15  tty56      udmabuf
block            i2c-16            nvme0n1p1  tty16  tty57      uhid
btrfs-control    i2c-17            nvme0n1p9  tty17  tty58      uinput
bus              i2c-2             nvme1      tty18  tty59      urandom
char             i2c-3             nvme1n1    tty19  tty6       userfaultfd
console          i2c-4             nvme1n1p1  tty2   tty60      userio
core             i2c-5             nvme1n1p9  tty20  tty61      vcs
cpu              i2c-6             nvme2      tty21  tty62      vcs1
cpu_dma_latency  i2c-7             nvme2n1    tty22  tty63      vcs2
cuse             i2c-8             nvme2n1p1  tty23  tty7       vcs3
disk             i2c-9             nvme2n1p2  tty24  tty8       vcs4
dm-0             initctl           nvme2n1p3  tty25  tty9       vcs5
dm-1             input             nvram      tty26  ttyprintk  vcs6
dm-2             iommu             port       tty27  ttyS0      vcsa
dm-3             kmsg              ppp        tty28  ttyS1      vcsa1
dm-4             kvm               pps0       tty29  ttyS10     vcsa2
dm-5             log               pps1       tty3   ttyS11     vcsa3
dm-6             loop0             psaux      tty30  ttyS12     vcsa4
dm-7             loop1             ptmx       tty31  ttyS13     vcsa5
dm-8             loop2             ptp0       tty32  ttyS14     vcsa6
dma_heap         loop3             ptp1       tty33  ttyS15     vcsu
dri              loop4             ptp2       tty34  ttyS16     vcsu1
drm_dp_aux0      loop5             ptp3       tty35  ttyS17     vcsu2
drm_dp_aux1      loop6             pts        tty36  ttyS18     vcsu3
drm_dp_aux2      loop7             pve        tty37  ttyS19     vcsu4
drm_dp_aux3      loop-control      random     tty38  ttyS2      vcsu5
ecryptfs         mapper            rfkill     tty39  ttyS20     vcsu6
fb0              mcelog            rtc        tty4   ttyS21     vfio
fb1              mei0              rtc0       tty40  ttyS22     vga_arbiter
fd               mem               shm        tty41  ttyS23     vhci
full             mqueue            snapshot   tty42  ttyS24     vhost-net
fuse             mtd0              snd        tty43  ttyS25     vhost-vsock
gpiochip0        mtd0ro            stderr     tty44  ttyS26     zd0
hidraw0          net               stdin      tty45  ttyS27     zd16
hidraw1          ng0n1             stdout     tty46  ttyS28     zd16p1
hpet             ng1n1             tpm0       tty47  ttyS29     zd16p2
hugepages        ng2n1             tpmrm0     tty48  ttyS3      zd16p3
hwrng            null              tty        tty49  ttyS30     zero
i2c-0            nvidia0           tty0       tty5   ttyS31     zfs
i2c-1            nvidia-caps       tty1       tty50  ttyS4      zvol
i2c-10           nvidiactl         tty10      tty51  ttyS5
i2c-11           nvidia-modeset    tty11      tty52  ttyS6
i2c-12           nvidia-uvm        tty12      tty53  ttyS7
i2c-13           nvidia-uvm-tools  tty13      tty54  ttyS8
i2c-14           nvme0             tty14      tty55  ttyS9

In the lxc-container running the docker container (dockge):

root@dockge:~# ls /dev/input
by-id    event1   event12  event15  event18  event20  event5  event8  js1     mouse1
by-path  event10  event13  event16  event19  event3   event6  event9  mice
event0   event11  event14  event17  event2   event4   event7  js0     mouse0
root@dockge:~# ls /dev
console  hugepages  null              nvidiactl  stderr  ttyACM0  zero
core     initctl    nvidia-caps       ptmx       stdin   ttyACM1
dri      input      nvidia-modeset    pts        stdout  ttyUSB0
fb0      log        nvidia-uvm        random     tty     ttyUSB1
fd       mqueue     nvidia-uvm-tools  serial     tty1    uinput
full     net        nvidia0           shm        tty2    urandom

Btw, have you added the /run/udev mount in the LXC container like I've mentioned before?

Yep!

Here's the full lxc conf being used:

#<div align='center'><a href='https%3A//Helper-Scripts.com' target='_blank' rel='noopener noreferrer'><img src='https%3A//raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo-81x112.png'/></a>
#
#  # Dockge LXC
#
#  <a href='https%3A//ko-fi.com/D1D7EP4GF'><img src='https%3A//img.shields.io/badge/&#x2615;-Buy me a coffee-blue' /></a>
#  </div>
arch: amd64
cores: 12
features: nesting=1
hostname: dockge
memory: 26624
net0: name=eth0,bridge=vmbr0,hwaddr=BC:24:11:59:13:EA,ip=dhcp,tag=20,type=veth
onboot: 1
ostype: debian
rootfs: local-zfs-2:subvol-306-disk-0,size=300G
swap: 512
tags: proxmox-helper-scripts
lxc.cgroup2.devices.allow: a
lxc.cap.drop: 
lxc.cgroup2.devices.allow: c 188:* rwm
lxc.cgroup2.devices.allow: c 13:* rwm
lxc.cgroup2.devices.allow: c 189:*
lxc.mount.entry: /dev/serial/by-id  dev/serial/by-id  none bind,optional,create=dir
lxc.mount.entry: /dev/ttyUSB0       dev/ttyUSB0       none bind,optional,create=file
lxc.mount.entry: /dev/ttyUSB1       dev/ttyUSB1       none bind,optional,create=file
lxc.mount.entry: /dev/ttyACM0       dev/ttyACM0       none bind,optional,create=file
lxc.mount.entry: /dev/ttyACM1       dev/ttyACM1       none bind,optional,create=file
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD129 dev/dri/renderD129 none bind,optional,create=file
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net dev/net none bind,optional,create=dir
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
lxc.cgroup2.devices.allow: c 10:223 rwm
lxc.mount.entry: /dev/uinput dev/uinput none bind,optional,create=file
lxc.mount.entry: /dev/input dev/input none bind,optional,create=dir
lxc.cgroup2.devices.allow: c 195:* rwm
lxc.cgroup2.devices.allow: c 506:* rwm
lxc.mount.entry: /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry: /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-caps/ dev/nvidia-caps none bind,optional,create=dir
lxc.mount.entry: /dev/nvidia-caps/nvidia-cap1 dev/nvidia-caps/nvidia-cap1 none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-caps/nvidia-cap2 dev/nvidia-caps/nvidia-cap2 none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file
lxc.mount.entry: /run/udev run/udev none bind,optional,create=dir
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file

And here is the lxc container's /run directory listing:

root@dockge:~# ls /run
agetty.reload  dbus               initctl       network          sudo       utmp
containerd     dhclient.eth0.pid  lock          sendsigs.omit.d  systemd
credentials    docker             log           shm              tailscale
crond.pid      docker.pid         motd.dynamic  sshd             udev
crond.reboot   docker.sock        mount         sshd.pid         user
ABeltramo commented 3 weeks ago

I can see that the list of devices under /dev/input is the same in the host and in the LXC container but are those mouse0 and mouse1 the virtual devices from Wolf? Are you checking this whilst running a stream (or at least with an app paused)? Is the same list available inside the Wolf container?
(btw it might be worth continuing this on Discord so that we can go back and forth faster, if you'd like)

jefflewis commented 3 weeks ago

Yea! I'll start a message in the moonlight discord #games-on-whales channel. Thanks again for all of your help!

vinibutturi commented 1 week ago

Hi guys, I also managed to create a Privileged LXC on Proxmox running Wolf.

This is how I did:

On PVE Host

nvidia-smi image

ls -l /dev/nividia* image

If you are missing some devices when listing ls -l /dev/nividia*, you can follow the first part of this guide "Making Sure the NVIDIA GPU Kernel Modules Are Loaded in Proxmox VE 8 Automatically"

If you got an "N", you can enable it by changing the grub config nano /etc/default/grub and adding the "nvidia-drm.modeset=1" to the GRUB_CMDLINE_LINUX_DEFAULT line

image

Then update-grub and reboot.

# Allows Wolf to acces /dev/uinput
KERNEL=="uinput", SUBSYSTEM=="misc", MODE="0660", GROUP="input", OPTIONS+="static_node=uinput"

# Move virtual keyboard and mouse into a different seat
SUBSYSTEMS=="input", ATTRS{id/vendor}=="ab00", MODE="0660", GROUP="input", ENV{ID_SEAT}="seat9"

# Joypads
SUBSYSTEMS=="input", ATTRS{name}=="Wolf X-Box One (virtual) pad", MODE="0660", GROUP="input"
SUBSYSTEMS=="input", ATTRS{name}=="Wolf PS5 (virtual) pad", MODE="0660", GROUP="input"
SUBSYSTEMS=="input", ATTRS{name}=="Wolf gamepad (virtual) motion sensors", MODE="0660", GROUP="input"
SUBSYSTEMS=="input", ATTRS{name}=="Wolf Nintendo (virtual) pad", MODE="0660", GROUP="input"

image

This is what it should look like in the end image

We are done working on the PVE host, start (or restart your LXC).

On LXC

curl https://raw.githubusercontent.com/games-on-whales/gow/master/images/nvidia-driver/Dockerfile | docker build -t gow/nvidia-driver:latest -f - --build-arg NV_VERSION=$(cat /sys/module/nvidia/version) .

and then

docker create --rm --mount source=nvidia-driver-vol,destination=/usr/nvidia gow/nvidia-driver:latest sh

services:
  wolf:
    image: ghcr.io/games-on-whales/wolf:stable
    environment:
      - XDG_RUNTIME_DIR=/tmp/sockets
      - NVIDIA_DRIVER_VOLUME_NAME=nvidia-driver-vol
      - HOST_APPS_STATE_FOLDER=/etc/wolf
      - WOLF_RENDER_NODE=/dev/dri/renderD129
    volumes:
      - /etc/wolf/:/etc/wolf:rw
      - /tmp/sockets:/tmp/sockets:rw
      - /var/run/docker.sock:/var/run/docker.sock:rw
      - /dev/shm:/dev/shm:rw
      - /mnt/input:/dev/input:rw
      - /mnt/udev:/run/udev:rw
      - nvidia-driver-vol:/usr/nvidia:rw
    devices:
      - /dev/dri
      - /dev/uinput
      - /dev/nvidia-uvm
      - /dev/nvidia-uvm-tools
      - /dev/nvidia-caps/nvidia-cap1
      - /dev/nvidia-caps/nvidia-cap2
      - /dev/nvidiactl
      - /dev/nvidia0
      - /dev/nvidia-modeset
    device_cgroup_rules:
      - 'c 13:* rmw'
    network_mode: host
    restart: always

volumes:
  nvidia-driver-vol:
    external: true

pay attention to the highlighted lines, as they differ from the one on the quickstart

image

now a docker compose up should be all that's left for you to enjoy Wolf 😁

Next step is trying to do the same but inside an Unprivileged LXC 🤪