[srslte-users] Resampling on N210
Rafael Diniz
rafael at rhizomatica.org
Fri May 24 18:04:52 UTC 2019
Hi Justin and all,
Can we expect, with your development, support for USRP 2/N2xx in srseNB?
I have a USRP 2 with a GPSDO's 10MHz output connected to it in order to
carry some testing here. I'd prefer to use my USRP 2 than the LimeSDR
(with which I'm carrying some tests), as with WBX or RFX900
daughterboards I can get much more output power and have a better clock
source.
Thanks,
Rafael Diniz
On 5/24/19 12:27 PM, Justin Tallon wrote:
> Hey Federico,
>
> The code at https://github.com/yagoda/srsLTE_Wishful
>
> should work out of the box at least for the phy examples. if you run
> those unchanged and see if you can get success with that and from there
> adapt the solution to your use case.
>
> Regards,
> Justin
>
> ____
> Justin Tallon Ph.D.
>
> Software Radio Systems (SRS)
> http://www.softwareradiosystems.com <http://www.softwareradiosystems.com/>
>
> +353-86-067-0753 | justin.tallon at softwareradiosystems.com
> <mailto:justin.tallon at softwareradiosystems.com>
>
>
> On Fri, May 24, 2019 at 4:26 PM Federico Quattrin
> <fede.quattrin at gmail.com <mailto:fede.quattrin at gmail.com>> wrote:
>
> Hi people,
> In order to make N210 I need to make a resample of the sampling
> frequencies and change the frequency of the master clock, don't I?
> Should I change anything else? Am I missing something?
> I add the device to the device list.
> Thanks in advance
> Greetings
> Federico
>
> Federico Quattrin <fede.quattrin at gmail.com
> <mailto:fede.quattrin at gmail.com>> schrieb am Di., 21. Mai 2019, 11:19:
>
> Hi Justin,
> yes, sure! sorry for the delay I had a problem with a crash,
> already fixed. I send here two screenshots, one is the plot and
> the other one the console output.
> Thanks!
> Regards,
> Federico
>
> El vie., 17 may. 2019 a las 14:54, Justin Tallon
> (<justin.tallon at softwareradiosystems.com
> <mailto:justin.tallon at softwareradiosystems.com>>) escribió:
>
> Hey Frederico,
>
> Can you post a screenshot?
>
> Regards,
>
> Justin
>
> On Fri, 17 May 2019, 13:32 Federico Quattrin,
> <fede.quattrin at gmail.com <mailto:fede.quattrin at gmail.com>>
> wrote:
>
> Hi Justin!
> Thanks for your answer! I'm running the pdsch_ue example
> right now, I have a graphic that's move, where should I
> exactly look to know if is properly working?
> Thanks!
> Greetings
> Federico
>
> Justin Tallon <justin.tallon at softwareradiosystems.com
> <mailto:justin.tallon at softwareradiosystems.com>> schrieb
> am Fr., 17. Mai 2019, 14:20:
>
> Hey Federico,
>
> Good to you had some success.
>
> You will not be able to attach to a commercial
> network without a valid SIM card and accompanying
> reader.
>
> My advice would be to try to use the pdsch_ue nad
> pdsch_enodeb examples in the srsLTE/lib/examples
> folder and ensure you can get good behaviour from
> these with the resampling before moving onto the
> full srsenb or srsue.
>
> Regards,
> Justin
> ____
> Justin Tallon Ph.D.
>
> Software Radio Systems (SRS)
> http://www.softwareradiosystems.com
> <http://www.softwareradiosystems.com/>
>
> +353-86-067-0753 |
> justin.tallon at softwareradiosystems.com
> <mailto:justin.tallon at softwareradiosystems.com>
>
>
> On Fri, May 17, 2019 at 11:13 AM Federico Quattrin
> <fede.quattrin at gmail.com
> <mailto:fede.quattrin at gmail.com>> wrote:
>
> Hi Justin,
> I looked at your code and copy some things and
> changes some for adapting to the new version.
> First of all I want to say that you have done a
> real good job!
> Second thing, I managed to run the code and I
> receive no more L messages nor time out, when
> I'm using prb<=15 I receive U messages.
> I was able to create a eNodeB but I can't see mi
> network. I tried to to run srsUE in order to see
> commercial network but I can't. I wonder if
> maybe these error is due to the SIM card
> configured in UE. Do I need a commercial SIM
> card to see commercial network in cell search?
> Greetings!
> Federico
>
> Justin Tallon
> <justin.tallon at softwareradiosystems.com
> <mailto:justin.tallon at softwareradiosystems.com>>
> schrieb am Do., 16. Mai 2019, 11:47:
>
> Hey Frederico,
>
> There has been some work done on integrating
> the fractional resampling functions with the
> UHD code but it is with an older version of
> the code.
>
>
>
> It is available in a repo, can be found at
> this link.
>
> https://github.com/yagoda/srsLTE_Wishful/blob/master/lib/src/phy/rf/rf_uhd_imp.c
>
> Hope this can provide some help.
>
>
> Regards,
> Justin
>
>
>
>
> On Tue, 14 May 2019, 20:02 Federico
> Quattrin, <fede.quattrin at gmail.com
> <mailto:fede.quattrin at gmail.com>> wrote:
>
> Hi srsLTE community,
>
> I'm trying to write a piece of code in
> order to make a resample for the N210.
> Until now I read the source code and
> found that this piece of code must be
> written in the file rf_uhd_impl.c so i
> did that, most specifically I wrote it
> in the
> functionrf_uhd_recv_with_time_multi.
> What i thought was: The N210 has a
> resampling frequency of 100 Msps, but
> srsLTE works with different frequency,
> so i need to get all the samples from
> UHD, save them into a array or buffer,
> and then do a resample of these data
> with the srsLTE resampling functions and
> send these new array of data as the
> final array of data.
> To achieve this I modified the code of
> the function rf_uhd_recv_with_time_multi
> as it follow:
>
> int rf_uhd_recv_with_time_multi(void *h,
> void
> *data[SRSLTE_MAX_PORTS],
> uint32_t
> nsamples,
> bool
> blocking,
> time_t
> *secs,
> double
> *frac_secs)
> {
> rf_uhd_handler_t *handler =
> (rf_uhd_handler_t*) h;
> uhd_rx_metadata_handle *md =
> &handler->rx_md_first;
> size_t rxd_samples = 0;
> size_t rxd_samples_total_new = 0;
>
> float sratio = 192.0 * 3.0 / (625.0 *
> 4.0); //added for resampling
> (1/sratio = 4.340277778) The idea is to
> resample from 100 Msps to 23.04 Msps.
>
>
> // we need to convert all the vector
> to a new size in order to get all the
> samples.
>
> nsamples = nsamples / sratio; //added
> for resampling. We should receive more
> sampling due to different sample rate
> and same time.
>
> size_t rxd_samples_total = 0;
> int trials = 0;
>
> if (blocking) {
> while (rxd_samples_total < nsamples
> && trials < 100) {
> void *buffs_ptr[4];
> void *buff_new[4] ;
> cf_t * puntero;
> puntero =
> &data_c[rxd_samples_total]; // Here I
> try to imitate the behavior of buffs_ptr
> for (int
> i=0;i<handler->nof_rx_channels;i++) {
> cf_t *data_c = (cf_t*) data[i];
> buffs_ptr[i] =
> &data_c[rxd_samples_total];
> buff_new[i] = malloc(nsamples) ;
> //these is the pointer where i would
> keep all the samples coming from UHD.
> }
>
> size_t num_samps_left = nsamples -
> rxd_samples_total;
> size_t num_rx_samples =
> (num_samps_left >
> (handler->rx_nof_samples / sratio)) ?
> (handler->rx_nof_samples / sratio) :
> num_samps_left;
> // /sratio added for resampling.
>
> rxd_samples = 0;
>
> /*So these is the function that,
> as i understood, receive the samples
> from UHD. Originally said buffs_ptr
> instead of buff_new, but because I don't
> want to write the data with the samples
> that comes from UHD I give her buff_new.*/
> uhd_error error =
> uhd_rx_streamer_recv(handler->rx_stream,
> /*buffs_ptr*/ buff_new,
>
> num_rx_samples, md, 1.0, false,
> &rxd_samples);
>
>
> //Implementation of the resampling
> srslte_resample_arb_t r;
>
> srslte_resample_arb_init(&r,sratio,0);
> size_t
> new_rxd_sample[SRSLTE_MAX_PORTS];
> for(int i = 0 ; i <
> handler->nof_rx_channels ; i++){
> new_rxd_sample[i] =
> srslte_resample_arb_compute(&r,(cf_t*)
> buff_new[i], puntero, rxd_samples);
> //function returns new length.
> }
>
> for(int i = 0; i <
> handler->nof_rx_channels ; i++){
> free(buff_new[i]); //we need to
> free the memory because we did a malloc.
> }
>
>
>
> if (error) {
> fprintf(stderr, "Error receiving
> from UHD: %d\n", error);
> log_rx_error(handler);
> return -1;
> }
> uhd_rx_metadata_error_code_t
> error_code = 0;
> uhd_rx_metadata_error_code(*md,
> &error_code);
>
> md = &handler->rx_md;
> rxd_samples_total_new +=
> new_rxd_sample[0];
> rxd_samples_total += rxd_samples;
>
> printf("\n----------------------------------------\nrxd
> samples total new= %ld\nrxd samples
> total normal %ld\nrxd samples normal
> %ld\nrxd samples new
> %ld\n-----------------------------------------------\n",rxd_samples_total_new,rxd_samples_total,rxd_samples,new_rxd_sample[0]);
> // I add these printf because I wanted
> to see the values of these variables.
> trials++;
>
> if (error_code ==
> UHD_RX_METADATA_ERROR_CODE_OVERFLOW) {
> log_overflow(handler);
> } else if (error_code ==
> UHD_RX_METADATA_ERROR_CODE_LATE_COMMAND) {
> log_late(handler, true);
> } else if (error_code ==
> UHD_RX_METADATA_ERROR_CODE_TIMEOUT) {
> fprintf(stderr, "Error timed out
> while receiving samples from UHD.\n");
> return -1;
> } else if (error_code !=
> UHD_RX_METADATA_ERROR_CODE_NONE ) {
> fprintf(stderr, "Error code 0x%x
> was returned during streaming.
> Aborting.\n", error_code);
> }
> }
> } else {
> uhd_error error =
> uhd_rx_streamer_recv(handler->rx_stream,
> data, nsamples, md, 0.0, false,
> &rxd_samples);
> rxd_samples_total = rxd_samples;
> printf("NO entramos al IF\n");
>
> if (error) {
> fprintf(stderr, "Error receiving
> from UHD: %d\n", error);
> log_rx_error(handler);
> return -1;
> }
> }
> if (secs && frac_secs) {
>
>
> uhd_rx_metadata_time_spec(handler->rx_md_first,
> secs, frac_secs);
> }
> printf("\n\nOUT OF THE FUNCTION\n\n");
> return rxd_samples_total_new; //I
> return the new length, I mean the length
> the the resampled data will have, not
> the length of the data I received from UHD.
> }
>
>
>
>
>
> So after I run the code, that is what I
> receive:
>
> # srsenb
>
> Built in Release mode using 18.12.0.
>
> --- Software Radio Systems LTE eNodeB ---
>
> Reading configuration file
> /root/.config/srslte/enb.conf...
> [INFO] [UHD] linux; GNU C++ version
> 8.3.0; Boost_106700;
> UHD_3.14.0.HEAD-0-g6875d061
> Opening USRP with args:
> [INFO] [USRP2] Opening a USRP2/N-Series
> device...
> [INFO] [USRP2] Current recv frame size:
> 1472 bytes
> [INFO] [USRP2] Current send frame size:
> 1472 bytes
> [WARNING] [MULTI_USRP] The hardware does
> not support the requested RX sample rate:
> Target sample rate: 1.920000 MSps
> Actual sample rate: 1.923077 MSps
>
> [WARNING] [MULTI_USRP] The hardware does
> not support the requested TX sample rate:
> Target sample rate: 1.920000 MSps
> Actual sample rate: 1.923077 MSps
>
> Setting frequency: DL=2685.0 Mhz,
> UL=2565.0 MHz
> Setting Sampling frequency 23.04 MHz
> Setting manual TX/RX offset to 100 samples
>
> ==== eNodeB started ===
> Type <t> to view trace
> S1 Setup Failure. Cause: misc - unknown-PLMN
>
> ----------------------------------------
> rxd samples total new= 84
> rxd samples total normal 363
> rxd samples normal 363
> rxd samples new 84
> -----------------------------------------------
>
> ----------------------------------------
> rxd samples total new= 168
> rxd samples total normal 726
> rxd samples normal 363
> rxd samples new 84
> -----------------------------------------------
>
> ----------------------------------------
> rxd samples total new= 172
> rxd samples total normal 742
> rxd samples normal 16
> rxd samples new 4
> -----------------------------------------------
>
> ----------------------------------------
> rxd samples total new= 172
> rxd samples total normal 742
> rxd samples normal 0
> rxd samples new 0
> -----------------------------------------------
> O
> ----------------------------------------
> rxd samples total new= 172
> rxd samples total normal 742
> rxd samples normal 0
> rxd samples new 0
> -----------------------------------------------
> Error timed out while receiving samples
> from UHD.
> LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
> ----------------------------------------
> rxd samples total new= 0
> rxd samples total normal 0
> rxd samples normal 0
> rxd samples new 0
> -----------------------------------------------
> Error timed out while receiving samples
> from UHD.
> LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
> ----------------------------------------
> rxd samples total new= 0
> rxd samples total normal 0
> rxd samples normal 0
> rxd samples new 0
> -----------------------------------------------
> Error timed out while receiving samples
> from UHD.
> LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
> ----------------------------------------
> rxd samples total new= 0
> rxd samples total normal 0
> rxd samples normal 0
> rxd samples new 0
> -----------------------------------------------
> Error timed out while receiving samples
> from UHD.
> LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
> ----------------------------------------
> rxd samples total new= 0
> rxd samples total normal 0
> rxd samples normal 0
> rxd samples new 0
> -----------------------------------------------
> Error timed out while receiving samples
> from UHD.
> LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
> ----------------------------------------
> rxd samples total new= 0
> rxd samples total normal 0
> rxd samples normal 0
> rxd samples new 0
> -----------------------------------------------
> Error timed out while receiving samples
> from UHD.
> LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
> ----------------------------------------
> rxd samples total new= 0
> rxd samples total normal 0
> rxd samples normal 0
> rxd samples new 0
> -----------------------------------------------
> Error timed out while receiving samples
> from UHD.
> LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL^CStopping
> srsENB... Press Ctrl+C 9 more times to
> force stop
>
> ----------------------------------------
> rxd samples total new= 0
> rxd samples total normal 0
> rxd samples normal 0
> rxd samples new 0
> -----------------------------------------------
> Error timed out while receiving samples
> from UHD.
> LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
> ----------------------------------------
> rxd samples total new= 0
> rxd samples total normal 0
> rxd samples normal 0
> rxd samples new 0
> -----------------------------------------------
> Error timed out while receiving samples
> from UHD.
> LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL---
> exiting ---
>
>
> One thing that I noticed is that the UHD
> always receive 742 samples and then do
> not receive a simple sample more.
> I don't know if i need to edit somewhere
> else in the code, but these of the 742
> samples looks like that doesn't belong
> to the resampling problem.
>
> I would be really grateful if any of you
> guys could give some help
>
> Thanks in advance
> Greeting!
> Federico
>
> _______________________________________________
> srslte-users mailing list
> srslte-users at lists.softwareradiosystems.com
> <mailto:srslte-users at lists.softwareradiosystems.com>
> http://www.softwareradiosystems.com/mailman/listinfo/srslte-users
>
> _______________________________________________
> srslte-users mailing list
> srslte-users at lists.softwareradiosystems.com
> <mailto:srslte-users at lists.softwareradiosystems.com>
> http://www.softwareradiosystems.com/mailman/listinfo/srslte-users
>
>
> _______________________________________________
> srslte-users mailing list
> srslte-users at lists.softwareradiosystems.com
> http://www.softwareradiosystems.com/mailman/listinfo/srslte-users
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.srsran.com/pipermail/srsran-users/attachments/20190524/5a81015a/attachment.sig>
More information about the srsran-users
mailing list