[OPEN CALL šŸ“£] Bring NymVPN to OpenWRT!

Proposal: Dropping MIPS/ARMv5 Support for Nym VPN OpenWrt

Looking for community feedback on whether to continue supporting older architectures (MIPS, MIPSEL, ARMv5) for the OpenWrt builds.

The Problem

These are 32-bit platforms that lack hardware support for 64-bit atomic operations. Every time an upstream dependency uses AtomicU64 (common in Rust async/networking code), the build breaks and requires manually patching the crate.

We’re already maintaining patches for 5 crates (schemars, coarsetime, prometheus, gateway-client, credential-verification), and boringtun just broke the build. This pattern will continue as the codebase evolves.

Unaffected Architectures

The following targets build cleanly with no patches:

  • x86_64
  • i686
  • aarch64
  • armv7
  • riscv64

Affected Architectures

  • MIPS (mips_24kc) - Atheros/Qualcomm routers
  • MIPSEL (mipsel_24kc, mips_siflower) - MediaTek MIPS, GL.iNet SFT1200
  • ARMv5 (arm_arm926ej-s, arm_cortex-a9) - Legacy ARM devices

These are generally very old / weak router hardware.

Question for the Community

Is anyone running (or planning to run) Nym VPN on MIPS or ARMv5 hardware?

If there’s no significant demand, we’d prefer to drop these targets and focus maintenance effort on the architectures that build cleanly.

Let us know in the poll if you’re using one of the affected platforms.

  • My device is affected
  • My device is not affected
0 voters

Im going to have both, and decided to buy an new one not a glinet

Has an impressive price & Performance relation:

Regards

1 Like

why is the package so fat ~21MB? can it be 6MB?

i tried arm ipk’-s v1.23 for my GL-Inet Flint-v1 no no one has fit. => opkg reports wrong arch for all of them.

Unknown package 'nym-vpn'.
Collected errors:
 * pkg_hash_fetch_best_installation_candidate: Packages for nym-vpn found, but incompatible with the architectures configured
 * opkg_install_cmd: Cannot install package nym-vpn.

while dedicated executable nym-vpnd-armv7 is running and --version is reported ok

nym-vpnd  
Binary Name:        nym-vpnd 
Build Timestamp:    2026-02-06T17:49:22.790270883Z 
Build Version:      1.23.0 
Commit SHA:         VERGEN_IDEMPOTENT_OUTPUT 
Commit Date:        VERGEN_IDEMPOTENT_OUTPUT 
Commit Branch:      VERGEN_IDEMPOTENT_OUTPUT 
rustc Version:      1.93.0 
rustc Channel:      stable 
cargo Profile:      release
  1. nym-vpn_1.23.1_aarch64_cortex-a53.ipk

    sha256:07d3e205eb90d8ca6391b90c2c4103f1be59cb0b99a47cec7ca6e2968eed0403

    22.3 MB last week

  2. nym-vpn_1.23.1_aarch64_generic.ipk

    sha256:c56c08e45977fad8df0cf624c8e5bb706c508b22ef3dcf5d44f7325e8cdf8293

    22.3 MB last week

  3. nym-vpn_1.23.1_arm_cortex-a7_neon-vfpv4.ipk

    sha256:238023c33b6c8d02e4dd34beaa2331072c7bc13aa76c3fbebbbe8fbad3b0352e

    23.7 MB last week

  4. nym-vpn_1.23.1_arm_cortex-a9_vfpv3-d16.ipk

    sha256:4c6aaef508d3c3ecac60e271b9388ffdfcfa5960377b6c0797da02040a87e1d5

    23.7 MB last week

Run this @demiurg:

opkg print-architecture

From what I can tell, GL.inet Flint v1 is aarch64. The standalone armv7 binary runs because the aarch64 kernel can execute 32-bit ARM binaries, but opkg strictly checks package architecture metadata.

aarch64_generic should work. Share the output of the opkg command just to be sure though.

>>> opkg print-architecture
arch all 1
arch noarch 1
arch arm_cortex-a7 10
$ opkg install ./nym-vpn_1.23.1_aarch64_generic.ipk
Unknown package 'nym-vpn'.
Collected errors:
 * pkg_hash_fetch_best_installation_candidate: Packages for nym-vpn found, but incompatible with the architectures configured
 * opkg_install_cmd: Cannot install package nym-vpn.
# opkg install ./nym-vpn_1.23.1_arm_cortex-a7_neon-vfpv4.ipk 
Unknown package 'nym-vpn'.
Collected errors:
 * pkg_hash_fetch_best_installation_candidate: Packages for nym-vpn found, but incompatible with the architectures configured
 * opkg_install_cmd: Cannot install package nym-vpn.

I’ll add arm_cortex-a7 as a target. Will send link here when build finishes. Thanks for bringing this to my attention!

