HOWTO fix some older OpenWRT issues
Vera uses a slightly outdated Kamikaze version of OpenWRT embedded Linux distribution for Broadcom platform, based on 2.4 Linux kernel.
Since the release, used in Vera, there were several changes in OpenWRT, which need to be taken into account in order to get extra packages installed successfully:
- Packages now specify in their metadata how much space they take on the filesystem, thus ipkg first checks if enough space is available. But it doesn't take mini_fo overlay into account and complains that there is 0 bytes available in the root filesystem, since it's read-only.
- In latest trunk snapshots (besides switching from ipkg to opkg) all the packages now specify "brcm-2.4" architecture instead of the old "mipsel", rendering them incompatible with the release of OpenWRT used in Vera. Although, there are ways to make Vera recognize "brcm-2.4" architecture as compatible, there can be issues with some packages not working properly.
The default hardware Vera runs on is Asus WL-500g router with 16MB or RAM and 8MB of flash. Flash is split into several partitions:
- 128KB bootloader
- ~500KB Linux kernel
- ~5.8MB root squashfs filesystem (r/o)
- 64KB config storage
- ~1.8MB data jffs filesystem (r/w)
There is only 1.8MB of compressed space available for installing additional packages into the system. This data filesystem is mounted as /jffs, but is also an overlay of the rootfs in / (uses mini_fo fs, a la union fs, providing "copy on write" access)
The package manager in this version of OpenWRT is ipkg (Itsy Packager). It uses configuration file /etc/ipkg.conf
So, to solve the first item, we need to instruct ipkg to install packages into /jffs instead of / and add an extra "dest" line to /etc/ipkg.conf (should be the first "dest" to work as a default):
dest jffs /jffs
To address the second issue above, we should use the released Kamikaze versions of the packages, instead of the trunk. The URL of the system repository is http://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/packages and the URL of the X-Wrt repository is http://downloads.x-wrt.org/xwrt/kamikaze/8.09.2/brcm-2.4/packages
The first line with the default system OpenWRT repository URL has to be changed like this:
The last line with the X-Wrt repository URL should look like this:
Here is the final /etc/ipkg.conf file:
src snapshots http://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/packages dest jffs /jffs dest root / dest ram /tmp src X-Wrt http://downloads.x-wrt.org/xwrt/kamikaze/8.09.2/brcm-2.4/packages
First, we need to download the metadata with the list of installable packages:
# ipkg update Downloading http://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/packages/Packages Updated list of available packages in /usr/lib/ipkg/lists/snapshots Downloading http://downloads.x-wrt.org/xwrt/kamikaze/8.09.2/brcm-2.4/packages/Packages Updated list of available packages in /usr/lib/ipkg/lists/X-Wrt Done.
Then we can get the list of available packages with "ipkg list" and install extra packages with "ipkg install <pkgname>":
# ipkg install etherwake Installing etherwake (1.09-1) to jffs... Downloading http://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/packages/etherwake_1.09-1_mipsel.ipk Configuring etherwake Done. # etherwake Specify the Ethernet address as 00:11:22:33:44:55.