Problem in text file transmission using USRP and GNU Radio (3.1.3)


#1

Hi,

I have got GNU Radio (3.1.3) installed on Ubuntu 8.04. The
installation is followed the guide
(http://gnuradio.org/trac/wiki/UbuntuInstall). It works well with USRP
on two laptops after running some tests, such as
“./test_usrp_standard_tx”,"./usrp_benchmark_usb.py", “./tunnel.py -f
2.4G”, “./benchmark_tx.py -f 2.4G”.
Then I tried to test three demos.

  1. The first demo is to test TCP/IP connection between two USRPs. It
    runs OK;
  2. The second demo is to test transferring ASCII code. It runs OK;
  3. The third demo is to test text file transmission. I got problem
    with this test.
    The detailed operation is described in the following.

The FIRST demo is similar to the description in the README which can
be found under " ~/gnuradio/gnuradio-examples/python/digital/ ", I
test TCP/IP connection between two USRPs.
- -------------------
On machine A:
$ su
# ./tunnel.py --f 2.4G
# # in another window on A, also as root…
# ifconfig gr0 192.168.200.1

 On machine B:
   $ su
   # ./tunnel.py --f 2.4G
   # # in another window on B, also as root...
   # ifconfig gr0 192.168.200.2
 - -------------------

I can get some output for each packet if “ping 192.168.200.2” from A
and “ping 192.168.200.1” from B.

In the SECOND demo, I test the ASCII code transmission through USRP
using following set up.


On machine A:
$ su
# ./tunnel.py --f 2.4G
# # in another window on A, also as root…
# ifconfig gr0 192.168.200.1
# tcpdump –i gr0

On machine B:
$ su
# ./benchmark_tx.py --f 2.4G


Output of tcpdump in Machine A:

0x0030: 6060 6060 6060 6060 6060 6060 6060 6060 0x0040: 6060 6060 6060 6060 6060 6060 6060 6060
0x0050: 6060 ``
16:21:14.943425 61:61:61:61:61:61 (oui Unknown) > 02:61:61:61:61:61
(oui Unknown), ethertype Unknown (0x6161),

length 1500:
0x0000: 6161 6161 6161 6161 6161 6161 6161 6161 aaaaaaaaaaaaaaaa
0x0010: 6161 6161 6161 6161 6161 6161 6161 6161 aaaaaaaaaaaaaaaa
0x0020: 6161 6161 6161 6161 6161 6161 6161 6161 aaaaaaaaaaaaaaaa
0x0030: 6161 6161 6161 6161 6161 6161 6161 6161 aaaaaaaaaaaaaaaa
0x0040: 6161 6161 6161 6161 6161 6161 6161 6161 aaaaaaaaaaaaaaaa
0x0050: 6161 aa
16:21:14.968508 62:62:62:62:62:62 (oui Unknown) > 02:62:62:62:62:62
(oui Unknown), ethertype Unknown (0x6262),

length 1500:
0x0000: 6262 6262 6262 6262 6262 6262 6262 6262 bbbbbbbbbbbbbbbb
0x0010: 6262 6262 6262 6262 6262 6262 6262 6262 bbbbbbbbbbbbbbbb
0x0020: 6262 6262 6262 6262 6262 6262 6262 6262 bbbbbbbbbbbbbbbb
0x0030: 6262 6262 6262 6262 6262 6262 6262 6262 bbbbbbbbbbbbbbbb
0x0040: 6262 6262 6262 6262 6262 6262 6262 6262 bbbbbbbbbbbbbbbb
0x0050: 6262 bb
16:21:14.993629 63:63:63:63:63:63 (oui Unknown) > 02:63:63:63:63:63
(oui Unknown), ethertype Unknown (0x6363),

length 1500:
0x0000: 6363 6363 6363 6363 6363 6363 6363 6363 cccccccccccccccc
0x0010: 6363 6363 6363 6363 6363 6363 6363 6363 cccccccccccccccc

ASCII code in the output list is generated and sent by
“benchmark_tx.py” by default. This demo works very well.

In the THIRD demo, the text file transmission is tested which is done
based on the Second demo. The setup is similar

except the command using on machine B.
---------------------------
$ su
# ./benchmark_tx.py --f 2.4G --from-file README
---------------------------

Output in machine A:
In the First window, I got:

gr_fir_fff: using SSE
modulation: gmsk
freq: 2.4G
bitrate: 500kb/sec
samples/symbol: 2
Carrier sense threshold: 30 dB

Allocated virtual ethernet interface: gr0
You must now use ifconfig to set its IP address. E.g.,

 $ sudo ifconfig gr0 192.168.200.1

Be sure to use a different address in the same subnet for each
machine.

uOuOuOuOuOuOuO
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBRx: ok = False len(payload) = 1500

In the Second window, tcpdump shows:
14:10:39.494834 IP (tos 0x0, ttl 255, id 0, offset 0, flags [DF],
proto UDP (17), length 68) lee-desktop.local.mdns > 224.0.0.251.mdns:
0 PTR (QM)? _pgpkey-hkp._tcp.local. (40)
The output indicates machine A failed receiving the file README.

Then, instead of “README”(size: 3.5 KB), I tried to send another file
“receive_path.py” (size: 10.9 KB) with same setup above except using
command on machine B:
# ./benchmark_tx.py --f 2.4G --from-file receive_path.py

Output in machine A:
In the first window, I got:
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuORx:
ok = True len(payload) = 1500
Rx: ok = True len(payload) = 1500
Rx: ok = False len(payload) = 1500
uOuOuOuOuOuOuOuO

In the second window, tcpdump shows:
14:13:44.692138 0a:20:20:20:20:20 (oui Unknown) > 00:01:75:72:65:0a
(oui Unknown), ethertype Unknown (0x2020),

length 1500:
0x0000: 206f 7074 696f 6e73 203d 2063 6f70 792e
.options.=.copy.
0x0010: 636f 7079 286f 7074 696f 6e73 2920 2020
copy(options)…
0x0020: 2023 206d 616b 6520 6120 636f 7079 2073
.#.make.a.copy.s
0x0030: 6f20 7765 2063 616e 2064 6573 7472 7563
o.we.can.destruc
0x0040: 7469 7665 6c79 206d 6f64 6966 790a 0a20
tively.modify…
0x0050: 2020 …
14:13:44.715214 72:78:5f:67:61:69 (oui Unknown) > 00:02:6f:6e:73:2e
(oui Unknown), ethertype Unknown (0x6e29),

length 1500:
0x0000: 0a0a 2020 2020 2020 2020 7365 6c66 2e73
…self.s
0x0010: 6574 5f61 7574 6f5f 7472 2854 7275 6529
et_auto_tr(True)
0x0020: 2020 2020 2020 2020 2020 2020 2020 2020

0x0030: 2023 2065 6e61 626c 6520 4175 746f 2054
.#.enable.Auto.T
0x0040: 7261 6e73 6d69 742f 5265 6365 6976 6520
ransmit/Receive.
0x0050: 7377 sw

The output indicates that I did receive the file, but only part of it.
Reading from the tcpdump output, machine A could not receive the file
from beginning. Why?
Considering transmitting the smaller file “README”, why I cannot even
receive it?

Please help me. Thanks.