Installation and Migration · Clash Technical Blog

How to Fix an OpenClash Core Download Failure

If OpenClash core checks, downloads, verification, or file moves fail, use the first error to check CPU architecture, storage, time, and CA certificates. Recover through official retry options, GitHub download proxying, or manual upload, while keeping the old core and configuration copies.

  • OpenClash
  • Core download
  • CPU architecture
  • TLS
  • Manual upload
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 symptomFailure stageCheck first
Core Version Check ErrorVersion information lookupSystem time, CA certificates, curl, and GitHub access
Core Download FailedArchive downloadNetwork, download timeout, and GitHub address proxy setting
Core Verification FailedArchive verificationWhether the download is an HTML error page, a truncated file, or content from the wrong mirror
Core Update FailedExtraction and execution self-checkCPU architecture, archive format, execute permission, and binary integrity
Core Move FailedWriting to the installed pathFree space, a read-only filesystem, and the target directory
No Compiled Version SelectedNo architecture selectedBuild 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.
Five Checkpoints in an OpenClash Core Update
  1. Read the remote versionRecord Core Version Check Error if this step fails
  2. Download the architecture-specific packageRequest the official archive using core_version
  3. Verify and extractPass gzip, extraction, permissions, and -v in sequence
  4. Move to the target pathOnly a verified temporary file may replace the old core
  5. 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

  1. 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.

  2. Record the current state

    Record the OpenClash version, active core, core version, selected build architecture, and small-flash mode state.

  3. Back Up the Configuration

    Export the current working configuration and OpenClash settings. Redact any copy before sharing it publicly.

  4. 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.

Record Architecture, Storage, and System Time over SSH (Read-Only)
uci -q get openclash.config.core_version
uci -q get openclash.config.small_flash_memory
df -h /etc/openclash /tmp
date

How to Interpret the Results

ResultMeaningAction
core_version is empty or 0No downloadable build architecture is selectedReturn to the version update page and select an architecture that matches the device
The log says the processor is unsupportedThe binary architecture or microarchitecture does not matchRestore the old core and select a more compatible official build
/etc does not have enough free spaceThe installed file may not be movable into placeRemove 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 smallThe RAM-backed target cannot hold the new coreFree temporary space or restart before retrying; do not change the automatic target path
The system date is clearly wrongTLS certificate validation may failRestore 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.

Check the Normal-Mode Core Version over SSH (Read-Only)
/etc/openclash/core/clash_meta -v

If 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