All News | Boards | Chips | Devices | Software | Archive | About | Contact | Subscribe
Follow LinuxGizmos:
Twitter Facebook Pinterest RSS feed
*   get email updates   *

Video: Hardware hacking basics for Linux software devs

Jul 19, 2016 — by Eric Brown 2,135 views

In this interesting ELC video, Grant Likely, a Linux kernel engineer and maintainer of the Linux Device Tree, describes his sojourn into embedded hardware.

Sometimes the best tutorials come not from experts, but from proficient newcomers who are up to date on the latest entry-level technologies and can remember what it’s like to be a newbie. It also helps if, like Grant Likely, the teacher is a major figure in embedded Linux who understands how hardware is ignited by software.

At the Embedded Linux Conference, Likely — who is a Linux kernel engineer, and maintainer of the Linux Device Tree subsystem used by many embedded systems — described his embedded hardware journey in a presentation called “Hardware Design for Linux Engineers” — or as he put it, “explaining stuff I only learned six months ago.”

A slide from Grant Likely’s ELC 2016 presentation
(click image to enlarge)

Likely dove into the embedded deep end when Linaro launched an open source hacker community called The 96Boards spec is used by a growing number of 64-bit ARM boards such as the DragonBoard 410c, HiKey, Andromeda Box Edge, and Bubblegum-96.

Left to right: DragonBoard 410c; HiKey; Andromeda Box Edge; Bubblegum-96

Linaro, an ARM-backed tools company dedicated to improving Linux and Android code for ARM SoCs, launched 96Boards to provide a consistent test platform. “We built the hardware because it allows us to solve our software goals,” Likely told the ELC audience. “We want Linux on ARM to behave in a consistent way across platforms.”


When Likely saw that 96Boards users craved a USB-to-UART adapter board, and “being foolish and optimistic,” he decided to build one himself. He was inspired by the Alan Kay quote: “People who are really serious about software should make their own hardware.”

Although Likely has an electrical engineering degree, he long ago turned to software, so he was more or less starting out fresh. “It was really intimidating,” he related. “There was a whole bunch of terminology and technology that I found very opaque.”

It’s never been easier

Likely quickly found, however, that a maturing open source hardware ecosystem would make his journey easier. “It’s never been easier to do this,” he said. “We have free software, we have prototype services, and we have manufacturers who will do small runs.” Also helpful are hacker-friendly distribution companies like SparkFun, Adafruit, and SeeedStudio, which “sell a lot of hardware hacker educational materials, ” as well as local hackerspaces, open hardware projects, and hacker how-to sites such as Hackaday said Likely.

Likely recommended starting with one of the many I/O kits with breadboards and solderless components, most of which expand upon Arduino boards. SeeedStudio’s various kits featuring its Grove I/O and sensor modules “make it easy to play with pre-made modules and wire them up without having to know how to build a circuit.”

Likely used one of these kits with his kids to build a lightsaber, but because the USB-to-UART board was heading for production, he needed to dispense with the training wheels. To prep for prototyping a board, he learned how to use tools such as soldering iron, a multimeter, helping hands, and an oscilloscope.

A “Helping Hands” soldering station

“It took me a long time to figure out how to solder,” said Likely, repeating a complaint voiced by Linus Torvalds at ELC 2016. Said Likely: “I am not responsible for burnt fingers or blown up boards. Proceed at your own risk.”

Because he wanted a run of 10 boards for testing, Likely used an affordable assembly service offered by his prototyping production house, SeeedStudio. “I could have soldered them myself, although I would have had some trouble with the service mounts,” he said.

Likely also began exploring open source embedded design software. “I needed proper design tools to capture a schematic of the circuits, convert that to a layout of where the components are going, and send that off to manufacturing.”

Kicad PCB designer example screenshot
(click image to enlarge)

He settled on KiCad, a package for simple two-PCB layer boards that he had tried and abandoned a few years ago. The open source software has now “improved in stability and usability while gaining some high-end features,” said Likely. “KiCad does differential pair routing so the traces are exactly the same length, and it does push/pull of traces so when you draw your traces, it will push the other ones out of the way.”

He also recommended the open source fritzing tool. “What’s cool about fritzing is once your breadboard is sorted out. you can flip over to schematic mode, and all your components and wires are already there,” said Likely. “Once the schematic is done, you flip to the PCB tab and you can lay-out the physical board with the traces and components. You can even submit the design to have a prototype board mastered.”

Deciding on components

One of the biggest challenges was deciding on components. “You go to DigiKey and you’re confronted with a huge catalog of components with a crazy array of footprints,” said Likely. He suggested the “0603” footprint for two-pin components like resistors and diodes. “It’s big enough to do rework, but small enough so that you’re not taking up much board space.”

Other gnarly issues include choosing the height of connectors and standoffs and whether to use surface or through-hole mounting. “Through-hole has been preferred for hobbyist hardware — it’s easy to solder and replace components, and many people are scared of surface mount,” said Likely. But because manufacturers prefer surface mount, he tried it, and it was “not that bad.”

Likely also described the challenges of level shifting, which he says can usually be avoided by extensive breadboard prototyping. “I didn’t appreciate how difficult IO voltage levels were when I first started,” said Likely. Working with I2C buses and determining “how strong the I2C signals should be pulled up” is very tricky. (For more on debugging I2C, see the video, as well as Likely’s blog post on the subject.)

For PCB printing for prototyping, Likely recommended DirtyPCBs and OSHPark, in addition to the Seeed Fusion PCB service he chose. “They source the components, and build and assemble the boards,” said Likely. “With Seeed, you can submit your entire order online, including Gerber files and BOM, and they’ll give you an online quote.”

When looking for a manufacturing partner, choose one that can review your design before starting and that offers a testing service, recommended Likely. “Once you’re into production, you will want to document everything,” he said. “I spent as much time figuring out the manufacturing details as I did doing the design itself.”

Likely’s finished “96boards UART Adapter Board,” ready for ordering
(click images to enlarge)

In the end, the hard work paid off. The 96Boards UART Adapter Board is now available from SeeedStudio for $15.

Grant Likely’s ELC 2016 video presentation, titled “Hardware Design for Software Engineers,” is available below. His talk’s slides can be be downloaded in PDF format here.

This article is copyright © 2016 and was originally published here. It has been reproduced by this site with the permission of its owner. Please visit for up-to-date news and articles about Linux and open source.

(advertise here)

Print Friendly, PDF & Email

3 responses to “Video: Hardware hacking basics for Linux software devs”

  1. David Anders (prpplague) says:

    For more information on the tools tested and recommended by David Anders referenced in Grant Likely’s presentation, visit –

  2. François says:

    Excellent combination Kicad + Seedstudio, this is what i teach to my students, and yes, Kicad’s push’n shove is a killer feature :)

  3. zoobab says:

    A bit pricey for a USB-TTL adaptor, you have 3.3V (not 1.8V) adaptors based on CH340G for less then 1EUR on Aliexpress. Even adding the level shifter between 3.3V and 1.8V would be cheaper.

Please comment here...