A GUI wizard that resurrects a Comma 3 running sunnypilot for use with a Tesla Model S 2014 (pre-Autopilot). It applies the C3 compatibility patch that makes openpilot 0.10.2 work on the C3's hardware and Tesla's legacy CAN bus.
The ritual proceeds in four steps:
| Step | Name | What happens |
|---|---|---|
| I | Locate | Finds your C3 on the network (auto-discover or manual IP) |
| II | Inspect | SSHs into the C3 and verifies the required base install is present |
| III | Grimoire | Validates your chosen openpilot fork against the required version |
| IV | Resurrect | Stops the service, entombs the old install, clones the new fork, and applies the C3 compatibility patch |
After resurrection the C3 will have:
- Custom F4/DOS panda firmware (STM32F4 support + SAFETY_TESLA_LEGACY mode)
- AR0231 camera driver (C3 hardware)
- AGNOS auto-update blocked (prevents softbrick)
- A running
c3_persistservice that keeps the patch alive across reboots
The ritual requires sunnypilot 0.10.1 as the base install. This specific version sets up the openpilot directory structure and system dependencies that the patch builds on.
Install it through the C3's installer UI before running OP Necromancer. If you already have the C3 patch installed (a previous resurrection), you can skip straight to the Maintenance window.
The C3 (comma user) must be reachable over SSH with a private key. The default comma SSH key is typically at ~/.ssh/id_rsa or ~/.ssh/id_ed25519.
To check:
ssh comma@<C3-IP> echo okIf that works you're ready. If not, make sure your public key is added to the C3's ~/.ssh/authorized_keys.
The C3 must be reachable from the machine running OP Necromancer. Common addresses:
- USB tethering / phone hotspot:
192.168.43.1 - Home network: check your router for the C3's IP, or use
comma.local - USB cable (direct):
192.168.0.x
OP Necromancer will attempt to auto-discover the C3 on all of these. You can also enter the IP manually.
tkinter is part of the Python standard library. On most Linux distros it may need a separate package:
# Debian / Ubuntu
sudo apt install python3-tk
# Arch
sudo pacman -S tkOn macOS and Windows, tkinter ships with the standard Python installer from python.org.
python3 op_necromancer.pyNo pip dependencies — only Python stdlib is used.
Check the "Dry run" box on the Locate page before proceeding. In dry run mode the wizard walks through all four steps but makes no changes to the C3. Instead of cloning and patching, it reads the current state of the device and reports what it finds. Useful for inspecting a C3 before committing to the ritual.
If the C3 patch is already installed, the Inspect page will show a Maintenance button instead of blocking you on the sunnypilot 0.10.1 prereq. From there you can:
- Verify patch wards — checks that all five components of the patch are in place (
c3_persistservice enabled/active, backup directory, panda firmware, AGNOS update block) - Update to latest commit — pulls the latest commit from the remote branch and reapplies the curse
- Restore to specific commit — shows a list of commits between your current version and the remote tip; select one to check out and reapply the patch
| File | Purpose |
|---|---|
op_necromancer.py |
The GUI wizard — this is what you run |
c3_patch.py |
The patch engine — called by the wizard over SSH |
patch_files/ |
Binary and script assets deployed to the C3 |
patch_files/panda.bin.signed |
Custom F4/DOS panda firmware |
patch_files/bootstub.panda.bin |
Panda bootloader stub |
patch_files/panda_init.py |
Patched Python panda library |
patch_files/pandad.py |
Patched pandad for F4/bxCAN compatibility |
patch_files/amplifier.py |
TICI audio amplifier config |
patch_files/ar0231.cc |
AR0231 camera driver (C3 hardware) |
patch_files/ar0231_registers.h |
Camera register definitions |
This tool modifies the software on your Comma 3 and is intended for hobbyist use. It is not affiliated with Comma.ai. Use at your own risk. The C3 curse, once cast, is not easily reversed — though a backup of the original sunnypilot install is preserved on-device.