TROUBLESHOOTING
AmneziaWG Won’t Connect? Troubleshooting Steps
AmneziaWG is a WireGuard fork with built-in obfuscation, junk packets, magic header tweaks, and packet-size randomization designed to slip past deep packet…
✓Compatibility First: Client and✓Parameter Mismatches:✓Falling Back to Plain WireGuard to
Quick Answer
AmneziaWG failures are parameter mismatches far more often than network problems. First confirm both ends actually run AmneziaWG, since it is not wire-compatible with plain WireGuard. Then match the obfuscation parameters exactly. HomeIPVPN tunes obfuscation for clients on networks that block standard WireGuard.
- Compatibility: A standard WireGuard client cannot talk to an AmneziaWG server and vice versa. Verify what generated your config.
- Parameters: Jc, Jmin, Jmax, S1 through S4, and H1 through H4 in the Interface section must match exactly on both ends.
- Isolate: Plain WireGuard working with the same keys means obfuscation settings are wrong; plain failing too means network or server config.
- Client support: The AmneziaVPN app and recent GL.iNet firmware support it as a client. The official WireGuard app does not.
AmneziaWG Won't Connect? Troubleshooting Steps
AmneziaWG is a WireGuard fork with built-in obfuscation, junk packets, magic header tweaks, and packet-size randomization designed to slip past deep packet inspection. It's brilliant on networks that throttle or block standard WireGuard. But that extra machinery means extra ways to fail. If you're staring at an AmneziaWG not connecting fix search result, work through these steps in order: most failures are parameter mismatches, not network problems.
> Quick answer: When AmneziaWG won't connect, first confirm both client and server actually support AmneziaWG (it's not interchangeable with plain WireGuard). Then check that the obfuscation parameters (Jc, Jmin, Jmax, S1–S4, H1–H4) match exactly on both ends. If it still fails, test with plain WireGuard using the same keys: if plain works, the issue is obfuscation settings; if plain fails too, it's the underlying network or server config.
Compatibility First: Client and Server Must Both Support It
The number one cause of "AmneziaWG won't connect" is a version mismatch nobody noticed. AmneziaWG is not wire-compatible with standard WireGuard. A standard WireGuard client cannot talk to an AmneziaWG server and vice versa, because the handshake packets are deliberately disguised.
Checklist:
- Server side: Is the server actually running AmneziaWG, or plain WireGuard? GL.iNet routers with recent firmware include AmneziaWG client support, but the server side needs AmneziaWG too: a standard WireGuard server won't understand the obfuscated handshake. AmneziaVPN's own server tools, or a manually built AmneziaWG setup, are the server options.
- Client side: Are you using an AmneziaWG-capable client? The AmneziaVPN app supports it; recent GL.iNet firmware supports it as a client protocol; the official WireGuard app does not.
- Versions: AmneziaWG has evolved, make sure client and server are on compatible releases. A very old client against a new server (or reverse) can fail handshakes silently.
If you inherited a config file from someone, verify what generated it before assuming anything. A .conf that looks like WireGuard but came from an AmneziaWG server will fail in the standard client with zero useful error messages.
Parameter Mismatches: Jc/Jmin/Jmax/S1-S4/H1-H4
AmneziaWG's obfuscation is parameterized, and every parameter must match exactly between client and server. These live in the config's [Interface] section:
| Parameter | What it does | Typical failure symptom |
|---|---|---|
Jc | Number of junk packets sent before the handshake | Handshake never completes |
Jmin / Jmax | Min/max size of junk packets | Handshake intermittently fails |
S1, S2, S3, S4 | Junk packet magic-header values | Silent handshake failure |
H1, H2, H3, H4 | Header modification values | Silent handshake failure |
I1–I5 (newer versions) | Additional init packet parameters | Version-dependent failures |
Debugging procedure:
- Diff the configs. Put the client and server configs side by side and compare every
J,S, andH*value character by character. Copy-paste errors (a transposed digit inS3, a missing parameter) are the classic culprit. - Regenerate cleanly. If the configs came from different tools, regenerate both ends from a single source. AmneziaVPN's server setup generates matched pairs; hand-editing one side afterward is asking for trouble.
- Check for defaults vs. explicit. Some tools omit parameters that equal defaults, others write them explicitly. A missing
Jcon one side might mean "default" while the other side has an explicit different value, treat absent and default as guilty until proven innocent. - Watch the logs. AmneziaWG clients usually log handshake attempts. "Handshake did not complete" with correct keys points at parameters; "no route" or timeouts point at network.
One subtle trap: parameters are negotiated per-peer on the server. If the server config has the right values under the wrong [Peer] section, your client will never match. Verify the parameters sit under your peer entry.
Falling Back to Plain WireGuard to Isolate the Issue
This is the single most useful diagnostic step, and it takes two minutes:
- On the client, create a plain WireGuard tunnel using the same keys, endpoint, and port, just strip out all the AmneziaWG parameters.
- Temporarily enable plain WireGuard on the server for your peer (or test against a plain WireGuard server if you have one).
- Try to connect.
If plain WireGuard connects: your network path, keys, endpoint, and port are all fine. The problem is 100% in the AmneziaWG obfuscation layer: parameters, version mismatch, or a client/server that isn't really AmneziaWG. Go back to the parameter diff with confidence.
If plain WireGuard also fails: stop touching AmneziaWG settings. Your problem is underneath: wrong endpoint or DDNS, port not forwarded, CGNAT at the server, or the local network blocking UDP entirely. Fix the base connectivity first; obfuscation can't help a connection that can't reach the server at all.
If plain WireGuard works but you need obfuscation (DPI-heavy network): try connecting AmneziaWG over TCP if your setup supports it, or test from a different network (phone hotspot) to determine whether the local network is mangling the obfuscated packets specifically.
The Other Usual Suspects
- MTU issues. Obfuscation adds overhead; if the path MTU is small (PPPoE, some tunnels), packets fragment and handshakes die. Try lowering MTU to 1280 on the client as a test.
- Firewall on the server host. The AmneziaWG port must be open in the host firewall, not just forwarded by the router.
iptables/ufwon a Pi or mini PC is a frequent gotcha after a rebuild. - Endpoint staleness. If the server is behind DDNS and the IP changed, the client is shouting into the void. Confirm the hostname resolves to the server's current IP.
- Port confusion. AmneziaWG defaults to the WireGuard port (51820/UDP) unless configured otherwise, make sure client, server, and port-forward rule all agree.
FAQ
What is AmneziaWG?
Why does AmneziaWG fail when WireGuard works?
Can I use the regular WireGuard app with an AmneziaWG server?
Do both ends need the same AmneziaWG version?
Is AmneziaWG slower than WireGuard?
Should I use AmneziaWG all the time or only on restrictive networks?
Need help setting this up?
Obfuscation bugs are miserable to debug alone. Bring yours to a $79 consultation and we'll get your tunnel connecting: https://homeipvpn.com/appointment. The $79 is credited toward the $379 Secure Home IP VPN System session, and the session happens remotely over screen share at your scheduled time.

