Skip to content

Configuration

ryu_ldn_nx can be configured via a configuration file on your SD card. The config file is auto-generated with defaults on first boot.

The configuration file is located on the SD card at:

sdmc:/config/ryu_ldn_nx/config.ini

On a PC, this appears as config/ryu_ldn_nx/config.ini on the SD card root.

If the file doesn’t exist, the sysmodule creates it automatically with default values on first boot.

; ryu_ldn_nx Configuration
; Auto-generated on first boot
[server]
; Server hostname or IP address
host = 150.230.119.252
; Server port
port = 30456
; Use TLS encryption (0/1) — NOT IMPLEMENTED: always plain TCP regardless of this setting
use_tls = 0
[network]
; Connection timeout in milliseconds
connect_timeout = 5000
; Ping interval in milliseconds (parsed but not used — server drives pings)
ping_interval = 10000
; Initial reconnect delay in milliseconds (fast retry of 200ms applies first attempt)
reconnect_delay = 3000
; Max reconnect attempts (0 = disable auto-reconnect, not infinite)
max_reconnect_attempts = 5
[ldn]
; Enable LDN emulation (0/1/true/false/yes/no)
enabled = 1
; Room passphrase (empty = public)
passphrase =
; Network interface (empty = auto)
interface =
; Disable P2P proxy (0/1/true/false/yes/no)
disable_p2p = 1
[debug]
; Enable debug logging (0/1/true/false/yes/no)
enabled = 0
; Log level (0=errors, 1=warnings, 2=info, 3=verbose)
level = 1
; Log to file (0/1/true/false/yes/no)
log_to_file = 0
[perf]
; NOT IMPLEMENTED — these settings are NOT parsed and NOT consumed.
; They have no effect. Kept as comments for future reference only.
; enable_larger_socket_buffers = 0
; socket_recv_buffer_kb = 64
; socket_send_buffer_kb = 64
; enable_bg_thread_high_priority = 0
; bg_thread_priority = 8
; enable_tight_drain_loop = 0
; recv_timeout_ms = 20
; bg_thread_sleep_ms = 10
; enable_manager_mutex_release = 0
; enable_async_send_queue = 0

Boolean config keys accept more than just 0 and 1. The parser checks only the first character of the value:

  • false: 0, f, F, n, N (and any string starting with these, e.g. false, False, no, No)
  • true: Anything else (1, true, yes, y, etc.)

This means true, True, yes, Yes, 1 all evaluate to true, while false, False, no, No, 0 evaluate to false. Be careful — invalid values like 2 or hello also evaluate to true.

| Option | Default | Description | |--------|---------|-------------| | host | 150.230.119.252 | Server hostname or IP address | | port | 30456 | Server port number | | use_tls | 0 (false) | ⚠️ Not implemented — always plain TCP regardless of this setting |

To use a different LDN server:

[server]
host = my.custom.server.com
port = 12345
use_tls = 1

For self-hosted servers on your LAN:

[server]
host = 192.168.1.100
port = 30456
use_tls = 0

| Option | Default | Description | |--------|---------|-------------| | connect_timeout | 5000 | TCP connection timeout in milliseconds | | ping_interval | 10000 | ⚠️ Parsed but not used — server drives keepalive pings | | reconnect_delay | 3000 | Initial reconnect delay in milliseconds | | max_reconnect_attempts | 5 | Max reconnect attempts (0 = disable auto-reconnect, not infinite) |

The reconnect system uses a fast first retry (200ms for the first attempt only) before switching to exponential backoff starting at reconnect_delay (default 3s, with 2x multiplier and 30s cap) with ±10% jitter. TCP keepalive is enabled automatically (30s idle / 10s interval / 5 probes).

Note on ping_interval: This key is parsed and stored in config but not consumed by the network client — the server drives keepalive pings. Changing this value has no effect.

Note on max_reconnect_attempts: A value of 0 disables auto-reconnect entirely (the client will not retry after the first failure). For unlimited retries, set a very large number.

| Option | Default | Description | |--------|---------|-------------| | enabled | 1 | Enable/disable LDN emulation | | passphrase | (empty) | Room passphrase for private rooms (empty = public) | | interface | (empty) | Parsed but not used — always auto-detects network interface | | disable_p2p | 1 | Disable P2P proxy (0=enable P2P, 1=relay only) |

Setting disable_p2p = 1 forces relay mode through the server. This is more reliable for most setups but adds server load. Enable P2P (disable_p2p = 0) if UPnP port mapping works on your network — it allows direct peer connections and reduces latency.

| Option | Default | Description | |--------|---------|-------------| | enabled | 0 | Enable debug logging (0=off, 1=on) | | level | 1 | Log level: 0=errors, 1=warnings, 2=info, 3=verbose | | log_to_file | 0 | Write logs to config/ryu_ldn_nx/ryu_ldn_nx.log (0=off, 1=on) |

Log levels:

  • 0 — Errors only (critical issues)
  • 1 — Warnings (potential problems, default)
  • 2 — Info (normal operation events)
  • 3 — Verbose (detailed debug, including packet traces)

At verbose level (3), the log can grow quickly. Read deltas per test run rather than the full file.

[perf] — Performance Tuning (Not Implemented)

Section titled “[perf] — Performance Tuning (Not Implemented)”

Warning: The [perf] section keys are NOT parsed by the INI parser and NOT consumed by the runtime. They are commented out in the example config and included only as reference for future implementation. Changing them has zero effect.

These keys are reserved for future use:

| Option | Description | |--------|-------------| | enable_larger_socket_buffers | Bump socket receive/send buffers to reduce backpressure | | socket_recv_buffer_kb | Socket receive buffer size in KB | | socket_send_buffer_kb | Socket send buffer size in KB | | enable_bg_thread_high_priority | Raise LDN background thread priority | | bg_thread_priority | Thread priority (lower = higher priority) | | enable_tight_drain_loop | Reduce drain loop latency | | recv_timeout_ms | Receive timeout in the tight drain loop | | bg_thread_sleep_ms | Sleep between drain iterations | | enable_manager_mutex_release | Early mutex release in ProxySocketManager | | enable_async_send_queue | Asynchronous send queue for BSD MITM |

After modifying config.ini:

  1. Save the file
  2. Use “Force Reconnect” in the Tesla overlay, or
  3. Reboot your Switch

Some settings (like [server] host/port) require a reconnect. Others (like [debug] level) take effect immediately through the overlay.

You can also view and modify some settings through the Tesla overlay:

  1. Open Tesla Menu (L + DPad Down + Right Stick)
  2. Select “ryu_ldn_nx”
  3. Toggle debug mode or force reconnect

See Using the Overlay for more details.