![]() |
Sunshine latest
Self-hosted game stream host for Moonlight.
|
Sunshine will work with the default settings for most users. In some cases you may want to configure Sunshine further.
The default location for the configuration file is listed below. You can use another location if you choose, by passing in the full configuration file path as the first argument when you start Sunshine.
Example
The default location of the apps.json
is the same as the configuration file. You can use a custom location by modifying the configuration file.
Default Config Directory
OS | Location |
---|---|
Docker | /config
|
Linux | ~/.config/sunshine
|
macOS | ~/.config/sunshine
|
Windows | %ProgramFiles%\\Sunshine\\config
|
Although it is recommended to use the configuration UI, it is possible manually configure Sunshine by editing the conf
file in a text editor. Use the examples as reference.
Description | The locale used for Sunshine's user interface. | |
Default | en
| |
Example | locale = en
| |
Choices | bg | Bulgarian |
de | German | |
en | English | |
en_GB | English (UK) | |
en_US | English (United States) | |
es | Spanish | |
fr | French | |
it | Italian | |
ja | Japanese | |
ko | Korean | |
pl | Polish | |
pt | Portuguese | |
pt_BR | Portuguese (Brazilian) | |
ru | Russian | |
sv | Swedish | |
tr | Turkish | |
uk | Ukranian | |
zh | Chinese (Simplified) |
Description | The name displayed by Moonlight. | |
Default | PC hostname | |
Example | sunshine_name = Sunshine
|
Description | The minimum log level printed to standard out. | |
Default | info
| |
Example | min_log_level = info
| |
Choices | verbose | All logging message.
|
debug | Debug log messages and higher.
| |
info | Informational log messages and higher. | |
warning | Warning log messages and higher. | |
error | Error log messages and higher. | |
fatal | Only fatal log messages. | |
none | No log messages. |
Description | A list of commands to be run before/after all applications. If any of the prep-commands fail, starting the application is aborted. | |
Default | []
| |
Example | global_prep_cmd = [{"do":"nircmd.exe setdisplay 1280 720 32 144","undo":"nircmd.exe setdisplay 2560 1440 32 144"}]
|
Description | Whether to be notified of new pre-release versions of Sunshine. | |
Default | disabled
| |
Example | notify_pre_releases = disabled
|
Description | Whether to allow controller input from the client. | |
Default | enabled
| |
Example | controller = enabled
|
Description | The type of gamepad to emulate on the host. | |
Default | auto
| |
Example | gamepad = auto
| |
Choices | ds4 | DualShock 4 controller (PS4)
|
ds5 | DualShock 5 controller (PS5)
| |
switch | Switch Pro controller
| |
x360 | Xbox 360 controller
| |
xone | Xbox One controller
|
Description | Allow Select/Back inputs to also trigger DS4 touchpad click. Useful for clients looking to emulate touchpad click on Xinput devices.
| |
Default | enabled
| |
Example | ds4_back_as_touchpad_click = enabled
|
Description | If a client reports that a connected gamepad has motion sensor support, emulate it on the host as a DS4 controller. When disabled, motion sensors will not be taken into account during gamepad type selection.
| |
Default | enabled
| |
Example | motion_as_ds4 = enabled
|
Description | If a client reports that a connected gamepad has a touchpad, emulate it on the host as a DS4 controller. When disabled, touchpad presence will not be taken into account during gamepad type selection.
| |
Default | enabled
| |
Example | touchpad_as_ds4 = enabled
|
Description | If the Back/Select button is held down for the specified number of milliseconds, a Home/Guide button press is emulated.
| |
Default | -1
| |
Example | back_button_timeout = 2000
|
Description | Whether to allow keyboard input from the client. | |
Default | enabled
| |
Example | keyboard = enabled
|
Description | The initial delay, in milliseconds, before repeating keys. Controls how fast keys will repeat themselves. | |
Default | 500
| |
Example | key_repeat_delay = 500
|
Description | How often keys repeat every second.
| |
Default | 24.9
| |
Example | key_repeat_frequency = 24.9
|
Description | Sending scancodes enhances compatibility with games and apps but may result in incorrect keyboard input from certain clients that aren't using a US English keyboard layout. Enable if keyboard input is not working at all in certain applications. Disable if keys on the client are generating the wrong input on the host.
| |
Default | enabled
| |
Example | always_send_scancodes = enabled
|
Description | It may be possible that you cannot send the Windows Key from Moonlight directly. In those cases it may be useful to make Sunshine think the Right Alt key is the Windows key. | |
Default | disabled
| |
Example | key_rightalt_to_key_win = enabled
|
Description | Whether to allow mouse input from the client. | |
Default | enabled
| |
Example | mouse = enabled
|
Description | When enabled, Sunshine will pass through high resolution scroll events from Moonlight clients. This can be useful to disable for older applications that scroll too fast with high resolution scroll events. | |
Default | enabled
| |
Example | high_resolution_scrolling = enabled
|
Description | When enabled, Sunshine will pass through native pen/touch events from Moonlight clients. This can be useful to disable for older applications without native pen/touch support. | |
Default | enabled
| |
Example | native_pen_touch = enabled
|
Description | Sometimes it may be useful to map keybindings. Wayland won't allow clients to capture the Win Key for example.
| |
Default | [
0x10, 0xA0,
0x11, 0xA2,
0x12, 0xA4
]
| |
Example | keybindings = [
0x10, 0xA0,
0x11, 0xA2,
0x12, 0xA4,
0x4A, 0x4B
]
|
Description | The name of the audio sink used for audio loopback.
| |
Default | Sunshine will select the default audio device. | |
Example (Linux) | audio_sink = alsa_output.pci-0000_09_00.3.analog-stereo
| |
Example (macOS) | audio_sink = BlackHole 2ch
| |
Example (Windows) | audio_sink = Speakers (High Definition Audio Device)
|
Description | The audio device that's virtual, like Steam Streaming Speakers. This allows Sunshine to stream audio, while muting the speakers.
| |
Default | n/a | |
Example | virtual_sink = Steam Streaming Speakers
|
Description | Installs the Steam Streaming Speakers driver (if Steam is installed) to support surround sound and muting host audio.
| |
Default | enabled
| |
Example | install_steam_audio_drivers = enabled
|
Description | Select the video card you want to stream.
| |
Default | Sunshine will select the default video card. | |
Example (Linux) | adapter_name = /dev/dri/renderD128
| |
Example (Windows) | adapter_name = Radeon RX 580 Series
|
Description | Select the display number you want to stream.
| |
Default | Sunshine will select the default display. | |
Example (Linux) | output_name = 0
| |
Example (macOS) | output_name = 3
| |
Example (Windows) | output_name = {daeac860-f4db-5208-b1f5-cf59444fb768}
|
Description | Perform mandatory verification and additional configuration for the display device.
| |
Default | verify_only
| |
Example | dd_configuration_option = ensure_only_display
| |
Choices | disabled | Perform no additional configuration (disables all dd_ configuration options). |
verify_only | Verify that display is active only (this is a mandatory step without any extra steps to verify display state). | |
ensure_active | Activate the display if it's currently inactive. | |
ensure_primary | Activate the display if it's currently inactive and make it primary. | |
ensure_only_display | Activate the display if it's currently inactive and disable all others. |
Description | Perform additional resolution configuration for the display device.
| |
Default | auto
| |
Example | dd_resolution_option = manual
| |
Choices | disabled | Perform no additional configuration. |
auto | Change resolution to the requested resolution from the client. | |
manual | Change resolution to the user specified one (set via dd_manual_resolution). |
Description | Specify manual resolution to be used.
| |
Default | n/a | |
Example | dd_manual_resolution = 1920x1080
|
Description | Perform additional refresh rate configuration for the display device.
| |
Default | auto
| |
Example | dd_refresh_rate_option = manual
| |
Choices | disabled | Perform no additional configuration. |
auto | Change refresh rate to the requested FPS value from the client. | |
manual | Change refresh rate to the user specified one (set via dd_manual_refresh_rate). |
Description | Specify manual refresh rate to be used.
| |
Default | n/a | |
Example | dd_manual_resolution = 120
dd_manual_resolution = 59.95
|
Description | Perform additional HDR configuration for the display device.
| |
Default | auto
| |
Example | dd_hdr_option = disabled
| |
Choices | disabled | Perform no additional configuration. |
auto | Change HDR to the requested state from the client if the display supports it. |
Description | When using virtual display device as for streaming, it might display incorrect (high-contrast) color. With this option enabled, Sunshine will try to mitigate this issue.
| |
Default | disabled
| |
Example | dd_wa_hdr_toggle = enabled
|
Description | Additional delay in milliseconds to wait before reverting configuration when the app has been closed or the last session terminated. Main purpose is to provide a smoother transition when quickly switching between apps.
| |
Default | 3000
| |
Example | dd_config_revert_delay = 1500
|
Description | Remap the requested resolution and FPS to another display mode. Depending on the dd_resolution_option and dd_refresh_rate_option values, the following mapping groups are available:
requested_* field is left empty, it will match everything.If final_* field is left empty, the original value will not be remapped and either a requested, manual or current value is used. However, at least one final_* must be set, otherwise the entry is considered invalid.
| |
Default | dd_mode_remapping = {
"mixed": [],
"resolution_only": [],
"refresh_rate_only": []
}
| |
Example | dd_mode_remapping = {
"mixed": [
{
"requested_fps": "60",
"final_refresh_rate": "119.95",
"requested_resolution": "1920x1080",
"final_resolution": "2560x1440"
},
{
"requested_fps": "60",
"final_refresh_rate": "120",
"requested_resolution": "",
"final_resolution": ""
}
],
"resolution_only": [
{
"requested_resolution": "1920x1080",
"final_resolution": "2560x1440"
}
],
"refresh_rate_only": [
{
"requested_fps": "60",
"final_refresh_rate": "119.95"
}
]
}
|
Description | Sunshine will use this factor to calculate the minimum time between frames. Increasing this value may help when streaming mostly static content.
| |
Default | 1
| |
Range | 1-3 | |
Example | min_fps_factor = 1
|
Description | Sunshine will attempt to open ports for streaming over the internet. | |
Default | disabled
| |
Example | upnp = enabled
|
Description | Set the address family that Sunshine will use. | |
Default | ipv4
| |
Example | address_family = both
| |
Choices | ipv4 | IPv4 only |
both | IPv4+IPv6 |
Description | Set the family of ports used by Sunshine. Changing this value will offset other ports as shown in config UI. | |
Default | 47989
| |
Range | 1029-65514 | |
Example | port = 47989
|
Description | The origin of the remote endpoint address that is not denied for HTTPS Web UI. | |
Default | lan
| |
Example | origin_web_ui_allowed = lan
| |
Choices | pc | Only localhost may access the web ui |
lan | Only LAN devices may access the web ui | |
wan | Anyone may access the web ui |
Description | If no external IP address is given, Sunshine will attempt to automatically detect external ip-address. | |
Default | Automatic | |
Example | external_ip = 123.456.789.12
|
Description | This determines when encryption will be used when streaming over your local network.
| |
Default | 0
| |
Example | lan_encryption_mode = 0
| |
Choices | 0 | encryption will not be used |
1 | encryption will be used if the client supports it | |
2 | encryption is mandatory and unencrypted connections are rejected |
Description | This determines when encryption will be used when streaming over the Internet.
| |
Default | 1
| |
Example | wan_encryption_mode = 1
| |
Choices | 0 | encryption will not be used |
1 | encryption will be used if the client supports it | |
2 | encryption is mandatory and unencrypted connections are rejected |
Description | How long to wait, in milliseconds, for data from Moonlight before shutting down the stream. | |
Default | 10000
| |
Example | ping_timeout = 10000
|
Description | The application configuration file path. The file contains a JSON formatted list of applications that can be started by Moonlight. | |
Default | apps.json
| |
Example | file_apps = apps.json
|
Description | The file where user credentials for the UI are stored. | |
Default | sunshine_state.json
| |
Example | credentials_file = sunshine_state.json
|
Description | The path where the Sunshine log is stored. | |
Default | sunshine.log
| |
Example | log_path = sunshine.log
|
Description | The private key used for the web UI and Moonlight client pairing. For best compatibility, this should be an RSA-2048 private key.
| |
Default | credentials/cakey.pem
| |
Example | pkey = /dir/pkey.pem
|
Description | The certificate used for the web UI and Moonlight client pairing. For best compatibility, this should have an RSA-2048 public key.
| |
Default | credentials/cacert.pem
| |
Example | cert = /dir/cert.pem
|
Description | The file where current state of Sunshine is stored. | |
Default | sunshine_state.json
| |
Example | file_state = sunshine_state.json
|
Description | Percentage of error correcting packets per data packet in each video frame.
| |
Default | 20
| |
Range | 1-255 | |
Example | fec_percentage = 20
|
Description | Quantization Parameter. Some devices don't support Constant Bit Rate. For those devices, QP is used instead.
| |
Default | 28
| |
Example | qp = 28
|
Description | Minimum number of CPU threads used for encoding.
| |
Default | 2
| |
Example | min_threads = 2
|
Description | Allows the client to request HEVC Main or HEVC Main10 video streams.
| |
Default | 0
| |
Example | hevc_mode = 2
| |
Choices | 0 | advertise support for HEVC based on encoder capabilities (recommended) |
1 | do not advertise support for HEVC | |
2 | advertise support for HEVC Main profile | |
3 | advertise support for HEVC Main and Main10 (HDR) profiles |
Description | Allows the client to request AV1 Main 8-bit or 10-bit video streams.
| |
Default | 0
| |
Example | av1_mode = 2
| |
Choices | 0 | advertise support for AV1 based on encoder capabilities (recommended) |
1 | do not advertise support for AV1 | |
2 | advertise support for AV1 Main 8-bit profile | |
3 | advertise support for AV1 Main 8-bit and 10-bit (HDR) profiles |
Description | Force specific screen capture method. | |
Default | Automatic. Sunshine will use the first capture method available in the order of the table above. | |
Example | capture = kms
| |
Choices | nvfbc | Use NVIDIA Frame Buffer Capture to capture direct to GPU memory. This is usually the fastest method for NVIDIA cards. NvFBC does not have native Wayland support and does not work with XWayland.
|
wlr | Capture for wlroots based Wayland compositors via DMA-BUF.
| |
kms | DRM/KMS screen capture from the kernel. This requires that Sunshine has cap_sys_admin capability.
| |
x11 | Uses XCB. This is the slowest and most CPU intensive so should be avoided if possible.
| |
ddx | Use DirectX Desktop Duplication API to capture the display. This is well-supported on Windows machines.
| |
wgc | (beta feature) Use Windows.Graphics.Capture to capture the display.
|
Description | Force a specific encoder. | |
Default | Sunshine will use the first encoder that is available. | |
Example | encoder = nvenc
| |
Choices | nvenc | For NVIDIA graphics cards |
quicksync | For Intel graphics cards | |
amdvce | For AMD graphics cards | |
vaapi | Use Linux VA-API (AMD, Intel) | |
software | Encoding occurs on the CPU |
Description | NVENC encoder performance preset. Higher numbers improve compression (quality at given bitrate) at the cost of increased encoding latency. Recommended to change only when limited by network or decoder, otherwise similar effect can be accomplished by increasing bitrate.
| |
Default | 1
| |
Example | nvenc_preset = 1
| |
Choices | 1 | P1 (fastest) |
2 | P2 | |
3 | P3 | |
4 | P4 | |
5 | P5 | |
6 | P6 | |
7 | P7 (slowest) |
Description | Enable two-pass mode in NVENC encoder. This allows to detect more motion vectors, better distribute bitrate across the frame and more strictly adhere to bitrate limits. Disabling it is not recommended since this can lead to occasional bitrate overshoot and subsequent packet loss.
| |
Default | quarter_res
| |
Example | nvenc_twopass = quarter_res
| |
Choices | disabled | One pass (fastest) |
quarter_res | Two passes, first pass at quarter resolution (faster) | |
full_res | Two passes, first pass at full resolution (slower) |
Description | Assign higher QP values to flat regions of the video. Recommended to enable when streaming at lower bitrates.
| |
Default | disabled
| |
Example | nvenc_spatial_aq = disabled
|
Description | Single-frame VBV/HRD percentage increase. By default Sunshine uses single-frame VBV/HRD, which means any encoded video frame size is not expected to exceed requested bitrate divided by requested frame rate. Relaxing this restriction can be beneficial and act as low-latency variable bitrate, but may also lead to packet loss if the network doesn't have buffer headroom to handle bitrate spikes. Maximum accepted value is 400, which corresponds to 5x increased encoded video frame upper size limit.
| |
Default | 0
| |
Range | 0-400 | |
Example | nvenc_vbv_increase = 0
|
Description | Use realtime gpu scheduling priority in NVENC when hardware accelerated gpu scheduling (HAGS) is enabled in Windows. Currently, NVIDIA drivers may freeze in encoder when HAGS is enabled, realtime priority is used and VRAM utilization is close to maximum. Disabling this option lowers the priority to high, sidestepping the freeze at the cost of reduced capture performance when the GPU is heavily loaded.
| |
Default | enabled
| |
Example | nvenc_realtime_hags = enabled
|
Description | Adaptive P-State algorithm which NVIDIA drivers employ doesn't work well with low latency streaming, so Sunshine requests high power mode explicitly.
| |
Default | enabled
| |
Example | nvenc_latency_over_power = enabled
|
Description | Sunshine can't capture fullscreen OpenGL and Vulkan programs at full frame rate unless they present on top of DXGI. With this option enabled Sunshine changes global Vulkan/OpenGL present method to "Prefer layered on DXGI Swapchain". This is system-wide setting that is reverted on Sunshine program exit.
| |
Default | enabled
| |
Example | nvenc_opengl_vulkan_on_dxgi = enabled
|
Description | Prefer CAVLC entropy coding over CABAC in H.264 when using NVENC. CAVLC is outdated and needs around 10% more bitrate for same quality, but provides slightly faster decoding when using software decoder.
| |
Default | disabled
| |
Example | nvenc_h264_cavlc = disabled
|
Description | The encoder preset to use.
| |
Default | medium
| |
Example | qsv_preset = medium
| |
Choices | veryfast | fastest (lowest quality) |
faster | faster (lower quality) | |
fast | fast (low quality) | |
medium | medium (default) | |
slow | slow (good quality) | |
slower | slower (better quality) | |
veryslow | slowest (best quality) |
Description | The entropy encoding to use.
| |
Default | auto
| |
Example | qsv_coder = auto
| |
Choices | auto | let ffmpeg decide |
cabac | context adaptive binary arithmetic coding - higher quality | |
cavlc | context adaptive variable-length coding - faster decode |
Description | This options enables use of HEVC on older Intel GPUs that only support low power encoding for H.264.
| |
Default | disabled
| |
Example | qsv_slow_hevc = disabled
|
Description | The encoder usage profile is used to set the base set of encoding parameters.
| |
Default | ultralowlatency
| |
Example | amd_usage = ultralowlatency
| |
Choices | transcoding | transcoding (slowest) |
webcam | webcam (slow) | |
lowlatency_high_quality | low latency, high quality (fast) | |
lowlatency | low latency (faster) | |
ultralowlatency | ultra low latency (fastest) |
Description | The encoder rate control.
| |
Default | vbr_latency
| |
Example | amd_rc = vbr_latency
| |
Choices | cqp | constant qp mode |
cbr | constant bitrate | |
vbr_latency | variable bitrate, latency constrained | |
vbr_peak | variable bitrate, peak constrained |
Description | Enable Hypothetical Reference Decoder (HRD) enforcement to help constrain the target bitrate.
| |
Default | disabled
| |
Example | amd_enforce_hrd = disabled
|
Description | The quality profile controls the tradeoff between speed and quality of encoding.
| |
Default | balanced
| |
Example | amd_quality = balanced
| |
Choices | speed | prefer speed |
balanced | balanced | |
quality | prefer quality |
Description | Preanalysis can increase encoding quality at the cost of latency.
| |
Default | disabled
| |
Example | amd_preanalysis = disabled
|
Description | Variance Based Adaptive Quantization (VBAQ) can increase subjective visual quality by prioritizing allocation of more bits to smooth areas compared to more textured areas.
| |
Default | enabled
| |
Example | amd_vbaq = enabled
|
Description | The entropy encoding to use.
| |
Default | auto
| |
Example | amd_coder = auto
| |
Choices | auto | let ffmpeg decide |
cabac | context adaptive binary arithmetic coding - faster decode | |
cavlc | context adaptive variable-length coding - higher quality |
Description | The entropy encoding to use.
| |
Default | auto
| |
Example | vt_coder = auto
| |
Choices | auto | let ffmpeg decide |
cabac | context adaptive binary arithmetic coding - faster decode | |
cavlc | context adaptive variable-length coding - higher quality |
Description | Force Video Toolbox to use software encoding.
| |
Default | auto
| |
Example | vt_software = auto
| |
Choices | auto | let ffmpeg decide |
disabled | disable software encoding | |
allowed | allow software encoding | |
forced | force software encoding |
Description | Realtime encoding.
| |
Default | enabled
| |
Example | vt_realtime = enabled
|
Description | Enabling this option can avoid dropped frames over the network during scene changes, but video quality may be reduced during motion.
| |
Default | disabled
| |
Example | vaapi_strict_rc_buffer = enabled
|
Description | The encoder preset to use.
| |
Default | superfast
| |
Example | sw_preset = superfast
| |
Choices | ultrafast | fastest |
superfast | ||
veryfast | ||
faster | ||
fast | ||
medium | ||
slow | ||
slower | ||
veryslow | slowest |
Description | The tuning preset to use.
| |
Default | zerolatency
| |
Example | sw_tune = zerolatency
| |
Choices | film | use for high quality movie content; lowers deblocking |
animation | good for cartoons; uses higher deblocking and more reference frames | |
grain | preserves the grain structure in old, grainy film material | |
stillimage | good for slideshow-like content | |
fastdecode | allows faster decoding by disabling certain filters | |
zerolatency | good for fast encoding and low-latency streaming |