[GH-ISSUE #35] awg-quick: failed to read wg-config with I1-I5 tagged junk strings #15

Open
opened 2026-10-13 21:02:23 +00:00 by bsakaguchi · 4 comments
Owner

Originally created by @yazmeyaa on GitHub (Dec 3, 2025).
Original GitHub issue: https://github.com/amnezia-vpn/amneziawg-tools/issues/35

Issue: Unable to pass I1–I5 parameters into the configuration for awg-quick.
Running awg-quick up results in the following error:

Unable to modify interface: Invalid argument

Context:
Recent MRs indicate that AWG1.5 features were added to amneziawg-tools, so I expected the I1–I5 fields to be handled properly.

Package info:

Name            : amneziawg-tools
Version         : 1.0.20250903-1
OS              : Arch Linux

What I tried:
Added I1–I5 to the [Interface] section:

[Interface]
PrivateKey = ...
Jc = 2
Jmin = 10
Jmax = 50
S1 = 122
S2 = 70
H1 = 481533089
H2 = 1227704386
H3 = 1395057855
H4 = 1202407443

I1 = <b 0x52...
I2 = <b 0x16...
I3 = <b 0x16...
I4 = <b 0x10...
I5 = <b 0x17...

[Peer]
PublicKey = ...
PresharedKey = ...
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = ...
PersistentKeepalive = 25

However, the configuration fails to parse and produces the error above.

Expected behavior:
awg-quick should correctly accept the binary parameters I1–I5 and apply them to the interface.

Actual behavior:
Fails with Invalid argument during interface configuration.

Question:
Is <b 0x…> the correct way to define I1–I5 in the config?
Do these parameters require a different format, or is this a limitation of the current awg-quick implementation?
Is it possible that the AWG1.5 support in amneziawg-tools isn’t fully aligned with the config format yet?

Originally created by @yazmeyaa on GitHub (Dec 3, 2025). Original GitHub issue: https://github.com/amnezia-vpn/amneziawg-tools/issues/35 **Issue:** Unable to pass `I1–I5` parameters into the configuration for `awg-quick`. Running `awg-quick up` results in the following error: ``` Unable to modify interface: Invalid argument ``` **Context:** Recent MRs indicate that AWG1.5 features were added to `amneziawg-tools`, so I expected the `I1–I5` fields to be handled properly. Package info: ``` Name : amneziawg-tools Version : 1.0.20250903-1 OS : Arch Linux ``` **What I tried:** Added `I1–I5` to the `[Interface]` section: ``` [Interface] PrivateKey = ... Jc = 2 Jmin = 10 Jmax = 50 S1 = 122 S2 = 70 H1 = 481533089 H2 = 1227704386 H3 = 1395057855 H4 = 1202407443 I1 = <b 0x52... I2 = <b 0x16... I3 = <b 0x16... I4 = <b 0x10... I5 = <b 0x17... [Peer] PublicKey = ... PresharedKey = ... AllowedIPs = 0.0.0.0/0, ::/0 Endpoint = ... PersistentKeepalive = 25 ``` However, the configuration fails to parse and produces the error above. **Expected behavior:** `awg-quick` should correctly accept the binary parameters `I1–I5` and apply them to the interface. **Actual behavior:** Fails with `Invalid argument` during interface configuration. **Question:** Is `<b 0x…>` the correct way to define `I1–I5` in the config? Do these parameters require a different format, or is this a limitation of the current `awg-quick` implementation? Is it possible that the AWG1.5 support in `amneziawg-tools` isn’t fully aligned with the config format yet?
Author
Owner

@bobonerd commented on GitHub (Dec 8, 2025):

Same issue on ubuntu 24 lts. No error described but it seems that options I1–I5 are ignored. GUI version parses I1–I5 fine on the same PC

<!-- gh-comment-id:3627662380 --> @bobonerd commented on GitHub (Dec 8, 2025): Same issue on ubuntu 24 lts. No error described but it seems that options I1–I5 are ignored. GUI version parses I1–I5 fine on the same PC
Author
Owner

@dmtazetdinov commented on GitHub (Feb 5, 2026):

it's the same for ubuntu (I built it myself and tried to download different versions from the github)

awg-quick up wg0
[#] ip link add wg0 type amneziawg
Error: Unknown device type.
[!] Missing WireGuard (Amnezia VPN) kernel module. Falling back to slow userspace implementation.
[#] amneziawg-go wg0
┌──────────────────────────────────────────────────────────────┐
│                                                              │
│       Running amneziawg-go is not required because this      │
│       kernel has first class support for AmneziaWG. For      │
│       information on installing the kernel module,           │
│       please visit:                                          │
| https://github.com/amnezia-vpn/amneziawg-linux-kernel-module │
│                                                              │
└──────────────────────────────────────────────────────────────┘
[#] awg setconf wg0 /dev/fd/63
Unable to modify interface: Invalid argument
[#] ip link delete dev wg0

Ubuntu 22.04.5 LTS

file /usr/bin/awg
/usr/bin/awg: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=b0b78b63696626f2af64d9d270c52b899f93b6c2, for GNU/Linux 3.2.0, not stripped

awg --version
amneziawg-tools v1.0.20210914 - https://amnezia.org (wtf?, the wrong version is being written)

sha256sum /usr/bin/awg
cf1292dd7882976041362c0d93ae38624b645ff30252a4e990cd1783aa35aab7  /usr/bin/awg (its v1.0.20250903)

amneziawg-go --version
amneziawg-go v0.2.16-2-g449d7cf
[Interface]
Address = 
DNS = 
PrivateKey = 
Table = 
Jc = 
Jmin = 
Jmax = 
S1 = 
S2 = 
H1 = 
H2 = 
H3 = 
H4 = 
I1 = 
I2 = 
I3 = 
I4 = 
I5 = 

PostUp = 
PreDown = 

[Peer]
PublicKey = 
PresharedKey = 
AllowedIPs = 
Endpoint = 
PersistentKeepalive = 

if you comment out the lines (I1..I5), then the config loads and works.

<!-- gh-comment-id:3851364148 --> @dmtazetdinov commented on GitHub (Feb 5, 2026): it's the same for ubuntu (I built it myself and tried to download different versions from the github) ``` awg-quick up wg0 [#] ip link add wg0 type amneziawg Error: Unknown device type. [!] Missing WireGuard (Amnezia VPN) kernel module. Falling back to slow userspace implementation. [#] amneziawg-go wg0 ┌──────────────────────────────────────────────────────────────┐ │ │ │ Running amneziawg-go is not required because this │ │ kernel has first class support for AmneziaWG. For │ │ information on installing the kernel module, │ │ please visit: │ | https://github.com/amnezia-vpn/amneziawg-linux-kernel-module │ │ │ └──────────────────────────────────────────────────────────────┘ [#] awg setconf wg0 /dev/fd/63 Unable to modify interface: Invalid argument [#] ip link delete dev wg0 ``` Ubuntu 22.04.5 LTS ``` file /usr/bin/awg /usr/bin/awg: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=b0b78b63696626f2af64d9d270c52b899f93b6c2, for GNU/Linux 3.2.0, not stripped awg --version amneziawg-tools v1.0.20210914 - https://amnezia.org (wtf?, the wrong version is being written) sha256sum /usr/bin/awg cf1292dd7882976041362c0d93ae38624b645ff30252a4e990cd1783aa35aab7 /usr/bin/awg (its v1.0.20250903) amneziawg-go --version amneziawg-go v0.2.16-2-g449d7cf ``` ``` [Interface] Address = DNS = PrivateKey = Table = Jc = Jmin = Jmax = S1 = S2 = H1 = H2 = H3 = H4 = I1 = I2 = I3 = I4 = I5 = PostUp = PreDown = [Peer] PublicKey = PresharedKey = AllowedIPs = Endpoint = PersistentKeepalive = ``` if you comment out the lines (I1..I5), then the config loads and works.
Author
Owner

@dmtazetdinov commented on GitHub (Feb 14, 2026):

Image in my config, there were such constructions in I1..I5, I regenerated without them and the config worked
<!-- gh-comment-id:3902399298 --> @dmtazetdinov commented on GitHub (Feb 14, 2026): <img width="1052" height="122" alt="Image" src="https://github.com/user-attachments/assets/024a8b12-09d2-49c8-9723-87ca3fe23de0" /> in my config, there were such <r 16><c><t><r 32> constructions in I1..I5, I regenerated without them and the config worked
Author
Owner

@renatica commented on GitHub (Feb 21, 2026):

https://github.com/amnezia-vpn/amneziawg-linux-kernel-module/issues/141#issue-3972612417

also asked a similar question before. the tools don't handle empty strings gracefully. it's unclear how they should be treated in the first place. the kernel module rejects explicit null parameters, the tools refuse to recognize empty lines.

<!-- gh-comment-id:3939328999 --> @renatica commented on GitHub (Feb 21, 2026): https://github.com/amnezia-vpn/amneziawg-linux-kernel-module/issues/141#issue-3972612417 also asked a similar question before. the tools don't handle empty strings gracefully. it's unclear *how* they should be treated in the first place. the kernel module rejects explicit null parameters, the tools refuse to recognize empty lines.
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
amnezia-vpn/amneziawg-tools#15
No description provided.