diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt
index 117336ab64..683d296516 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt
@@ -50,6 +50,7 @@ enum class IntSetting(override val key: String) : AbstractIntSetting {
GPU_UNSWIZZLE_TEXTURE_SIZE("gpu_unswizzle_texture_size"),
GPU_UNSWIZZLE_STREAM_SIZE("gpu_unswizzle_stream_size"),
GPU_UNSWIZZLE_CHUNK_SIZE("gpu_unswizzle_chunk_size"),
+ HOMEBREW_NXLINK_SERVER_MODE("homebrew_nxlink_server_mode"),
BAT_TEMPERATURE_UNIT("bat_temperature_unit"),
CABINET_APPLET("cabinet_applet_mode"),
CONTROLLER_APPLET("controller_applet_mode"),
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
index 7c6063988f..0fc35ef15c 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
@@ -132,6 +132,15 @@ abstract class SettingsItem(
descriptionId = R.string.program_args_description
)
)
+ put(
+ SingleChoiceSetting(
+ IntSetting.HOMEBREW_NXLINK_SERVER_MODE,
+ titleId = R.string.nxlink_server_mode,
+ descriptionId = R.string.nxlink_server_mode_description,
+ choicesId = R.array.nxlinkServerModeEntries,
+ valuesId = R.array.nxlinkServerModeValues
+ )
+ )
put(
SwitchSetting(
BooleanSetting.RENDERER_USE_SPEED_LIMIT,
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
index 81702d7110..9788e7a2c6 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt
@@ -1288,6 +1288,7 @@ class SettingsFragmentPresenter(
add(ShortSetting.DEBUG_KNOBS.key)
add(StringSetting.PROGRAM_ARGS.key)
+ add(IntSetting.HOMEBREW_NXLINK_SERVER_MODE.key)
if (!NativeConfig.isPerGameConfigLoaded()) {
add(HeaderSetting(R.string.gpu_logging_header))
diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml
index 7a69d5b48b..3b70af98e5 100644
--- a/src/android/app/src/main/res/values/arrays.xml
+++ b/src/android/app/src/main/res/values/arrays.xml
@@ -630,6 +630,16 @@
- 3
+
+ - Disabled
+ - Eden Log
+
+
+
+ - 0
+ - 1
+
+
- ""
- ""
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index 3023327f14..2c7b45d3f0 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -436,6 +436,8 @@
Homebrew Args
Command-line arguments passed to homebrew at launch (e.g. -noglsl).
+ nxlink Server
+ Starts a local nxlink server for homebrew stdout/stderr streams.
Device name
diff --git a/src/qt_common/config/shared_translation.cpp b/src/qt_common/config/shared_translation.cpp
index 893e4a0854..05c70ac2f3 100644
--- a/src/qt_common/config/shared_translation.cpp
+++ b/src/qt_common/config/shared_translation.cpp
@@ -302,6 +302,8 @@ std::unique_ptr InitializeTranslations(QObject* parent) {
INSERT(Settings, device_name, tr("Device Name"), tr("The name of the console."));
INSERT(Settings, program_args, tr("Homebrew Args"),
tr("Command-line arguments passed to homebrew at launch (e.g. -noglsl)."));
+ INSERT(Settings, homebrew_nxlink_server_mode, tr("nxlink Server"),
+ tr("Starts a local nxlink server for homebrew stdout/stderr streams."));
INSERT(Settings, custom_rtc, tr("Custom RTC Date:"),
tr("This option allows to change the clock of the console.\n"
"Can be used to manipulate time in games."));
diff --git a/src/yuzu/configuration/configure_debug.cpp b/src/yuzu/configuration/configure_debug.cpp
index 47abf66036..d74542e49b 100644
--- a/src/yuzu/configuration/configure_debug.cpp
+++ b/src/yuzu/configuration/configure_debug.cpp
@@ -67,6 +67,11 @@ void ConfigureDebug::SetConfiguration() {
ui->homebrew_args_edit->setEnabled(runtime_lock);
ui->homebrew_args_edit->setText(
QString::fromStdString(Settings::values.program_args.GetValue()));
+ ui->nxlink_server_mode->setEnabled(runtime_lock);
+ const int nxlink_server_mode =
+ static_cast(Settings::values.homebrew_nxlink_server_mode.GetValue());
+ ui->nxlink_server_mode->setCurrentIndex(
+ nxlink_server_mode < ui->nxlink_server_mode->count() ? nxlink_server_mode : 0);
ui->toggle_console->setEnabled(runtime_lock);
ui->toggle_console->setChecked(UISettings::values.show_console.GetValue());
ui->fs_access_log->setEnabled(runtime_lock);
@@ -116,6 +121,8 @@ void ConfigureDebug::ApplyConfiguration() {
Settings::values.log_flush_line = ui->flush_line->isChecked();
Settings::values.censor_username = ui->censor_username->isChecked();
Settings::values.program_args = ui->homebrew_args_edit->text().toStdString();
+ Settings::values.homebrew_nxlink_server_mode =
+ static_cast(ui->nxlink_server_mode->currentIndex());
Settings::values.enable_fs_access_log = ui->fs_access_log->isChecked();
Settings::values.reporting_services = ui->reporting_services->isChecked();
Settings::values.dump_audio_commands = ui->dump_audio_commands->isChecked();
diff --git a/src/yuzu/configuration/configure_debug.ui b/src/yuzu/configuration/configure_debug.ui
index 4e49c55f37..b68e38e55a 100644
--- a/src/yuzu/configuration/configure_debug.ui
+++ b/src/yuzu/configuration/configure_debug.ui
@@ -309,20 +309,40 @@
Homebrew
-
+
-
-
+
+
+ Arguments String
+
+
+
+ -
+
+
+ -
+
+
+ nxlink Server
+
+
+
+ -
+
+
+ Starts a local nxlink server for homebrew stdout/stderr streams.
+
-
-
-
- Arguments String
-
-
+
+ Disabled
+
-
-
+
+ Eden Log
+
-
+
@@ -800,6 +820,7 @@
extended_logging
open_log_button
homebrew_args_edit
+ nxlink_server_mode
enable_graphics_debugging
enable_shader_feedback
enable_nsight_aftermath