{"record":{"id":"2fddd4b87502300c","repo":"SubtitleEdit/subtitleedit","slug":"faster-whisper-xxl-is-not-available-for-linux-arm6","errorCode":null,"errorMessage":"Faster-Whisper-XXL is not available for Linux ARM64.","messagePattern":"Faster-Whisper-XXL is not available for Linux ARM64\\.","errorType":"exception","errorClass":"PlatformNotSupportedException","httpStatus":null,"severity":"error","filePath":"src/ui/Logic/Download/WhisperDownloadService.cs","lineNumber":81,"sourceCode":"    public async Task DownloadWhisperCppCuBlas(Stream stream, IProgress<float>? progress, CancellationToken cancellationToken)\n    {\n        await DownloadHelper.DownloadFileAsync(_httpClient, GetUrlCuBlas(), stream, progress, cancellationToken);\n    }\n\n    public async Task DownloadWhisperConstMe(Stream stream, IProgress<float>? progress, CancellationToken cancellationToken)\n    {\n        await DownloadHelper.DownloadFileAsync(_httpClient, DownloadUrlConstMe, stream, progress, cancellationToken);\n    }\n\n    public async Task DownloadWhisperPurfviewFasterWhisperXxl(string destinationFileName, IProgress<float>? progress, CancellationToken cancellationToken)\n    {\n        var url = DownloadUrlPurfviewFasterWhisperXxl;\n\n        if (OperatingSystem.IsLinux())\n        {\n            if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64)\n            {\n                throw new PlatformNotSupportedException(\"Faster-Whisper-XXL is not available for Linux ARM64.\");\n            }\n\n            url = DownloadUrlPurfviewFasterWhisperXxlLinux;\n        }\n\n        if (OperatingSystem.IsMacOS())\n        {\n            throw new PlatformNotSupportedException(\"MacOS not supported.\");\n        }\n\n        await DownloadHelper.DownloadFileAsync(_httpClient, url, destinationFileName, progress, cancellationToken);\n    }\n\n    public async Task DownloadWhisperCppVulkan(Stream stream,  Progress<float> progress, CancellationToken cancellationToken)\n    {\n        await DownloadHelper.DownloadFileAsync(_httpClient, GetUrlCppVulkan(), stream, progress, cancellationToken);\n    }\n    ","sourceCodeStart":63,"sourceCodeEnd":99,"githubUrl":"https://github.com/SubtitleEdit/subtitleedit/blob/17a9f0748781032255db3526b7215d2fb891e3af/src/ui/Logic/Download/WhisperDownloadService.cs#L63-L99","documentation":"Thrown by WhisperDownloadService.DownloadWhisperPurfviewFasterWhisperXxl when the process runs on Linux with an ARM64 CPU. The upstream Faster-Whisper-XXL release (Purfview/whisper-standalone-win) only publishes an x64 Linux binary and a Windows binary, so there is no artifact to download for aarch64. The guard fires before any network call, so the download never starts.","triggerScenarios":"Calling DownloadWhisperPurfviewFasterWhisperXxl while OperatingSystem.IsLinux() is true AND RuntimeInformation.ProcessArchitecture == Architecture.Arm64 (e.g. Raspberry Pi 4/5, Ampere Altra, Graviton EC2, Apple Silicon Linux VM).","commonSituations":"Running Subtitle Edit natively on an ARM64 Linux SBC or cloud instance and selecting the Faster-Whisper-XXL engine in the Audio-to-Text dialog. Also hit when a distribution reports aarch64 even on an x64 host through a container/QEMU build.","solutions":["Switch the Whisper engine to one with an ARM64 or universal build (whisper.cpp via GetUrl, which serves a macOS ARM build, or use CTranslate2 on macOS ARM).","Run Subtitle Edit on an x86_64 Linux host or VM where DownloadUrlPurfviewFasterWhisperXxlLinux applies.","If you must use aarch64 Linux, build Faster-Whisper-XXL from source and place the binary in SE's expected location instead of triggering this downloader.","Gate the UI option that exposes Faster-Whisper-XXL behind an architecture check so users on ARM64 Linux never reach this call."],"exampleFix":"// before\nawait _whisperDownload.DownloadWhisperPurfviewFasterWhisperXxl(dest, progress, ct);\n\n// after: guard before invoking so the engine picker never offers it\nif (OperatingSystem.IsLinux() && RuntimeInformation.ProcessArchitecture == Architecture.Arm64)\n{\n    disableEngineOption(WhisperEngine.FasterWhisperXxl);\n}\nelse\n{\n    await _whisperDownload.DownloadWhisperPurfviewFasterWhisperXxl(dest, progress, ct);\n}","handlingStrategy":"validation","validationCode":"bool CanDownloadFasterWhisperXxl() =>\n    !OperatingSystem.IsMacOS() &&\n    !(OperatingSystem.IsLinux() && RuntimeInformation.ProcessArchitecture == Architecture.Arm64);\n\nif (!CanDownloadFasterWhisperXxl()) { /* pick another engine */ }","typeGuard":"static bool IsFasterWhisperXxlSupported() =>\n    OperatingSystem.IsWindows() ||\n    (OperatingSystem.IsLinux() && RuntimeInformation.ProcessArchitecture != Architecture.Arm64);","tryCatchPattern":"try { await svc.DownloadWhisperPurfviewFasterWhisperXxl(dest, progress, ct); }\ncatch (PlatformNotSupportedException ex) when (ex.Message.Contains(\"Faster-Whisper-XXL\"))\n{ /* prompt user to choose whisper.cpp/CTranslate2 */ }","preventionTips":["Gate the Faster-Whisper-XXL engine option in the UI on IsFasterWhisperXxlSupported().","Detect Linux ARM64 and macOS at app startup and disable unsupported engines before the user can select them."],"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"}