Optware on K3-AC-ARM

From DD-WRT Wiki

Revision as of 03:35, 4 February 2014 by Magick777 (Talk | contribs)
Jump to: navigation, search

Contents

BUILD 23460M ONWARDS

OpenWRT imx6 package repository

Quoting <Kong>, "builds >23453 will use openwrt packages". The repository now in use is the OpenWRT imx6 repository, http://downloads.openwrt.org/snapshots/trunk/imx6/packages/

Instructions

Preparing for optware install

Using USB storage

Prepare a usb flash disk with 3 partitions 512MB swap + 2 partitions ext2/ext3 or ext4. Enable USB Storage and mount one partition to /jffs, the other to /opt, by using the uuids which are shown in disk info. Note: if you use this method, you do NOT need to enable JFFS2 support in the GUI. That's for putting the JFFS partition on the internal flash.

Using JFFS storage

If you don't have USB storage attached to your router you can resort to the time-honoured method of enabling JFFS2 (from the DD-WRT GUI), which will give you ~90MB of storage under /jffs. You can then

mkdir /jffs/opt 
mount --bind /jffs/opt /opt

which will let you install smaller packages using JFFS alone. If you do this, you'll need to re-create the bind mount on startup.

Installing optware

Use ipkg to install opkg

ipkg update
ipkg install opkg

Create opkg config file

echo "src openwrtarm http://downloads.openwrt.org/snapshots/trunk/imx6/packages/" >/jffs/etc/opkg.conf
echo "dest root /opt" >> /jffs/etc/opkg.conf
echo "dest ram /tmp" >> /jffs/etc/opkg.conf
echo "lists_dir ext /jffs/var/opkg-lists" >> /jffs/etc/opkg.conf
echo "option overlay_root /jffs/overlay" >> /jffs/etc/opkg.conf

Update opkg lists

opkg -f /jffs/etc/opkg.conf update

Install a package

opkg -f /jffs/etc/opkg.conf --force-depends install <package>

Simplify opkg command line with an alias

alias opkg="opkg -f /jffs/etc/opkg.conf --force-depends"

will add those switches for you by default, so you can just use "opkg list", "opkg install <what>". If you want to make this permanent, you can add

echo 'alias opkg="opkg -f /jffs/etc/opkg.conf --force-depends"' >>/tmp/root/.profile

to your startup commands.

Package status on DD-WRT

Please add to / edit this section as appropriate.

Packages working out of the box

  • nano - seems to install and run fine
  • ncftp - sometimes refuses to work interactively, logs in OK but promptly exits. Running it by installing "screen" and using "screen ncftp" works fine. So does logging out and logging in again, so moved to apparently working.
  • rsync - seems to install and run fine
  • screen - seems to install and run fine
  • transmission - reported working by forum users: Magnetron1.1, tibismart

Packages working with minor changes

  • mrtg - installs OK, but needs paths optifying in mrtg, indexmaker, cfgmaker scripts, also see note on perl, below. Use cfgmaker to produce config file in /jffs/etc. Customise to suit. Crontab accordingly, you'll need to specify PERL5LIB and LD_LIBRARY_PATH in order for the rateup executable to work. Obviously you'll also need snmpd enabled, and lighttpd set up.
  • perl - doesn't work OOTB, try PERL5LIB=/opt/usr/lib/perl5/5.10/; export PERL5LIB. You can make this more permanent by adding "echo "export PERL5LIB=/opt/usr/lib/perl5/5.10/" >>/tmp/root/.profile" to your startup commands.
  • rdiff-backup - doesn't work OOTB thanks to a hard-coded path to python in the rdiff-backup script. However, you can issue a sed -i "s|#!/|#!/opt/|" /opt/usr/bin/rdiff-backup to fix the script, and rdiff-backup will then run correctly. Note that it has no onboard help and no default verbosity, so issue a -v5 as part of your command to see what is going on.
  • sshfs - works, however you may need to run it in debug mode in order to accept the remote host's key, and you will need an "insmod fuse" first to load the requisite kernel module. Note that mounting very large filesystems (>4TB, I think) provokes an error from 'df': Value too large for defined data type; a 3.6TB filesystem is handled correctly but a 6.8TB filesystem is not. This does not seem to affect listing or accessing files, merely produces a bug in df output. Magick777 04:47, 2 February 2014 (CET)

Packages not working

  • kmod-* - kernel modules for OpenWRT, not for our DD-WRT kernel.
  • nfs-kernel-server - depends on kernel modules not presently available in DD-WRT. Might yet be persuaded to work if we can have them added to DD-WRT or create a custom repository with compatible kernel modules.
  • nfs-server - depends on OpenWRT basefiles / init scripts not presently available in DD-WRT.

Recipes for package config

Put here any fixes, walkthroughs, forum posts and Wiki articles describing how to make a package work under DD-WRT.

perl

Add

echo "export PERL5LIB=/opt/usr/lib/perl5/5.10/" >>/tmp/root/.profile

to your startup commands to have perl find its libraries under /opt.

transmission

See Magnetron1.1's post at http://www.dd-wrt.com/phpBB2/viewtopic.php?t=177443&postdays=0&postorder=asc&start=585

BUILDS OLDER THAN 23460M

Long story short: do not attempt to use Optware in builds older than 23460M.

Why didn't it just work?

The Optware Project was not designed for use with ARM processors (most builds are for mipsel architecture), and nor was it intended for DD-WRT. It has been ported to a number of DD-WRT platforms, but with varying degrees of success. Also, the project has become somewhat dated, meaning that it relies on an old version of uClibc; this causes issues with the current DD-WRT codebase. So, we need an Optware feed compiled for modern DD-WRT, and then for that to work on the K3-AC-ARM routers we need it compiled for ARM architecture. There is presently no Optware feed that meets that descripton; the mbwe-bluering repository is built for ARM, but it's not built for DD-WRT on kernel 3.x.

mbwe-bluering repository [DEPRECATED]

This page tracks the success (or failure) of using the Optware mbwe-bluering repository on newer 802.11ac routers with ARM architecture, running Kong's K3-AC-ARM builds (r23250 and later). Whilst this repository is supposedly compatible with an ARM CPU and uClibc, most of the binaries don't work on DD-WRT.

Packages not working

Most of them, by the look of it. Initially I got a bunch of the following errors:

hello: can't resolve symbol '__register_frame_info'
nano: can't resolve symbol '__register_frame_info'
ncftp:  can't load library 'libresolv.so.0'
perl: can't resolve symbol '__register_frame_info'
whois: can't resolve symbol '__register_frame_info'

so I duly installed uClibc-opt; this got rid of the above errors but it still didn't persuade anything useful to work. Most things now exit silently, neither complaining nor producing any output.