NAME
mkdns323fw - build firmware images for the DNS-323 from a kernel and
initrd
SYNOPSIS
mkdns323fw -k KERNEL -i INITRD [-d DEFAULTS] -p PRODUCT_ID -c CUSTOM_ID
-m MODEL_ID -o OUTPUTFILE
DESCRIPTION
mkdns323fw creates firmware images suitable for upload to the D-link
DNS-323 and other, similar devices based on the same basic firmware
image, such as the Conceptronics CH3SNAS. These firmware images
contain a kernel and initrd, as well as various product-specific values
and checksums.
This command can be very dangerous; although it attempts to do some
very, very basic sanity checking, it is still quite easy to generate a
firmware file that, when loaded into your device, will kill it stone
dead. This program is not able to check that you’re uploading valid
data to your device; if you brick it, you’re on your own.
-k kernel, --kernel=kernel
specify the file containing the kernel image to embed in the
firmware image. This must be a uBoot image file, as produced by
mkimage(1) with appropriate options to specify it as a kernel
image. Attempts to provide a non-uBoot file will fail, while
specifying a non-kernel uBoot file may well brick your device.
This option is required.
-i initrd, --initrd=initrd
the initrd file to embed in the firmware image. This must be a
uBoot image file, as produced by mkimage(1) with appropriate
options to specify it as a ramdisk. The tool will refuse to
embed a non-uBoot file, however a dodgy ramdisk will likely
brick your device.
-d defaults.tar.gz, --defaults=defaults.tar.gz
The firmware format has the ability to embed a tarball with a
default configuration; if you want to do this, you may use this
option to do so. However, the devices that the author has dealt
with do not require such a thing, and leaving it out still
produces a valid firmware (and one that is a bit smaller, to
boot).
-s signature, --defaults=signature
For reasons that will probably remain unknown until the ends of
time, there are (at least) two different firmware signatures
running around that are otherwise identical in their internal
structure, which are used for different devices. This option
exists to allow you to specify the signature that you want to
use in your firmware build. Valid values for this option are
currently FrodoII ®(the default if this option is not
specified), Chopper ®or Gandolf ®which is used in some devices.
See the table at the top of the script if you don’t know which
value to use for your device.
--p product_id, --product-id=product_id
--c custom_id, --custom-id=custom_id
--m model_id, --model-id=model_id
Specify the product, custom, and model ID that this firmware
image is intended for. As several different devices share the
same firmware format, the intended device type is encoded in
these fields. If you do not specify the correct values for the
device that you are targetting with your firmware, it is quite
likely that the device will refuse the upload.
Known-good values for various devices are provided in the header
of the script; please look there for more information. You can
also obtain the values you need by downloading an existing
firmware for the device you’re targetting and doing a bit of
digging.
-o outputfile, --output=outputfile
Where to write the completed firmware image. Will overwrite any
existing file of the same name.
BUGS
E-mail bug reports to theshed+dns323-firmware-tools@hezmatt.org. I
don’t guarantee to be able to help, but I’ll give it a shot. Patches
are far more helpful.
AUTHOR
mkdns323fw was written by Matt Palmer, based on reverse-engineering
work done by Leschinsky Oleg.
COPYRIGHT
Copyright © 2008 Matt Palmer.
This is free software; see the source for copying conditions. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE, to the extent permitted by law.
SEE ALSO
mkimage(1), splitdns323fw(1).