From f549564c61a4c5b7a6fba12ddea5a03aa5d27cff Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Wed, 7 Oct 2026 12:15:56 +0000 Subject: [PATCH] Driver table: the NVIDIA 617.42 and AMD 26.9.2 rows measured on igneum-build-2 (sha256, size, Authenticode subject from the vendors' own files); the stray #[test] above the Intel test's doc comment removed NVIDIA GeForce Game Ready 617.42 WHQL (6 October 2026): us.download.nvidia.com/Windows/617.42/..., 990,853,168 bytes, sha256 f115c927..., subject CN=NVIDIA Corporation (DigiCert G4). AMD Software Adrenalin 26.9.2 WHQL (29 September 2026, the win11-b build): drivers.amd.com/drivers/whql-amd-software-adrenalin-edition-26.9.2-win11-b.exe (an amd.com Referer required), 1,000,800,840 bytes, sha256 593c1d73..., subject CN=Advanced Micro Devices (Sectigo). Read on the box: curl, sha256sum, the PKCS7 out of the PE security directory through openssl pkcs7 -print_certs. The table's placeholders are gone: every row installs. The drivertable test sample, the mock and the view test name the real NVIDIA release. detect.rs:990 carried a #[test] above the doc comment of the Intel test from the cherry-pick, the test build's one warning ("duplicated attribute"): removed. Co-Authored-By: Claude Fable 5.1 (cherry picked from commit afafbcd52e69eab3b52c5253d2538cc5cc2b1a14) --- app/igneum-app/src/detect.rs | 1 - app/igneum-app/src/drivertable.rs | 6 +++--- app/igneum-app/ui/view.test.mjs | 4 ++-- docs/plans/driver-check.md | 8 ++++---- packaging/ota/drivers.json | 20 ++++++++++---------- tools/ui-mock/server.mjs | 4 ++-- 6 files changed, 21 insertions(+), 22 deletions(-) diff --git a/app/igneum-app/src/detect.rs b/app/igneum-app/src/detect.rs index 59627df31..1c637b8e6 100644 --- a/app/igneum-app/src/detect.rs +++ b/app/igneum-app/src/detect.rs @@ -987,7 +987,6 @@ mod tests { assert!(diff.removed.is_empty()); } - #[test] /// The first Intel card (the B580 on PC 1, 7 October 2026, docs/plans/intel-arc.md): the Arc driver's OpenCL /// platform lists it as "Intel(R) Arc(TM) B580 Graphics" under vendor "Intel(R) Corporation" (the line shape is /// the worker's; the device name and vendor string are Intel's documented forms, approximate until the PC 1 job diff --git a/app/igneum-app/src/drivertable.rs b/app/igneum-app/src/drivertable.rs index 553be7d81..0444c51ff 100644 --- a/app/igneum-app/src/drivertable.rs +++ b/app/igneum-app/src/drivertable.rs @@ -243,7 +243,7 @@ mod tests { use super::*; const TABLE: &str = r#"{"updated":"2026-10-07","vendors":{ - "nvidia":{"min_version":"570.00","version":"581.57","url":"https://us.download.nvidia.com/Windows/581.57/581.57-desktop-win10-win11-64bit-international-dch-whql.exe","size":1012345678,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hash_source":"https://www.nvidia.com/en-us/drivers/details/","args":["-s","-noreboot"],"reboot_codes":[1],"signer":"NVIDIA","linux_package":"nvidia-driver-570","hive_package":"nvidia-driver-update 570"}, + "nvidia":{"min_version":"570.00","version":"617.42","url":"https://us.download.nvidia.com/Windows/617.42/617.42-desktop-win10-win11-64bit-international-dch-whql.exe","size":990853168,"sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","hash_source":"https://www.nvidia.com/en-us/drivers/details/","args":["-s","-noreboot"],"reboot_codes":[1],"signer":"NVIDIA","linux_package":"nvidia-driver-570","hive_package":"nvidia-driver-update 570"}, "amd":{"min_version":"32.0.32000.0","version":"26.9.2","url":"https://drivers.amd.com/drivers/whql-amd-software-adrenalin-edition-26.9.2-win10-win11-sep2026.exe","size":912345678,"sha256":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","hash_source":"https://www.amd.com/en/support/download/drivers.html","args":["-install","-silent"],"reboot_codes":[3010],"signer":"Advanced Micro Devices","linux_package":"amdgpu-install --usecase=opencl"}, "intel":{"min_version":"32.0.101.9034","version":"32.0.101.9034","url":"https://downloadmirror.intel.com/929959/gfx_win_101.9034.exe","size":932631144,"sha256":"72ba7eea08a0cc18650603976ff9433dfdf84d23d4cbbee662a4df9f2856ae98","hash_source":"https://www.intel.com/content/www/us/en/download/785597/","args":["-s"],"reboot_codes":[14,1014],"signer":"Intel","linux_package":"intel-opencl-icd"}}}"#; @@ -298,10 +298,10 @@ mod tests { assert_eq!(o.text, "Install the Intel Arc driver 32.0.101.9034 (889 MB). Driver 32.0.101.6733 is older than the 32.0.101.9034 the worker needs."); let o = offer_for("intel", "32.0.101.9034", Some(&t), "windows").unwrap(); assert_eq!((o.status.as_str(), o.installable, o.text.as_str()), ("fine", false, "Intel Arc driver 32.0.101.9034: fine.")); - let o = offer_for("nvidia", "581.57", Some(&t), "windows").unwrap(); + let o = offer_for("nvidia", "617.42", Some(&t), "windows").unwrap(); assert_eq!(o.status, "fine"); let o = offer_for("nvidia", "566.36", Some(&t), "windows").unwrap(); - assert_eq!(o.text, "Install the NVIDIA driver 581.57 (965 MB). Driver 566.36 is older than the 570.00 the worker needs."); + assert_eq!(o.text, "Install the NVIDIA driver 617.42 (945 MB). Driver 566.36 is older than the 570.00 the worker needs."); let o = offer_for("amd", "32.0.21042.62", Some(&t), "windows").unwrap(); assert_eq!(o.status, "old"); assert!(o.text.starts_with("Install the AMD driver 26.9.2 (870 MB).")); diff --git a/app/igneum-app/ui/view.test.mjs b/app/igneum-app/ui/view.test.mjs index 2d015d2aa..636eff103 100644 --- a/app/igneum-app/ui/view.test.mjs +++ b/app/igneum-app/ui/view.test.mjs @@ -95,7 +95,7 @@ test('driver-check: the row\'s driver strip per state (offer, running, reboot, e assert.equal(w.button, 'install'); assert.ok(w.text.startsWith('The Intel Arc driver did not install: sha256 mismatch'), w.text); // another vendor\'s install does not touch this row - w = V.driverWords(arc, { drivers: { status: 'downloading', vendor: 'nvidia', version: '581.57', progress: 0.1 } }); + w = V.driverWords(arc, { drivers: { status: 'downloading', vendor: 'nvidia', version: '617.42', progress: 0.1 } }); assert.equal(w.kind, 'offer'); // a note (macOS, Linux, HiveOS): no button const mac = card({ vendor: 'apple', kind: 'apple', driver_offer: { vendor: 'apple', status: 'none', text: 'Apple silicon: no driver step, macOS carries it.', installable: false } }); @@ -105,7 +105,7 @@ test('driver-check: the row\'s driver strip per state (offer, running, reboot, e const linux = card({ driver_offer: { vendor: 'nvidia', status: 'missing', text: 'Linux: install the package nvidia-driver-570 (the worker needs 570.00 or newer).', installable: false } }); assert.equal(V.driverWords(linux, idle).kind, 'note'); // fine: nothing on the row (the details panel carries the sentence) - const fine = card({ driver_os: '581.57', driver_offer: { vendor: 'nvidia', status: 'fine', text: 'NVIDIA driver 581.57: fine.', installable: false } }); + const fine = card({ driver_os: '617.42', driver_offer: { vendor: 'nvidia', status: 'fine', text: 'NVIDIA driver 617.42: fine.', installable: false } }); assert.equal(V.driverWords(fine, idle).kind, 'fine'); // no table: nothing assert.equal(V.driverWords(card({ driver_offer: null }), idle).kind, 'none'); diff --git a/docs/plans/driver-check.md b/docs/plans/driver-check.md index 7233bfcab..55bb50ccb 100644 --- a/docs/plans/driver-check.md +++ b/docs/plans/driver-check.md @@ -23,8 +23,8 @@ The captures (the installed Mac window's `--snapshot` on the mock, 1280 x 900, l | Vendor | min_version | On offer | Source | State | |---|---|---|---|---| | Intel | 32.0.101.9034 (the Arc driver the worker's rotate rewrite is proven on) | 32.0.101.9034, 932,631,144 bytes, sha256 72ba7eea... | downloadmirror.intel.com/929959, Intel's page 785597 (SHA512 printed there; the sha256 read on PC 1 on 7 October) | measured, live | -| NVIDIA | 570.00 (CUDA 12.8) | 581.57, approximate size, sha256 of zeros | us.download.nvidia.com, the driver page prints the sha256 | placeholder: the app refuses to install it (the download's sha256 never matches) until the hash is read from the page and written here | -| AMD | 32.0.32000.0 (Adrenalin 25.x) | 26.9.2, approximate size, sha256 of zeros | drivers.amd.com, the download page prints the sha256 | placeholder, the same | +| NVIDIA | 570.00 (CUDA 12.8) | 617.42 (GeForce Game Ready WHQL, 6 October 2026), 990,853,168 bytes, sha256 f115c927... | us.download.nvidia.com/Windows/617.42; Authenticode CN=NVIDIA Corporation (DigiCert G4) | measured on igneum-build-2, live | +| AMD | 32.0.32000.0 (Adrenalin 25.x) | 26.9.2 (WHQL, 29 September 2026, the win11-b build), 1,000,800,840 bytes, sha256 593c1d73... | drivers.amd.com (an amd.com Referer required); Authenticode CN=Advanced Micro Devices (Sectigo) | measured on igneum-build-2, live | Apple: none. The exit codes: Intel 14 and 1014 (the bootstrapper's wrap, measured on PC 1), NVIDIA 1 (approximate: NVIDIA's installer returns 1 for "restart required" in silent mode), AMD 3010 (the MSI code, approximate). A wrong code reads as an error on the row and the install is marked failed, never as a success; the table fixes it without an app cut. @@ -39,10 +39,10 @@ Apple: none. The exit codes: Intel 14 and 1014 (the bootstrapper's wrap, measure | A rig | one install at a time (the engine refuses a second while one runs); each card's row carries its own offer | | A pool user | nothing changes | -Sizes: the installers are 870 MB to 1 GB each; the download lands in `/drivers/` and stays (a second click reuses it when its sha256 still matches). Time: the download at a home line of 50 Mbit/s is 2.5 to 3 minutes; the install 1 to 4 minutes; the prompt is the only wait on the user. +Sizes: the installers are 889 MB to 1.0 GB each; the download lands in `/drivers/` and stays (a second click reuses it when its sha256 still matches). Time: the download at a home line of 50 Mbit/s is 2.5 to 3 minutes; the install 1 to 4 minutes; the prompt is the only wait on the user. ## 4. Not done, and what follows -- The NVIDIA and AMD rows' hashes: read from the vendors' pages and written into `drivers.json`, then published with `publish-manifest.sh --drivers packaging/ota/drivers.json`. Until then those two rows are refused by the app's own check. +- The table's publish: `publish-manifest.sh --drivers packaging/ota/drivers.json` with the 0.3.21 manifest (the shipper's step); every row is measured. - The Linux install path stays a line (the brief). - A PC 1 dry run of the Windows path (the installer not run, the download and the checks live) is one `IGNEUM_DRIVER_DRY_RUN=1` engine start away; not run today (PC 1 is the project lead's desk and mines). diff --git a/packaging/ota/drivers.json b/packaging/ota/drivers.json index 347b9aeda..a6a8b1b5b 100644 --- a/packaging/ota/drivers.json +++ b/packaging/ota/drivers.json @@ -1,14 +1,14 @@ { "updated": "2026-10-07", - "note": "The per-vendor driver table (branch driver-check). The app installs a driver on one click from the vendor's own server, checked against the sha256 and the Authenticode signature; it never ships one. The Intel row is measured (PC 1, 7 October 2026: the file's sha256 after the SHA512 Intel prints matched). The NVIDIA and AMD rows carry the release version read from the vendor's page on 7 October 2026 with their sizes approximate and a placeholder sha256 of zeros, which the app refuses to install (the download's sha256 never matches): they go live when the file's sha256 is read from the vendor's page and written here. A row's min_version is what the worker needs (NVIDIA: CUDA 12.8 = driver 570 or newer; AMD: Adrenalin 25.x = 32.0.32000 or newer; Intel: the Arc driver with the rotate fold the worker rewrites, 32.0.101.9034 or newer).", + "note": "The per-vendor driver table (branch driver-check). The app installs a driver on one click from the vendor's own server, checked against the sha256 and the Authenticode signature; it never ships one. Every row's sha256, size and signer were read from the file fetched from the vendor's own server on 7 October 2026 (Intel on PC 1 after the SHA512 Intel prints matched; NVIDIA and AMD on igneum-build-2: sha256sum and the PKCS7 subject out of the PE security directory through openssl). A row's min_version is what the worker needs (NVIDIA: CUDA 12.8 = driver 570 or newer; AMD: Adrenalin 25.x = 32.0.32000 or newer; Intel: the Arc driver the worker's rotate rewrite is proven on, 32.0.101.9034 or newer).", "vendors": { "nvidia": { "min_version": "570.00", - "version": "581.57", - "url": "https://us.download.nvidia.com/Windows/581.57/581.57-desktop-win10-win11-64bit-international-dch-whql.exe", - "size": 1012345678, - "sha256": "0000000000000000000000000000000000000000000000000000000000000000", - "hash_source": "https://www.nvidia.com/en-us/drivers/ (the download page prints the sha256 under the file; approximate until read)", + "version": "617.42", + "url": "https://us.download.nvidia.com/Windows/617.42/617.42-desktop-win10-win11-64bit-international-dch-whql.exe", + "size": 990853168, + "sha256": "f115c92760f1d677ae88f7ee114be20c10ef28a9e725736821a08218054867ca", + "hash_source": "https://www.nvidia.com/en-us/drivers/ (GeForce Game Ready 617.42 WHQL, 6 October 2026); the sha256 computed on igneum-build-2 from the file at this URL, Authenticode subject CN=NVIDIA Corporation, O=NVIDIA Corporation, L=Santa Clara (DigiCert G4 chain)", "args": [ "-s", "-noreboot" @@ -23,10 +23,10 @@ "amd": { "min_version": "32.0.32000.0", "version": "26.9.2", - "url": "https://drivers.amd.com/drivers/whql-amd-software-adrenalin-edition-26.9.2-win10-win11-sep2026.exe", - "size": 912345678, - "sha256": "0000000000000000000000000000000000000000000000000000000000000000", - "hash_source": "https://www.amd.com/en/support/download/drivers.html (the download page prints the sha256; approximate until read)", + "url": "https://drivers.amd.com/drivers/whql-amd-software-adrenalin-edition-26.9.2-win11-b.exe", + "size": 1000800840, + "sha256": "593c1d734f9e5a539a8c2f851fe8295d4f2910a878d3a2e21cd51b7ed4d42d39", + "hash_source": "https://www.amd.com/en/support/downloads/drivers.html/graphics/radeon-rx/radeon-rx-9000-series/amd-radeon-rx-9070-xt.html (AMD Software Adrenalin Edition 26.9.2 WHQL, 29 September 2026, the win11-b build for current GPUs); the sha256 computed on igneum-build-2 from the file at this URL (fetched with an amd.com Referer, which drivers.amd.com requires), Authenticode subject CN=Advanced Micro Devices, O=Advanced Micro Devices (Sectigo chain)", "args": [ "-install", "-silent" diff --git a/tools/ui-mock/server.mjs b/tools/ui-mock/server.mjs index 659076e1b..c448ed14a 100644 --- a/tools/ui-mock/server.mjs +++ b/tools/ui-mock/server.mjs @@ -212,10 +212,10 @@ function stateNow() { // driver-check (7 October 2026): PC 1 after the Arc went in, with the manifest's table: the 5090 fine, the // 9070 XT's driver older than the worker needs, the Arc on Windows' inbox driver, the install's states var tbl = 'https://www.intel.com/content/www/us/en/download/785597/'; - var nvOffer = { vendor: 'nvidia', status: 'fine', installed: '581.57', wanted: '581.57', min_version: '570.00', size: 1012345678, url: 'https://us.download.nvidia.com/Windows/581.57/581.57-desktop-win10-win11-64bit-international-dch-whql.exe', hash_source: 'https://www.nvidia.com/en-us/drivers/', text: 'NVIDIA driver 581.57: fine.', installable: false }; + var nvOffer = { vendor: 'nvidia', status: 'fine', installed: '617.42', wanted: '617.42', min_version: '570.00', size: 990853168, url: 'https://us.download.nvidia.com/Windows/617.42/617.42-desktop-win10-win11-64bit-international-dch-whql.exe', hash_source: 'https://www.nvidia.com/en-us/drivers/', text: 'NVIDIA driver 617.42: fine.', installable: false }; var amdOffer = { vendor: 'amd', status: 'old', installed: '32.0.21042.62', wanted: '26.9.2', min_version: '32.0.32000.0', size: 912345678, url: 'https://drivers.amd.com/drivers/whql-amd-software-adrenalin-edition-26.9.2-win10-win11-sep2026.exe', hash_source: 'https://www.amd.com/en/support/download/drivers.html', text: 'Install the AMD driver 26.9.2 (870 MB). Driver 32.0.21042.62 is older than the 32.0.32000.0 the worker needs.', installable: true }; var arcOffer = { vendor: 'intel', status: 'old', installed: '32.0.101.6733', wanted: '32.0.101.9034', min_version: '32.0.101.9034', size: 932631144, url: 'https://downloadmirror.intel.com/929959/gfx_win_101.9034.exe', hash_source: tbl, text: 'Install the Intel Arc driver 32.0.101.9034 (889 MB). Driver 32.0.101.6733 is older than the 32.0.101.9034 the worker needs.', installable: true }; - s.mining.cards = [{ ...recState.mining.cards[0], key: 'nvidia:NVIDIA GeForce RTX 5090', name: 'NVIDIA GeForce RTX 5090', kind: 'discrete', vendor: 'nvidia', worker: 'CUDA', detail: '21760 cores', vram_mb: 32768, device: '0', identities: 2, ids: ['ea53bd41', '7b8ef6fd'], power_default_w: 575, power_pct: 80, power_applied: true, power_limit_w: 460, power_w: 291, temp_gpu: 63, temp_mem: 72, hash_now: 122.4, hash_avg: 121.1, accepted: 102, driver: '581.57', driver_os: '581.57', driver_offer: nvOffer, sweep_supported: true, sweep_state: 'idle', sweep_note: '' }, + s.mining.cards = [{ ...recState.mining.cards[0], key: 'nvidia:NVIDIA GeForce RTX 5090', name: 'NVIDIA GeForce RTX 5090', kind: 'discrete', vendor: 'nvidia', worker: 'CUDA', detail: '21760 cores', vram_mb: 32768, device: '0', identities: 2, ids: ['ea53bd41', '7b8ef6fd'], power_default_w: 575, power_pct: 80, power_applied: true, power_limit_w: 460, power_w: 291, temp_gpu: 63, temp_mem: 72, hash_now: 122.4, hash_avg: 121.1, accepted: 102, driver: '617.42', driver_os: '617.42', driver_offer: nvOffer, sweep_supported: true, sweep_state: 'idle', sweep_note: '' }, { ...recState.mining.cards[0], key: 'amd:gfx1201', name: 'AMD Radeon RX 9070 XT', code: 'gfx1201', kind: 'discrete', vendor: 'amd', worker: 'OpenCL', detail: '32 compute units', vram_mb: 16304, device: '1', identities: 2, ids: ['a405c3e6', 'e15fe94b'], enabled: true, state: 'mining', hash_now: 18.9, hash_avg: 17.8, accepted: 20, power_w: 198, temp_gpu: 61, driver: '3683.0 (PAL,LC)', driver_os: '32.0.21042.62', driver_offer: amdOffer, sweep_supported: true, sweep_state: 'idle', sweep_note: '' }, { ...recState.mining.cards[0], key: 'intel:Intel(R) Arc(TM) B580 Graphics', name: 'Intel(R) Arc(TM) B580 Graphics', code: 'Intel(R) Arc(TM) B580 Graphics', kind: 'discrete', vendor: 'intel', worker: 'OpenCL', detail: '160 compute units', vram_mb: 11930, device: '2', identities: 8, ids: [], enabled: false, state: 'off', hash_now: 0, hash_avg: 0, accepted: 0, power_w: 0, temp_gpu: 0, reason: 'the driver is older than the worker needs', driver: '', driver_os: '32.0.101.6733', driver_offer: arcOffer, sweep_supported: false, sweep_state: 'unsupported', sweep_note: 'not available: Intel Arc exposes no power cap or reading through OpenCL (the driver\'s IGCL counters come next)' }]; s.mining.hash_total = 141.3; s.display_name = 'pc-1';