An easy-to-use electronic schematic capture and PCB design tool
🌐 Website • 📖 Documentation • 🐛 Report Bug • 💡 Request Feature
FidoCadJ is a modern, multiplatform electronic design automation (EDA) software with a vast library of electrical symbols and footprints (both through-hole and SMD). It serves as an easy-to-use editor for creating electrical schematics and printed circuit board layouts.
Origins: FidoCadJ is the successor to the original FidoCAD, a popular vector graphic editor that gained widespread adoption in the Italian Usenet community during the late 1990s. The original software used a compact text-based file format, perfect for sharing in newsgroups and forums.
Modern Evolution: FidoCadJ brings the simplicity of FidoCAD into the modern era with: - Full UTF-8 text support - Advanced features and professional output - Internationalization - Sleek, anti-aliased user interface - Multiple export formats (PDF, EPS, PGF for LaTeX, SVG, PNG, JPG)
Note: FidoCadJ is a graphical drawing tool without netlist functionality. This provides maximum flexibility as a vector drawing application but does not include circuit simulation capabilities.
FidoCadJ comes with a built-in library of components, but the community has created many additional libraries to extend its capabilities! You can download specialized libraries for various purposes:
🔗 Browse and Download Community Libraries
These community-contributed libraries include: - Additional electronic components - Specialized symbols and footprints - Industry-specific elements - Custom mechanical parts - And much more!
Simply download the library files and import them into FidoCadJ to expand your component collection.
| Platform | Requirements |
|---|---|
| Windows | Windows 7, 8, 10, 11 with Java 9+ |
| Linux | All major distributions with Java 9+ |
| macOS | macOS 10.8+ with Java 9+ |
| Android | Android 4.0+ |
Download FidoCadJ_Windows.msi from the releases page and run the installer. Launch FidoCadJ from the Start menu.
FidoCadJ_MacOSX.dmg from the releases page📝 Note: The application bundle is self-sufficient and includes everything needed to run. You don't need to install Java separately.
⚠️ macOS Gatekeeper Issue:
Recent macOS versions may show a very misleading error when trying to run FidoCadJ:
"FidoCadJ.app is damaged and can't be opened. You should move it to the Trash."
This is NOT true! The application is not damaged. This is a security feature that prevents running apps from unidentified developers. The error message is misleading and doesn't explain the real issue.
What's happening: - macOS activates the "quarantine" extended attribute on downloaded files - The system refuses to run software with this attribute - On some Macs (like M1/M2), you may be asked to install Rosetta first
Example of the error (macOS Ventura 13.3):

