[srslte-users] Resampling on N210
Federico Quattrin
fede.quattrin at gmail.com
Tue Jun 4 14:19:38 UTC 2019
Hi Justin,
You were right! The first time it failed because I copied only uhd_impl.c.
Now I built the entire code in the link you gave me and works for the UE
(at least for the pdsch example). By the way, I saw that the release of the
code is the version 2.0. When I tried to run the srsenb I get and error
saying "I/O error while reading file: rr.conf" and "I/O error while reading
file: sib.conf". Is that a common error in this version? I hope you can
help me.
Thanks in advance!
Greetings,
Federico
El dom., 26 may. 2019 a las 22:07, Rafael Diniz (<rafael at rhizomatica.org>)
escribió:
> 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
> >
>
> _______________________________________________
> srslte-users mailing list
> srslte-users at lists.softwareradiosystems.com
> http://www.softwareradiosystems.com/mailman/listinfo/srslte-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.srsran.com/pipermail/srsran-users/attachments/20190604/14b32c6c/attachment.htm>
More information about the srsran-users
mailing list