Pluto firmware modifications
This repository contains tools and documentation to aid in modifying the ADI ADALM Pluto firmware.
Extraction of the Pluto firmware image
This describes how to extract the individual components of the
pluto.frm firmware image. It can be useful if only some of the components are going to be modified, since it saves us from having to build the rest from source.
Assuming we have the file
pluto.frm in the same directory as the
extract_data_dts.py script included in this repository, we can create a directory
build to extract the components of the FIT image. This needs
dtc, which is often included in a package called
device-tree-compiler in Linux distributions.
mkdir build cd build dtc -O dts ../pluto.frm | ../extract_data_dts.py /dev/stdin
This will extract the data files inside the FIT image. The filenames of the extracted files are chosen according to the
description field in the corresponding node of the FDT tree. The files need to be renamed according to the filenames expected by the file.
for file in zynq-pluto*; do mv $file $file.dtb; done mv FPGA system_top.bit mv Linux zImage mv Ramdisk rootfs.cpio.gz
Now we can replace some of these files as required with our modifications, and build the FIT image and
.frm file as described in the ADI Wiki. This requires
mkimage, which is usually contained in the package
uboot-tools in Linux distributions.
cat pluto.itb pluto.frm.md5 > pluto.frm
cd .. mkdir new_frm cd new_frm wget https://raw.githubusercontent.com/analogdevicesinc/plutosdr-fw/master/scripts/pluto.its mkimage -f pluto.its pluto.itb md5sum pluto.itb | cut -d ' ' -f 1 > pluto.frm.md5 cat pluto.itb pluto.frm.md5 > pluto.frm