Solution - Follow these steps:
bash
xattr -c /Applications/FidoCadJ.app
(If you haven't moved it to Applications yet, use the actual path to the file)⚠️ You need admin access and may need to authorize Terminal.app to modify files
Right-click on FidoCadJ.app and select "Open" (don't double-click)
Confirm when the system asks if you really want to run the software downloaded from an untrusted source
Need help? See Issue #198 for discussion and alternative solutions.
💡 If you know a way to solve this without using Terminal, please share it in the GitHub issue!
Method 1: Using the JAR file
java -jar fidocadj.jar
Method 2: Build from source
make
sudo make install
Download the APK file from the official GitHub releases page and install it on your device.
⚠️ Security Note: Only download FidoCadJ from the official GitHub repository to ensure authenticity.
💡 Pro Tip: Expand your component collection by downloading community libraries!
📖 Need help? Check out the user manual (available in multiple languages).
FidoCadJ/
├── bin/ # Compiled classes and resources
├── busy being born/ # Screenshots and promotional materials
├── dev_tools/ # Build scripts and development tools
├── doc/ # Javadoc documentation
├── icons/ # Application icons
├── jar/ # JAR and manifest files
├── manual/ # LaTeX manual sources
├── OSes/ # Platform-specific files (including Android)
├── src/ # Java source files
├── test/ # Automated test suite
├── gpl-3.0.txt # License file
├── makefile # Build automation
└── README.md # This file
| Path | Description |
|---|---|
src/fidocadj/FidoMain.java |
Application entry point |
src/fidocadj/FidoFrame.java |
Main editor window |
src/fidocadj/primitives/*.java |
Graphic primitives |
src/fidocadj/dialogs/*.java |
Swing dialogs |
src/fidocadj/circuit/CircuitPanel.java |
Editor panel |
src/fidocadj/circuit/* |
Low-level editing (MVC) |
git clone https://github.com/FidoCadJ/FidoCadJ.git
cd FidoCadJ
Using Make (macOS/Linux):
| Command | Description |
|---|---|
make |
Compile FidoCadJ |
make run |
Run FidoCadJ |
make rebuild |
Clean and rebuild |
make createjar |
Create JAR file in jar/ directory |
make createdoc |
Generate Javadoc |
make clean |
Remove compiled classes |
make cleanall |
Full cleanup |
Using Scripts (Windows):
cd dev_tools
winbuild.bat compile # Compile sources
winbuild.bat run # Run application
winbuild.bat rebuild # Clean and rebuild
Manual Compilation (Windows):
javac -g -sourcepath src -classpath bin .\src\fidocadj\FidoMain.java -d bin
java -classpath .\bin;.\jar;.\jar\ FidoMain
PascalCasecamelCaseMethods:
void exampleMethod(int param1, int param2)
{
// Method body with 4-space indentation
System.out.println("Example");
}
Control Structures:
for (int i = 0; i < 10; ++i) {
// Loop body
System.out.println("Iteration: " + i);
}
if (condition) {
// If body
} else {
// Else body
}
Classes:
class ExampleClass
{
// Class members
}
We maintain high code quality using:
dev_tools/rules.xml)dev_tools/pmd.sh)🎯 Before submitting a pull request, run Checkstyle with
dev_tools/rules.xmlto ensure compliance!
FidoCadJ includes comprehensive automated tests in the test/ directory.
Run all tests:
./test/all_tests.sh
Individual test suites:
| Test | Purpose |
|---|---|
test/export/test_export.sh |
Validates export functionality for all formats |
test/messages/test_messages.sh |
Checks translation file consistency |
test/size/test_size.sh |
Verifies element size calculations |
📝 Note: Before running tests, ensure
fidocadj.jaris up-to-date usingmake createjar.
We welcome contributions from the community! Whether you're fixing bugs, adding features, translating, or improving documentation, your help is appreciated.
FidoCadJ makes translation easy—no programming skills required!
To translate the interface:
bin/MessagesBundle_xx.properties (where xx is the ISO 639-1 language code)MessagesBundle_en.properties)Example:
# English (MessagesBundle_en.properties)
File = File
New = New
Open = Open file
# French (MessagesBundle_fr.properties)
File = Fichier
New = Nouveau dessin
Open = Ouvre un fichier
Current translations available: English, French, Italian, Spanish, German, Chinese, Dutch, Japanese, Greek, Czech
Getting started:
Useful commands for developers:
make createdoc # Generate Javadoc documentation
dev_tools/checkstyle.sh # Run Checkstyle
dev_tools/pmd.sh # Run PMD analysis
dev_tools/profile # Run profiler
For all commits:
- [ ] Code builds successfully (PC and Android)
- [ ] Follows coding style (section 4.1)
- [ ] Comments added/updated where needed
- [ ] Checkstyle passes with dev_tools/rules.xml
For PC application: - [ ] JAR generated and automated tests pass - [ ] PMD analysis completed
| Area | Description |
|---|---|
| 🌍 Translation | Translate UI or documentation to your language |
| 📝 Documentation | Improve or update manuals and guides |
| 🎥 Tutorials | Create video tutorials for YouTube |
| 🐛 Bug Reports | Report issues via GitHub Issues |
| 💻 Code | Implement new features or fix bugs |
| 📦 Packaging | Create distribution packages (deb, RPM, etc.) |
| 🧪 Testing | Expand unit test coverage |
Feature requests: - Export to Gerber format - Enhanced unit testing - Linux packaging improvements - And more!
💡 Tip: GitHub discussions are preferred for better collaboration among developers.
Found a bug? We appreciate your help in making FidoCadJ better!
$ claude mcp add FidoCadJ \
-- python -m otcore.mcp_server <graph>