Jeff Epler's blog

1 September 2015, 14:39 UTC

DragonBoard™ 410c with rt-preempt failure

I was excited to obtain a DragonBoard, an affordable 64-bit ARM single-board computer, but unfortunately it hasn't lived up to my hopes.

First of all, it shipped with one terrible problem, making it useless for headless development: The onboard wireless doesn't receive multicast traffic, including ARP requests! And their kernel doesn't provide many modular drivers, so adding any old USB wireless dongle doesn't work until you rebuild the kernel. As of this writing, there is no useful workaround.

And that's when I hit the second show-stopper problem. I planned to build kernels for this thing anyway, because the goal is to run LinuxCNC on it with rt-preempt realtime. So I stuck in a large capacity micro-sd card, obtained the kernel source, built it, and rebooted with my new kernel.

(incidentally, testing kernels is a PITA. You have two choices: one, flash the one and only boot area with your new and untested kernel and hope for the best; two, tether to a PC (losing USB keyboard and mouse on the dragonboard!) and use fastboot every time you boot. ugh)

.. but the new kernel just didn't work. It scrolled kernel messages, but got stuck partway through booting. dmesg implicated the wireless card. This one at least has a workaround: cherry-pick a certain commit from their kernel git. As I understand it, this bug is triggered by using the compiler on the dragonboard, and not encountered with the linaro cross-compiler running on a traditional x86 desktop.

Anyway, having found out about this I was briefly celebratory. I booted with my own kernel and had a working USB dongle. Unfortunately, that celebration was short-lived. The USB dongle hasn't been terribly reliable either, particularly under high CPU load.

I soldiered on and patched the linaro 4.0 kernel with the 4.0-rt5 patchset. There were a few minor conflicts which I believe I resolved correctly. Unfortunately, the LinuxCNC latency-test readily encounters latencies above 15ms (15000us). LinuxCNC really would like sub-100us max latencies.

I briefly enabled tracers, and have traces that seem to implicate a variety of subsystems: networking, usb, and video *all* figure. More experienced developers than I will have to be the ones to sort out RT on 64-bit ARM.


19 September 2013, 1:34 UTC

Debugging realtime components in UBC3

Here's how to run the debugger on realtime code in the "unified-build-candidate3" branch from This assumes you are using a run-in-place tree with a userspace realtime model, and that you understand the basics of gdb.

read more…

16 July 2013, 16:32 UTC

Rotary Delta Kinematics

Together with Chris Radek, I've been working on a visualization for his Rotary Delta Kinematics. Here's a picture of the work, which he hopes to push to soon. Of course the plot is of the AXIS splash screen.


15 July 2013, 14:29 UTC

Got a 3D printer

I bought a 3D printer, called Rostock MAX. I'm keeping a record of my experience with it. So far it's just a work in progress, but maybe this week I'll progress to the point that I can extrude plastic. Later I'll make it work with LinuxCNC.


12 July 2013, 11:28 UTC

Linear Delta Kinematics

I'm still awaiting delivery of my Rostock MAX, and converting it to use LinuxCNC is even further in the future, but I've been working on a LinuxCNC kinematics model and visualization.

read more…

All older entries
Website Copyright © 2004-2017 Jeff Epler