FAQs
General
What is OpenCPI short for?
Open Component Portability Infrastructure
What is OpenCPI?
OpenCPI is an open-source data processing framework that facilitates the development and execution of component-based applications on heterogeneous embedded systems. The framework is primarily used in Software Defined Radio (SDR) applications that leverage a combination of FPGAs and embedded processors. Key benefits of OpenCPI are its ability to support custom hardware platforms, and its enabling of low-effort application ports to disparate hardware platforms.
Does anyone actually use OpenCPI?
Yes! OpenCPI is frequently used within the defense industry. Adoption outside this community is growing.
What are the advantages of OpenCPI verses other SDR frameworks?
- OpenCPI can support any embedded platform, including custom hardware.
- OpenCPI allows rapid porting of applications between different hardware platforms.
- OpenCPI is free and open-source. Any user can add new features.
- The resource overhead of OpenCPI is very low compared to other frameworks.
What are the disadvantages of OpenCPI verses other SDR frameworks?
- Documentation and training are currently worse than most competitors.
- Freely available component libraries for OpenCPI have far less components than competing frameworks.
- OpenCPI is still under development. Bugs are more common than with other frameworks (although typically fixed quickly once reported).
- Most competitors offer a much more refined process for application level testing and debugging.
Is OpenCPI better than GNU Radio?
Yes and no - It very much depends on your application!
GNU Radio unquestionably has wider adoption, and therefore more documentation, support, and component libraries.
OpenCPI is specifically built to target embedded platforms that utilize a combination of FPGAs and general purpose processors. GNU Radio only has limited support for FPGAs via Ettus's RFNoC architecture.
If your application's latency or throughput requirements do not require the use of FPGAs, then GNU Radio may be a quicker or easier route to a final product. However, for applications requiring true heterogeneous processing, OpenCPI's flexibility becomes a big benefit. Documentation and support for OpenCPI is improving all the time; hopefully it will eventually match GNU Radio in this area.
Support
Where can I find more information on OpenCPI?
- Official Gitlab Repository
- Official Documentation Page
- OpenCPI Mailing list
- OpenCPI Website
- ocpi.comp.sdr library: Nearly 100 components with full documentation and unit tests
How do I a report a bug with OpenCPI?
Create an issue on the official OpenCPI Gitlab repository. Remember to check for existing issues before posting. If you find someone has already posted the issue, but it has not been addressed, it is suggested that you add a comment to the issue explaining you have also replicated the bug.
How do I get support with OpenCPI?
If examples on this website or the official documentation page do not answer your query, it is suggested to either email the mailing list or to post an issue on the OpenCPI Gitlab repository.
Installation
Why is it so difficult to install OpenCPI?
The core framework is now relatively easy to install, however the majority of users use OpenCPI with FPGA platforms that require proprietary tools like Xilinx's Vitis. Unfortunately, due to US export regulations, these tools have to be downloaded separately. Until open-source FPGA toolchains become more mature, the ability to provide a pre-packaged version of OpenCPI is relatively limited.
Typically, organizations that use OpenCPI create a virtual machine or a Docker container to package a fully compiled version of the framework, along with any proprietary software, which can then be shared internally.
What operating systems does OpenCPI support?
OpenCPI works best on CentOS 7, however there is also support for Ubuntu 20.04, with newer versions coming soon. Most users install OpenCPI within a virtual machine or docker container to allow using Windows or a more modern Linux distribution as the main OS on their development machine.
Is it possible to install OpenCPI on a machine without a internet connection?
Yes, although most users just build a virtual machine or docker container on an internet connected machine and then transfer it to the non-internet connected development machine / network.
If you do need to install OpenCPI natively on a non-internet connected machine then follow these instructions.
Device Support
What SDRs does OpenCPI support?
OpenCPI has open-source support packages for the following radios:
- Analog Devices PlutoSDR
- Analog Devices ADRV9361
- Ettus USRP E310
- Ettus USRP X310
- Ettus USRP N320 (Preliminary Support)
- Matchstiq Z3u
One of the key benefits of OpenCPI verses its competitors is that it can support custom hardware. When a similar SDR or platform is already supported within OpenCPI, adding support for a custom variant is relatively easy. OpenCPI supports a number of different development boards, with the goal of providing a starting point for supporting custom hardware.
This website
Why does opcidev.com exist?
The official OpenCPI documentation provides a relatively small number of examples. This website does not intend to replace the official documentation, but instead focuses on providing a large number of examples of how to use OpenCPI's features.
Can I contribute to opcidev.com?
The full source files for ocpidev.com is available on gitlab. Pull requests to this repository are gladly received.