On this page
Identify the Failing Stage from the Log First
When OpenClash shows “Core not found” or “Core update failed,” do not reinstall the plugin first. The current official script reads the remote version, downloads an archive for the selected CPU architecture, checks gzip, extracts to a temporary file, grants execute permission, and runs -v. It replaces the installed core only after every step passes. The first explicit error tells you what to check next.
Core Version Check Error means the remote version information could not be read; Core Download Failed means the archive request failed; Core Verification Failed means the downloaded content did not pass the gzip check.
Core Update Failed means extraction, permissions, or the -v self-check failed. Core Move Failed specifically means the verified temporary file could not be placed at the target path. These are different problems.
As of 2026/9/13, the latest stable OpenClash release remains v0.47.156. This guide describes a safe troubleshooting path supported by the current master update script and that stable release; it does not treat one router environment from a single issue as a failure affecting every device.
Where to Look Based on the First Error
| Log or symptom | Failure stage | Check first |
|---|---|---|
| Core Version Check Error | Version metadata | System time, CA certificates, curl, and GitHub access |
| Core Download Failed | Archive download | Network, download timeout, and GitHub address proxy setting |
| Core Verification Failed | Archive verification | Whether the download is an HTML error page, a truncated file, or content from the wrong mirror |
| Core Update Failed | Extraction and execution self-check | CPU architecture, archive format, execute permission, and binary integrity |
| Core Move Failed | Writing to the installed path | Free space, a read-only filesystem, and the target directory |
| No Compiled Version Selected | No architecture selected | Build architecture option on the version update page |
- Read the remote versionRecord Core Version Check Error if this step fails
- Download the architecture-specific packageRequest the official archive using core_version
- Verify and extractPass gzip, extraction, permissions, and -v in sequence
- Move to the target pathOnly a verified temporary file may replace the old core
- Restart and verifyCheck the version, startup log, and a real HTTPS request
Fix only the checkpoint identified by the first failure line. Do not combine download, architecture, storage, and configuration problems into one diagnosis.
Preserve a Working Old Core Before Making Changes
If OpenClash still starts and forwards traffic, do not delete /etc/openclash/core or click Update repeatedly. The official script writes the new file to a temporary path containing .new and the process ID. It overwrites the installed file only after the gzip check, extraction, chmod 4755, and the -v self-check pass. When an automatic update fails, the old core is usually the most reliable rollback point.
First record the active core and its version on the OpenClash status page, then follow the site's upgrade guide to back up UCI settings, configuration files, and overrides. A core file is only a short-term rollback copy for the same device and architecture; it does not replace a configuration backup. Never publicly upload an entire directory containing subscriptions or secrets.
Establish a Rollback Baseline
Stop Repeating the Update
Wait for the current task to finish and retain one complete log so multiple downloads and restarts do not run at the same time.
Record the current state
Record the OpenClash version, active core, core version, selected build architecture, and small-flash mode state.
Back Up the Configuration
Export the current working configuration and OpenClash settings. Redact any copy before sharing it publicly.
Verify the Old Core
Pin the current node and complete one real HTTPS request to confirm the failure is limited to the update rather than existing forwarding already being broken.
Check CPU Architecture, Target Path, Storage, and Time
The current download script reads core_version directly from UCI and uses it in clash-${core_version}.tar.gz. This must be the build architecture offered on the OpenClash version update page, not a similar value guessed from the router's product name. A complete download can still fail at -v when the wrong architecture is selected.
The log in issue #4758 shows both a download timeout and “can only run on an AMD64 processor that supports the v3 microarchitecture.” It demonstrates that this device had at least a network problem and an architecture problem; it does not prove every manual-upload failure is caused by amd64-v3.
In the current official build workflow, both amd64 and amd64-v3 require GOAMD64 v3. x86_64 does not mean the CPU supports v3. If you see v3 unsupported, select amd64-compatible or amd64-v1 on the update page; do not treat plain amd64 as the compatibility build.
In normal mode, the installed target is /etc/openclash/core/clash_meta. In small-flash mode, the automatic update target changes to /tmp/etc/openclash/core/clash_meta. Do not bypass the interface and copy a file into a guessed directory. Check the setting first, then inspect free space on the relevant mount and in /tmp.
uci -q get openclash.config.core_version
uci -q get openclash.config.small_flash_memory
df -h /etc/openclash /tmp
dateHow to Interpret the Results
| Result | Meaning | Action |
|---|---|---|
| core_version is empty or 0 | No downloadable build architecture is selected | Return to the version update page and select an architecture that matches the device |
| The log says the processor is unsupported | The binary architecture or microarchitecture does not match | Restore the old core and select a more compatible official build |
| /etc does not have enough free space | The installed file may not be movable into place | Remove only package caches or logs you have confirmed are unnecessary; do not delete the configuration or old core |
| Small-flash mode is enabled and /tmp is too small | The RAM-backed target cannot hold the new core | Free temporary space or restart before retrying; do not change the automatic target path |
| The system date is clearly wrong | TLS certificate validation may fail | Restore NTP or correct the time manually before retrying the official address |
Fix System Conditions Before Retrying a Version Check or TLS Failure
The official v0.47.156 installation notes list curl and ca-bundle as dependencies. One device in issue #5114 recorded curl 35 TLS connect error and curl 60 certificate has expired while downloading openclash_last_version and clash_last_version, respectively.
That issue is a single-device report without a maintainer-confirmed root cause. It shows only that version files can encounter TLS errors; it does not prove the core archive is missing or that reinstalling ca-bundle will necessarily work.
Confirm the router's time first, then verify on the package page that curl and ca-bundle are installed and intact. Do not add -k to curl, disable TLS validation, or change the version address to HTTP. Those changes remove the source-validation boundary from core updates.
If direct GitHub access is unstable, use the GitHub address proxy option under OpenClash's Override Settings > General Settings. The current script uses this setting to construct an address for the official OpenClash core branch or a supported CDN. Choose only an option offered by the interface that you trust; do not paste an unknown mirror from a forum.
Restore the Version and Download Path
Correct System Time
Let NTP synchronize successfully first, then refresh the page and confirm the date, time zone, and year.
Check Official Dependencies
Confirm on the OpenWrt package page that curl and ca-bundle are installed. Do not mix in a certificate bundle from an unknown source.
Make One Isolated Retry
After saving the settings, run the version or core check once and use the new log to confirm whether the error still stops at the same stage.
Change the Built-In Proxy Option If Needed
Change the GitHub address proxy once using OpenClash's built-in setting, then compare the error and download progress.
Make One Clean Retry Through the Official Update Flow
After architecture, storage, time, and CA certificates are all correct, return to the OpenClash version update page and check the core again. The current script retries up to three times per task and removes this attempt's download and temporary new core before each retry. Do not start a second task while it is still running.
A successful download does not mean the update is complete. The log should then show a successful download, the start of the update, and Core Update Successful in sequence. If it stops at Verification, Update, or Move, handle that stage instead. Reaching 100% does not prove the core was replaced.
The script schedules a restart only after a successful update. Do not change subscriptions, DNS, or the firewall before that restart, because doing so introduces another variable. If the plugin still uses the old version, fully refresh the status page and verify the actual -v output before attempting another replacement.
Minimum Evidence of a Successful Official Retry
- The log contains one core update task with no concurrent retries
- The download passes the gzip check and is extracted
- The temporary core passes chmod 4755 and the -v self-check
- The log shows Core Update Successful, not only a 100% download
- The status page shows the changed core version after the restart
Manually Upload the Core Safely If Automatic Download Still Fails
Manual upload only works around a router that cannot download the official file reliably. It does not fix a wrong architecture, insufficient storage, or an untrusted TLS source. On another trusted device, first obtain the official file from the vernesong/OpenClash core branch that exactly matches the current release branch, Meta type, and core_version.
The filename should correspond to clash-${core_version}.tar.gz as constructed by the automatic script. The upload control is explicitly labeled [Meta] Core File (.tar.gz). Do not rename and upload a ZIP, a custom multi-file archive, or apply this step to Smart or Oix.
Open the upload area in OpenClash Configuration Management and select [Meta] Core File (.tar.gz). The current config.lua extracts the archive in a temporary subdirectory, moves the first regular file to /etc/openclash/core/clash_meta, sets permission 4755, and cleans up the temporary upload directory.
This manual entry point does not run -v, perform a hash check, or verify a signature, and it directly replaces the old file. Save a separate copy of the working core before uploading. File saved means only that file processing completed; it does not prove architecture compatibility or that the core can run.
Small-flash mode, custom firmware, or later versions may handle the core through a link or runtime directory. Treat the current interface's save message, the status page, and -v output as authoritative. If the core is still reported missing after upload, do not cycle through different architectures; return to the previous section and recheck core_version and storage.
Safe Manual Upload Sequence
Confirm the Exact Architecture
Copy core_version from the version update page; do not substitute a CPU brand or product model.
Back Up the Working Core
Before uploading, save a separate copy of the working clash_meta and confirm that it comes from the same device and architecture.
Use Only the Official File
Obtain a single-file .tar.gz from the official OpenClash core branch that matches the architecture, branch, and Meta type. Do not use a third-party repack.
Upload Through Configuration Management
Select [Meta] Core File (.tar.gz) and let the current plugin handle extraction, renaming, and permissions.
Self-Check Before Starting
Confirm that the status page can read the core version before starting OpenClash. If it cannot, stop immediately and do not change the firewall.
Verify the Version, Startup, and Real Traffic After the Update
An upload-success message only confirms that file processing completed. Before starting OpenClash, confirm on the status page that the Meta core file exists, has working execute permissions, and displays a version. If the page still shows a cached result, refresh and read it again instead of uploading again to try your luck.
Then inspect the configuration test, core startup, DNS, and firewall stages in the startup log. Finally, pin a known working node and complete one domain-name lookup and one real HTTPS request. If the core starts but traffic still fails, investigate the configuration, DNS, rules, or node instead of replacing the binary again.
/etc/openclash/core/clash_meta -vFinal Verification Checklist
- The architecture selected on the status page exactly matches the downloaded file
- The core file exists, has valid permissions, and outputs its version
- The startup log no longer shows Version, Download, Verification, Update, or Move Failed
- The configuration test passes and the OpenClash service remains running
- Domain-name resolution succeeds and a real HTTPS request completes
- The old core and configuration backup remain stored in a nonpublic location
If It Still Fails, Roll Back the Core Without Deleting the Configuration
If the new core cannot execute, exits immediately after startup, or breaks a previously working configuration, stop OpenClash first. Restore the old core saved before the repair from the same device and architecture, then let the plugin read its version and start. Do not leave an incompatible new file in the installed path and restart repeatedly, or downgrade the plugin, core, and configuration at the same time.
Automatic updates use a separate temporary path until the new file passes its self-check. If download, verification, or extraction fails, the safest action is usually to stop updating and continue using the old core. If a manual upload overwrote the old core and no backup exists, obtain a known working version for the same architecture from the official core branch. Do not download a file merely named clash_meta from a group chat or cloud drive.
After rollback, verify the version output, startup log, DNS, and HTTPS again. Submit the plugin version, core_version, first failure line, remaining storage, and redacted environment details to an OpenClash issue only after the old core works again and the new-version problem is reproducible.
The old core works after recovery
Stay on the old version while waiting for an official fix or rechecking the new file's architecture; do not keep updating repeatedly.
The old core also cannot execute
Check the target path, permissions, filesystem, and whether the backup uses the same architecture.
The core starts but the configuration test fails
Investigate YAML and core-field compatibility instead of continuing to treat this as a download failure.
The service starts but the device has no internet access
Restore the network state from before system interception, then troubleshoot DNS, the firewall, rules, and the node separately.
References
- OpenClashOpenClash implementation for core version checks, download, verification, and replacement
- OpenClashOpenClash Configuration Management and core-upload implementation
- OpenClashAMD64 build matrix for the OpenClash Meta core
- OpenClashOpenClash v0.47.156 stable release and dependency notes
- OpenClashReport #5114: TLS and certificate errors blocking version-file downloads
- OpenClashReport #4758: download timeout and architecture mismatch
