User Tools

Site Tools



Package ubox was added in r36427 and package block-mount was dropped in r36988. r37199 finally adds a UCI-default script for fstab generation.


for some insight.


block detect
to get a sample UCI configuration file. If target is / then it will be used as extroot. block info is also valid to get the uuid.

OpenWrt – operating system architecture

Whereas desktop distributions use glib and dbus (and udev) OpenWrt uses libubox and ubus (and hotplug2). This provides some pretty awesome functionality without requiring huge libraries with huge dependencies (*cough* glib).

Desktop Distributions OpenWrt Android Replicant mer-based
Typical main memory size 128 MiB to 16 GiB (or more) 32 MiB to 512 MiB1) min 92 MiB for Android 2.1
min 340 MiB for Android 4.0
Supported instruction sets almost anything almost anything x86, 86-64, ARM, MIPS32
non-volatile storage space 100 MiB 8 MiB2) 150MiB for Android 2.1
512MiB for Android 4.0
kernel Linux kernel
FOSS and binary drivers FOSS drivers: e.g. 802.11; Iaccess Android binary drivers
C standard library glibc uClibc bionic glibc + libhybris eglibc 2.15
init init
systemd busybox-initd procd Android init-fork systemd
rsyslog / syslog-ng busybox-klogd, busybox-syslogd
watchdog busybox-watchdog
udev hotplug2 ubox?
cron busybox-crond
atd na
D-Bus ubus Binder ? D-Bus
network configuration NetworkManager + GUI netifd ConnectivityManager
(not ConnMan = ConnectionManager!)
? ConnMan
(GObject, Glib, GModule, GThread, GIO)
libubox ? ? Qt-based?
PulseAudio PulseAudio (optional) PulseAudio PulseAudio PulseAudio
Package management system dpkg/APT
opkg apk ? RPM

Dependencies of LuCI2

The idea for LuCI2 and its different components started a long time ago:; Code is being developed here;

  • libubox (~ 12KiB) is a general purpose library which provides things like an event loop, binary blob message formatting and handling, the Linux linked list implementation, and some JSON helpers. The functions in libubox are used to write the other software in LuCI2
  • ubus (~ 13KiB) is an RPC daemon similar to D-Bus but with a much friendlier C API

What's the difference between ubus and dbus?

dbus is bloated, its C API is very annoying to use and requires writing large amounts of boilerplate code. In fact, the pure C API is so annoying that its own API documentation states: "If you use this low-level API directly, you're signing up for some pain."

ubus is tiny and has the advantage of being easy to use from regular C code, as well as automatically making all exported API functionality also available to shell scripts with no extra effort.

"Of course, NetworkManager should be renamed to "unetwork", dbus to "ubus", PulseAudio to "usound", and X.Org-Server/Wayland-Compositor to "udisplay"; and then indescribable happiness would come down to all people of this world." – Lennart Poettering

yes, heavily stripped OpenWrt can run on 16 or even 8MiB
yes, 4MiB and 2MiB possible
doc/techref/ubox.txt · Last modified: 2013/08/06 15:01 by lorema