GNURADIO(1)
π GNURADIO(1) β the volk_modtool page π
ok so bestie, this is section 1 of the User Commands manual, and honestly? it's a whole moment. let's get into it. β¨
πΈ NAME πΈ
volk_modtool β tailor VOLK modules
π¦ DESCRIPTION π¦
So volk_modtool ships right alongside VOLK, and its whole job is helping you construct, add to, and interrogate the VOLK library or any companion libraries you're building. she's a helper. she's a ride-or-die. π«Ά
volk_modtool gets installed into $prefix/bin.
VOLK modtool is the tool that lets you create standalone (out-of-tree) VOLK modules, and it also hands you a few tools for sharing VOLK kernels between VOLK modules. If you need to design or work with VOLK kernels away from the canonical VOLK library β this is the tool. If you need to tailor your own VOLK library for literally any reason β this is the tool. no cap. π
The canonical VOLK library installs a volk.h and a libvolk.so. Your own library will install volk_$name.h and libvolk_$name.so. Ya Gronk? Good. π
There isn't a substantial difference between the canonical VOLK module and any other VOLK module. They're all peers. periodt. Any module created via VOLK modtool comes complete with a default volk_modtool.cfg file, and that file associates the module with the base it came from, its distinctive $name, and its destination (or path). These values β created from user input if VOLK modtool runs without a user-supplied config file or a default config file β serve as default values for some VOLK modtool actions. It's more or less intended for you to change directories to the top level of a created VOLK module and then run volk_modtool to take advantage of the values stored in the default volk_modtool.cfg file. iykyk π
Apart from creating new VOLK modules, VOLK modtool lets you:
- list the names of kernels in other modules
- list the names of kernels in the current module
- add kernels from another module into the current module
- remove kernels from the current module
When moving kernels between modules, VOLK modtool does its best to keep the qa and profiling code for those kernels intact. If the base has a test or a profiling call for some kernel, those calls will follow the kernel when VOLK modtool adds that kernel. If QA or profiling requires a puppet kernel, the puppet kernel will follow the original kernel when VOLK modtool adds that original kernel. VOLK modtool respects puppets. π (not me being obsessed with the puppet lore)
β¨ Installing a new VOLK Library β¨
Run the command volk_modtool -i. This will ask you three questions:
name: // the name to give your VOLK library: volk_<name>
destination: // directory new source tree is built under -- must
exists.
// It will create <directory>/volk_<name>
base: // the directory containing the original VOLK source code
This will build a new skeleton directory in the destination provided with the name volk_<name>. It will contain the necessary structure to build:
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/volk ../
make
sudo make install
Right now, the library is empty and contains no kernels. Kernels can be added from another VOLK library using the -a option. If not specified, the kernel will be extracted from the base VOLK directory. Using the -b allows us to specify another VOLK library to use for this purpose.
volk_modtool -a -n 32fc_x2_conjugate_dot_prod_32fc
This will put the code for the new kernel into <destination>/volk_<name>/kernels/volk_<name>/
Other kernels must be added by hand. See the following webpages for more information about creating VOLK kernels:
http://gnuradio.org/doc/doxygen/volk_guide.htmlhttp://gnuradio.org/redmine/projects/gnuradio/wiki/Volk
π OPTIONS π
π Options for Adding and Removing Kernels π
-a,--add_kernelβ Add kernel from existing VOLK module. Uses the base VOLK module unless-bis used. Use-nto specify the kernel name.- Requires:
-n. - Optional:
-b
- Requires:
-A,--add_all_kernelsβ Add all kernels from existing VOLK module. Uses the base VOLK module unless-bis used.- Optional:
-b
- Optional:
-x,--remove_kernelβ Remove kernel from module.- Required:
-n. - Optional:
-b
- Required:
π Options for Listing Kernels π
-l,--listβ Lists all kernels available in the base VOLK module.-k,--kernelsβ Lists all kernels in this VOLK module.-r,--remote-listβ Lists all kernels in another VOLK module that is specified using the-boption.
and that's the whole page bestie, you ate it, go build some kernels πβ¨
this was volk_modtool version 3.7, dated August 2013 β yeah she's vintage but she's still iconic π
π¦ where this page comes from
- debian bookworm: libvolk2-bin 2.5.2-3 Β· GPL-3.0-or-later
- debian trixie: libvolk-bin 3.2.0-2 Β· LGPL-3.0-or-later
- ubuntu jammy: libvolk2-bin 2.5.1-1 Β· GPL-3.0-or-later
- ubuntu noble: libvolk-bin 3.1.2-1.1build1 Β· LGPL-3.0-or-later
- ubuntu questing: libvolk-bin 3.2.0-3
- ubuntu resolute: libvolk-bin 3.3.0-2 Β· LGPL-3.0-or-later
- ubuntu stonking: libvolk-bin 3.3.0-3 Β· LGPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms