Configuration
Configuration
Section titled “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.
Configuration File
Section titled “Configuration File”The configuration file is located on the SD card at:
sdmc:/config/ryu_ldn_nx/config.iniOn 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.
Reference Configuration
Section titled “Reference Configuration”; ryu_ldn_nx Configuration; Auto-generated on first boot
[server]; Server hostname or IP addresshost = 150.230.119.252; Server portport = 30456; Use TLS encryption (0/1) — NOT IMPLEMENTED: always plain TCP regardless of this settinguse_tls = 0
[network]; Connection timeout in millisecondsconnect_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 = 0Boolean Values
Section titled “Boolean Values”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.
Sections
Section titled “Sections”[server] — Server Connection
Section titled “[server] — Server Connection”| 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.comport = 12345use_tls = 1For self-hosted servers on your LAN:
[server]host = 192.168.1.100port = 30456use_tls = 0[network] — Connection Behavior
Section titled “[network] — Connection Behavior”| 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.
[ldn] — LDN Emulation
Section titled “[ldn] — LDN Emulation”| 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.
[debug] — Logging
Section titled “[debug] — Logging”| 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 |
Applying Changes
Section titled “Applying Changes”After modifying config.ini:
- Save the file
- Use “Force Reconnect” in the Tesla overlay, or
- Reboot your Switch
Some settings (like [server] host/port) require a reconnect. Others (like [debug] level) take effect immediately through the overlay.
Overlay Configuration
Section titled “Overlay Configuration”You can also view and modify some settings through the Tesla overlay:
- Open Tesla Menu (L + DPad Down + Right Stick)
- Select “ryu_ldn_nx”
- Toggle debug mode or force reconnect
See Using the Overlay for more details.