Scope of this historical document
This document preserves historical instructions for original Clash / Clash Premium to help interpret older configurations. References to “Premium only”, unsupported features, or platform limits do not describe current Mihomo capabilities. Do not use them to overwrite your current client configuration or run permission-related commands.
For Mihomo, consult current Mihomo configuration documentation. For the graphical interface, installation, and permissions, follow the documentation for your specific client.
These are historical questions and answers for original Clash. Report graphical-client issues to that client’s maintainers; use Mihomo issue tracker only after identifying a Mihomo core issue. If you are unsure which project is responsible, check clients and project sources. The original Clash new-issue page is no longer available. Remove subscription tokens, passwords, and other sensitive details from logs and configurations before reporting.
What is the difference between amd64 and amd64-v3?
Quoted from golang/go:
Before Go 1.17, the Go compiler always generated x86 binaries that could run on any 64-bit x86 processor.
Go 1.18 introduced 4 architecture levels for AMD64. Each level defines a different set of x86 instructions that the compiler may include in the generated binary:
- GOAMD64=v1 (default): baseline. Generates only instructions that all 64-bit x86 processors can execute.
- GOAMD64=v2: all v1 instructions, plus CMPXCHG16B, LAHF, SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, and SSSE3.
- GOAMD64=v3: all v2 instructions, plus AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, and OSXSAVE.
- GOAMD64=v4: all v3 instructions, plus AVX512F, AVX512BW, AVX512CD, AVX512DQ, and AVX512VL.
For example, setting
GOAMD64=v3allows the Go compiler to use AVX2 instructions in the generated binary, which may improve performance in some cases. However, such binaries cannot run on older x86 processors without AVX2 support.The Go toolchain may also generate newer instructions guarded by runtime checks, so they run only on capable processors. For example, with
GOAMD64=v1, if CPUID reports that the POPCNT instruction is available, math/bits.OnesCount will still use it; otherwise, it falls back to a generic implementation.The Go toolchain currently does not generate any AVX512 instructions.
Focusing only on the processor is a simplification here. In practice, the entire system—firmware, hypervisor, and kernel—must provide support.
Which build should I use for my system?
Here are several systems commonly used with Clash and the recommended build for each:
- NETGEAR WNDR3700v2: mips-hardfloat #846
- NETGEAR WNDR3800: mips-softfloat #579
- ASUS RT-AC5300: armv5 #2356
- MediaTek MT7620A and MT7621A: mipsle-softfloat (#136)
- mips_24kc: #192
If your device is not listed here, use uname -m to check its CPU architecture, then find the corresponding build on the release page.
Issues that will not be fixed
The original Clash project listed the following features as not planned for implementation or fixes at the time. This does not describe support in current Mihomo or other clients:
The following may be considered when the official Go QUIC library is released:
A node works on the local machine but not on a router or in a container
Your system clock may not be synchronized. Consult your platform's time-synchronization documentation; some protocols may not work correctly when the clock is out of sync.
Time complexity of rule matching
See this discussion: #422
Clash Premium cannot access the Internet
See these related discussions:
Error: unsupported RULE-SET rule type
If you encounter this error message:
FATA[0000] Parse config error: Rules[0] [RULE-SET,apple,REJECT] error: unsupported rule type RULE-SETYou are using the open-source edition of Clash. Rule Providers are currently available only in Premium core.
DNS hijacking does not work
Because tun.auto-route does not intercept LAN traffic, DNS hijacking will not work if your system DNS points to a server on a private subnet. You can:
- Use a non-private DNS server as the system DNS, such as
1.1.1.1 - Or manually set the system DNS to Clash DNS (the default is
198.18.0.1)
