Rockchip based devices and real-time, low-latency audio

Wiki article on using Rockchip based devices with real-time, low-latency audio.

Draft. Work in progress.

Available flavors

Currently most Rockchip based devices come in two flavors:

  • The rk30xx series (mostly RK3066)
  • The rk31xx series (mostly RK3188)
MK808 RK3066 based Android TV stick
mk809iii_qc802_rk3188_quad_core_mini_pc_android_4_2_tv_box_bluetooth_iptv_hdmi.jpgMK809III RK3188 based Android TV stick

Linux

Rockchip based devices are mostly sold as PC-on-a-stick devices with Android pre-installed. But in order to use these devices as real-time, low-latency audio appliances you will want to install Linux on them. The necessary tools and kernel sources to do so are available and especially the RK3066 based devices are almost fully supported.

Installing Linux on a RK3066 based device

Using JACK

JACK (JACK Audio Connection Kit), often referred to as jackd, is a

“system for handling real-time, low latency audio (and MIDI). It runs on GNU/Linux, Solaris, FreeBSD, OS X and Windows (and can be ported to other POSIX-conformant platforms). It can connect a number of different applications to an audio device, as well as allowing them to share audio between themselves. Its clients can run in their own processes (ie. as normal applications), or can they can run within the JACK server (ie. as a “plugin”). JACK also has support for distributing audio processing across a network, both fast & reliable LANs as well as slower, less reliable WANs.

JACK was designed from the ground up for professional audio work, and its design focuses on two key areas: synchronous execution of all clients, and low latency operation.”
1)

Building JACK from source

You will need a recent git checkout of Jack2 or a patched Jack1 for usage on Rockchip based devices otherwise you will encounter the infamous “Bus error” when starting JACK. This is because JACK uses packed structs and the Rockchip RK3066/RK3188 platforms don't like those: http://comments.gmane.org/gmane.comp.audio.jackit/26713.

Patches can be found here: https://github.com/AutoStatic/jack-armel The patches are relatively simple so they can be easily adapted for other JACK versions.

When using Jack2 you might want to disable dbus dependent code in JACK components if you want to run Jack2 on a headless RPi (so without X). You can do this by building Jack2 from source without the –dbus option.

Packages

http://rk.autostatic.com/

This repository currently only contains patched Jack1 and recent Jack2 packages for Ubuntu 12.04/12.10 and Debian Wheezy that should work on most ARM based platforms. Instructions on how to add the repository are on the site. After having updated your package index files it's just a matter of sudo apt-get –no-install-recommends install jackdx with x being the JACK version you'd like to install.

wiki/rockchip.txt · Last modified: 2013/06/26 11:40 by autostatic