Gr-extras: tuntap : How to use?

Hi Folks,

Finally getting around to playing with some of the stuff in gr-extras.

Having compiled 3.6.2, and the extras, I found the tuntap block, and
was hoping to use it to implement some RF Networking with the GMSK
modules.

I found the tuntap block, and noticed that it had an input and output.
I was expecting my flowgraph to take the userspace end of the network
interface, with the other end being the network device.

I found the presentation from the recent conference on a basic MAC
layer, and that seemed to imply the input could be almost anything,
but didn’t leave me any the wiser as to exactly how to use it.

What I was hoping to do was essentially this (and a similiar) RX chain:

tuntap --> packet framer --> GMSK_Mod --> USRP

But the input to the tuntap block has confused me. Can I just give
it a Null source ? (With the block picking up data from the network
device ?)

Also, even when connecting it to a source, I seem to have another
issue, as I get this error at runtime:

RuntimeError: gr_make_tuntap: tun_alloc failed

Despite having the /dev/net/tun device, and it being writable by the
user running the flow graph. This happens if I specify “Automatic” or
a specific network device.

Anyone want to point me in the right direction ? Or even anyone have
an example ?

Best Regards

Iain

On 10/03/2012 10:21 AM, Iain Young, G7III wrote:

interface, with the other end being the network device.

I found the presentation from the recent conference on a basic MAC
layer, and that seemed to imply the input could be almost anything,
but didn’t leave me any the wiser as to exactly how to use it.

Basically, the TUN/TAP block was there for the purposes of replacing
tunnel.py. Few people actually want to pipe stuff through a virtual
ethernet interface.

For the example, we will probably replace that block with the “socket
msg” block. You can just open netcat on the host/port and use it like a
wireless IM chat session :slight_smile: There will soon be a demonstration video w/
the MAC layer stuff presented.

What I was hoping to do was essentially this (and a similiar) RX chain:

tuntap --> packet framer --> GMSK_Mod --> USRP

Instead, try the “socket to blob” block. Outside the flowgraph, open a
socket and send packets.

But the input to the tuntap block has confused me. Can I just give
it a Null source ? (With the block picking up data from the network
device ?)

I pushed a change adding 1 to the input and output
ports. You shouldnt need to actually connect.

an example ?

I think you need to run as root to allocate tun/tap stuff. I copied the
tun_alloc from here: /usr/src/linux/Documentation/networking/tuntap.txt

-josh

On 03/10/12 18:57, Josh B. wrote:

but didn’t leave me any the wiser as to exactly how to use it.

Basically, the TUN/TAP block was there for the purposes of replacing
tunnel.py. Few people actually want to pipe stuff through a virtual
ethernet interface.

Heh, I always did like to be different :slight_smile:

For the example, we will probably replace that block with the “socket
msg” block. You can just open netcat on the host/port and use it like a
wireless IM chat session :slight_smile: There will soon be a demonstration video w/
the MAC layer stuff presented.

I shall look forward to that

ports. You shouldnt need to actually connect.
Great, thanks. Everything now works as expected, and wireshark receives
ethernet frames from my RX tun interface, when I connect the GMSK
Modulator and Demodulator together back-to-back. And yes, it also works
with the Socket-to-Blob blocks :slight_smile:

Now I just have to figure out what filtering, amplification, levels,
and frequency offsets I need to make it work via my USRP and also
soundcard interfaces.

Not had much success yet, and my rates are somewhat more narrow-band
than most examples out there. Ah well, I’ll figure it out at somepoint

Thanks again

Iain