1 Like

@demiurg
Try the arm_cortex-a7 package:

@code-zm installed, testing! thanks!

1 Like

I just released a new version, cleaned up the custom DNS handling.

To install it,

# remove existing nym-vpn package
opkg remove nym-vpn

# install latest
opkg install nym-vpn*.ipk

cannot connect to mixnet, credentials were accepted and account is valid, works on android and linux x64

Sun Feb 15 15:50:04 2026 daemon.info nym-vpnd[19237]: 2026-02-15T15:50:04.735500Z  INFO perform_initial_authentication{gateway=2JAVMSBKVvV5DAw8fsdsUjtaaTcwjzPvm4jMzaLGVzJJ gateway_address=ws://141.227.186.52:9000/}: nym_gateway_client::client: close time.busy=1.97ms time.idle=160ms
Sun Feb 15 15:50:04 2026 daemon.info nym-vpnd[19237]: 2026-02-15T15:50:04.735541Z  INFO nym_gateway_client::client: Claiming more bandwidth with existing credentials. Stop the process now if you don't want that to happen.
Sun Feb 15 15:50:04 2026 daemon.info nym-vpnd[19237]: 2026-02-15T15:50:04.735560Z  WARN nym_gateway_client::client: Not enough bandwidth. Trying to get more bandwidth, this might take a while
Sun Feb 15 15:50:06 2026 daemon.info nym-vpnd[19237]: 2026-02-15T15:50:06.564981Z ERROR nym_gateway_client::client: failed to claim ecash bandwidth with the gateway...: gateway returned an error response: the provided ticket failed to get verified
Sun Feb 15 15:50:06 2026 daemon.info nym-vpnd[19237]: 2026-02-15T15:50:06.565041Z  INFO nym_gateway_client::client: attempting to revert ticket withdrawal...
Sun Feb 15 15:50:06 2026 daemon.info nym-vpnd[19237]: 2026-02-15T15:50:06.566174Z ERROR nym_client_core::client::base_client: Could not authenticate and start up the gateway connection - gateway returned an error response: the provided ticket failed to get verified
Sun Feb 15 15:50:06 2026 daemon.info nym-vpnd[19237]: 2026-02-15T15:50:06.566724Z  WARN nym_registration_client::builder: mixnet build/connect error: failed to connect to mixnet
Sun Feb 15 15:50:06 2026 daemon.info nym-vpnd[19237]: 2026-02-15T15:50:06.567489Z ERROR nym_vpn_lib::tunnel_state_machine::tunnel_monitor: Error: Tunnel monitor exited with error
Sun Feb 15 15:50:06 2026 daemon.info nym-vpnd[19237]: Caused by: tunnel error
Sun Feb 15 15:50:06 2026 daemon.info nym-vpnd[19237]: Caused by: registration client error
Sun Feb 15 15:50:06 2026 daemon.info nym-vpnd[19237]: Caused by: failed to connect to mixnet


for colorized view

and cannot disconnect while CONNECTING… (which looks like endless loop), only service restart works

I will add an option to cancel while connecting.

Can you try logging in again?

nym-vpnc account forget

nym-vpnc account set "your 24 word phrase"

Is there a way to see whether amneziaWg is installed or used by nymvpn? When I search for amnezia in Luci-software i cannot find it (did already restart after installation; gl-inet beryl ax mt-3000, OS information: Linux (OpenWrt 24.10.4) (aarch64), kernel: 6.6.110

greetings

It’s a kernel module, not sure if LuCI shows those in the UI.

To check if you have it do:

lsmod | grep amnezia

This will show you loaded kernel modules (filtered for amnezia). If you see it here, the VPN is using it. Currently the app checks if you have the kernel module, if yes it will use amnezia-wg, if no it will use standard wireguard. Note: you need OpenWrt 23.05+ for amnezia-wg.

Could potentially add an option to toggle between amnezia and standard.

root@klint:~# nym-vpnc account forget
Failed to forget account: internal error: Unable to forget account while connected
Error: internal error: Unable to forget account while connected

it is not connected and account is not set according to GUI info.
seems like a bug

helped service nym-vpnd restart

i also noticed that web page loads about 10seconds, seems to long

1 Like

resetting account did not help connecting........ forever

State: Connecting mix [EvZ7Ud7QV6fkdxo62AE6wXUGajsRP2yk7bZtEPA4VSmi] → [EmUjBBYcvNzEovM7AhxrYXeTJJ4Kg2g2w7sP6V1GDa13], resolving api addresses, try #33

after 7mins

Thats weird, I do have the specs for amnezia, but it didnt load into kernel…
Is there a way to ?

I’ll look into the .ipk packaging step further this weekend. It should install but seems like there’s a bug.