最近在使用LimeSDR
捣鼓软件定义无线电,结果在刷新固件的过程中,莫名失败,导致无法识别硬件。
使用LimeUtil
检查硬件,出现如下结果:
1 2 |
$ sudo ./LimeUtil --find * [WestBridge , media=USB 2.0, module=STREAM, addr=04b4:00f3, serial=0000000004BE] |
之后就再也无法通过
1 |
$ sudo ./LimeUtil --update |
更新固件了,一直失败。
修复方法
首先确定LimeSDR
硬件版本,这个一般刻印在主板的边缘,如下图箭头指向的地方:
v1.4版本的LimeSDR
这一步骤的目的是确认稍后我们需要更新到主板上的镜像,我们的是1.4版本,因此到http://downloads.myriadrf.org/project/limesuite上找到最新日期的目录,然后在这个目录下找到对应版本的镜像,比如我就需要http://downloads.myriadrf.org/project/limesuite/18.02/LimeSDR-USB_HW_1.4_r4.0.img这个镜像(当前日期最新)。如果跟我一样是更新失败导致的,可能在本地的~/.local/share/LimeSuite/images/
目录下已经存在相应的文件,比如~/.local/share/LimeSuite/images/18.02/LimeSDR-USB_HW_1.4_r4.0.img
。
v1.4版本的LimeSDR
J17
跳线位置
放大图像,可以看到J17
跳线的位置,默认情况下跳线是联通的。这个跳线旁边印着“FX3 BOOT
”字样。这个跳线在断开的时候,重新加电的时候,芯片会恢复到刷机模式,这个模式下,我们可以使用Cypress
提供的固件更新工具刷新固件(LimeSDR
使用的USB 3.0
芯片是Cypress
提供的)。
因此我们需要先断开USB
设备的供电,然后拔除J17
跳线,然后连接USB
设备,等待差不多5S
左右,插上J17
跳线。(J17
跳线可以在刷机完成后再插上的,但是由于刷机完成后,芯片会自动重置,因此建议在芯片启动到刷机模式之后,就把J17
跳线插上,可以减少一次重启。)
注意:这个软件是从Cypress
官网下载的,是整合在EZ-USB FX3 SDK v1.3.3 for Linux
这个SDK
里面的,整个包非常大,我们只需要里面的其中一个工具包,可点击此处下载已经提取的工具包,下载完成后,解压缩到目录,然后执行如下命令安装工具包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ cd ~ $ wget https://www.mobibrw.com/wp-content/uploads/2018/02/cyusb_linux_1.0.4.tar.gz $ tar -zxvf cyusb_linux_1.0.4.tar.gz $ cd cyusb_linux_1.0.4 $ sudo apt-get install libqt4-dev $ sudo ./install.sh #执行命令 $ cd bin && ./cyusb_linux |
选完文件后,出现如下图的界面,点击“Start Download”刷新镜像
刷新完成后,设备自动重启,会从设备列表中丢失,关闭窗口即可。
执行如下命令,可以看到设备已经成功的切换到正常模式了,如下:
1 2 |
$ sudo ./LimeUtil --find * [LimeSDR-USB, media=USB 3.0, module=FX3, addr=1d50:6108, serial=0009060B00460B22] |
完成后,需要执行
1 |
$ sudo ./LimeUtil --update |
升级一下FPGA
的固件。
注意,执行上面的操作之后,可能正常运行,也可能依旧不能正常工作。如果出现如下图的情况:
注意最后的输出:
1 |
[13:30:27] INFO: Connected Control port: LimeSDR-USB FW:4 HW:4 Protocol:1 GW:0.0 Ref Clk: -0.00 MHz |
明显是没有正确的读取到FPGA
固件信息。
正常情况下应该是如下输出:
1 2 |
[14:04:19] INFO: Reference clock 30.72 MHz [14:04:19] INFO: Connected Control port: LimeSDR-USB FW:4 HW:4 Protocol:1 GW:2.14 Ref Clk: 30.72 MHz |
这种情况是由于固件自身的BUG
导致的,固件没有正确的初始化完成,初步估计是USB
固件与FPGA
固件初始化顺序导致的问题(这个现象应该是USB
供电导致的,如果是独立供电,应该是FPGA
优先于USB
芯片启动,而不会出现此问题)。需要重置一下USB
接口才可以。
首先加电等待10S
以上,让芯片内部完成初始化。然后在LimeSuiteGUI
界面中断开USB
设备的连接(USB
线或者外接触供电不要断开),然后按下主板上的FX3 RST
触点开关,如下图:
上述操作有时需要多试几次才行,后续的版本是否会修复这个问题,暂时未知。
也可以从Linux
系统发起重置命令:
1 2 3 |
$ sudo pip install --upgrade pip $ sudo pip install pyusb |
然后使用如下脚本:
1 2 3 4 |
#!/usr/bin/env python from usb.core import find as finddev dev = finddev(idVendor=0x1d50, idProduct=0x6108) dev.reset() |
执行脚本:
1 |
$ sudo python usb_reset.py |
另外貌似上面的问题,也可以插上设备后,不要操作设备,等3到5分钟,再操作也可正常使用,难道是硬件初始化时间需要这么长时间?
目前测试发现,使用v17.06.0
版本的LimeSuitGUI
配合对应的LimeSDR-USB_HW_1.3_r3.0.img
,LimeSDR-USB_HW_1.4_r2.8.rbf
,是目前最稳定的匹配版本。这两个可以从本站下载:推荐使用LimeUtil刷新的固件
最新版本的固件,然后外接一个12V的电源的情况下(建议12V,目前测试5V供电的情况下,问题依旧不是太好),可以很好的改善启动状况以及稳定性,如果是带外壳的版本,可能没有焊接额外供电接口出来,也不方便焊接这个接口,有些外壳,由于没有预留足够空间,没办法额外供电。这种情况下,可以焊接一个导线出来,目前使用的是淘宝上买的“DC电源线 母座转接线 适用于5.5x2.1mm 25cm长 线径3.5mm”,如下图:
供电的话,外接一个12V变压器即可,比如路由器的,也可以在淘宝购买。
博主您好,我也遇到了这个问题,WEST Bridge,无法识别,按照教程也没解决问题,可以私聊请教嘛,谢谢了
出现 "WestBridge",说明固件已经损坏了,固件启动之后,没有重置USB的设备,但是USB芯片部分还是工作正常的,利用USB芯片强制去刷新固件来实现恢复,这部分应该不难的。