srsran / srsRAN_4G

Open source SDR 4G software suite from Software Radio Systems (SRS) https://docs.srsran.com/projects/4g
https://www.srsran.com
GNU Affero General Public License v3.0
3.42k stars 1.13k forks source link

Found a way to use bladeRF native driver for srsUE. (It provides stable RRC connection) #1105

Open DancingSW opened 1 year ago

DancingSW commented 1 year ago

Issue Description

I am writing this post to share my experience.

My bladeRF A4 have been working well when it used as srsENB/. However, I had a problem when using bladeRF A4 as srsUE. The issue was as follows:

I solved this problem. Now, I am using the native bladeRF driver for srsUE and the connection is stable. Followings are what I have done for solving my problem.

  1. Changed the "srate " as 11.52e6 in ue.conf
  2. Changed the default "tx_srate" and "rx_srate" as 11.52.e6 in rf_blade_imp.c. You can find rf_blade_imp.c at /srsRAN/lib/src/phy/rf/. Then, I recompiled the srsRAN.

(Example)

225   /* Set default sampling rates */ 
226   rf_blade_set_tx_srate(handler, 11.52e6);
227   rf_blade_set_rx_srate(handler, 11.52e6);

It seems it works well if the default srate is same with the srate I want to use. I spent almost a week to solve this problem and could not find any helpful post. Hope this can help someone who has same problem as me.

CatiaS11 commented 1 year ago

Hello ! I have the same issue as you had. I'm using 2 bladeRFs : one is used as srsUE and the other one as srsENB. I'm running the srsUE file and srsENB+srsEPC files ont two different PCs. I used your tip to try to handle my probem but it still persists : UE doesn't synchronize. Do you have any idea why doesn't it work? I attached my .conf and logs here if you can take a look :) Thank you for sharing your experience in any case!

P.S. I tried to install Soapy Driver but while using it my bladeRF device is not found. I also tried to change tx and rx gains and I switched cpu to performance mode.

If you have any ideas I will be very grateful!

ue_conf1

ue_conf2

ue_conf3

ue_conf4

ue_conf5

ue2.log

DancingSW commented 1 year ago

Hello ! I have the same issue as you had. I'm using 2 bladeRFs : one is used as srsUE and the other one as srsENB. I'm running the srsUE file and srsENB+srsEPC files ont two different PCs. I used your tip to try to handle my probem but it still persists : UE doesn't synchronize. Do you have any idea why doesn't it work? I attached my .conf and logs here if you can take a look :) Thank you for sharing your experience in any case!

P.S. I tried to install Soapy Driver but while using it my bladeRF device is not found. I also tried to change tx and rx gains and I switched cpu to performance mode.

If you have any ideas I will be very grateful!

ue_conf1

ue_conf2

ue_conf3

ue_conf4

ue_conf5

ue2.log

Can you show your eNB config? In addition, I remember that downlink earfcn of 3350 was not stable. In my case, I used 2450 or 2500 in the lab environment where it does not affect the operator's networks. Please check the frequency policy in your country before you change it.

CatiaS11 commented 1 year ago

Thank you for your anwer, I will try to change my downlink earfcn !

Here is my eNB config file :

enb1

enb2

enb3

enb4

enb5

enb6

enb7

ismagom commented 1 year ago

Hi @CatiaS11, next time, please attach config files as attachments instead of screen captures. Thanks

CatiaS11 commented 1 year ago

enb.zip epc.zip ue.zip

DancingSW commented 1 year ago

@CatiaS11 Please try to use a native bladeRF driver, not Soapy with bladeRF plugin. You may need to revise rf_blade_imp.c at /srsRAN/lib/src/phy/rf/ as I suggested in the first post.

CatiaS11 commented 1 year ago

@DancingSW Thanks you for your suggestion! Actually I have already tried to change rf_blade_imp.c file, but it didn't work well for me. May I ask you a stupid question (I'm a beginner) but how do you check which driver is used ?

DancingSW commented 1 year ago

Did you recompile the srsRAN after you revise the code? Specifically, did you execute make, sudo make install? And, please share your logs and describe what you have done and what you have got after you try. I cannot help you without any clue.

if you are using the bladeRF driver, you can see it when you run the srsUE or srsENB on the terminal, which means you can find the related logs just after you run the code.