{"id":5006,"date":"2026-08-30T02:30:43","date_gmt":"2026-08-29T17:30:43","guid":{"rendered":"https:\/\/donguri3.net\/server-tech\/single-layer-pcb-design-with-kicad-2\/"},"modified":"2026-08-30T02:30:44","modified_gmt":"2026-08-29T17:30:44","slug":"single-layer-pcb-design-with-kicad","status":"publish","type":"post","link":"https:\/\/donguri3.net\/en\/server-tech\/development-programming-git\/single-layer-pcb-design-with-kicad\/","title":{"rendered":"Notes on the Design and Manufacturing Process of Single-Sided PCBs Using KiCad"},"content":{"rendered":"<p class=\"\">This article explains the end-to-end workflow from schematic creation and board design to Gerber output and CNC milling, using practical examples with KiCad and KiCad plugins (Freerouting, pcb2gcodeGUI). Along each step, we also share tips to help streamline your work.<\/p>\n<hr class=\"\" \/>\n<h2 class=\"\">1. Working in the Schematic Editor<\/h2>\n<p><a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/86ec39bf933500af74b456718a4a7ad3.png\"><img decoding=\"async\" class=\"aligncenter wp-image-991 size-large\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/86ec39bf933500af74b456718a4a7ad3-1024x721.png\" alt=\"kicad\" width=\"1024\" height=\"721\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/86ec39bf933500af74b456718a4a7ad3-1024x721.png 1024w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/86ec39bf933500af74b456718a4a7ad3-300x211.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/86ec39bf933500af74b456718a4a7ad3-768x541.png 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/86ec39bf933500af74b456718a4a7ad3.png 1120w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<ol>\n<li class=\"\">\n<p class=\"\"><strong>Component Placement and Wiring<\/strong><br \/>First, launch the KiCad schematic editor, select the necessary components from the libraries, and place them. Wire between the components to create the blueprint for the entire circuit.<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/90fd6b150f50f0384900a982e07192fb.png\"><img decoding=\"async\" class=\"aligncenter wp-image-988 size-large\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/90fd6b150f50f0384900a982e07192fb-1024x610.png\" alt=\"kicad schematic editor\" width=\"1024\" height=\"610\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/90fd6b150f50f0384900a982e07192fb-1024x610.png 1024w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/90fd6b150f50f0384900a982e07192fb-300x179.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/90fd6b150f50f0384900a982e07192fb-768x458.png 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/90fd6b150f50f0384900a982e07192fb.png 1520w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Assigning Footprints<\/strong><br \/>Right-click each symbol (component) and assign the appropriate footprint to the footprint property via the properties dialog. This ensures that the physical components are positioned correctly when later transferred to the PCB editor.<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/f7312bf4a9a8b6622d4d8b03088f4359.png\"><img decoding=\"async\" class=\"aligncenter wp-image-994 size-full\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/f7312bf4a9a8b6622d4d8b03088f4359.png\" alt=\"kicad footprint settings\" width=\"638\" height=\"499\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/f7312bf4a9a8b6622d4d8b03088f4359.png 638w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/f7312bf4a9a8b6622d4d8b03088f4359-300x235.png 300w\" sizes=\"(max-width: 638px) 100vw, 638px\" \/><\/a><\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Launching the PCB Editor and Updating the Board<\/strong><br \/>Once the schematic is complete, launch the PCB editor. By clicking the &#8220;Update PCB from Schematic&#8221; button in the schematic editor, the components and planned trace routes defined in the schematic are transferred to the PCB editor. If configured and wired correctly, the components and their connection patterns will appear on the screen.<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/3c6c7eb1eeee56f67aa99988f65b5446.png\"><img decoding=\"async\" class=\"aligncenter wp-image-995 size-large\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/3c6c7eb1eeee56f67aa99988f65b5446-1024x609.png\" alt=\"kicad place components\" width=\"1024\" height=\"609\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/3c6c7eb1eeee56f67aa99988f65b5446-1024x609.png 1024w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/3c6c7eb1eeee56f67aa99988f65b5446-300x178.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/3c6c7eb1eeee56f67aa99988f65b5446-768x456.png 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/3c6c7eb1eeee56f67aa99988f65b5446-1536x913.png 1536w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/3c6c7eb1eeee56f67aa99988f65b5446-2048x1217.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<\/li>\n<\/ol>\n<hr class=\"\" \/>\n<h2 class=\"\">2. Layout Work in the PCB Editor<\/h2>\n<ol>\n<li class=\"\">\n<p class=\"\"><strong>Selecting the B.Cu Layer<\/strong><br \/>Before starting work, select the [B.Cu (Back Copper)] layer to prepare for working on the backside of the board.<\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Launching the Freerouting Plugin<\/strong><br \/>Next, launch the Freerouting plugin and perform automatic routing. *Note: You need to install Freerouting from the Plugin and Content Manager on the KiCad home screen.<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/51dfe4725e065e2f9ec6592b505262a4.png\"><img decoding=\"async\" class=\"aligncenter wp-image-998 size-large\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/51dfe4725e065e2f9ec6592b505262a4-1024x609.png\" alt=\"kicad Freerouting plugin\" width=\"1024\" height=\"609\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/51dfe4725e065e2f9ec6592b505262a4-1024x609.png 1024w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/51dfe4725e065e2f9ec6592b505262a4-300x178.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/51dfe4725e065e2f9ec6592b505262a4-768x456.png 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/51dfe4725e065e2f9ec6592b505262a4-1536x913.png 1536w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/51dfe4725e065e2f9ec6592b505262a4-2048x1217.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<ul>\n<li>Clicking the autoroute button here will automatically calculate the routing.<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/86840c0a73b09e3e7048e2f55d186181.png\"><img decoding=\"async\" class=\"aligncenter wp-image-986 size-large\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/86840c0a73b09e3e7048e2f55d186181-1024x769.png\" alt=\"Freerouting\" width=\"1024\" height=\"769\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/86840c0a73b09e3e7048e2f55d186181-1024x769.png 1024w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/86840c0a73b09e3e7048e2f55d186181-300x225.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/86840c0a73b09e3e7048e2f55d186181-768x577.png 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/86840c0a73b09e3e7048e2f55d186181.png 1150w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/li>\n<li class=\"\">\n<p class=\"\" style=\"text-align: left;\">Modify the trace width for &#8220;kicad_default&#8221; under Rules &gt; Net Classes to your preferred size.<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/fab4b76eb5a33fdd993510ad4c552c0e.png\"><img decoding=\"async\" class=\"aligncenter wp-image-997 size-full\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/fab4b76eb5a33fdd993510ad4c552c0e.png\" alt=\"Change trace width\" width=\"1002\" height=\"161\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/fab4b76eb5a33fdd993510ad4c552c0e.png 1002w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/fab4b76eb5a33fdd993510ad4c552c0e-300x48.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/fab4b76eb5a33fdd993510ad4c552c0e-768x123.png 768w\" sizes=\"(max-width: 1002px) 100vw, 1002px\" \/><\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Autorouting Settings for Single-Sided PCBs<\/strong><br \/>For single-sided PCBs, limit the target layers to F.Cu or B.Cu only under Parameters &gt; Autoroute Settings. Unchecking unnecessary layers improves work efficiency.<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/ddb512f2d1015892a9009ac42324cdba.png\"><img decoding=\"async\" class=\"aligncenter wp-image-996 size-full\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/ddb512f2d1015892a9009ac42324cdba.png\" alt=\"Select layers\" width=\"284\" height=\"221\" \/><\/a><\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Deleting Unwanted Tracks<\/strong><br \/>If there are incorrect tracks, select [Edit &gt; Delete Globally&#8230;], choose &#8220;Tracks and Vias&#8221;, and click OK to delete only the tracks.<\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Configuring Filled Zones<\/strong><br \/>After routing is complete, use the [Add Filled Zone] tool to define the fill area for the internal copper planes.<br \/>Next, select [Edit &gt; Fill All Zones] to actually fill the designated area.<\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Setting Board Edges<\/strong><br \/>To indicate the outline of the board, select the Edge.Cuts layer and accurately draw the edges using the rectangle tool.<\/p>\n<\/li>\n<\/ol>\n<hr class=\"\" \/>\n<h2 class=\"\">3. Exporting Gerber and Drill Files<\/h2>\n<ol>\n<li class=\"\">\n<p class=\"\"><strong>Saving and Plot Settings<\/strong><br \/>First, save your work and select [File &gt; Plot].<\/p>\n<ul>\n<li class=\"\">\n<p class=\"\">Specify &#8220;B.Cu&#8221; and &#8220;Edge.Cuts&#8221; as the layers to include, and set the output format to Gerber.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Generating Gerber Files<\/strong><br \/>Running the plot will generate the respective .gbr files for the B.Cu and Edge.Cuts layers.<\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Creating Drill Files<\/strong><br \/>Next, select [Generate Drill Files].<\/p>\n<ul>\n<li class=\"\">\n<p class=\"\">Choose the option to merge PTH (Plated Through Hole) and NPTH (Non-Plated Through Hole) into a single file, and generate the .drl file.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr class=\"\" \/>\n<h2 class=\"\">4. Generating G-code from PCB for the CNC Machine and Milling<\/h2>\n<ol>\n<li class=\"\">\n<p class=\"\"><strong>Launching pcb2gcodeGUI<\/strong><br \/>Run pcb2gcodeGUI in the WSL2 environment. *Note: pcb2gcodeGUI must be installed in WSL2.<\/p>\n<ul>\n<li class=\"\">\n<p class=\"\">Here, set B.Cu to Back, Edge.Cuts to Outline, and the previously generated .drl file to Drill.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Configuring Parameters in Each Tab<\/strong><br \/>Adjust the necessary settings in each tab within pcb2gcodeGUI, and finally click &#8220;Start&#8221; to generate the G-code file.<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/pcb2gcodeGUI-Ubuntu-20.04-2025_03_23-10_51_42.png\"><img decoding=\"async\" class=\"aligncenter wp-image-999 size-large\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/pcb2gcodeGUI-Ubuntu-20.04-2025_03_23-10_51_42-1024x571.png\" alt=\"pcb2gcodeGUI\" width=\"1024\" height=\"571\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/pcb2gcodeGUI-Ubuntu-20.04-2025_03_23-10_51_42-1024x571.png 1024w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/pcb2gcodeGUI-Ubuntu-20.04-2025_03_23-10_51_42-300x167.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/pcb2gcodeGUI-Ubuntu-20.04-2025_03_23-10_51_42-768x428.png 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/pcb2gcodeGUI-Ubuntu-20.04-2025_03_23-10_51_42-530x295.png 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/pcb2gcodeGUI-Ubuntu-20.04-2025_03_23-10_51_42-565x315.png 565w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/pcb2gcodeGUI-Ubuntu-20.04-2025_03_23-10_51_42-710x396.png 710w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/pcb2gcodeGUI-Ubuntu-20.04-2025_03_23-10_51_42-725x404.png 725w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/pcb2gcodeGUI-Ubuntu-20.04-2025_03_23-10_51_42-160x90.png 160w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/03\/pcb2gcodeGUI-Ubuntu-20.04-2025_03_23-10_51_42.png 1330w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<\/li>\n<li class=\"\">\n<p class=\"\"><strong>Milling with the CNC Machine<\/strong><br \/>Finally, load the generated G-code file into the CNC machine and begin the actual milling process. This physically brings your designed PCB to life.<\/p>\n<\/li>\n<\/ol>\n<hr class=\"\" \/>\n<h2 class=\"\">Conclusion<\/h2>\n<p class=\"\">In this article, we covered the entire procedure using KiCad, ranging from circuit design and PCB layout to outputting Gerber and drill files, and finally generating G-code with pcb2gcodeGUI for CNC milling. We also touched upon detailed settings and plugin usage for each step, so we hope this serves as a helpful reference when tackling similar projects.<\/p>\n<p class=\"\">In future articles, we plan to dive deeper into more detailed explanations of each setting and troubleshooting tips. Be sure to apply these steps to your own projects for efficient PCB fabrication.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article explains the end-to-end workflow from schematic creation and board design to Gerber output and CN [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":999,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"en_US","_original_post":"https:\/\/donguri3.net\/?p=984","footnotes":""},"categories":[1172],"tags":[420,384,419,365,381,179],"class_list":["post-5006","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-programming-git","tag-g","tag-kicad","tag-pcb2gcodegui","tag-wsl2","tag-381","tag-179","en-US"],"_links":{"self":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5006","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/comments?post=5006"}],"version-history":[{"count":1,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5006\/revisions"}],"predecessor-version":[{"id":5009,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5006\/revisions\/5009"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media\/999"}],"wp:attachment":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media?parent=5006"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/categories?post=5006"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/tags?post=5006"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}