Home - entware/entware GitHub Wiki

The Entware Wiki

Table of Contents

Entware is a software repository for embedded devices which use the Linux kernel, such as routers and network-attached storage (NAS) devices. Manufacturers of these devices have a long and well-documented history of intentionally "overpowering" them relative to the functions they are designed to perform. (What information they've made public does support the conclusion that providing extra computational margin to all customers costs less than the increased support for those who operate them under higher-than-average loads.) Installing Entware allows users to take advantage of this extra computing power by adding software to the device which permits it to perform new tasks, provide different features besides those they were marketed for, or simply to perform their standard functions better.


Over 2,500 packages are currently available, ranging from language interpreters like Python v3 and Perl v5 to the most fundamental Unix-like tools such as grep, awk and sed. All packages are compiled for use on eight of the most commonly used architecture toolchains to the extent which they are compatible; expand the collapsed section below to see a table which lists all of the architecture and toolchain combinations with links to searchable package indexes for each.

📋 Table of supported hardware architectures with package index links ⮛ (click to expand)
Architecture Kernel
Version
GNU C Library
("glibc") Version
Package Index
aarch64 3.10 2.27 https://bin.entware.net/aarch64-k3.10/Packages.html
mipssf 3.4 2.27 https://bin.entware.net/mipssf-k3.4/Packages.html
mipselsf 3.4 2.27 https://bin.entware.net/mipselsf-k3.4/Packages.html
x86_64 3.2 2.27 https://bin.entware.net/x64-k3.2/Packages.html
armv7sf 3.2 2.27 https://bin.entware.net/armv7sf-k3.2/Packages.html
armv5sf 3.2 2.27 https://bin.entware.net/armv5sf-k3.2/Packages.html
armv7sf 2.6 2.23 https://bin.entware.net/armv7sf-k2.6/Packages.html
x86 2.6 2.23 https://bin.entware.net/x86-k2.6/Packages.html

Legend:

  • ✅ ‒ Currently supported
  • ❌ ‒ Support withdrawn

In addition, there's:

  • Year 2017 entware-ng repository archive available at pkg.entware.net, useful for old mipsel routers (kernel 2.6.22, uClibc-ng 1.0.17)
  • Year 2015 entware mipsel and mips repository archive at old.entware.net, for older mipsel routers (uClibc 0.9.32 from 2011).

History

Entware began from a desire to produce an alternative to what, even then, was already a very outdated project named Optware. The next five years saw improvements to the tooling that built the packages along with the release of a new generation of hardware, and in response several additional Entware forks emerged to add support for NASes, PCs and newer ARM processor-based routers. In time, the x86, x86_64, MIPS, ARMv5 and ARMv7 forks merged back together into a combined project titled Entware-ng, while those serving devices with Linux kernels newer than v2.6 remained separate as Entware-ng-3x. Once it was feasible to build all the packages using the same tools, the project finally came full circle with the merger of Entware-ng and Entware-ng-3x back into the single, unified Entware that continues today. It's worth nothing that despite the various changes to names and structure over the years, all of the various Entware projects have been the work of the same team of dedicated developers.

New package requests

Feel free to open a new package request if you think there is an open-source project not available in the repository that would make a worthwhile addition. We do ask that you search first to see if it's been requested before. If so, please note the reason given for declining the request and only open a new one if you have verifiable new information which addresses the original concerns. If the request can successfully meet the project requirements shown below without requiring significant changes to the upstream build system, it will likely be added to the next release of new packages. Please watch for responses to your request and be ready to answer questions and provide additional context, if requested.

Package request requirements:

  • No similar package is current in the repository, and/or this one has some noteworthy new features.
  • The project is actively developed (or at the very least had commits added in the last five years).
  • There are obvious use cases for it by the userbase at-large besides my own.
  • I'm ready to beta test the package on my platform [e.g. mipselsf-k3.4] and provide feedback on it prior to its release.

Installation

See the Platform-specific installation guides section in the sidebar on the right for available documentation on using Entware on your device. If you are using a device which is not covered there, make sure these most basic requirements are met:

  • The output of running uname -m on your device's default shell is one of: armv5, armv7l, aarch64, mips, mipsel, x86 or x86_64.
  • The output of stat -c '%a' /opt is greater than or equal to 600 (either as a part of the rootfs or an external drive).
  • A mechanism exists for the device to automatically execute /opt/etc/init.d/rc.unslung start each time it boots and /opt/etc/init.d/rc.unslung stop before any shutdowns.
  • The ability to source /opt/etc/profile when connecting to interactive ssh/telnet sessions. (recommended, but not required)

Usage

Entware uses the opkg package manager (a fork of Optware's ipkg), developed and utilized by the OpenWrt open-source router firmware, and who also offer some in-depth documentation for it.

Example

Here's a step-by-step walkthrough of finding and installing the packages for the Transmission BitTorrent client's web interface (along with its dependencies) from the Entware repositories, to give you an idea of how to use it. The steps below are indicative of the following thought process on the part of the user:

  1. Start by fetching the current package list from the repository to make sure that the information we're about to base our decisions on is accurate and complete.
  2. Display a list of all packages in the repository that begin with the word transmission.
  3. Present the details of the transmission-web package, notably its size, status and list of dependencies so we can be relatively sure of the result of choosing to install it.
  4. Install the package and any of its dependencies which aren't already installed (in this case, the transmission-daemon package).
# opkg update
  Downloading https://bin.entware.net/mipselsf-k3.4/Packages.gz.
  Updated list of available packages in /opt/var/opkg-lists/entware.

# opkg list transmission*
  transmission-cfp-cli - 2.77plus-20210309-1 - CLI utilities for transmission.
  transmission-cfp-daemon - 2.77plus-20210309-1 - Transmission is a simple BitTorrent client.
   It features a very simple, intuitive interface
   on top on an efficient, cross-platform back-end.
   This package contains the daemon itself.
  transmission-cfp-remote - 2.77plus-20210309-1 - CLI remote interface for transmission.
  transmission-cfp-web - 2.77plus-20210309-1 - Webinterface resources for transmission.
  transmission-cli - 4.0.6-1 - CLI utilities for transmission.
  transmission-daemon - 4.0.6-1 - Transmission is a simple BitTorrent client.
   It features a very simple, intuitive interface
   on top on an efficient, cross-platform back-end.
   This package contains the daemon itself.
  transmission-remote - 4.0.6-1 - CLI remote interface for transmission.
  transmission-web - 4.0.6-1 - Webinterface resources for transmission.
  transmission-web-control - 2021-09-25-4b2e1858-2 - Transmission Web Control is a custom Web UI for Transmission.

# opkg info transmission-web
  Package: transmission-web
  Version: 4.0.6-1
  Depends: libc, libssp, librt, libpthread, transmission-daemon
  Status: unknown ok not-installed
  Section: net
  Architecture: all
  Size: 317440
  Filename: transmission-web_4.0.6-1_all.ipk
  Description: Webinterface resources for transmission.

# opkg install transmission-web
  Installing transmission-web (4.0.6-1) to root...
  Downloading https://bin.entware.net/mipselsf-k3.4/transmission-web_4.0.6-1_all.ipk.
  Installing transmission-daemon (4.0.6-1) to root...
  Downloading https://bin.entware.net/mipselsf-k3.4/transmission-daemon_4.0.6-1_mipsel-3.4.ipk.

See the Application-specific tips pages from the sidebar at right to explore other popular use cases.

⚠️ Package upgrade notes

Experience has shown that from time-to-time, users may be faced with a situation involving a package that cannot be executed following installation or upgrade. Neither the user or the Entware developers are likely to be at fault, though, as the issue is most often the result of a long-acknowledged shortcoming in the opkg package manager inherits from OpenWrt. Though the "characters" (in this case, packages) in the story vary every time, the plot always remains the same. Here's an example of it affecting a user who's just performed a routine upgrade of their installed Entware packages, with libffmpeg-full being among the upgrades, but afterwards finds the init script for the minidlna package (S90minidlna) now fails with a consistent error message.

# opkg update
  Downloading https://bin.entware.net/mipselsf-k3.4/Packages.gz.
  Updated list of available packages in /opt/var/opkg-lists/entware.

# opkg upgrade

  Upgrading libffmpeg-full on root from 4.3.2-1 to 5.1.4-2…
  Downloading https://bin.entware.net/mipselsf-k3.4/libffmpeg-full_5.1.4-2_mipselsf-3.4.ipk
  Configuring libffmpeg-full.


# /opt/etc/init.d/S90minidlna start
  minidlnad: error while loading shared libraries: libavformat.so.58: cannot open shared object file: No such file or directory

The reason this happens is that opkg lacks the sophistication to react to the fact that the minidlna package's dependencies were updated, requiring it to reinstall minidlna even though its version number had not increased. The new libffmpeg-full package contains the file libavformat.so.59, but the minidlna executable expects to find that library with the old filename of libavformat.so.58. To resolve the error, you simply have to do re-install the minidlna package manually. If you've modified the configuration file(s) of the package being re-installed pristine copies of those will be added to your system, but since they contain nothing new the example below deletes them as well. With those tasks complete, we'll attempt to start minidlna using its init script again.

# opkg --force-overwrite --force-reinstall install minidlna
  Removing package minidlna from root…
  Not deleting modified conffile /opt/etc/minidlna.conf.
  Installing minidlna (1.3.3-1) to root…
  Downloading https://maurerr.github.io/entware-armv7-k26/minidlna_1.3.3-1_armv7-2.6.ipk
  Configuring minidlna.
  Collected errors:
   * resolve_conffiles: Existing conffile /opt/etc/minidlna.conf is different from the conffile in the new package. The new conffile will be placed at /opt/etc/minidlna.conf-opkg.

# rm -vf /opt/etc/minidlna.conf-opkg
  removed '/opt/etc/minidlna.conf-opkg'

# /opt/etc/init.d/S90minidlna start
   Starting minidlnad…             done.

Another situation that can lead to confusion is when package names change. opkg has no mechanism for understanding that it should uninstall the older package before attempting to install the new one, instead reporting that the two conflict because they both contain files with identical names.

# opkg upgrade
  Installing libiconv-full2 (1.17-1) to root...
  Downloading https://bin.entware.net/mipselsf-k3.4/libiconv-full2_1.17-1_mipsel-3.4.ipk
  Collected errors:
   * check_data_file_clashes: Package libiconv-full2 wants to install file /opt/lib/libiconv.so.2
          But that file is already provided by package  * libiconv-full
   * check_data_file_clashes: Package libiconv-full2 wants to install file /opt/lib/libiconv.so.2.6.1
          But that file is already provided by package  * libiconv-full

The solution here is similar to the one above: remove the old package manually and then run opkg upgrade again:

# opkg --force-depends remove libiconv-full
  Removing package libiconv-full from root…
# opkg upgrade
  Installing libiconv-full2 (1.17-1) to root…
  Downloading https://bin.entware.net/mipselsf-k3.4/libiconv-full2_1.17-1_mipsel-3.4.ipk
  Configuring libiconv-full2.

Internals

Entware uses OpenWrt buildroot to compile packages. Some of packages came from OpenWrt, others are unique. We sync our sources with OpenWrt feeds and update our own packages approx. once per month, catching bugs and adding some enhancements all other time.

See how to Compile packages from sources if you wish to edit or add packages.

Every binary from the repo uses no libraries from outside the /opt folder. No kernel modules are provided as long as they may be (and will be!) incompatible with current firmware.

Contacts

There is no any central forum for Entware users, different devices are discussed in different venues:

⚠️ **GitHub.com Fallback** ⚠️