Makefiles organized the same way as package/ in the main tree. Feeds let the community maintain large package collections independently of the core OpenWrt repository.
When you run ./scripts/feeds update and ./scripts/feeds install, the build system creates symlinks from feeds/<feedname>/ into the package tree so those packages can be selected in make menuconfig.
Default feeds
The filefeeds.conf.default in the OpenWrt source root defines the feeds included with every release:
| Feed | Contents |
|---|---|
packages | The main community package feed: thousands of ported applications (Python, Perl, network tools, etc.) |
luci | LuCI web interface and its modules |
routing | Routing protocol daemons: BIRD, Babel, batman-adv, OLSR, etc. |
telephony | VoIP software: Asterisk, Kamailio, and related packages |
video | Media and video-related packages |
Feed source types
Each line infeeds.conf or feeds.conf.default follows the format:
| Type | Description |
|---|---|
src-git | Clone a git repository. Optionally specify a branch or tag after ; (e.g., src-git packages https://...;openwrt-23.05). |
src-git-full | Clone a git repository with full history (no --depth 1). |
src-svn | Checkout a Subversion repository. |
src-link | Symlink to an existing local directory. The directory is not copied. |
src-cpy | Copy a local directory into feeds/. Changes in the original directory are not reflected until the next update. |
Managing feeds
All feed management is done through./scripts/feeds from the OpenWrt source root.
update — fetch or refresh feeds
update — fetch or refresh feeds
Download or refresh all feeds defined in Update a single named feed:After updating, the feed contents are available under
feeds.conf:feeds/<name>/ but packages are not yet visible to menuconfig.install — make packages available
install — make packages available
Install (symlink) all packages from all feeds into the package tree:Install a specific package by name:Install all packages from a specific feed:After installing, packages appear in
make menuconfig and can be selected for the build.uninstall — remove packages from the tree
uninstall — remove packages from the tree
Remove all feed packages from the package tree (reverse of install):Remove a specific package:
search — find packages in feeds
search — find packages in feeds
Search for packages by name or description across all feeds:Search within a specific feed:
list — list available packages
list — list available packages
List all packages available in all feeds:List packages from a specific feed:
clean — remove downloaded feed data
clean — remove downloaded feed data
Remove all downloaded feed data (the Run this before a fresh
feeds/ directory contents):update if you want to ensure a clean state.Creating a custom feed
A custom feed is any git repository (or local directory) that contains packageMakefiles in the standard OpenWrt layout.
Create the feed repository
Create a new git repository. The directory structure mirrors Package
package/ in the main tree:Makefiles in a feed are identical to those in the main tree. Commit and push to your git host.Add the feed to your configuration
Copy Then add a line for your feed:For local development, use
feeds.conf.default to feeds.conf (the local override file) and add your feed:src-link to avoid repeated pushes:feeds.conf takes precedence over feeds.conf.default. If both files exist, only feeds.conf is read. When you create feeds.conf, copy all the default entries you still want — omitting a feed means it will not be available.Feed workflow for development
The recommended workflow when developing packages in a custom feed:src-link uses symlinks, edits to files in your local feed directory are reflected immediately without re-running feeds update.