Compass Technical Information

Jeremy McDermond <mcdermj@...>

Just briefly so that everyone understands what “Compass” is.

Compass is just a minimally modified Raspbian distribution. By and large, whatever you use on Raspbian, will work on Compass. I use the same tools to build images as the Raspbian folks, and I use, as a base, the same kernel source as the Raspbian folks. We make minimal changes to those images when we create them. Those changes are:

* Change the hostname of the machine to “compass” rather than “raspberrypi”
* Install the Compass repository as an overlay on Raspbian
* Change the default keyboard layout and language to US English rather than The Queen’s English
* Do not install pulseaudio by default (it interferes with DStarRepeater[d]’s access to the audio device)

You can see these changes in the code in our GitHub repository for pi-gen at

As far as the Compass packages go, we override a single major set of packages, those created by the “raspberrypi-firmware” source package. For the raspberrypi-bootloader package, we grab those from the “next” branch of the Raspberry Pi Foundation’s firmware repository at The source for the raspberrypi-kernel package comes from our fork of the Raspberry Pi Foundation’s kernel and lives in our GitHub Repository at The rest of the packages are straight out of Raspbian.

The reason we have to override the raspberrypi-kernel package is that the hardware support for everything that is necessary to run the UDRC is not in the Foundation’s kernel yet. Notably, the master clock for the codec uses the “General Purpose 0” clock on the Raspberry Pi through one of the header pins. To be able to do this, we need to have the bcm2835-clk driver installed. This is in the Foundation’s kernel, but it breaks the I2S driver that the UDRC needs. We apply a patch to fix the I2S driver to properly use the clock driver. I expect this patch will make its way into Raspbian official soon. There are also some fixes to the bcm2835-clk driver that stops it from crashing the machine but shutting down clocks it’s not supposed to.

In addition, we have made some improvements ourselves to the tlv320aic32x4 driver, which drives the sound chip on the UDRC. Those are starting to be committed upstream through the ALSA folks and into the master Linux kernel, but this stuff takes time to get into the kernel in the first place, and also to filter down to the Raspbian kernel. So, we have to keep our own sources until we can get everything upstreamed. To be very clear about this, our intent is that one day in the future, we will not need a special Compass kernel package, it will all be in the upstream generic Linux kernel. We may or may not succeed, but this is certainly the goal.

I would also like to emphasize that we are in no way trying to “hide the ball” from anyone. We try to make everything possible available publicly on our GitHub account at If you see something that’s not there that you’re curious about, please let us know. It may just be an oversight that we haven’t published it yet.

The only other things that Compass encompasses is extra and updated Ham Radio packages. For example, the OpenDV packages are not in upstream Raspbian or Debian. We provide those built off of my sources at They are currently built from the mcdermj/udrc-beta branch. Another example is fldigi, which we provide a package built off of the Debian unstable repository that is more up to date with the current source status. Our intention with these types of packages is that as Debian catches up, we’ll age out our packages.

As far as releases go, Compass currently has a “stable” and an “unstable” release. The stable release is called “alder”. The naming convention for stable releases is species of tree in alphabetical order (kinda like Ubuntu does). When we decide to increment the stable release, the next one will be called “birch.” For those who really would like to be on the bleeding edge, the unstable release is called “wilderness.” If you do decide to use wilderness packages, please know that you’ve gone of the beaten path, and there is no “Search and Rescue” service provided. If you get lost in the wilderness, NWDR provides no support unless someone has specifically told you to do so. If it breaks, you own both pieces. Please don’t ask me how to switch to wilderness, if you don’t know how to get there, you don’t belong there. Wilderness is entirely automatically built, so there is no guarantee whatsoever that the packages will even run on a machine, let alone run correctly.

I’m happy to attempt to answer any questions as long as my time allows, but hopefully this enlightens some folks as to what exactly is involved in Compass.

Jeremy McDermond (NH6Z)
Xenotropic Systems

Join to automatically receive all group messages.