patinu / mimoots

MIMOOTS - MIMO-OFDM-Transmission system
3 stars 4 forks source link

How to use this module mimo? #1

Open Amberlan1001 opened 8 years ago

Amberlan1001 commented 8 years ago

Dear author, would you exactly tell me how to use those module or wether this module could run successfully? when I install this block by gr_modtool, and run the program of mimoots_ofdm_rx.py,there is a error said 'len_tag_key' is an invalid keyword argument for this function. Thanks in advance!

patinu commented 8 years ago

Hey, the failure seems not to be in mimoots_ofdm_rx.py but in another libraryfile. So please write the detailed debugoutput of python. Then I can search the problem. The last time I used the software everything worked fine, but its a long time ago :-)

Amberlan1001 commented 8 years ago

Thank you for your reply. Actually,I can run these program in one of my computer, and as you said this block can work successfully, maybe there is some error in other gnuradio version. Sorry for reply so late. Is this block can implement mimo-ofdm which send date through different frequency and antenna (2X2 mimo)? Could you introduce me any learning materials about this block? Thank you for your patience and kindness.

patinu commented 8 years ago

No it cannot. The plan was to find out how to implement a working pipe for 2x2 mimo at one frequency and two antennas in grnuradio. It was my diploma thesis and I find out that it would need more work than I hoped. So it does not realy work. The programms app/mimoots_ofdm2_tx.py and app/mimoots_ofdm2_rx.py are able to send two different datastreams at two different antennas and so on. But I got a failurerate at 50%.

But it is possible to change the pythoncode to use two different frequencies each for one datastream.

Amberlan1001 commented 8 years ago

Thanks, I have read some code, would you tell me whether the mimoots block can obtain Channel state response (CSI)?Thank you for your help.

patinu commented 8 years ago

I wrote down the way how it works completely in my diploma:

There you will find all details about problems and so on. But: it is in german language. But I think it will be possible to understand how it works if you look at the images and graphics showing the pipe of blocks and so on (page 35, 46, ...).

How CSI works: In ofdm_basebandsignal_to_frames_cvc there is the first coarse frequency correction. In ofdm_frame_to_symbols_vcc there is the block digital.ofdm_chanest_vcvc. This block estimates the physical characteristics of the channel and tries to correct the stream. This is a kind of CSI. But it gives no information back to the sender. You will find more information at gnuradio wiki:

Keep writing if you have some other questions :-)

Amberlan1001 commented 8 years ago

Still very grateful,I read your diploma,maybe I should spend more time to read.Thanks a lot.

Amberlan1001 commented 8 years ago

Hi,patinu, when you run those module did you use the external clocking in USRP, like GPSDO,or just mimo cable ? When i run mimo_ofdm2_tx.py with 2.42G frequency, it just about 5s runtime without send data,so the receiver usrp with mimo_ofdm2_rx.py -f 2.42G didn't receive anything, it said “No GPSDO” and two warns as the graph, I‘m a bit dull, Thanks in advance. bug

patinu commented 8 years ago

Hey,

this is a tricky point. I used the device USRP2 N210 (homepage). There are other models like USRP2 N200. The problem is: the same model can have different hardware and because of this it has another sampling rate or another way of handling the signal in hardware. For example my hardware had an internal clocking mechanism. I didn't use external clocking hardware.

If I connect two senders or receivers for MIMO-Transport then one device uses the clock of the other device. Both are connected over a sync-cable and one is the master device and the other is the slave device. But I don't know if your device has an internal clock.

Which device do you use?

Amberlan1001 commented 8 years ago

Thanks, I also use the USRP N210, the four USRPs are all same hardware configuration, and the device has an internal clock.

patinu commented 8 years ago

Does it work if you use a single device and the programs app/mimoots_ofdm_tx.py and app/mimoots_ofdm_rx.py? Or do you get the same error message? If it works the problem could be the synchronisation of the two devices.

Amberlan1001 commented 8 years ago

yes, I got the same error, and no message send.

patinu commented 8 years ago

Please write me the whole textoutput when you use app/mimoots_ofdm_tx.py and app/mimoots_ofdm_rx.py. From the sender and the receiver.

Amberlan1001 commented 8 years ago

very grateful, first graph is mimoots_ofdm_tx.py -f 2420000000 and second is mimoots_ofdm_rx.py,and I print same parameters,like sync_word,didn't modify other programs.Thanks. tx rx

patinu commented 8 years ago

Are you using the two devices (sender and receiver) at the same computer? Are the devices connected to the computer over lan?

I need the whole output from starting the command to the end. You can copy and paste the text from the terminal.

Amberlan1001 commented 8 years ago

I used two devices(sender and receive) in different computer connected with different gigabit ethernet cable, sorry,I'm not sure what you said "Lan" mean. The two computers both are not online.

patinu commented 8 years ago

Sorry, I wanted to say ethernet but not Lan.

I still need the whole output of the text. I cannot see any error like befor with two devices.

Amberlan1001 commented 8 years ago

Thanks, the txt generated in linux,if you see in windows system there without enter. tx_input.txt rx_output.txt

patinu commented 8 years ago

Hey,

this is another output then before in the images (cannot see uhd-warnings and so on). It would be great to get everything printed in the terminal together with the command you typed in to start the program.

It is hard to get an overview when I have the feeling that parts of the text are not copied or ignored by you.

Amberlan1001 commented 8 years ago

I'm so sorry, the txt was generated with command tee which could not show all message of terminal, rx_output_new.txt tx_input_new (2).txt

patinu commented 8 years ago

Ok,

One problem could be that you have to adjust the optimal buffer size with:

That could help.

Did you compile gnuradio by your self? I have to say it was a long way and hard work to calibrate the devices to use gnuradio in the right way. After compiling gnuradio you have to calibrate the receiver and sender because they have little manufactured failures. You have to put away the antennas from the devices and run:

See USRP Calibration I also had to download the right firmware for the devices because it depends on the version of gnuradio. It could also be that you have the antennas at the wrong connector. Normaly the sender uses RX/TX and the receiver uses RX2.

The best way is to run a wavegenerator (like tx_waveforms see calibration usrp2 ) at the sender and try to receive this simple signal with the receiver (use uhd_fft.py from gnuradio, see how to use ). If this works the problem is in my program :-)

Do you have a jabber account?

Amberlan1001 commented 8 years ago

Thanks, It's very kind of you. 1.tx_input_new.txt add some content of uhd warning which tx_input.txt could not show.

2.ActuallyA, I run the command (sudo sysctl -w net.core.rmem_max=50000000 and sudo sysctl -w net.core.wmem_max=1048576), while the problem is same as before with warn“Sensor ‘lo_locked failed to lock within timeout on channel o’”.

I new intstall gnuradio version with 3.7.5, maybe I should try to calibrate the receiver and sender as you said. Thanks all the time.