The Problem
KiCad 9.0 introduced a new IPC API for plugins that's supposed to let you use external Python packages (like CuPy for GPU acceleration, or PyQt6 for the GUI). This is great in theory, but on Windows it's completely broken.
Here's what happens when you try to install an IPC plugin:
If you use the Plugin Manager with "runtime": "ipc" in the metadata, KiCad crashes during installation. If you manually extract the plugin to the plugins/ directory, KiCad just... doesn't see it. The button never appears. The plugin never loads.
The old SWIG plugin system still works and can be installed via PCM, but SWIG plugins run in KiCad's embedded Python which doesn't have access to any external packages. No CuPy, no NumPy from pip, no PyQt6. Since OrthoRoute needs these dependencies, SWIG isn't an option.
It's Not Just Us
This is tracked in KiCad's issue tracker as #19465. There's also a long forum thread about it here. According to posts from October 2025, Python auto-detection on Windows was fixed but plugin loading is still broken.
Other IPC plugins like layout_stamp have the same issue - they work on Linux/macOS but not Windows.
What Actually Works
The only way to use OrthoRoute on Windows right now is to run it from the command line:
pip install -r requirements.txt
python main.py
As long as you have KiCad open with a PCB file, OrthoRoute will connect via the IPC API and everything works normally. You just can't launch it from a toolbar button.
What We've Tried
I've tested every combination I could think of:
Manual installation with the correct plugin.json schema? Doesn't load.
PCM package with "runtime": "ipc"? Crashes KiCad.
PCM package with "runtime": "swig"? Installs fine, button appears, but crashes when clicked because CuPy isn't available in KiCad's Python.
Creating a hybrid SWIG wrapper that launches the IPC version? The SWIG plugin doesn't get the IPC environment variables, so it can't connect.
I've even looked at working plugins like JLC PCB Toolkit to see their structure. The difference is they're pure SWIG plugins that don't need external dependencies.
Testing on Linux/macOS
If you're on Linux or macOS, I'd love to know if manual IPC installation works for you. Build the package with python build.py (not build.py --pcm), extract it to your KiCad plugins directory, enable the IPC API in preferences, and let me know if the button shows up.
The bug reports suggest this is Windows-specific, but I haven't been able to test on other platforms.
When Will This Be Fixed?
No idea. The KiCad issue has been open since at least mid-2024. There were some fixes to Python detection in January 2025, but the actual plugin loading is still broken as of KiCad 9.0.6.
Until KiCad fixes this, the command-line workaround is the only option on Windows. Once they do fix it, we'll be able to provide proper PCM installation with full dependency management via requirements.txt.
The Problem
KiCad 9.0 introduced a new IPC API for plugins that's supposed to let you use external Python packages (like CuPy for GPU acceleration, or PyQt6 for the GUI). This is great in theory, but on Windows it's completely broken.
Here's what happens when you try to install an IPC plugin:
If you use the Plugin Manager with
"runtime": "ipc"in the metadata, KiCad crashes during installation. If you manually extract the plugin to theplugins/directory, KiCad just... doesn't see it. The button never appears. The plugin never loads.The old SWIG plugin system still works and can be installed via PCM, but SWIG plugins run in KiCad's embedded Python which doesn't have access to any external packages. No CuPy, no NumPy from pip, no PyQt6. Since OrthoRoute needs these dependencies, SWIG isn't an option.
It's Not Just Us
This is tracked in KiCad's issue tracker as #19465. There's also a long forum thread about it here. According to posts from October 2025, Python auto-detection on Windows was fixed but plugin loading is still broken.
Other IPC plugins like layout_stamp have the same issue - they work on Linux/macOS but not Windows.
What Actually Works
The only way to use OrthoRoute on Windows right now is to run it from the command line:
As long as you have KiCad open with a PCB file, OrthoRoute will connect via the IPC API and everything works normally. You just can't launch it from a toolbar button.
What We've Tried
I've tested every combination I could think of:
Manual installation with the correct
plugin.jsonschema? Doesn't load.PCM package with
"runtime": "ipc"? Crashes KiCad.PCM package with
"runtime": "swig"? Installs fine, button appears, but crashes when clicked because CuPy isn't available in KiCad's Python.Creating a hybrid SWIG wrapper that launches the IPC version? The SWIG plugin doesn't get the IPC environment variables, so it can't connect.
I've even looked at working plugins like JLC PCB Toolkit to see their structure. The difference is they're pure SWIG plugins that don't need external dependencies.
Testing on Linux/macOS
If you're on Linux or macOS, I'd love to know if manual IPC installation works for you. Build the package with
python build.py(notbuild.py --pcm), extract it to your KiCad plugins directory, enable the IPC API in preferences, and let me know if the button shows up.The bug reports suggest this is Windows-specific, but I haven't been able to test on other platforms.
When Will This Be Fixed?
No idea. The KiCad issue has been open since at least mid-2024. There were some fixes to Python detection in January 2025, but the actual plugin loading is still broken as of KiCad 9.0.6.
Until KiCad fixes this, the command-line workaround is the only option on Windows. Once they do fix it, we'll be able to provide proper PCM installation with full dependency management via
requirements.txt.