Beaglebone Black clone in Kicad

I am happy to share that I have created a Beaglebone Black clone in Kicad. It is available at GitHub - lnetec/openforge.
Please note it is not tested by fabricating and bringing up yet.
Thanks

3 Likes

This looks quite impressive. Must have taken quite some time. What was your motivation for doing this project?

The original is apparently released as an Allegro project BeagleBoard.org / BeagleBone Black · GitLab

I guess you re-created the PCB from the released gerber files. I see quite a lot of little formatting changes in the schematic. Looks that was re-created manually (at least partially). I am (was) not aware of a converter from Allegro to KiCad, but apparently some have been working on this such as GitHub - system76/kicad-allegro: Converter from Allegro to KiCad, and Allegro extract viewer Did you use any such tools?

Apparently the original has been released under a Creative Commons license, you changed that to MIT. How does that work out?

PCB’s of this complexity are a bit over my head and I have not looked at the project in depth. I do know you can add the “kicad_sch-bak” and the “fp-info-cache” files to your gitignore file.

Beaglebone is a trademark too, not a good idea to publish a clone using their name.

Or go the other way. As far as I know the whole Beagleboard project has a direct connection with Ti to promote their Sitara line of processor, make prototypes easily and affordably available, help both hackers, tinkerers and people who want to use these things in industrial processes to get started with these things. There is for example also a Beaglebone Green, and this is (If I understand well) made by SeeedStudio, but in collaboration with “Beaglebone”.

Maybe it’s nitpicking, but it looks like “begleboard.org” is the brandname, I don’t see “beaglebone” in there. But I agree that you’d have to be a bit careful and be straightforward upfront.

All the designs are fully open source and components are available for anyone to manufacture compatible hardware. We do request contact and permission before considering the use of the BeagleBoard.org name on any products.

They have already released the Allegro project under a Creative Commons licence, and I assume they even want to encourage your project, Maybe even link to it from their website or projects section.

I noticed already started a thread on the beagleboard forum two months ago: Beaglebone clone in kicad - General Discussion - BeagleBoard and there is no response (yet). Looks like it’s now time to give that thread a bump.

I recommend this. Also the .kicad_prl file should be ignored. You should integrate the content of the latest kicad gitingore file into your project. I also suggest thinking through the directory naming and organization. This is the public interface to the project, and even though you may not think about it at all, at least I who pretty often look at open source projects in CVS services (nowadays mostly github and gitlab) form the first impression of the project from the file system structure, file/directory names and the README file which is visible directly in the project page. It’s immensely annoying to see cache files, backup files etc. there and try to guess what directory names mean.

After a simple search I found the example below of a .gitignore file for kicad projects (not for KiCad source code). This file is 3 year old. I don’t know if there is an “official” or newer version of this file.

# For PCBs designed using KiCad: https://www.kicad.org/
# Format documentation: https://kicad.org/help/file-formats/

# Temporary files
*.000
*.bak
*.bck
*.kicad_pcb-bak
*.kicad_sch-bak
*-backups
*.kicad_prl
*.sch-bak
*~
_autosave-*
*.tmp
*-save.pro
*-save.kicad_pcb
fp-info-cache

# Netlist files (exported from Eeschema)
*.net

# Autorouter files (exported from Pcbnew)
*.dsn
*.ses

# Exported BOM files
*.xml
*.csv

For others: If KiCad converts a project from V5 or earlier to KiCad V6 or newer, then it leaves behind the old files in your project directory. KiCad ignores these and you can delete them manually. (I do assume you have a full backup of the old project before you attempted a conversion).

All files with pattern "~*" are most probably some lock files or autosaved temporary files and should be ignored, just like "*~" which is already there.

It’s not simple to create one .gitignore file which works with a project which integrates several projects: KiCad project, software etc. The file name patterns may clash. Fortunately git understands several .gitignore files in nested folders. To me it looks like openforge/openforge/ directory should have a KiCad-specific .gitignore file.

Thanks for encouraging words. There is a long story to it, in short one of my customer wanted an industrial grade HMI, After studying various options (IMX… etc), I decided to go with TI and created a beaglebone clone. The idea was to derive a system with reduced functionality for HMI from it. Deal did not happen but I ended up in creating openforge. But I plan to use it for my other application.

Yes, at one point I even thought of buying Allegro, but its cost make it nonviable option.

I did following to create this project.

  1. Most of the symbols/footprints were downloaded from TI website. They direct to Ultralibrarian for the same. I had to manually adjust pad sizes of some footprints. Some footprints were created manually.
  2. Created entire schematic manually with matching components references.
  3. Imported schematic to PCB editor. Wrote a python script to place all components. It worked, and components were placed perfectly.
  4. Exported beaglebone gerber to kicad PCB.
  5. Copied copper layers one by one to my PCB. After few tries, I could copy all layers perfectly aligned. Only few tracks were moved due to minor footprint changes.
  6. Now, at this stage there were more than 3000 errors, mostly due to orientation of two pad components(res/cap). Manually corrected the orientation, footprint pad sizes.
  7. Removed all errors and warnings and PCB was complete.

I just want license to be least restrictive, so that anybody can use it for any purpose. While doing so I do not want to violate any copyright or other license terms. I definitely need help in this area. I will try to study the CCL and MIT, any suggestion/guidance would be helpful
Also, what I have done is just a mechanical work, original design is done by good folks at Beaglebone, hence I do not want to claim any credit for it.

The insights that you gave are already valuable and thanks for that.

Thanks, I will improve my .gitignore to include suggested changes

Here’s the first aid: you can’t change the licence like that, not without first making sure it’s allowed by the original licence. I can do some checking for you, but IANAL.

EDIT: done, it was a bit difficult to find from the original bb project, but it seems to be https://creativecommons.org/licenses/by-sa/3.0/. That’s a bit more restrictive than MIT, you can’t change the licence to MIT licence. CC by-sa 3 requires keeping the work under open source, MIT allows making modifications and redistributing as closed source.

This is the crucial point:

That should be clear enough.

2nd EDIT: this shows one weakness of keeping the whole of git history. You have already published your work under a wrong license and it’s in the history. Now, if somebody isn’t careful enough and downloads an old version from the history, they may think it’s OK to close the source with modifications. I might even consider deleting the whole project from github and starting it afresh with the correct license, unless you can alter the history.

BTW, the name “openforge” is too generic. As a search term it gives hits for something else.

If you keep that directory structure I strongly suggest using the easily found KiCad .gitignore from gitignore/KiCad.gitignore at main · github/gitignore · GitHub. Put it as is under the actual KiCad project directory instead of top level. Keep more generic stuff, if you have any, in top level .gitignore. Then, don’t add files not related to the actual KiCad project under the KiCad project directory but put them to some other subdirectory. You can periodically (when the KiCad major version is changed) check out the KiCad .gitignore and opy the possibly changed file to your project without fear of messing up something else. It’s less work than trying to keep up with KiCad development and possible file type changes, and trying to merge several types of ignore patterns in top level.

Thanks eelik. I have written an email to the Beaglebone founder. Hope to hear from him soon.

Google search indicates, in git we can remove particular commit or history. However, I have never done it. But for any further action, will wait to hear from the Beaglebone founder. Till then at least, I will remove the license.
Personally, if allowed, I would like to keep history, it will always remind me of my careless foolishness.