 Thank you very much for joining. So in the next 40 minutes, we'll be talking about free and open-source software tools for making open-source hardware. My name is Leonon Avie and I'm a senior software engineer at Consulco Group. The company I work for provides consultancy services for hardware bring-up of embedded devices. But I'm here to talk something a little bit different and it's not just software, it's both software and hardware. The agenda for today spreads in three directions. First we'll speak about open-source hardware. After that I'll share some experience that I have with free and open-source software tools for designing printed circuit boards. As I said, I'm a software engineer so I do this as a hobby. But I want to do an overview of the tools that we have that are free and open-source to do this job. And finally the third direction and the final part of the presentation is about making cases with 3D printing services and using free and open-source software CAD. How many of you are familiar with open-source hardware as a term? Can you raise your hands? Oh, that's perfect. You are the perfect audience. Just for the record, I have to say that open-source hardware is quite similar as open-source software. So the idea is to share the design of a physical object that is publicly available so other people can benefit from it. For example, students can use it to educate. Other people can modify the design, even sell it. And the open-source hardware movement is getting some traction in the recent years. When you have a physical project that you would like to share in terms of schematics, in order to make it open-source, really open-source hardware, you need to pick up a license. It's the same workflow like with open-source software. And you can even use some of the licenses that are available and popular for software. But since software is different from hardware, I recommend you to pick up a license that covers better hardware. I have listed here some of the popular licenses that I have seen in open-source hardware projects. Of course, these are just a few of the licenses there. There are a lot of other options. You can even make your own license that fits perfectly for your product. If you're not sure, just have a look at the other open-source hardware projects. Read the licenses and pick the one that's you two best. In my case, I prefer the Creative Commons open-source licenses for hardware products. What are the benefits of open-source hardware? The first thing is that it gives confidence that the design will be available even if the original manufacturers stop producing the device. It's a common case in the industry that some companies make a product after a decade. This product is no longer on the market, but there are still systems that are based and using these devices. This could be a problem for maintaining a system based on certain hardware devices. With open-source hardware, you can be sure that you will not be in this embarrassing situation when you have a system that's running smoothly, but the hardware is not there on the market because if this is an open-source hardware, you can make it on your own. The second thing is that open-source hardware is putting pressure on the price to be low because when you have an open-source hardware product, you know the bill of materials and, come on, we are all engineers. We can go and check what's inside. We can see the parts and that's how we can see if the price is fair. Open-source hardware is about making fair prices as well. Another benefit, and this is probably the most important in terms of embedded devices, is that you can customize the hardware. You can make your own devices by getting the original hardware, by contributing your changes, customizing them on top of what has been already shared. It's all about sharing knowledge, educating people, and getting feedback from the community. For small companies that are making open-source hardware, this is really important because this is how they can get feedback from high quality engineers and they can improve the product that they're providing to their customers. Who is making open-source hardware? I bet you all know these names and speaking about open-source hardware, I believe number one should be Arduino. It's widely popular. Everyone knows it. It was one of the very first embedded boards that became so popular and it's based on open-source hardware, which means that anyone can manufacture it. Of course, the Arduino is a trademark, so other manufacturers use different names. There is a company in my hometown, Olimax, which are also making a lot of open-source hardware. Sparkfun, Adafruit, even big corporations like Intel, Google, and IBM nowadays release some of their hardware products and their open-source hardware licenses. There are a lot of examples about open-source hardware. I have selected just a few of them. Let's start with Arduino. As I said, this is the bright example for open-source hardware. Everyone knows it. From students to professionals, we all love Arduino. Miniboard is a product which is with Intel Atom CPU. It's a very powerful single-board computer that is entirely open-source hardware. There are a few versions of Miniboard over the years. This is the last one, Miniboard Turbo. Before that, we had Miniboard Max and the original Miniboard. I bet you have all seen this. Google released the cardboards in order to make virtual reality more popular. They shared the design of this physical object so anyone can do it. You can buy a pizza, grab the cardboard, and out of it, you can make a Google cardboard for virtual reality. This is a fine example of how big companies are also joining the open-source hardware movement. Another example like this is the IBM TJ bot. This was released actually this year. This is a friendly robot that you can build, put on your desk, and talk with it for serving some simple tasks. All-IMAC Star is one. It's a do-it-yourself laptop. All-IMAC is a company based in Bulgaria. I'm coming also from Bulgaria. Their headquarters is in my hometown. The day before yesterday on Saturday, they released it on the market. We had a workshop and it was amazing because just in about 90 minutes, everyone was able to make with his bare hands to assemble a laptop that is open-source hardware. It was a fantastic experience. Since we are in the Czech Republic, my last example that should inspire you how great it is open-source hardware is about the 3D printers. Have you heard them? Okay. Okay. All right. Yes, a person on the first row said that he even has this printer in his office, one of these printers. This is a 3D printer that is open-source. It's capable of making open-source hardware as well. Isn't that great? So how to make a really entirely open-source device? Open-source software has been here for decades. We are all very well familiar with free and open-source software. But speaking about open-source hardware and putting things together, both open-source hardware and open-source software is something a little bit newer. So for an embedded device in terms of since we are at the embedded Linux conference, apart from the open-source software stack, we need an open-source hardware. The heart of the hardware is the printed circuit board and we need a case. So making the case is actually the most difficult part of my experience. It's time-consuming to make it. You need a few attempts and it wasn't that easy to produce a plastic case for quite some time. But now we have this very affordable 3D printer so anyone can build a case. So the question that is the core of this presentation is, is it worth designing open-source hardware products with expensive proprietary software tools? Is it worth paying thousands of US dollars for licensing the software that we use to make open-source hardware? Let's have a look at some of the options that we have for the software for making printed circuit boards. EGO, this is probably one of the most popular among hobbies that is not open-source. It's very popular because it has a free license for small two-layer printed circuit boards with some limitations of the size. It's also free for students but it has a paid subscription and not that far ago, I think it was in the beginning of this year, it was bought by Adobe. Altium, it was formerly known as Proto, probably a hardware engineer who would recommend using Altium but the problem is that it's a very expensive tool, of course it's a very good tool as well. Other popular tools such as Orcat or SolidWorks Electrical also require high-phase. So I forgot to ask you by the way, how many of you are hardware engineers? Okay, and how many of you are software engineers? Okay, we have a few hardware engineers, the majority are software. I'm also a software engineer so take whatever I say about hardware with a pinch of salt because you know I'm just a software guy. And speaking about tools for making hardware, it's kind of a religion. If someone is used to using Altium, I don't expect him to switch to free and open-source too. But if you are designing a new product, you want to try something new or even if you don't have any experience with any of these software, go for a free and open-source option. So what we have on the market as of today, that's free and open-source software. There are a lot of suits for designing printed circuit boards. These three are among the most popular according to my knowledge. I have listed them in order of difficulty. So the easiest one is Fritzsink. After that we have JIDA, I'm not exactly sure about the pronunciation although I tried it. And finally we have Kikad in this list. Let's have a look with a little bit of details of each of these applications. So Fritzsink, it's made for kids. It's really simple. It's free and open-source software available under the GPL version 3 license. It's cross-platform, it works on Linux, it works on Windows, it works on Mac. It's widely used by the community for making sketches and this is the main purpose. But you can also design single layer, very simple single layer printed circuit boards. It's written in C++ with Qt, the source code is in GitHub. So if you want to contribute something, just go to GitHub and create GitHub pull request. The fact that it uses the Qt framework makes it cross-platform. So this is how it looks, really convenient for making a small tutorial or even not that small when you need to make a simple sketch. Now the next project is called JIDA. I'm not personally using this one but I did a bit of a research regarding it. It's quite old project actually. It's again free and open-source software, again GPL but this time version 2. It also works on Linux, Windows and Mac OS. For me it's really important for software to work on my machine and I'm a Linux user as you can guess. So cross-platform is something that I look every time when I select a tool to use. It supports, it's a professional tool. It supports printed circuit boards with multiple layers. It's written with GTK and the source code is again in Git repositories. And now we're coming to my personal favorites that what I'm using for designing my hobby open-source hardware devices. It's called Kikat. It has a long history with more than 20 years. It's free and open-source software under GPL version 3 license. Again cross-platform, works anywhere. It supports PCB with multiple layers, no limitations of the site. It has some nice integration of 3D viewer so you can even preview the board that you are designing. The contributions for the development of Kikat are coming from CERN and it's been a very rapid development in Kikat in the past couple of years. It's already well adopted by the industry. The company Olimax that I've mentioned in one of the previous slides used Kikat to design their laptop. So the printed circuit boards which are highly complex within this DIY laptop are designed using Kikat which is a fun example that Kikat is capable of handling not only hobby projects but professional projects that involve printed circuit boards on a lot of layers. It's written in C++, the source code is in git repositories. So this is how the PCB view of Kikat looks like. So basically the process is that you first do the schematics, after that you select the footprints and you go to the PCB view where you place some components. This is an open-source hardware board for Raspberry Pi that I've designed in my spare time and this is just how Kikat looks when you use it. I would say it's not that complex and user-friendly. You need to spend some time researching the documentation and probably in a few days you feel like home using Kikat. While preparing the slides for this presentation I found another tool for designing cat software. It's an online tool that really impressed me. It's called MeowCut or something like that. I'm not good with pronunciation, sorry about that. So it's online tool that you can run within your web browser and you can make a printed circuit board. Again, it's a free and open-source software tool. It's written primarily in JavaScript, Python and Go. That's kind of normal since we're speaking about something that runs in your web browser and of course a backend in the cloud. The source code is in GitHub. It's kind of basic but it was really fun trying out this thing. The project is still live although the contributions in 2017 that I spotted were a little bit less compared to what I saw in the previous years. But if you have some spare time, have a look at this, it's fun. So a few recommendations if you're designing a printed circuit board. How many of you have designed a printed circuit board? All right. I'm just sharing some of the experience that I have. As I said, as software engineer at the beginning I had a lot of failures making printed circuit boards, you can guess. The few things that I would recommend any one of you to follow is first to go to the manufacturer of the PCB that you prefer to work with and to check their minimum requirements for tray spaces, drills and angular rings. This could save you a lot of time and a lot of failures. Unlike the software, when you're making a hardware you first have to design something after that you have to manufacture it. It's not like pressing a run button and just doing a QA test. With hardware it's a little bit different. Keep in mind the complexity of the assembly process while designing the PCBs. I have done a few failures because of this. Sometimes the design is valid, it works. You can assemble it once but actually the assembly process could take too much time. So when you're designing the board, keep in mind how to make the assembly process easier. Finally, it's about the case. As I said, based on my experience, making a plastic case or whatever kind of a case is the most difficult part of making an open source project. I would recommend considering the design of the case while making the printed circuit board. It's a little bit hard to do it this way but still keep in mind because the final product should be for users and users like, not only users, even developers. We all love to have not a bare printed circuit board. We love to have a device in a nice case. The question is where to print a prototype when you have a printed circuit board schematics. I'm personally using, I have personally tried all these options. The first option is a really nice website called OSH Park. They're providing services for making prototypes for two-layer and full-layer boards at very affordable prices and very good quality. The process is super simple. They have instructions how to export Gerber files and Drill files and to upload them to their website. They have one big button on their website where you just press upload your designs and in a few seconds you will see an image of your board that you can review. The process is really simple because you don't have to select all the annoying options. They just have pre-selected all options for you to make a high-quality board and they have a purple color. That's the trick. Of course if you have a local factory nearby you can go there and use it. In Europe there are a lot of factories that are like this. I live in not that big city and we have like two factories providing services for making printed circuit boards. Yes? Okay. Yeah. I'll just repeat the question. So the question is since I'm based in Bulgaria are the prices competitive compared to the Chinese prices? So the answer is no. Using local factories of course making production in China is always cheaper. We all know that they have a huge experience in manufacturing. But if you make just a prototype making in Europe especially in Bulgaria the price is not that higher. For me I prefer to make them locally because it saves me time for the transportation. If I use OSH Park they have a really fast delivery but still it takes a few days. Same goes for China. Well with the local factory I can visit the factory and directly get the prototype. So the difference here is it depends on what kind of a project are you asking for. Because if you are speaking about a complex board that involves like six or eight layers there are not so many companies that can manufacture such kind of a board. And then probably you need to go to a Chinese manufacturer and you won't have that much of an options. But if you are designing a two-layer board or a four-layer board making them in Europe is fine. So now we are entering the next stage of the presentation. It's about 3D CAD software for making physical objects like cases. I have selected some free and open source software tools which I believe are popular for designing a 3D object that can be after that 3D printed. So the list here includes OpenSCAD, QCAD, FreeCAD and Blender. In the next slides we'll see with a little bit more details each of these software. Is anyone of you using them? Can you? Oh, okay. Let's have a look at each of them. So OpenSCAD this is my personal favorites and I believe every developer should love this project because it's really simple. On the one side of the screen you write code, on the other side you see a physical object. Isn't that gorgeous? Of course designers hate it. So it's a free and open source software. It's script-only. The only option is to write a script, no other options. It's available under GPL version 2 license. Again it's cross-platform compatible, works on your Linux distribution on Windows or Mac OS X. The fact that it's cross-platform is because it's based on the Qt framework again. It's written in C++ and the source code is in GitHub. So you know how to contribute code if you find a bug or something. This is how it looks. So here is how you write code. It has its own scripting language. You have to mind the learning curve at the beginning. You have to put some efforts to learn the scripting language but it's straightforward in my opinion and especially for making simple cases like this one here you can learn the script quite fast and make something. Of course this process of making cut objects, physical objects using scripting language is appropriate for more simpler objects if you want to make a very sophisticated case. It might be a little bit difficult with OpenScat. So there are other free and open-source software tools that you can consider. Let's have a look at them. Qcat is one of them. It's a two-dimensional cut software, again free and open-source software, again written in C++ with Qt and again works on multiple platforms. Freecat is one of the most popular free and open-source softwares because it combines both words. You have the option to design based on OpenCascade, to design visually and it also works everywhere. It's again cross-platform compatible. You can see the recurring pattern that it's written in C++ and Python with the Qt framework, the source code again in GitHub. How many of you are using Freecat? Just a few of you. So it's more difficult than OpenScat but it's easier than Blender, the next thing that we're going to see and it's made especially for 3D objects after that you can print. Blender is not exactly a regular cut software, actually it's not a cut software at all. It's a professional 3D computer graphics suit that is widely used for making animation movies. I'm pretty sure you have all seen the big book movie with this giant white rabbit. It's very popular in the embedded world. You can also make visual effects with Blender but you can also make 3D models, export them to STL files and 3D print them. Again it's a free and open-source software available under GPL version 2 license. It's cross-platform, it's written in C++ Python using OpenGL and of course again the source in Git. So when you have a 3D object already designed you have to export a file called STL and out of this STL file in order to 3D print it you have to convert the STL to a file called Gcode which is specifically set for the printer that you have in because different printers have different settings, of course it depends on the material and so on. So UTIMAKER, the famous manufacturer of 3D printers, has made a free and open-source software too called UTIMAKER Cura which is software for slicing and preparing STL files for printing. It supports not only UTIMAKER 3D printers but many more and it's probably one of the most popular or the most popular open-source solution for this job. Again it's a free and open-source software, it's available under the lesser GPL license version 3 cross-platform so you can use it on any popular distribution that you have for a desktop. It could be a Linux distribution, it could be Windows, it could be Mac OS isn't that great. All of these free open-source software tools that we are reviewing in this presentation support multiple platforms. UTIMAKER is written in Python and QML and the source code is in GitHub. This is how it looks. Actually the screenshot that I took is a little bit older because I received an email last week from UTIMAKER that they released the third version of the software but this is a little bit older version, I think this is 2.5 but you'll get the idea. Once you have an STL file, you import this STL file, you see something like this, I have a very basic printer so here is the dimensions that my printer can print and I have to put the object that I want to print in a way to fit the dimensions of the supported dimensions by the printer. So we're coming to the end of the presentation and I would like to come up with a few conclusions. In this presentation we briefly went through some of the, not all of them, but some of the free and open-source software tools available for making open-source hardware and I hope that I managed to convince you that open-source hardware is a viable business model and further more there are enough free and open-source software tools to make open-source hardware because it's valuable not only to share the schematics of the free open-source hardware, sorry, it's not valuable only to share the schematics of a hardware product under open-source license, but it's also valuable to share it in a way that other people can easily contribute and use this product. And one more thing, no matter if you're making software hardware, share it under open-source license. So thank you very much and we have like five minutes for questions. Any questions? Yep, hope it works. So I have a question regarding licensing. If you may be now in Linux world there is something that happened recently named copyright trolls. So how can I make sure that if you release your hardware under some open-source license that you will not try to take some money from me and which line since it's better to use in order to prevent this issue. Okay, well it's a tricky question and as an engineer I'm not sure I can provide you the exact answer because this involves a lot of knowledge about walls and wires. So it's a hard question for me to answer directly. What usually you switch license? So I prefer to publish the things I do and to reuse open-source hardware under creative commons. But of course creative commons have different versions so pay attention to the version and read carefully the license if you're not sure. Take some time to speak with a warrior that can provide you exact information. Okay, thank you. So as a software engineer like yourself I've played around with Fritzing and Kikad and a few of the others and I know that a lot of hardware designers among you like to roll your own footprints, at least that's what I've been told. I found things like Fritzing are really good, there's a lot there already, but it's very limited and when you want to step up going to someone like Kikad I don't know whether you found it, but I found it extremely difficult to find the footprints of stuff I wanted already and obviously as a hobbyist in my spare time with this it takes a lot of time. How did you find that? Did you find that easy, hard or was that a major pain point for you? Yeah, excellent question, Boozai. So making the footprints is a really important part of making the hardware because it's part of the assembly. Once you do a print circuit board it could work but if the footprints are not exact this could bring a lot of pain during the manufacturing process, even if you're doing a small volume manufacturing. Yes, Fritzing is good for making schematics. I don't find it very useful for making print circuit boards since it supports just a single layer board or although there are some services for making from Fritzing to something more complicated, but I personally use Kikad for making two-layer boards and Kikad offers a built-in library with some footprints but honestly if you have to build a high quality product it's better to pick up the components especially speaking about the SMD components, the surface mounting components that require surface mount technology. So pick up the components, have a look at the data sheet, at the last pages of the data sheet there are exact dimensions, physical dimensions of the components and based on these physical dimensions it's good either to check the libraries if you're using ready libraries or to make your own footprints. This could save you a lot of time. I made this mistake to use some libraries that I found in GitHub for a certain SMD component. Of course it works, it's fine but for prototyping but after that I had some problems with the SMD assembly. So maybe I would like to add information to that. So Kikad does not only ship some libraries with it but they're working on an open library that you can use with your Kikad. So if you're on footprints that do not really work just fix them in their GitHub library then we're not only having an open source tool but we're also having an open source library that we can really use in that and I guess then we can benefit from all that open source things that they come out there. Yes that's exactly thank you very much for the additional information. Sorry if I misled you it's not that the components in the library doesn't work all of them work and they find but sometimes there might be slight differences and one important thing that I have to add is that certain companies are sharing the libraries that they're using to design their own products. For example Olimax shared the libraries that they did for their products because they're using Kikad but they're making their own footprints for each component that they're using and they published all these libraries in GitHub a few months ago. Okay one question over there. I missed first few minutes of your presentation maybe you already discussed that you talked about 3D printing of cases what about 3D printing of PCBs? Oh okay 3D printing about PCBs I've never tried that. My process of doing 3D printing circuit board after doing the design is just to go to the factory the beginning I mentioned that I'm a software engineer so the whole thing with hardware is more like a hobby for me and it's really great experience but as soon as I have to get from a prototype to a real printed circuit board I prefer to leave this to the professional companies that are providing it as a service. Have you tried making 3D printing circuit boards? I didn't do myself but I'm interested in this technology because of some you know flexible PCBs or something like that or chips inside some plastic or whatever you don't need to have them separate file for case you could create devices as a whole. This is interesting but unfortunately I can't provide. May I jump this question from my practical experience Tamberman holding case we have a mill we do it with milling for two-layer PCBs but it's already a new sense getting the through context done when it gets to four-layer PCBs doing it in-house is completely crazy if you don't have at least 10 million budget it's just crazy but generally my experience is just get yourself a reliable vendor in China kick them until they have a three-day turnaround and do that it's not worth it we bought the mill because my wife is a mechanics freak and she uses it for mechanical assembly we milled two PCBs and after that the whole company we got together and we said fuck this shit we're never doing it again okay thank you all right just another question over there yes you thought you said that MSMD mounting I mean after you make the PCB you have to assemble the components yes I'd love to make like a board with SMD LEDs but how I mean I can't do that myself depends on the size of the SMD if you're doing like with sizes 0805 or 0603 you can do it with a soldering iron you just need to practice a little bit okay YouTube can come to the rescue but the other option is to go to a factory that does not only the PCB but also the assembly process any recommendation a big recommendation it's sad that doesn't seem to do that there is another company called OSH stencil that can make a stencil for you after that you can place a paste and put it into an oven I highly recommend you not to use your kitchen oven 0603 is easy to do by hand if you have a mantis microscope that's what we use in the company a vision mantis inspection microscope and then it's really easy to do by hand the trick is you tin one pin and then you put the component down and then you take another pin then just solder them down it's it's not particularly difficult I mean in my company everybody can do it even the the 55 year old advertising lady already took a shot and she got it working after 15 or 20 minutes she was able to reliably solder them the things is two things number one you must fuck the EU by leaded solder no ROHS shit and number two use colophonium and number three they use an Ursa or another high quality soldering iron if it costs less than 200 bucks it's not suitable sorry for jumping into you answer no problem thank you very much for the addition I'm afraid we're a little bit late so thank you very much for joining if you have more questions I'm around you can come and ask thank you very much for joining