{"record":{"id":"ed8ee86c11ac8253","repo":"SubtitleEdit/subtitleedit","slug":"whisper-cpp-vulkan-build-is-not-available-for-linu","errorCode":null,"errorMessage":"whisper.cpp Vulkan build is not available for Linux ARM64.","messagePattern":"whisper\\.cpp Vulkan build is not available for Linux ARM64\\.","errorType":"exception","errorClass":"PlatformNotSupportedException","httpStatus":null,"severity":"error","filePath":"src/ui/Logic/Download/WhisperDownloadService.cs","lineNumber":151,"sourceCode":"        {\n            return WindowsUrlCppVulkan;\n        }\n\n        throw new PlatformNotSupportedException();\n    }\n    \n    private static string GetUrl()\n    {\n        if (OperatingSystem.IsWindows())\n        {\n            return WindowsUrl;\n        }\n\n        if (OperatingSystem.IsLinux())\n        {\n            if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64)\n            {\n                throw new PlatformNotSupportedException(\"whisper.cpp Vulkan build is not available for Linux ARM64.\");\n            }\n\n            return LinuxUrl;\n        }\n\n        if (OperatingSystem.IsMacOS())\n        {\n            switch (RuntimeInformation.ProcessArchitecture)\n            {\n                case Architecture.Arm64:\n                    return MacArmUrl; // e.g., for M1, M2, M3, M4 chips\n                case Architecture.X64:\n                    return MacX64Url;\n                default:\n                    throw new PlatformNotSupportedException(\"Unsupported macOS architecture.\");\n            }\n        }\n","sourceCodeStart":133,"sourceCodeEnd":169,"githubUrl":"https://github.com/SubtitleEdit/subtitleedit/blob/17a9f0748781032255db3526b7215d2fb891e3af/src/ui/Logic/Download/WhisperDownloadService.cs#L133-L169","documentation":"Thrown by GetUrl (the resolver for DownloadWhisperCpp) specifically when Linux is detected on an ARM64 CPU. whisper.cpp's prebuilt Vulkan Linux package is x86_64-only, so aarch64 Linux has no matching artifact. Other Linux architectures (x64) correctly return LinuxUrl.","triggerScenarios":"Calling DownloadWhisperCpp on Linux where RuntimeInformation.ProcessArchitecture == Architecture.Arm64 (Raspberry Pi, Graviton, Ampere).","commonSituations":"Running Subtitle Edit on an ARM SBC and choosing the default whisper.cpp engine; the Linux branch rejects ARM64 because no Vulkan aarch64 zip exists.","solutions":["Build whisper.cpp from source for ARM64 Linux and place it where SE expects, bypassing this downloader.","Run SE on x86_64 Linux (native or VM) so LinuxUrl applies.","Choose Const-me (Windows only — not applicable on Linux) or a different engine that ships an ARM64 build.","Offer a CPU-only aarch64 build URL by extending GetUrl for the Arm64 case."],"exampleFix":"// before\nif (OperatingSystem.IsLinux())\n{\n    if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64)\n        throw new PlatformNotSupportedException(\"whisper.cpp Vulkan build is not available for Linux ARM64.\");\n    return LinuxUrl;\n}\n\n// after: publish a CPU build for aarch64 and route to it\nif (OperatingSystem.IsLinux())\n{\n    return RuntimeInformation.ProcessArchitecture == Architecture.Arm64\n        ? LinuxArm64CpuUrl\n        : LinuxUrl;\n}","handlingStrategy":"validation","validationCode":"if (OperatingSystem.IsLinux() && RuntimeInformation.ProcessArchitecture == Architecture.Arm64)\n{ /* whisper.cpp Vulkan download unavailable; choose another engine */ }","typeGuard":"static bool WhisperCppDownloadSupported() =>\n    !(OperatingSystem.IsLinux() && RuntimeInformation.ProcessArchitecture == Architecture.Arm64);","tryCatchPattern":"try { await svc.DownloadWhisperCpp(stream, progress, ct); }\ncatch (PlatformNotSupportedException ex) when (ex.Message.Contains(\"Vulkan build is not available\"))\n{ /* build whisper.cpp from source for aarch64 */ }","preventionTips":["Disable the default whisper.cpp engine on Linux ARM64 or supply a CPU aarch64 build.","Detect the architecture at startup to avoid offering unsupported downloads."],"tags":["platform","arm64","linux","whisper","download","architecture"],"backgroundTag":null,"analyzedSha":"17a9f0748781032255db3526b7215d2fb891e3af","analyzedAt":"2026-08-13T18:11:43.374Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}