-This fwlzw (de)compressor originally came from the FFMPEG project and was modified by Broadcom for
+This fwex tool extracts the payloads from Broadcom firmware update files.
+
+The first payload image is usually the ROMD CFE/Kernel/root file-system combination.
+If the payload is LZW (typically the second payload image is the XML router configuration) it will also decompress it.
+
+The LZW (de)compressor code originally came from the FFMPEG project and was modified by Broadcom for
(de)compressing device configuration files.
In the Zyxel/MitraStar/Broadcom source-code packages provided by those companies there is a tool
-that runs on the host for compression only:
+that runs on the host for LZW compression only:
hostTools/CompressConfig
That tool includes the FFMPEG library code but does NOT provide its own source-code, as it should
since the files are licensed on the terms of the GNU GPL.
-I've copied the files from the Zyxel source-code distribution as the basis of this host-based executable tool:
+I've copied the files from the Zyxel source-code distribution as the basis of this host-based extractor tool:
- cp Zyxel/source/userspace/public/libs/cms_util/lzw*.c .
- cp Zyxel/source/userspace/public/include/cms_lzw.h .
+ cp userspace/public/libs/cms_util/lzw*.c .
+ cp userspace/public/include/cms_lzw.h .
cp userspace/public/include/linux/os_defs.h .
- cp userspace/public/include/cms_version.h .
-
-With this tool it is possible to extract the payload from a firmware file. It is typically the second
-payload image in the file - the first being the CFE/Kernel/root file-system combination.
-
-My fwheader tool can report the location and size of the payloads in the firmware file. Those values can
-then be used to extract the payload to a file, which can be passed to this fwlzw tool.
+ cp userspace/public/include/cms{params,version}.h .
+ cp userspace/public/include/cms.h .
+ cp shared/opensource/include/bcm963xx/bcmTag.h .