On this page
When a core update fails, the router may still be forwarding traffic with the old file. Deleting the core directory removes that recovery option. Identify whether the failure occurred before obtaining the file, during its self-check, or while writing it to the directory so you can preserve working service and decide whether to retry downloading or check the architecture, free space, and system time.
Core update failed: was it the version check, download, verification or file write?
Do not reinstall OpenClash based only on the final message. Work backward from “core missing” or “core update failed” to find the first error. The core handles connections; the official script reads the remote version, downloads and extracts for the CPU architecture, and replaces the live file only after permission checks and the -v self-check pass.
Where to Look Based on the First Error
| Log or symptom | Failure stage | Check first |
|---|---|---|
| Core Version Check Error | Version information lookup | 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 |
- Which scripts and versions these instructions cover
- 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.
- 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.
A working old core provides a fallback when the update fails
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.
Save the old core and working configuration
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 |
GitHub version lookup or TLS request fails: check the system time, curl, and ca-bundle
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.
Correct the router's date, time zone and year, then confirm in the package page that curl and ca-bundle are installed and intact. Do not add -k to curl, disable TLS verification or change version addresses to HTTP; doing so prevents reliable source verification. Save the settings and retry only once, checking the new log for the same error.
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.
Core Update Successful in the log confirms the update completed
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.
After download, gzip verification, extraction, chmod 4755 and the -v check must still pass. Look for Core Update Successful in the log; reaching 100% does not prove the core was replaced. If it stops at Verification, Update or Move, check that specific error.
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.
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.
The manual upload does not run -v or verify hashes or signatures, and replaces the old file directly. Save a working old core beforehand. File saved only confirms file processing. Start only after the status page can read its version; if it cannot, stop and investigate without changing the firewall.
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.
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 -vIf the new core fails to start or load configuration, restore the old core and keep 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 the proxy was enabled, then check 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
