{"id":33051701,"url":"https://github.com/vlachoudis/bCNC","last_synced_at":"2025-11-18T21:01:20.451Z","repository":{"id":22031584,"uuid":"25359717","full_name":"vlachoudis/bCNC","owner":"vlachoudis","description":"GRBL CNC command sender, autoleveler and g-code editor","archived":false,"fork":false,"pushed_at":"2025-10-01T04:52:33.000Z","size":45485,"stargazers_count":1669,"open_issues_count":500,"forks_count":557,"subscribers_count":186,"default_branch":"master","last_synced_at":"2025-10-01T06:29:22.871Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vlachoudis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.BSD3","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-10-17T13:37:02.000Z","updated_at":"2025-10-01T04:52:38.000Z","dependencies_parsed_at":"2023-02-14T09:01:46.978Z","dependency_job_id":"2ece2d55-f5be-411b-9740-6589ea6861e1","html_url":"https://github.com/vlachoudis/bCNC","commit_stats":{"total_commits":1869,"total_committers":95,"mean_commits":"19.673684210526314","dds":0.6955591225254147,"last_synced_commit":"e181679cc6104a6f7b757b1bf20eb24ee95485b0"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/vlachoudis/bCNC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlachoudis%2FbCNC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlachoudis%2FbCNC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlachoudis%2FbCNC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlachoudis%2FbCNC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vlachoudis","download_url":"https://codeload.github.com/vlachoudis/bCNC/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlachoudis%2FbCNC/sbom","scorecard":{"id":925109,"data":{"date":"2025-08-11","repo":{"name":"github.com/vlachoudis/bCNC","commit":"7f7fed5a845a1993e54411afd2a3ae211a5a2113"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Maintained","score":5,"reason":"2 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":6,"reason":"Found 16/26 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: GNU General Public License v2.0: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 0.9.14.52.beta.exe not signed: https://api.github.com/repos/vlachoudis/bCNC/releases/14109928","Warn: release artifact 0.9.14.52.beta.exe does not have provenance: https://api.github.com/repos/vlachoudis/bCNC/releases/14109928"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 21 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"49 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: GHSA-6p56-wp2h-9hxr","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: GHSA-qr4w-53vh-m672","Warn: Project is vulnerable to: PYSEC-2023-183","Warn: Project is vulnerable to: GHSA-3f63-hfp8-52jq","Warn: Project is vulnerable to: PYSEC-2021-41 / GHSA-3wvg-mj6g-m9cv","Warn: Project is vulnerable to: PYSEC-2020-77 / GHSA-3xv8-3j54-hgrp","Warn: Project is vulnerable to: PYSEC-2020-80 / GHSA-43fq-w8qq-v88h","Warn: Project is vulnerable to: GHSA-44wm-f244-xhp3","Warn: Project is vulnerable to: GHSA-4fx9-vc88-q2xc","Warn: Project is vulnerable to: PYSEC-2021-35 / GHSA-57h3-9rgr-c24m","Warn: Project is vulnerable to: PYSEC-2020-172 / GHSA-5gm3-px64-rw72","Warn: Project is vulnerable to: PYSEC-2021-331 / GHSA-7534-mm45-c74v","Warn: Project is vulnerable to: PYSEC-2021-137 / GHSA-77gc-v2xv-rvvh","Warn: Project is vulnerable to: PYSEC-2021-92 / GHSA-7r7m-5h27-29hp","Warn: Project is vulnerable to: PYSEC-2020-78 / GHSA-8843-m7mw-mxqm","Warn: Project is vulnerable to: PYSEC-2023-227 / GHSA-8ghj-p4vj-mr35","Warn: Project is vulnerable to: PYSEC-2022-10 / GHSA-8vj2-vxx3-667w","Warn: Project is vulnerable to: PYSEC-2021-36 / GHSA-8xjq-8fcg-g5hw","Warn: Project is vulnerable to: PYSEC-2021-42 / GHSA-95q3-8gr9-gm8w","Warn: Project is vulnerable to: PYSEC-2022-168 / GHSA-9j59-75qj-795w","Warn: Project is vulnerable to: PYSEC-2020-76 / GHSA-cqhg-xjhh-p8hf","Warn: Project is vulnerable to: PYSEC-2021-40 / GHSA-f4w8-cv6p-x6r5","Warn: Project is vulnerable to: PYSEC-2021-69 / GHSA-f5g8-5qq7-938w","Warn: Project is vulnerable to: PYSEC-2021-139 / GHSA-g6rj-rv7j-xwp4","Warn: Project is vulnerable to: PYSEC-2020-84 / GHSA-hj69-c76v-86wr","Warn: Project is vulnerable to: GHSA-j7hp-h8jx-5ppr","Warn: Project is vulnerable to: PYSEC-2019-110 / GHSA-j7mj-748x-7p78","Warn: Project is vulnerable to: GHSA-jgpv-4h4c-xhw3","Warn: Project is vulnerable to: PYSEC-2022-42979 / GHSA-m2vv-5vj5-2hm7","Warn: Project is vulnerable to: PYSEC-2021-37 / GHSA-mvg9-xffr-p774","Warn: Project is vulnerable to: PYSEC-2020-83 / GHSA-p49h-hjvm-jg3h","Warn: Project is vulnerable to: PYSEC-2022-8 / GHSA-pw3c-h7wp-cvhx","Warn: Project is vulnerable to: PYSEC-2021-93 / GHSA-q5hq-fp76-qmrc","Warn: Project is vulnerable to: PYSEC-2020-82 / GHSA-r7rm-8j6h-r933","Warn: Project is vulnerable to: PYSEC-2021-138 / GHSA-rwv7-3v45-hg29","Warn: Project is vulnerable to: PYSEC-2020-81 / GHSA-vcqg-3p29-xw73","Warn: Project is vulnerable to: PYSEC-2020-79 / GHSA-vj42-xq3r-hr3r","Warn: Project is vulnerable to: PYSEC-2021-70 / GHSA-vqcj-wrf2-7v73","Warn: Project is vulnerable to: PYSEC-2022-9 / GHSA-xrcv-f9gm-v42c","Warn: Project is vulnerable to: PYSEC-2021-317","Warn: Project is vulnerable to: PYSEC-2021-38","Warn: Project is vulnerable to: PYSEC-2021-39","Warn: Project is vulnerable to: PYSEC-2021-94","Warn: Project is vulnerable to: PYSEC-2023-175"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-25T10:48:38.562Z","repository_id":22031584,"created_at":"2025-08-25T10:48:38.562Z","updated_at":"2025-08-25T10:48:38.562Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285138471,"owners_count":27121052,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-18T02:00:05.759Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-11-14T03:00:28.434Z","updated_at":"2025-11-18T21:01:20.444Z","avatar_url":"https://github.com/vlachoudis.png","language":"Python","readme":"bCNC\n====\n\nGrblHAL (formerly GRBL) CNC command sender, autoleveler, g-code editor, digitizer, CAM\nand swiss army knife for all your CNC needs.\n\nAn advanced fully featured g-code sender for grblHAL (formerly GRBL). bCNC is a cross platform program (Windows, Linux, Mac) written in python. The sender is robust and fast able to work nicely with old or slow hardware like [Raspberry Pi](http://www.openbuilds.com/threads/bcnc-and-the-raspberry-pi.3038/) (As it was validated by the GRBL maintainer on heavy testing).\n\n## IMPORTANT! If you have any troubles using bCNC, please read [WIKI](https://github.com/vlachoudis/bCNC/wiki) and [DISCUSS](https://github.com/vlachoudis/bCNC/discussions) it first. Only create new [issues](https://github.com/vlachoudis/bCNC/issues) when you are certain there is a problem with actual bCNC code.\n\n[![Build Status](https://travis-ci.com/vlachoudis/bCNC.svg?branch=master)](https://travis-ci.com/vlachoudis/bCNC)\n[![CodeFactor](https://www.codefactor.io/repository/github/vlachoudis/bcnc/badge)](https://www.codefactor.io/repository/github/vlachoudis/bcnc)\n\nAll pull requests that do change GUI should have attached screenshots of GUI before and after the changes.\nPlease note that all pull requests should pass the Travis-CI build in order to get merged.https://github.com/Harvie/cnc-simulator\nMost pull requests should also pass CodeFactor checks if there is not good reason for failure.\nBefore making pull request, please test your code on ~~both python2 and~~ python3.\n\n![bCNC screenshot](https://raw.githubusercontent.com/vlachoudis/bCNC/doc/Screenshots/bCNC.png)\n\n# Installation (using pip = recommended!)\n\nThis is a short overview of the installation process, for more details see the ![bCNC installation](https://github.com/vlachoudis/bCNC/wiki/Installation) wiki page.\n\nThis is how you install (or upgrade) bCNC along with all required packages.\nYou can use any of these commands (you need only one):\n\n    pip install --upgrade bCNC\n    pip install --upgrade git+https://github.com/vlachoudis/bCNC\n    pip install . #in git directory\n    python -m pip install --upgrade bCNC\n\nThis is how you launch bCNC:\n\n    python -m bCNC\n\nOnly problem with this approach is that it might not install Tkinter in some cases.\nSo please keep that in mind and make sure it's installed in case of problems.\n\nIf you run the `python -m bCNC` command in root directory of this git repository it will launch the git version.\nEvery developer should always use this to launch bCNC to ensure that his/her code will work after packaging.\n\nNote that on Windows XP you have to use `pyserial==3.0.1` or older as newer version do not work on XP.\n\nPyPI project: https://pypi.org/project/bCNC/\n\n# Installation (manual)\nYou will need the following packages to run bCNC\n- tkinter the graphical toolkit for python\n  Depending your python/OS it can either be already installed,\n  or under the names tkinter, python3-tkinter, python-tk\n- pyserial or under the name python-serial, python-pyserial\n- numpy\n- Optionally:\n- python-imaging-tk: the PIL libraries for autolevel height map\n- python-opencv: for webcam streaming on web pendant\n- scipy: for 100 times faster 3D mesh slicing\n\nExpand the directory or download it from github\nand run the bCNC command\n\n# Installation (Linux package maintainers)\n- Copy `bCNC` subdirectory of this repo to `/usr/lib/python3.x/site-packages/`\n- Launch using `python -m bCNC` or install bCNC.sh to /usr/bin\n- Alternatively you can fetch the bCNC Python package using pip when building Linux package\n  - refer to your distro, eg.: https://wiki.archlinux.org/index.php/Python_package_guidelines\n  - Py2deb to build Debian package from Python package: https://pypi.org/project/py2deb/\n\n# Installation (Compile to Windows .exe)\n\nNote that you might probably find some precompiled .exe files on github \"releases\" page:\nhttps://github.com/vlachoudis/bCNC/releases\nBut they might not be up to date.\n\nThis is basic example of how to compile bCNC to .exe file.\n(given that you have working bCNC in the first place, eg. using `pip install bCNC`).\nGo to the directory where is your bCNC installed and do the following:\n\n    pip install pyinstaller\n    pyinstaller --onefile --distpath . --hidden-import tkinter --paths lib;plugins;controllers --icon bCNC.ico --name bCNC __main__.py\n\nThis will take a minute or two. But in the end it should create `bCNC.exe`.\nAlso note that there is `make-exe.bat` file which will do just that for you.\nThis will also create rather large \"build\" subdirectory.\nThat is solely for caching purposes and you should delete it before redistributing!\n\nIf you are going to report bugs in .exe version of bCNC,\nplease check first if that bug occurs even when running directly in python (without .exe build).\n\n# IMPORTANT! Motion controller configuration\n- We strongly recommend you to use 32b microcontroller with FluidNC https://github.com/bdring/FluidNC http://wiki.fluidnc.com firmware for the new machine builds.\n- In case you are using grblHAL https://github.com/grblHAL (Original GRBL firmware is still supported, but it is currently reaching the end-of-life due to limitations of 8b microcontrollers)\n- GRBL should be configured to use **MPos** rather than **Wpos**. This means that `$10=` should be set to odd number. As of GRBL 1.1 we recommend setting `$10=3`. If you have troubles communicating with your machine, you can try to set failsafe value `$10=1`.\n- CADs, bCNC and GRBL all work in millimeters by default. Make sure that `$13=0` is set in GRBL, if you experience strange behavior. (unless you've configured your CAD and bCNC to use inches)\n- Before filing bug please make sure you use latest stable official release of GRBL. Older and unofficial releases might work, but we frequently see cases where they don't. So please upgrade firmware in your Arduinos to reasonably recent version if you can.\n- Also read about all possible GRBL settings and make sure your setup is correct: https://github.com/gnea/grbl/wiki/Grbl-v1.1-Configuration\n- GrblHAL also has \"Compatibility level\" settings which have to be correctly configured during firmware compilation: https://github.com/grblHAL/core/wiki/Compatibility-level\n\n# Configuration\nYou can modify most of the parameters from the \"CAM -\u003e Config/Controller\" page.\nYou can also enable (up to) 6-axis mode in Config section,\nbut bCNC restart is required for changes to take place.\nOnly the changes/differences from the default configuration\nfile will be saved in your home directory ${HOME}/.bCNC  or ~/.bCNC\n\nThe default configuration is stored on bCNC.ini in the\ninstallation directory.\n\n*PLEASE DO NOT CHANGE THIS FILE, IT'S GOING TO BE OVERWRITTEN ON EACH UPGRADE OF BCNC*\n\n# Features:\n- simple and intuitive interface for small screens\n- 3-axis and 6-axis GUI modes\n- import/export **g-code**, **dxf** and **svg** files\n- 3D mesh slicing **stl** and **ply** files\n- fast g-code sender (works nicely on RPi and old hardware)\n- workspace configuration (G54..G59 commands)\n- user configurable buttons\n- g-code **function evaluation** with run time expansion\n- feed override during the running for fine tuning\n- Easy probing:\n  - simple probing\n  - center finder with a probing ring\n  - **auto leveling**, Z-probing and auto leveling by altering the g-code during\n    sending (or permanently autoleveling the g-code file).\n  - height color map display\n  - create g-code by jogging and recording points (can even use camera for this)\n  - **manual tool change** expansion and automatic tool length probing\n  - **canned cycles** expansion\n- Various Tools:\n  - user configurable database of materials, endmills, stock\n  - properties database of materials, stock, end mills etc..\n  - basic **CAM** features (profiling, pocketing, drilling, flat/helical/ramp cutting, thread milling, cutout tabs, drag knife)\n  - User g-code plugins:\n    - bowl generator\n    - finger joint box generator\n    - simple spur gear generator\n    - spirograph generator\n    - surface flatten\n    - play melody from MIDI file using stepper motor frequency\n    - ...\n- G-Code editor and display\n    - graphical display of the g-code, and workspace\n    - graphically moving and editing g-code\n    - reordering code and **rapid motion optimization**\n    - moving, rotating, mirroring the g-code\n- Web pendant to be used via smart phones\n\n# Debugging\nYou can log serial communication by changing the port to something like:\n\n    spy:///dev/ttyUSB0?file=serial_log.txt\u0026raw\n    spy://COM1?file=serial_log.txt\u0026raw\n\nIf a file isn't specified, the log is written to stderr.\nThe 'raw' option outputs the data directly, instead of creating a hex dump.\nFurther documentation is available at: https://pyserial.readthedocs.io/en/latest/url_handlers.html#spy\n\n# Disclaimer\n  The software is made available \"AS IS\". It seems quite stable, but it is in\n  an early stage of development.  Hence there should be plenty of bugs not yet\n  spotted. Please use/try it with care, I don't want to be liable if it causes\n  any damage :)\n\n# See also\n  - G-code simulators that you can use to independently cross-check g-code generated by bCNC or verify any g-code files in case you have troubles running them.\n    - https://harvie.github.io/cnc-simulator ([github](https://github.com/Harvie/cnc-simulator))\n    - https://camotics.org\n    - https://freecad.org\n","funding_links":[],"categories":["Engineering","Software"],"sub_categories":["Plotter Control"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvlachoudis%2FbCNC","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvlachoudis%2FbCNC","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvlachoudis%2FbCNC/lists"}