Saturday, November 14, 2009

streaming 1080P using MoCA, ethernet over cable

As you guys know, I recently bought a new AV receiver. In support of that, I setup an audio server that streams lossless AAC from the MacBook to the receiver. This works well and sounds great. FYI - the lossless audio streams at about 1411Kbps according to this spec:

Secondly, I setup TwonkyMedia server on my Linux video editing box to stream video. I tested streaming 1080P content from that server over wireless using a Linksys by Cisco WET610N Wireless-N Ethernet Bridge to the Playstation 3. It's cool, as the very high def video plays back, but unfortunately, I get stutters. Connecting the PS3 via wired eliminates the stutters. So, the best solution to the problem would be to run an ethernet line from upstairs to the downstairs. However, I live in a condo and it is impractical for me to run ethernet. What to do?

It seems that a standards group has been working on this same problem and that a solution has been around for a few years now:

I guess I've been sleeping at the wheel! Anyway, MoCA allows me to use the coax cable within my house to stream video. That's great! Here are a few devices that do what I wanted:

Motorola NIM100
Actiontec MI424WR (used in Verizon FIOS)

After reading the below articles, I decided the Moto NIM100s were the best fit for me, as they were an inexpensive and solid solution:

I purchased two from eBay for $110 (shipping included).

After a few missteps, I got those b1tches working last night. I had trouble early on, as:
1) the devices don't default to DHCP by default
2) I didn't realize you couldn't get to the admin GUI when the coax connection was active

So I fumbled around for two hours until I figured that stuff out.

But now I am able to stream glorious 1080P videos from my Twonky Media Server to my Playstation 3! Of course, its not perfect, as the highest bitrate streams are coming in at greater than 60Mbps! Woah! Thus, I need to gain an understanding of the capacity of the MoCA network within my condo.

To do this, I found a nifty utility called netio that allows you to measure bandwidth between two hosts on your network:

You setup a server component on a PC at one end of your network and then a client PC at the other end of the network. The program then sends packets of different size from the client to the server and reports the send and receive rates in between. The output looks like this:

CLIENT SIDE

C:\temp\netio\bin>win32-i386.exe -t 192.168.1.97

NETIO - Network Throughput Benchmark, Version 1.26
(C) 1997-2005 Kai Uwe Rommel

TCP connection established.
Packet size 1k bytes: 10345 KByte/s Tx, 10908 KByte/s Rx.
Packet size 2k bytes: 10700 KByte/s Tx, 10954 KByte/s Rx.
Packet size 4k bytes: 11209 KByte/s Tx, 11342 KByte/s Rx.
Packet size 8k bytes: 11157 KByte/s Tx, 10953 KByte/s Rx.
Packet size 16k bytes: 11122 KByte/s Tx, 11044 KByte/s Rx.
Packet size 32k bytes: 11256 KByte/s Tx, 11536 KByte/s Rx.
Done.


SERVER
C:\temp\netio\bin>win32-i386.exe -t -s
NETIO - Network Throughput Benchmark, Version 1.26
(C) 1997-2005 Kai Uwe Rommel
TCP server listening.
TCP connection established ...
Receiving from client, packet size 1k ...
Sending to client, packet size 1k ...
Receiving from client, packet size 2k ...
Sending to client, packet size 2k ...
Receiving from client, packet size 4k ...
Sending to client, packet size 4k ...
Receiving from client, packet size 8k ...
Sending to client, packet size 8k ...
Receiving from client, packet size 16k ...
Sending to client, packet size 16k ...
Receiving from client, packet size 32k ...
Sending to client, packet size 32k ...
Done.
TCP server listening.

hope folks find this useful,
TAG



Twonky Media Install notes
(from the HowTo)
Copy all files (keeping the directory structure) into your most 
favourite installation directory, e.g. /usr/local/twonkymedia.

Make sure that the server file, plugins and the cgi scripts have the exe bit set.
If not, try:
"chmod 700 twonkym* cgi-bin/* plugins/*"
Eventually it is necessary to have a multicast route set for the
server by issuinge, e.g.:
"route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0"

If you are running a Debian distribution on a 64 bit architecture, it
is possible that you need to install the 32 bit compatibility
libraries. In this case invoke:
"apt-get install ia32-libs"

Now start the server with a full qualified path (never just "./twonkymedia"),
but "/usr/local/twonkymedia/twonkymedia" . The server will display a startup
message. The server is running now and you can find and use it with
your UPnP client device. Before you continue, you should point the
server to one or more content directories via the configuration
web-page, unless the content is available from subdirectories of the
server' working directory.

To open the server's configuration web-page, open the following url in a web
browser:

http://127.0.0.1:9000/config
Feel free to drop me a line or ask me a question.