From DD-WRT Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 02:08, 5 January 2007 (edit)
Bzhou (Talk | contribs)
(400+ -> 600+ ipk)
← Previous diff
Revision as of 14:17, 20 January 2007 (edit) (undo)
Oleo (Talk | contribs)
(new toolchain)
Next diff →
Line 7: Line 7:
Buildroot toolchain features: Buildroot toolchain features:
-* GCC 3.4.6+* GCC 4.1.1
-* uClibc 0.9.28 with patches+* uClibc 0.9.28 with many patches
-* uClibc++ 0.2.1+* uClibc++ 0.2.2
* [http://linux.inet.hr/ols2006_native_posix_threads_library_nptl_support_for_uclibc.html Native POSIX Threads Library (NPTL) Support for uClibc] * [http://linux.inet.hr/ols2006_native_posix_threads_library_nptl_support_for_uclibc.html Native POSIX Threads Library (NPTL) Support for uClibc]

Revision as of 14:17, 20 January 2007



With the latest DD-WRT v23 SP2, it is possible to install Optware packages from NSLU2-Linux project. This port of Optware is tailored for DD-WRT and extends the router to full feature linux if enough storage is provided for packages (jffs, mmc, USB?).

The main feature of this package is that it installs all required files under /opt with 600+ ported applications. With buildroot toolchain, system library independence is also added. This means that packages now depend on /opt/lib/uClibc.so and dynamic loader also in /opt/lib with separate /opt/etc/ld-opt.so.conf for custom .so cache. Applications are built with wchar and locale support which makes uClibc library somewhat greater than other uClibc packages, but still far smaller than glibc based aplications.

Buildroot toolchain features:

Basic preparation of /jffs is required (enable, clean). On WRT54GS there is room for some aplications. SD card (/mmc) may give enough space for many applications. For testing purposes also smbmount can be used. It should be noted that writable /jffs partition must be provided as /bin/ipkg script requires it to save some data there. If a non /jffs filesystem is available, it is recommended to unmount /jffs and then mount eg. mmc in place of /jffs.

Example scenario of installing some packages on WRT54GS

First step is to prepare /opt mount point for Optware and create ipkg.conf file for packages download

~ # mkdir /jffs/opt
~ # mkdir /jffs/tmp
~ # mkdir /jffs/tmp/ipkg
~ # mount -o bind /jffs/opt /opt 
~ # mkdir /opt/etc
~ # vi /opt/etc/ipkg.conf

Edit and insert the following content

src unslung http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable
dest root /jffs

Now we will point /bin/ipkg script to this config with setting environment variable

~ # export IPKG_CONF_DIR=/opt/etc

This is enough to retrieve list of available packages with

~ # ipkg update
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages ...
Connecting to ipkg.nslu2-linux.org[]:80
Packages             100% |*************************************************************|   136 KB 00:00:00 ETA
Updated list of available packages in //jffs/usr/lib/ipkg/lists/unslung

First we will install uClibc library which is required by all packages.

~ # ipkg install uclibc
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/uclibc_0.9.28-1_mipsel.ipk ... 
Connecting to ipkg.nslu2-linux.org[]:80
uclibc_0.9.28-1_mips 100% |*************************************************************|   440 KB 00:00:00 ETA 
Unpacking uclibc...Done.
Configuring uclibc...Updating /opt/etc/ld-opt.so.cache

Alternatively if one wants to have C and C++ compiler to do native compiling on router, ipkg install buildroot can be issued instead. But this requires al least 100MB of free space for the whole toolchain. For running applications from /opt tree search path should be expanded with

~# export PATH=/opt/bin:/opt/sbin:$PATH 

Now we can install any package from a list of available packages.

~# ipkg list | more

or less or this Quick list of Optware packages

ncFTP client

For example we will install ncFTP client with:

~ # ipkg install ncftp
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/dd-wrt/ncftp_3.1.9-3_mipsel.ipk ...
Connecting to ipkg.nslu2-linux.org[]:80
ncftp_3.1.9-3_mipsel 100% |*************************************************************|   479 KB 00:00:00 ETA
Unpacking ncftp...Done.
Configuring ncftp...Done.

and run it

~ # ncftp ftp.si.debian.org  
NcFTP 3.1.9 (Mar 24, 2005) by Mike Gleason (http://www.NcFTP.com/contact/). 
Connecting to                    
CAMTP Debian mirror [ftp.si.debian.org]
Logging in...                                                                                                   
Anonymous access granted, restrictions apply.
Logged in to ftp.si.debian.org.                                                                                 
ncftp / > ls
backports/        debian-cd/        debian-sl/        openoffice/
debian/           debian-non-US/    favicon.ico       robots.txt
ncftp / > bye
You have not saved a bookmark for this site.
Would you like to save a bookmark to:
Save? (yes/no) yes
Enter a name for this bookmark, or hit enter for "si": debian
Bookmark "debian" saved.

Torrent clients

Of course there are many more packages which should run on router without a problem. All binaries have built in /opt/lib search path and there should be no problem with libraries clash like problems with OpenWRT packages. All packages have builtin package dependencies and will install required libraries automagically. Lets show this on installing torrent clients:

~ # ipkg install torrent
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/libcurl_7.15.4-1_mipsel.ipk ...
Connecting to ipkg.nslu2-linux.org[]:80
libcurl_7.15.4-1_mip 100% |*************************************************************|   518 KB 00:00:00 ETA
Unpacking libcurl...Done.
Configuring libcurl...Done.
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/openssl_0.9.7d-4_mipsel.ipk ...
Connecting to ipkg.nslu2-linux.org[]:80
openssl_0.9.7d-4_mip 100% |*************************************************************|   935 KB 00:00:00 ETA
Unpacking openssl...Done.
Configuring openssl...Done.
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/zlib_1.2.3-1_mipsel.ipk ...
Connecting to ipkg.nslu2-linux.org[]:80
zlib_1.2.3-1_mipsel. 100% |*************************************************************| 60760    00:00:00 ETA
Unpacking zlib...Done.
Configuring zlib...Done.
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/libbt_1.05-4_mipsel.ipk ...
Connecting to ipkg.nslu2-linux.org[]:80
libbt_1.05-4_mipsel. 100% |*************************************************************| 90832    00:00:00 ETA
Unpacking libbt...Done.
Configuring libbt...Done.
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/torrent_1.4-4_mipsel.ipk ...
Connecting to ipkg.nslu2-linux.org[]:80
torrent_1.4-4_mipsel 100% |*************************************************************|  9851    --:--:-- ETA
Unpacking torrent...Done.
Configuring torrent...Please note that /opt/etc/init.d/S80busybox_httpd is installed for
running CGI interface at http://localhost:8008/cgi-bin/torrent.cgi
~ # ipkg install enhanced-ctorrent
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/libuclibc++_0.2.0-3_mipsel.ipk ...
Connecting to ipkg.nslu2-linux.org[]:80
libuclibc++_0.2.0-3_ 100% |*************************************************************| 62035    00:00:00  
Unpacking libuclibc++...Done.
Configuring libuclibc++...Done.
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/libstdc++_0.1.12-3_mipsel.ipk ...
Connecting to ipkg.nslu2-linux.org[]:80
libstdc++_0.1.12-3_m 100% |*************************************************************|   661    --:--:-- ETA
Unpacking libstdc++...Done.
Configuring libstdc++...Done.
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/enhanced-ctorrent_dnh2-3_mipsel.ipk ...
Connecting to ipkg.nslu2-linux.org[]:80
enhanced-ctorrent_dn 100% |*************************************************************| 74675    00:00:00 ETA
Unpacking enhanced-ctorrent...Done.
Configuring enhanced-ctorrent...Done.

We will not show running example for this clients as normally huge amount of storrage is required.


  • DD-WRT provided /bin/ipkg is not full feature ipkg but it can do the job.
  • Using samba share for /opt is not easy as there is no notion for symbolic links on SMB. This is most problematic for symbolic links on shared libraries. Rewriting "ln" to act as a script and put it on the head of search path could be used to copy instead of link. Possibility of mounting filesystem in a file as a loop device on a samba share is not yet verified.
  • DD-WRT kernel lacks many "server" features like NFS, USB support, ... Provided samba, mysql, thttp-php and other applications can do the job if enough space is provided. This means that external storage is required for memory hungry applications. Experience from nslu2 and Oleg firmware showed that 512MB swap space is recommended. And this can only be provided with external USB harddisk.
  • Optware for DD-WRT is alpha-stage feature. Report problems and suggestions in DD-WRT forum under Optware.
  • For instuctions on some other packages look at http://www.nslu2-linux.org/wiki/Unslung/Packages
  • Package feed will eventually change to official NSLU2 package feeds
  • Optware package tracking and repository access