USRP Software Radio

cancel
Showing results for 
Search instead for 
Did you mean: 

Unable to Create Multi-Channel Tx Session of Two USRP-2943Rs Using Driver

Solved!
Go to solution

I am having issues setting up multiple USRP-2943R devices to tranmist on both of their channels at once.  Right now my setup is a four channel setup consisting of two RIO devices.  I am only able to successfully transmit simultaneously on CH0 and CH1.  I am creating a session using the two devices and my goal is to perform Tx on CH0 through CH3.  Also, my goal is to utilize the LabVIEW driver without any synchronization, because I will be testing sync correction through post-processing and want the VI to be as simple as possible without the hassle of FPGA programming. I do realize the Simple NI-USRP Streaming Sync templates in LabVIEW, but the extra synchronization and FPGA programming is way too much for such a simple project like mine that would not require any USRP synchronization.

 

Attached is my VI and a couple screenshots of the resulting error messages.  I am able to succesfully implement multi-channel Rx processes and attached is my multi-channel Rx VI.  My question is why is it that I can open and operate a mult-channel Rx session with no problem, whereas a multi-channel Tx session will give me errors?

 

My end-goal is to merge my working multi-channel Rx VI with a working mult-channel Tx VI to perform measurements in order to test some synchronization post-processing routines that will be performed in Matlab.

0 Kudos
Message 1 of 9
(6,174 Views)

Hello,

 

The fix is pretty simple: In the TX VI, your enabled channels list should be "0,1,2,3" instead of "1,2,3,4".  The default channel names are zero indexed.

 

The API does not report this error immediately because the settings changes are not actually committed until you attempt to readback the IQ rate. (Any read will force a commit)

 

Mark

0 Kudos
Message 2 of 9
(6,143 Views)

Thanks for comming to assist me and pointing out the improper channel list, Mark.  I had changed the channel list to "0,1,2,3". but it is still giving me errors.  This is strange as I am using the same channel list for my Rx code with no issues at all for a single session using multiple RIOs.  Is there a limit on the amount of channels that can be used for a single Tx session?

0 Kudos
Message 3 of 9
(6,129 Views)

Hi,

 

  1. After making the fix of enabled channels to "0,1,2,3" do you still get the original error or a new one?
  2. Since you are appying the same settings on all channels in the current application it would be worth trying to use a single niusrp configure signal VI to configure all channels like the Rx application that you attached. Was there a particular reason to not use the niusrp configure signal VI?

 

0 Kudos
Message 4 of 9
(6,117 Views)

Hi,  Wkakade.  Actually, it appears that there may have been a programming error on my part.  I am not quite sure as to what may have happened, but I am now able to transit on all fourt channels.

 

As for your suggestion regardin using the" niusrp configure signal" VI, I was unable to use it due to errors.  But, I can now get it to work.  Attached is my VI using this configuration.  I think that I was unable to use it in the past because it may have been the way I was setting up the "channel list" input of this VI block.  My guess is that I was sending a string instead of an enumeration.  I had left it unwired so now it works.

 

One question that I have about my attached VI is sending the data to all four channels.  If I understand correctly, each channel receives a 1D array of IQ data.  So, for my four-channel system I will have to send an array of four rows with each row containing data for a particular channel.  Is this correct?

 

Thanks to you guys, it seems like my Tx VI is working. I am planning on merging it with an Rx VI for a full-duplex scheme with multiple devices.  I was wondering it would be neccessary to setup the Start Trigger for Rx only, or both Tx and Rx sessions when it comes to full-duplex operation.

 

 

 

0 Kudos
Message 5 of 9
(6,100 Views)

I am sorry, but the VI that I had posted in my previous response had the Start Timer Trigger variable missing.  But, it does not seem to make a difference as the VI is again not working.  Attached is another screenshot of my resulting error when running the VI for two devices.  It is rather strange and frustrating as this VI was working perfectly the last time I was running it.  There wasn't any changes made to my code at all since the last known program execution.  So, it seems intermittent.  I am setting up my list of device names properlyCan this be an issue with my USRP driver?   What's going on here?

 

Attached is a screenshot of the resulting errors.  Note that the errors occur regardless whether I send input to the Channel List input of the Configure Signal VI.

0 Kudos
Message 6 of 9
(6,097 Views)

Hi,

 

You need to set up triggers separately on both the Tx and Rx session even if you are using a single device. You can configure them to have teh same trigger time by using the same value on both sessions.

Also this post explains the scoping of settings very well.

Link :http://forums.ni.com/t5/USRP-Software-Radio/Sessions-Devices-and-Channels/m-p/2874970#U2874970

 

I am not sure about the other error that you got.

 

0 Kudos
Message 7 of 9
(6,032 Views)

Thanks for the link regarding channels, but I have already read it and I do understand the scoping of channels.  I am having a tough time with setting up multiple channels for simple Rx or Tx sessions.  If I use the USRP Configure Signal block with no input into the Channel List input, then only CH0 is active.  But, if I set up CH0, CH1 for a single device, or CH0,CH1,CH2,CH3 for a two device system, then the USRP Configure Signal function will report with the error "niUSRP Configure Signal.vi<ERR>The specified attribute ID is not valid for the specified scope (or channel)." Why is it doing this? This is beyond frustrating as it seems like the program works sometimes, and other times and does not work(and the program has not been modified at all).

 

I have done multiple variations of setting up my channels from sending an enumeration or a string list, but the Configure Signal property is telling me that my Channel List input is an invalid input. Is there some magical, super top secret Channel List string that NI cryptically is designing this function to handle while using its users as Beta Testers?

0 Kudos
Message 8 of 9
(5,971 Views)
Solution
Accepted by topic author The_Elegant_Programmer

I believe that I have found a solution to my problem.  I figured to post it here to help others out.  Using some sort of device syncing between multiple USRPs is important.  However. I have found that you must reset the device by setting the Reset node of the function blocks that open and Rx or Tx session.  If this is not set, then the "niUSRP Configure Signal.vi<ERR>The specified attribute ID is not valid for the specified scope (or channel)." error will occur, no matter what channels you set.  After setting the Reset node to true and placing an empty string for my Enabled Channels all was well.  Also, for a full-duplex system you will only would need to first open an Rx session with a device reset, followed by opening a Tx session without a device reset.

 

One more thing is that there appears to be a bug if you feed a Tx process an array whose number of rows does not match the number of Tx channels.  This will result in funny wierd errors that will only go away after doing a hard reset of the units.  So, just something else to take note of. 

 

Hopefully this information will help others and this post can be marked as solved.

0 Kudos
Message 9 of 9
(5,872 Views)