This article is specifically about riding on Zwift 100% solo, even when the default course of the day is full of riders, for example riding on Watopia solo, while 600 other riders are also riding on Watopia.
If you just want to choose a different course to ride, for example riding on Watopia while the default course is Richmond, read the following KB article:
The above article describes how to ride on the "other" (non-default) course, which may not be what you want.
If you want to ride Richmond solo and it's a Richmond day, that workaround won't work, so that's why I came up with the "ApocaZwift©" solution that does give you this capability and doesn't require changing your Zwift configuration or messing with your PC clock date (and all the downstream impacts that brings)
Use ApocaZwift (© David A. Desrosiers, 2015-2020)
The quick-and-dirty way to set up ApocaZwift© is to set up some firewall rules to block (filter) traffic on port 3022 coming to and from Zwift. This lets you ride, create a .fit file and keep the course fast and responsive with no other riders on it. Here's how:
- Turn on the firewall from an elevated command prompt (if you don't know how to open an elevated command prompt, please Google that, as that is out of the scope of this KB article):
netsh advfirewall set publicprofile state on
- Set the rules that restrict Zwift from attaching to the WAN. Make sure these are all entered on the same line. I've wrapped them here for readibility:
netsh advfirewall firewall add rule name="Single User Zwift" dir=out action=block program="C:\Program Files (x86)\Zwift\ZwiftApp.exe" description="Run Zwiftin Single-User Mode (no riders or NPCs)" enable=yes localip=10.0.1.24/0,192.168.1.0/24 remoteip=184.108.40.206 remoteport=3022 protocol=udp
Now you can ride on Zwift with no other riders at all.
- To delete the rule we just created, if needed. You can either choose to leave it in place and enable/disable it as you see fit later, or just remove it by using the following syntax:
netsh advfirewall firewall delete rule name=SingleUserZwift
Apple OS X
- Set the rule to drop all incoming rider data:
# These next 3 lines are all one single command, but wrapped here for clarity (sudo pfctl -sr 2>/dev/null; echo "block drop quick on en0 \ proto udp from 220.127.116.11 to 10.0.1.0/24 port = 3022") \ | sudo pfctl -f - 2>/dev/null
- Validate that the rule is in the list of rules to be executed:
$ sudo pfctl -s rules -v No ALTQ support in kernel ALTQ related functions disabled block drop quick on en0 inet proto udp from 18.104.22.168 to 10.0.1.0/24 port = 3022 [ Evaluations: 1480 Packets: 0 Bytes: 0 States: 0 ] [ Inserted: uid 0 pid 80892 ]
- Enable the rule we just created:
$ sudo pfctl -e No ALTQ support in kernel ALTQ related functions disabled pf enabled
- Removing the rule we just created, to restore our configuration:
$ sudo pfctl -vF rules No ALTQ support in kernel ALTQ related functions disabled rules cleared