Skip to content

[HELP (Not Launching/ Crashing)] Trainer detected but won't connect #365

Description

@elParaguayo

Checklist

  • I have given details of my install including Distribution, Wayland/ XOrg, Parameters Used, echo $XAUTHORITY, etc.
  • I have provided logs showing any errors, if available (use VERBOSITY=3 ZWIFT_FG=1 zwift)
  • I have filled out the issue template to the best of my ability.
  • This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
  • This issue is not a duplicate issue of previous issue.

Describe the issue

First off, thanks for your work on this. I'm new to Zwift and would love to have this running on my laptop.

The issue I'm facing is that, when trying to connect devices via the Companion App, Zwift shows them as "Connecting..." but never "Connected.".

Image

I have a JetBlack Victory trainer but the error seems different to #234

Zwift Logs

[!] Easily Zwift on linux!
[!] https://github.com/netbrain/zwift
[12:38:20|*] Preparing to launch Zwift
[12:38:20|*] Looking for config file /home/my_username/.config/zwift/config
/home/my_username/.config/zwift/config: line 3: xdg-user-dir: command not found
/home/my_username/.config/zwift/config: line 4: xdg-user-dir: command not found
/home/my_username/.config/zwift/config: line 5: xdg-user-dir: command not found
[12:38:20|✓] Loaded /home/my_username/.config/zwift/config
[12:38:20|*] Looking for config file /home/my_username/.config/zwift/my_username-config
[12:38:20|*] Looking for container tool
[12:38:20|✓] Found container tool: docker (Docker version 29.6.0, build fb59821d45)
[12:38:20|◉] Script was invoked with the following parameters:
[12:38:20|◉]   • declare -r DEBUG="0"
[12:38:20|◉]   • declare -rx VERBOSITY="3"
[12:38:20|◉]   • declare -r CONTAINER_TOOL="docker"
[12:38:20|◉]   • declare -r IMAGE="docker.io/netbrain/zwift"
[12:38:20|◉]   • declare -r VERSION="latest"
[12:38:20|◉]   • declare -r SCRIPT_VERSION="master"
[12:38:20|◉]   • declare -r DONT_CHECK="0"
[12:38:20|◉]   • declare -r DONT_PULL="1"
[12:38:20|◉]   • declare -r DONT_CLEAN="0"
[12:38:20|◉]   • declare -r DRYRUN="0"
[12:38:20|◉]   • declare -r INTERACTIVE="0"
[12:38:20|◉]   • declare -ar CONTAINER_EXTRA_ARGS=([0]="-e" [1]="XCURSOR_SIZE=48")
[12:38:20|◉]   • declare -r ZWIFT_USERNAME="💜💜💜💜💜💜"
[12:38:20|◉]   • declare -r ZWIFT_PASSWORD="💜💜💜💜💜💜"
[12:38:20|◉]   • declare -r ZWIFT_WORKOUT_DIR="/Zwift/Workouts"
[12:38:20|◉]   • declare -r ZWIFT_ACTIVITY_DIR=""
[12:38:20|◉]   • declare -r ZWIFT_LOG_DIR="/Zwift/Logs"
[12:38:20|◉]   • declare -r ZWIFT_SCREENSHOTS_DIR="/Zwift"
[12:38:20|◉]   • declare -r ZWIFT_OVERRIDE_GRAPHICS="1"
[12:38:20|◉]   • declare -r ZWIFT_OVERRIDE_RESOLUTION=""
[12:38:20|◉]   • declare -rx ZWIFT_FG="1"
[12:38:20|◉]   • declare -r ZWIFT_NO_GAMEMODE="0"
[12:38:20|◉]   • declare -r WINE_EXPERIMENTAL_WAYLAND="0"
[12:38:20|◉]   • declare -r NETWORKING="host"
[12:38:20|◉]   • declare -r ZWIFT_UID="1000"
[12:38:20|◉]   • declare -r ZWIFT_GID="1000"
[12:38:20|◉]   • declare -r VGA_DEVICE_FLAG=""
[12:38:20|◉]   • declare -r PRIVILEGED_CONTAINER="0"
[12:38:21|◉]   • declare -rx DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
[12:38:21|◉]   • declare -rx DISPLAY=":0"
[12:38:21|◉]   • declare -rx WAYLAND_DISPLAY="wayland-0"
[12:38:21|◉]   • declare -r XAUTHORITY=""
[12:38:21|◉]   • declare -rx XDG_RUNTIME_DIR="/run/user/1000"
[12:38:21|*] Checking for updated zwift.sh
[12:38:21|✓] You are running the latest zwift.sh 👏
[12:38:21|!] DONT_PULL: Not checking for new container image
[12:38:21|!]   Zwift may fail to launch if you are not using the latest container image
[12:38:21|!]   To update manually, run: docker pull docker.io/netbrain/zwift:latest
[12:38:21|!]   To use a specific version of the image, it is recommended to set VERSION=... instead
[12:38:21|*] Created temporary file for environment variables:
[12:38:21|*]   /tmp/zwift-container.env.2sZFl7Ab3i
[12:38:21|*]   This file will be removed automatically when the script exits
[12:38:21|*] Overriding zwift graphics profiles with /home/my_username/.config/zwift/graphics.txt
[12:38:21|*] Gamemode is not installed, disabling gamemode for Zwift
[12:38:21|!] Not using SELinux, running container in privileged mode to be able to access the GPU
[12:38:21|*] Looking up Zwift password for my_username@gmail.com
[12:38:21|*] Password found for my_username@gmail.com
[12:38:21|*] Could not create secret for password, using environment variable instead
[12:38:21|*] Using X11 window manager (XWayland)
[12:38:21|*] XAUTHORITY environment variable not set, container access to X11 needs to be granted with xhost
[12:38:21|◉] Starting docker container with the following arguments:
[12:38:21|◉] environment variables (/tmp/zwift-container.env.2sZFl7Ab3i):
[12:38:21|◉]   • DEBUG=0
[12:38:21|◉]   • VERBOSITY=3
[12:38:21|◉]   • ZWIFT_UID=1000
[12:38:21|◉]   • ZWIFT_GID=1000
[12:38:21|◉]   • CONTAINER_TOOL=docker
[12:38:21|◉]   • ZWIFT_NO_GAMEMODE=1
[12:38:21|◉]   • COLORED_OUTPUT=0
[12:38:21|◉]   • ZWIFT_USERNAME=💜💜💜💜💜💜
[12:38:21|◉]   • ZWIFT_PASSWORD=💜💜💜💜💜💜
[12:38:21|◉]   • DISPLAY=:0
[12:38:21|◉]   • DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
[12:38:21|◉]   • PULSE_SERVER=/run/user/1000/pulse/native
[12:38:21|◉] docker command:
[12:38:21|◉]   docker run --rm --network host --name zwift-my_username --hostname my_username-laptop --env-file /tmp/zwift-container.env.2sZFl7Ab3i -v zwift-my_username:/home/user/.wine/drive_c/users/user/AppData/Local/Zwift -v /Zwift/Workouts:/home/user/.wine/drive_c/users/user/AppData/Local/Zwift/Workouts -v /Zwift/Logs:/home/user/.wine/drive_c/users/user/AppData/Local/Zwift/Logs -v /Zwift:/home/user/.wine/drive_c/users/user/Pictures/Zwift -v /home/my_username/.config/zwift/graphics.txt:/home/user/.wine/drive_c/Program\ Files\ \(x86\)/Zwift/data/configs/basic.txt -v /home/my_username/.config/zwift/graphics.txt:/home/user/.wine/drive_c/Program\ Files\ \(x86\)/Zwift/data/configs/medium.txt -v /home/my_username/.config/zwift/graphics.txt:/home/user/.wine/drive_c/Program\ Files\ \(x86\)/Zwift/data/configs/high.txt -v /home/my_username/.config/zwift/graphics.txt:/home/user/.wine/drive_c/Program\ Files\ \(x86\)/Zwift/data/configs/ultra.txt --privileged --security-opt label=disable -e XCURSOR_SIZE=48 -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/user/1000/bus:/run/user/1000/bus -v /run/user/1000/pulse:/run/user/1000/pulse --device=/dev/dri:/dev/dri docker.io/netbrain/zwift:latest 
[12:38:21|*] Writing environment variables to temporary file
[12:38:21|✓] Environment variables written to temporary file
[12:38:21|*] Invoking xhost
[12:38:21|✓] Container X11 access provided through xhost
[12:38:21|*] Launching Zwift
[docker|11:38:22|*] Checking file ownership
[docker|11:38:22|✓] Ownership already correct, skipping
[docker|11:38:22|✓] File ownership is correct
[docker|11:38:22|*] Authenticating with Zwift
[docker|11:38:23|*] Starting Zwift launcher using wine
[docker|11:38:25|*] Waiting for ZwiftLauncher.exe to start...
0198:err:ole:CoGetContextToken apartment not initialised
[docker|11:38:26|✓] Zwift launcher started using wine
[docker|11:38:26|*] Starting Zwift using wine
[docker|11:38:26|*] Not using gamemode
0180:err:combase:RoGetActivationFactory Failed to find library for L"Windows.Foundation.Diagnostics.AsyncCausalityTracer"
0180:err:combase:RoGetActivationFactory Failed to find library for L"Windows.Globalization.Calendar"
[docker|11:38:27|*] Waiting for ZwiftApp.exe to start...
[docker|11:38:27|*] Killing Zwift launcher and background tasks
[docker|11:38:27|◉] Killing wine task 'ZwiftLauncher.exe'
[docker|11:38:28|◉] Killing wine task 'ZwiftWindowsCrashHandler.exe'
[docker|11:38:28|◉] Killing wine task 'MicrosoftEdgeUpdate.exe'
[docker|11:38:28|✓] Zwift started using wine
[docker|11:38:28|◉] Waiting for Zwift to exit... (1)
020c:err:combase:RoGetActivationFactory Failed to find library for L"Windows.Globalization.Calendar"
[docker|11:38:33|◉] Waiting for Zwift to exit... (2)
[docker|11:38:39|◉] Waiting for Zwift to exit... (3)
[docker|11:38:44|◉] Waiting for Zwift to exit... (4)
[docker|11:38:49|◉] Waiting for Zwift to exit... (5)
[docker|11:38:54|◉] Waiting for Zwift to exit... (6)
[docker|11:39:00|◉] Waiting for Zwift to exit... (7)
[docker|11:39:05|◉] Waiting for Zwift to exit... (8)
[docker|11:39:10|◉] Waiting for Zwift to exit... (9)
[docker|11:39:15|◉] Waiting for Zwift to exit... (10)
[docker|11:39:20|◉] Waiting for Zwift to exit... (11)
[docker|11:39:26|◉] Waiting for Zwift to exit... (12)
[docker|11:39:31|◉] Waiting for Zwift to exit... (13)
[docker|11:39:36|◉] Waiting for Zwift to exit... (14)
[docker|11:39:42|◉] Waiting for Zwift to exit... (15)
[docker|11:39:48|◉] Waiting for Zwift to exit... (16)
[docker|11:39:53|◉] Waiting for Zwift to exit... (17)
020c:err:combase:RoGetActivationFactory Failed to find library for L"Windows.Devices.Bluetooth.Advertisement.BluetoothLEAdvertisementWatcher"
wine: Call from 00006FFFFF473DE7 to unimplemented function combase.dll.RoUnregisterForApartmentShutdown, aborting
020c:err:combase:RoGetActivationFactory Failed to find library for L"Windows.Devices.Bluetooth.Advertisement.BluetoothLEAdvertisementWatcher"
wine: Call from 00006FFFFF473DE7 to unimplemented function combase.dll.RoUnregisterForApartmentShutdown, aborting
[docker|11:39:59|◉] Waiting for Zwift to exit... (18)
[docker|11:40:04|◉] Waiting for Zwift to exit... (19)
[docker|11:40:10|◉] Waiting for Zwift to exit... (20)
[docker|11:40:15|◉] Waiting for Zwift to exit... (21)
[docker|11:40:20|◉] Waiting for Zwift to exit... (22)
[docker|11:40:26|◉] Waiting for Zwift to exit... (23)
[docker|11:40:31|◉] Waiting for Zwift to exit... (24)
[docker|11:40:36|◉] Waiting for Zwift to exit... (25)
[docker|11:40:42|◉] Waiting for Zwift to exit... (26)
[docker|11:40:47|◉] Waiting for Zwift to exit... (27)
[docker|11:40:52|◉] Waiting for Zwift to exit... (28)
[docker|11:40:58|◉] Waiting for Zwift to exit... (29)
[docker|11:41:03|◉] Waiting for Zwift to exit... (30)
[docker|11:41:09|◉] Waiting for Zwift to exit... (31)
[docker|11:41:14|◉] Waiting for Zwift to exit... (32)
[docker|11:41:19|◉] Waiting for Zwift to exit... (33)
[docker|11:41:25|◉] Waiting for Zwift to exit... (34)
[docker|11:41:30|◉] Waiting for Zwift to exit... (35)
[docker|11:41:35|◉] Waiting for Zwift to exit... (36)
[docker|11:41:41|*] Zwift closed, exiting
[docker|11:41:41|*] Stopping wine server
[12:41:41|✓] Zwift container closed, exiting 🫡
[12:41:41|*] Removed temporary file /tmp/zwift-container.env.2sZFl7Ab3i

Distribution Details

I'm running Arch Linux, qtile window manager with the wayland backend (so I'm running with xwayland). EDIT: I've tested on qtile's X11 backend and get the same behaviour.

Linux my_username-laptop 7.0.13-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue, 23 Jun 2026 11:14:21 +0000 x86_64 GNU/Linux

My ~/.config/zwift/config file is just:

ZWIFT_WORKOUT_DIR="$(xdg-user-dir DOCUMENTS)/Zwift/Workouts"
ZWIFT_LOG_DIR="$(xdg-user-dir DOCUMENTS)/Zwift/Logs"
ZWIFT_SCREENSHOTS_DIR="$(xdg-user-dir PICTURES)/Zwift"
NETWORKING="host"
ZWIFT_OVERRIDE_GRAPHICS="1"
CONTAINER_EXTRA_ARGS=(-e XCURSOR_SIZE=48)
DONT_PULL="1"

XAUTHORITY is not set.

Reproduction steps

  1. Open Zwift Companion
  2. Start Zwift
  3. Select "Pair with phone"
  4. Click on device
  5. Select trainer
  6. Device never connects
    ...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions