Hi, I've been browsing through the mailing list archives to find some examples of simultaneous rx/tx but with no luck. I have two USRP's, each equipped with RFX2400 and one antenna, attached to TX/RX. I would like these two radios to talk to each other in an asynchronous fashion - a radio can receive while transmitting and vice versa. Is it possible to do it with just one antenna per box, or do I have to get a second antenna and connect it to the RX2? From reading the archives, I gather that I should use set_auto_tr(true) -- can anyone elaborate on that? how does it work? As far as I understand it switches between rx/tx mode - isn't there a risk of a loss of data? How would I go about implementing such behavior? Do I need to run two separate threads, one for tx and one for rx? Any help greatly appreciated. Regards, Jakub.
on 2009-04-09 06:07
on 2009-04-13 22:20
Hi Jakub - 2 possibilities, depending on how one interprets your question: A) If what you mean is "using a single host computer that controls the two USRPs such that one transmits while the other receives and vice- versa, but never a single USRP both Tx and Rx simultaneously", then yes, that can be done; you could probably even use two host computers that sync the Tx/Rx in a MAC-like way using the current GNU Radio software, so long as each USRP is not trying to do simultaneous Tx and Rx. If using a single host computer: on each USRP, you'd use set_auto_tr(true) and then control both USRPs from the same Python script. My colleague Glenn has done this in a "TDMA fashion" to compare properties of actual and theoretical relays; see his MS thesis and related paper at UND < http://www.nd.edu/~jnl/group/glenn- bradford/ >. B) If what you mean is "simultaneous Tx/Rx on each USRP, using a single RFX and single antenna", then this problem is (1) possibly not do-able in the current state of GNU Radio software and USRP hardware; and (2) even if it is do-able, certainly not easily so in GNU Radio software without significant hacking to make it work. The primary issue is in jointly estimating the channel parameters (both the Tx -> Rx delay and filter coefficients), which might be time-varying or dependent on qualities beyond the direct TX signal. I'm happy to discuss this interpretation further off-list. Hope this helps! - MLD
on 2009-04-13 23:18
Dear Michael and Jakub, I was working on the similar problem. What about using two TX daughter boards in the same motherboard, and BOTH TRANSMITTING signals simultaneously, one from each daughter board, but in an "overlapped" fashion. Is it easily possible? What I mean is, I would like to have two signals generated from two daughter boards plugged into the same motherboard but interleaved in some fashion so that I can study the effect of that interleaving on the receiver side (receiver is on a different host far from these two simultaneously transmitting USRPs). Sorry if I am not being clear. But I am guessing Michael and Jakub will understand what I am asking. -Sincerely, -Bishal.
on 2009-04-14 01:56
On Apr 13, 2009, at 5:17 PM, Bishal Thapa wrote: > these two simultaneously transmitting USRPs). Sorry if I am not > being clear. Hi Bishal - I understand the basics if what you're trying to do, but not the specifics. If the TX interleaving is done in frequency (FDMA or OFDM) or codes (CDMA), then you should be able to do what you want with some clever programming. OTOH, TDMA interleaving could be an issue -- depends on how you've implemented the overall system. I can think of a number of ways to configure TDMA-like transmissions that could work in your dual USRP setup -- that said, they all require very clever programming. Tell us more specifics of what you're trying to do, and maybe we can help more precisely (either on or off list, as you see fit). - MLD
on 2009-04-14 06:18
Hi Michael, my intention is to allow a communication between two USRP's hooked up to two different computers. Each USRP has one RFX2400 daughterboard and one antenna connected to the Tx/Rx port. I have a more of a CS than ECE background and my focus here is on the application level. I would like the radios to be able to send and receive messages asynchronously - which can mean asynchronous communication at the application layer, but synchronous below - perhaps not even observable above. In my scenario, radios send messages which are read from some buffer and at the same time receive messages and put them in a different buffer for further processing. How do I go about implementing such scenario? Do I have to implement a protocol which consists of some time-based switching of rx/tx? Can I achieve it with only one antenna per USRP, or do I need two of them - one for Tx//Rx and one for Rx2 port? I imagine that in the case of only two radios, I could achieve this behavior by allowing one radio to Rx while the other is Tx-ing and after short time, switching the direction to the opposite, to allow the first radio to Tx. However, I don't see how this could be achieved if 2+ radios are involved - without the prior knowledge of the number of "neighbors". That is why I thought each radio should be allowed to Tx and Rx at the same time. Thank you for help! Jakub.