Skip to content

Repository files navigation

RTXDarwin

CI License: MIT

EXPERIMENTAL — MAY PANIC macOS, HANG THE GPU, OR LOSE UNSAVED DATA. This is not a usable NVIDIA driver. Linux must remain the primary operating system of the test machine, and every hardware run requires physical presence and a known-good recovery boot.

RTXDarwin is an independent, open research project attempting to bring one specific Gigabyte GeForce RTX 3060 12 GB to one frozen Hackintosh target:

  • Ryzen 7 5700X;
  • ASUS TUF GAMING B450M-PRO II, BIOS 4002 (reported by the Linux baseline);
  • macOS Tahoe 26.6.2 build 25G83;
  • SMBIOS MacPro7,1;
  • NVIDIA 10de:2487, Gigabyte subsystem 1458:40e2, VGA function 0.

The long-term order of proof is PCI probe → GSP/VRAM/channels → native GPU compute → NVK Vulkan Compute → one 60 Hz framebuffer → Metal compute.

Current status

The repository is at v0.0.0-dev bootstrap. It implements the safe half of the future v0.0.1-probe release; it does not claim that the RTX 3060 has run under macOS yet.

Capability Status Evidence required to advance
Reproducible x86_64 kext build Implemented and locally verified on Xcode 26.6 CI must stay green
Exact PCI/subsystem/build/SMBIOS gates Implemented; measured identity configured Physical match/refusal tests still required
Read-only PCI identity and BAR-length probe Implemented in source 20 physical Tahoe boots, IDs matched to Linux, no panic
Root-only ABI v1 and rtxctl probe/faults Implemented Hardware output archive
GSP, interrupts, VRAM Not implemented v0.0.2-gsp gate
Command queue and vector-add Not implemented; CPU fallback is explicitly forbidden v0.1-compute gate
Vulkan, framebuffer, Metal Not implemented Later gates in the roadmap

The default CI build uses an impossible placeholder identity and cannot attach to any GPU. An attachable build can only be generated from a validated local hardware report.

What is already real

  • RTXDarwin.kext is an x86_64 Mach-O kext bundle with kernel module entry metadata and IOKit classes.
  • Probe mode only reads PCI configuration identity/class registers and BAR descriptor lengths. It does not enable bus mastering, map a BAR, write PCI configuration space, or submit work.
  • The public ABI uses fixed-width fields, version/size headers, opaque 64-bit handles, fixed request sizes, overflow-safe ranges, and root-only opens.
  • Only GET_DEVICE_INFO and GET_FAULT execute in the bootstrap. Every later ABI operation validates its envelope and returns kIOReturnUnsupported.
  • rtxctl compute vector-add --verify fails with EX_UNAVAILABLE and reports "cpuFallback":false; it cannot manufacture a false compute success.
  • The Linux collector omits hostname, serials, MAC addresses, GPU UUID, raw EDID, and VBIOS bytes.
  • The firmware tool accepts only NVIDIA's official 570.144 filename and pinned SHA-256, extracts locally, and writes only under a gitignored directory.

See architecture and safety invariants.

Build on the Mac

Requirements: macOS Tahoe, Xcode 26.6, the macOS 26.5 Kernel SDK, Python 3, GNU Make, and Apple command-line tools.

make check

This produces:

build/RTXDarwin.kext             x86_64, deliberately unmatchable
build/bin/rtxctl                 universal arm64 + x86_64
build/bin/librtxdarwin.a         universal userspace client library

Do not install the placeholder kext. To build for the measured test card:

HARDWARE_CONFIG=.local/evidence/linux-baseline.json make check

The generator rejects a non-NVIDIA device, a non-Gigabyte subsystem, an unknown OpenRM 570.144 RTX 3060 ID, function other than zero, placeholders, another macOS build, or another SMBIOS. It also rejects contradictory PCI identity fields in a full baseline. Do not run a subsequent bare make check and install its result: that rebuilds the intentionally unmatchable placeholder. Pass HARDWARE_CONFIG every time.

The public identity-only profile config/hardware.gigabyte-2487-40e2.json is also built in CI, so the configured driver cannot be optimized out of every software check. Neither CI profile is hardware evidence or a release.

From a clean committed checkout, prepare a local ZIP with a fresh configured make check, module inspection, source/input hashes, and the Russian runbook:

python3 tools/package_probe.py --config .local/evidence/linux-baseline.json

Output goes under ignored outputs/. The packager never installs/loads code, modifies EFI, signs a kext, or includes the original hardware report/firmware.

First hardware handoff

Run this from a checkout on the Linux RTX machine:

python3 tools/collect_linux_baseline.py \
  --output .local/evidence/linux-baseline.json

Optionally hash an existing VBIOS dump without copying it into the report:

python3 tools/collect_linux_baseline.py \
  --vbios /path/to/existing/read-only-dump.rom \
  --output .local/evidence/linux-baseline.json

Review the JSON before sharing it. Do not add .local with git -f. The same JSON is the input to the exact-match build generator. The full physical procedure is in the Russian bring-up runbook.

Locked upstreams

  • NVIDIA Open GPU Kernel Modules 570.144 at commit 8ec351aeb96a93a4bb69ccc12a542bf8a8df2b6f;
  • Mesa 26.2.0 at commit 9f0a761020bca92f2b07156a0621e5360cb8eca5;
  • OpenCore 1.0.7 at commit 6651fc36a8c3dca36a3231ba00679611100dbe85;
  • AMD Vanilla patches at commit eaf52ef292abf4ebec899df6d48626569ba50cc6.

Run ./scripts/verify_locked_sources.sh to confirm that the upstream refs still resolve to the lock. Run python3 tools/fetch_locked_sources.py to create detached, shallow local checkouts under .local/sources.

OpenRM is reference material, not a drop-in Darwin driver. Its files require per-file license review before any port is committed. GSP firmware and VBIOS are never redistributed. Details are in DEPENDENCIES.lock.json and the licensing notes.

Why this is plausible, and why it is still uncertain

NVIDIA publishes an open kernel RM with Ampere/RTX 3060 entries and a GSP interface, and Mesa NVK supports Ampere. Those facts make research possible; they do not solve the Darwin PCI/DMA/interrupt port, display modesetting, or Apple's private GPU companion integration. Tahoe still supports the 2019 Intel Mac Pro, which preserves an x86_64 macOS target, but Metal registration remains the highest-risk milestone.

Primary references: NVIDIA Open GPU Kernel Modules, Mesa NVK, and Apple Tahoe compatibility.

License

RTXDarwin's original source is available under the MIT License. Third-party software and firmware retain their own terms. RTXDarwin is not affiliated with Apple, NVIDIA, Gigabyte, or Mesa.

About

Experimental open RTX 3060 driver research for macOS Tahoe — safe probe first

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages