ODB++ import guide
Export an ODB++ archive from your design tool, upload it with or without your Gerber files, and check which data CircuitHub reads from it.
ODB++ describes a whole printed circuit board in one archive: the layers, holes and outline, the parts, their footprints and where each one is placed. CircuitHub imports ODB++ from any design tool that exports it, which makes it a good way to upload a design from a tool whose native files we do not read. We have tested exports from KiCad, Altium Designer and Fusion 360. Exports from other tools should work too; if yours does not, send the archive to support@circuithub.com.
If we read your tool's native files, as we do for Altium and KiCad, upload those instead. ODB++ carries no schematic, so CircuitHub cannot check part polarity against your symbols.
Specifying part numbers
Which attribute names CircuitHub reads manufacturer part numbers from.
Supplying a BOM
Supplement the data from your design files with a CSV bill of materials.
Fusion 360 import guide
Export the CAM Processor ZIP with its Gerber files and ODB++ data from Fusion 360.
Your Gerber files or the ODB++ layers
We fabricate boards from Gerber X2 files. The ones your design tool writes itself are the closest match to your design, so we recommend uploading the Gerber X2, drill and job files together with the ODB++ archive. The board is then made from those files, and the ODB++ data supplies the parts, footprints and placements.
Two things matter when you upload your own Gerber files. They should be Gerber X2 rather than the older RS-274X format, because each X2 file says which layer it is; otherwise the upload page asks you to choose the layer of every file. And they must line up with the ODB++ data: export both from the same saved version of the design, with the same origin. CircuitHub checks every part placement against the copper pads and the import fails if most of them do not line up, which is what happens when the Gerber files are shifted or come from another version of the board.
If you upload the ODB++ archive without Gerber files, CircuitHub converts the layers in the archive to Gerber X2 for you, and the same check runs against the converted layers. The upload page asks you to confirm this before you can continue; choose Use the ODB++ layers. The conversion follows the ODB++ data closely, but your tool may write its own Gerber files in ways the ODB++ export does not show, so upload them whenever you have them.
Export the ODB++ archive
KiCad
KiCad 9 and later export ODB++. In the PCB editor, choose File → Fabrication Outputs → ODB++…, set the compression format to ZIP and export. On the command line, kicad-cli pcb export odb writes the same archive.
Altium Designer
In the PCB editor, choose File → Fabrication Outputs → ODB++ Files, or add an ODB++ output to your Output Job. Altium writes the ODB++ data as a folder; zip that folder before you upload it, as described below.
For your Gerber files, use File → Fabrication Outputs → Gerber X2 Files and NC Drill Files, ideally in the same Output Job as the ODB++ output. Altium's ODB++ data uses the board's relative origin, so set both the Gerber X2 output and the NC Drill output to the relative origin too; Altium sets the two separately. Gerber files referenced to the absolute origin are shifted away from the placements and the import fails its alignment check, and drill files referenced to it put every hole in the wrong place.
Fusion 360
Fusion includes the ODB++ archive in its CAM Processor ZIP. Follow the Fusion 360 import guide.
Other design tools
Use your tool's ODB++ export and make sure it includes the component data, which some tools call EDA data. Without it the archive holds no parts to place.
Uploading
Upload the ODB++ archive as a .zip file holding the ODB++ folder, the one that contains the matrix, misc and steps folders, and nothing else. The upload page shows it as ODB++ · <job name> and keeps it whole. You can also upload a larger zip, such as Fusion 360's CAM Processor ZIP, that holds this ODB++ zip beside your Gerber files: it is unpacked and the ODB++ zip inside it stays whole. What does not work is the ODB++ folder itself zipped together with other files; that zip is unpacked like any other, and the loose ODB++ files are then not recognized. CircuitHub does not read .tgz or .tar.gz archives, which some tools write by default: unpack the archive and zip the ODB++ folder instead. ODB++ archives can be up to 64 MiB.
Upload your Gerber X2, drill and job files in the same upload, either as separate files or zipped together. Once you upload any Gerber, drill or job file, the board is made from your files alone, with nothing taken from the ODB++ layers, so they must form a complete set: every copper layer, the board outline and a drill through the whole board. The upload page lists anything missing. To have the board made from the ODB++ layers instead, ignore or remove those files. An ODB++ archive cannot be combined with another tool's design files, such as an IPC-2581 file or Altium documents: the import is blocked until you remove or ignore one of them.
If the archive holds more than one step, for example a panel and the board in it, CircuitHub imports the one step that is not a panel of other steps. If it cannot tell which step is the board, the import fails and names the steps it found; export the board step on its own.
Required files
- One ODB++ archive, including its component data.
Recommended
- The Gerber X2 files of the same design, aligned with the ODB++ data: every copper layer and exactly one board outline, together with the solder mask, paste and silkscreen layers.
- At least one drill file that goes through the whole board, as Excellon or Gerber X2.
- The Gerber job file. CircuitHub reads the board thickness from it and checks that it lists as many copper layers as your Gerber files.
Optional BOM
You can also upload a BOM in either .csv or .tsv that conforms to the supported format.
Where your data comes from
| Data | Source |
|---|---|
| Copper, solder mask, paste, silkscreen and board outline | Your Gerber files, or the ODB++ layers when you upload none. |
| Holes | Your drill files, or the ODB++ drill layers when you upload none. |
| Board thickness | The Gerber job file. Without one, check the thickness in the Board tab after the import. |
| Parts, footprints and placements | The ODB++ data. |
| Values, descriptions and part numbers | The attributes your tool writes on each part in the ODB++ data. |
| Do-not-place parts | Parts with the .no_pop attribute import as not fitted. |
Add manufacturer part numbers as attributes on your parts, such as MPN or ManufacturerPartNumber; see Specifying part numbers in EDA tools. CircuitHub does not read assembly variants from ODB++ data. Mark parts as do not place on CircuitHub after the import, or use the DNP column of a CSV BOM.