20年10月解决gnu radio companion不能使用osmocom source的问题

时间:2024-05-31 12:57:20

我的方案解决起来可能比较复杂,因为软件是一个不断集成的过程,可能在20年10月24日我恰逢一个特别不合时宜的日子里(源可能没有拉最新代码进行编译适配所以无法使用),才让我遇到了如此恶心的问题。

我的系统是ubuntu 20.04,像运行gnu radio companion(GRC)这种步骤,肯定第一步想到的是apt拉软件啦,拉下来以后能用的,然后为了使用hackrf继续做实验,肯定是还要拉一个叫做gr-osmosdr,这个的作用实际上是对GRC的一个扩充,使其可以使用hackrf的block(还有一些扩展block之类的),下载下来重新运行GRC,就报错了,关键名是:list contains invalid format!

首先怀疑是GRC有问题,不适配,所以我下了一个使用了gr-osmosdr的带gui界面软件GQRX,竟然可以用,瀑布图,fm声音一切正常。

这其实就很奇怪了,因为我的gr-osmosdr是由GQRX级联下载下来的(就是说被作为GQRX的依赖项下载下来的),没理由说这个能用那个不能用,而且运行指令osmocom_fft同样说的一样的错误。

没办法了,我只能是拉代码编译,官网的入门指导
拉代码编译你一定要有代理,你的git,git+http,git+https三套协议都要挂上代理,还有wget,大概像是下面这样的。
20年10月解决gnu radio companion不能使用osmocom source的问题
20年10月解决gnu radio companion不能使用osmocom source的问题
我选择的是走pybombs,这个东西实际是又一个包管理器,没有使用pentoo linux是因为虚拟机下性能不好,因为sdr吞吐量是很大的,而且apt源都来不及更新的软件我估计你镜像也未必能行。

所以pybombs试试呗,据说是专门为GRC定做的包管理器,还能照顾到一些老旧工程的编译(这样即使依赖软件淘汰了,GRC仍然可以编译出旧的软件包而不至于用不了,我想官方应该是这么想的吧)。

如果你跟着pybombs来操作的话,你可能会遇到一个无法编译的包,叫做libvolk的,然后说arm_neon.h intrin.h这两头文件找不到,原因是编译器不支持,我怀疑可能是master上有一些不稳定的提交所以我切换到最近的tag上去了,这个你自己切,可能当你再看到这篇文章 再操作的时候这个问题已经解决了。

然后如果一切顺利,GRC就在你的家目录下编译好了,这期间对代理是个很大的考验,没代理基本没法活,然后把环境变量注入进来,你就可以尝试运行gnuradio-companion
20年10月解决gnu radio companion不能使用osmocom source的问题
最后编译gr-osmosdr,pybombs install gr-osmosdr,它就会hackrf相关的block,command tools,一起放到你的prefix中,一切就绪后再次gnuradio-companion,测试一下,你应该能测通下面这样的结果。

20年10月解决gnu radio companion不能使用osmocom source的问题
最后我对比了一下deb安装和手动编译的差别

这个是能用的版本
GRC 3.8.2.0 gr-osmosdr 0.2.2
这个是不匹配的版本
GRC 3.8.1.0 gr-osmosdr 0.2.0

看了下hackrf的版本,发现本月13号的固件卖家都已经刷上了,怪不得会报错误格式的问题
20年10月解决gnu radio companion不能使用osmocom source的问题

不过为什么GQRX能用我觉得是个谜,如果有人理解其中的原理,欢迎留言。