Setting up TomatoUSB for VLANs and Ubiquiti AP

So after getting a quarter of the way through a comment to a question somebody had on my Ubiquiti APs, TomatoUSB, VLANS, and Linksys e3000 post, I realized it would probably work better as a post instead. Christoph’s question was:

How did you wire everything? I’m trying to do the same and had no luck. I only have one UAP, but if I turned on tagging for the Port I used for each bridge, I wouldn’t even get an IP.
I would like Management and Home to be one vlan, and guest another, so my setup is simpler. Maybe knowing how you wired it will help.
Thanks!

I’m going to walk essentially through what steps I remember taking to get up that far.

Assumptions

  • VLAN 2: Home / Management
  • VLAN 3: DMZ
  • UAP plugged into Port 1
  • Admin Computer plugged into Port 4
  • Management / Home network is 192.168.1.0/24
  • Guest network is 192.168.2.0/24
  • You have a VLAN edition of Toastmans TomatoUSB mode

Setting up TomatoUSB Read more »

Compiling Intel’s Data Center Manageability Interface on 64-bit

I needed to use Intel’s Data Center Manageability Interface program to interface with IPMI that does not have a dedicated controller, so we needed to use software emulation. Two issues that we had were:

  1. The binaries provided on their website didn’t work due to needing older libraries that had deprecated functions in them.
  2. Source code didn’t compile because of those same libraries that were missing.

I’m including a patch for DCMI_Conformance.cpp that will allow it to compile on Ubuntu 12.04 64-bit. The source came from ipdc-1-5-0-31-0-src.tar.gz, which was downloaded from Intels site. Just make sure that you have the dev libraries installed for ncurses and libssl.

RocketRaid 622 Driver (rr62x) for Ubuntu Linux Kernel 3.8

More of a reference for myself so that I don’t have to go through this again, but I put together the patches people had in multiple places so that I can install rr62x-dkms on my 12.04 system. Probably a better way to do this, but I’m tired and just wanted to get the system up.

File: rr62x-dkms_1.1_all-3.8.deb

Resources Used

Ubiquiti APs, TomatoUSB, VLANS, and Linksys e3000

Try not to get too shocked, but this actually an article about networking.

Back story, I picked up some Ubiquiti AP’s for a good price to install around the house. While I have these nice enterprise AP’s, I decided to redesign my home network utilizing VLANs to provide a management vlan, home vlan, dmz vlan, and a guest vlan. I set out to do this utilizing gear that I had laying around that consisted of:

To start off, I decided that I was going to utilize my two e3000’s as a router and a smart switch. I decided to continue to use the TomatoUSB ROM on those routers, but upgrade to the Toastman version (1.28.7502.7) that had experimental VLAN support.

The Design
In the end, I wanted to have four different vlans:

  • VLAN2 – Management
  • VLAN3 – Home Use
  • VLAN4 – DMZ
  • VLAN5 – Guest

In addition, I wanted to have multiple SSIDs on the Ubiquiti AP’s that mapped to specific VLANS:

  • Home – VLAN3
  • Automation – VLAN4
  • Guest – VLAN5

The nice thing about the Ubiquiti AP’s is that they allow multiple SSIDs to be set and also it will add tags to the packets. The only gotcha was that the non-vlan SSIDs and AP needed to be setup on a non-tagged vlan or native vlan.

The Problem
After many hours of trying to get Tomato to work correctly, it turns out that the problem is that I needed to have VLAN2 setup as non-tagged, while VLAN3-5 needed to have tagging on. The GUI had an option for setting the default, but that did not work and packets were ignored. The other issue was that the gui didn’t allow you to set VLAN’s that were tagged for a port and then add an untagged VLAN on that same port. It was either all VLANs were tagged or it would only let you select one untagged VLAN and no other VLANS.

The Solution
After many hours of trying to figure out what was going on, I realized that the firmware wasn’t handling untagged traffic correctly. The solution was that I needed to telnet into each of the routers and update the nvram values directly to specify that the port should be used, but not tagged, while the other VLANS would be tagged.

Read more »

Sound on Dell XPS L702X in Linux

After getting the sound working on the laptop, I was still running into issues with distorted sound and the sub woofer not working. The sound chipset that is in it is Intel, as can be seen by:

00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 05)

The fix was by adding some additional commands to the snd-hda-intel module:

echo "options snd-hda-intel model=ref index=0" >> /etc/modprobe.d/sound.conf
echo "options snd-hda-intel model=6stack-full" >> /etc/modprobe.d/sound.conf

Accessing your eBook collection managed by Calibre without Calibre Server

This post is about how I’ve been going about enabling access to my eBook purchases that are managed with Calibre without actually using the built in Calibre Server.  All of this is running on Linux, with my eBooks and Calibre Library sitting on a remote Linux File Share.

The reason that I’m not using the Calibre Server to do the distribution is because:

  1. I actually store all the eBooks and the Calibre database on a Linux file share that is then shared on my network using Samba.
  2. I use multiple computers to interact with that Calibre database (not at the same time).  They are all setup to open the database on the samba share.
  3. The file share is headless and does not have X installed

So to do this, the first thing I had to do was setup the directory on my file share and then setup samba to share it out to the network.  Once that was done, I then mounted the share on my client computer.  With that done, when I started Calibre for the first time, I just change the configuration to use the samba share directory.  Now whenever I open Calibre, all the eBooks and database files are now stored and shared internally on my file share.

Read more »

Subversion diff from url to local directory working copy

For some reason there is some bad information out there on comparing a local working copy in a branch to that of a subversion url.  In this case, I really wanted to know how far off this branch code that wasn’t commited is from the trunk.  To do that, you just need to use the ‘–old’ and ‘–new’ flags.

$ cd ./branches/one
$ svn diff --old=svn://server/Project/trunk --new=. > working.diff

Then all that needs to be done to update a branch of trunk to that is:

$ patch -p0 -i workingdiff.diff

My IOIO for Android is here

The IOIO for Android that I recently purchased has shown up!!!  I haven’t had time to play with it or even know much about how to start playing with it, but I will be figuring it out quickly.  If you’re not sure what it is, a quick description from their website is:

The IOIO (pronounced “yo-yo”) is a board specially designed to work with your Android 1.5 and later device. The board provides robust connectivity to an Android device via a USB or Bluetooth connection and is fully controllable from within an Android application using a simple and intuitive Java API – no embedded programming or external programmer will ever be needed!

So setup as it’s default use, it’s not using the new Google Open Accessory (ADK) protocol, which is what I really want to develop with once I get far enough along in Android programming and being able to do some prototypes on the board.  I figure once I get far enough along, that I’ll be turning on blinking LED’s, and from there the worlds the limit, even though I do know what I want the end result to be with it.

The bad news at this point is that the ADK firmware on it is still very beta.  Even to update the device, I need a PIC programmer capable of programming PIC24FJ128DA206.  So that means until it comes out of beta, I can’t use it for the ADK protocol or I ask some EE friends if they have one laying around.  Even if I take the friend route to update it to the beta, it still has the following problematic caveat:

Due to problems with the accessory library implementation (i.e. the Android OS code supporting the protocol) – the IOIO connection will not be properly closed when pausing (and exiting) your IOIO app. When the app is resumed (restarted) it will hang. The current workaround is to physically disconnect and reconnect the IOIO (or power-cycle it).

This is because of a problem in the Android OpenAccessory library preventing the app from gracefully closing the ADK connection. To work around this problem, detach and re-attach the IOIO when that happens (or power-cycle it). Another option is to force-close the app.

Not something that I would call usable in a real life situation.  Hopefully it does get resolved though.  At this point though, since my original plan is for a single use at this point, if all else fails, I’ll just use their implementation of the communication protocol for the initial project.  Either library I use in the end, both will be good learning experiences on making and developing for new accessories to work with Android.

DVR Software So Far

I am no where done tweaking with the software and trying to get everything working perfectly. This is just a post to document what I have done so far. Until I have a better internet connection, I will not be playing with streaming services such as Netflix and Hulu.

Operating System – Windows 7 Ultimate

I’ve decided to go with Windows 7 Ultimate. This version comes with Windows Media Center by default, which I will get into later. I know this is surprising to everyone that knows me, since it’s not Linux. The reason that I’ve done this is because Linux doesn’t allow the DVR to meet it’s needs. I wouldn’t be able to stream netflix or many other websites through boxee. In addition, it does come with DVR software for free that provides listings for free.

DVR Software – Windows Media Center (MWC)

I’m using Windows Media Center for the DVR software. It does decent, but is free with Windows 7 and comes with free listings. It does a good job of setting up with the tuner card. It allows for some plug-ins also. I haven’t spent much time trying to tweak it, but I need to find a way to modify the main menu to remove a lot of junk I don’t want. The movie section also leaves a lot to desire, as it does not break things down by folder and just displays all files it finds regardless of which folder it is in.

I have it setup so that when the DVR starts up, that WMC will startup in full screen. With this setup, there is no need for a mouse or keyboard.

Air Video

Air Video can stream videos in almost any format to your iPhone, iPad and iPod touch. You don’t need to copy your videos to the device just to watch them. The program runs in the background and starts automatically when the DVR starts up. With the recent Beta version of the server, it can stream the drm laden wtv format without having to convert them first.

My Channel Logos – MCE Plug-In

This is only a minor plug in, but it adds nice Broadcaster logo’s to the channel listings. It’s a minor touch, but a nice one.

Media Browser – MCE Plug-In

I use this for accessing, organizing, and viewing my shows on the remote server. If you loved how XMBC populated information about shows and movies, you will love this plug-in for watching all your backed up media. It will key off the title, download all the information about the media, and also pictures. Much better than the stock movie lister that came with WMC

Remote Potato – MCE Plug-In

I’ve used this for setting web access to the DVR. It allows for viewing the listings and setting up recordings using a web browser. It also allows you to stream already recorded shows to windows and os x web browsers that support silverlight. This doesn’t include the implementation on linux though.

A new feature that I haven’t had time to test out is streaming to iOS devices. I might try it out in the next couple weeks and update this post. Currently, it does not support native mode on the iPad.

Streaming Windows Media Center DVR Shows to the iPad

I had started this article out about how I use all these different applications, such as using MCEBuddy to convert videos to a non-drm stream on a nightly basis, save to a separate location, and then using Air Video Server to stream it to the iPad or iPhone.

So while I was getting the links together, I realized that Air Video Server now has a beta server out that does that all for you. Air Video now has the ability to stream the DRM WTV video format that WMC saves the shows in!

Software Used

Instructions

  1. Navigate to http://www.inmethod.com/air-video/index.html and there will a box announcement link in the top left of the page that there is a new Air Server beta. Click the box, which will take you to the forum to choose either Windows or Mac in the first post. Download the software and then install on your application.
  2. If the server hasn’t been started yet, start it now (either in task bar or going to applications). Under the “Shared Folders” tabl, click the “Add Disk Folder” button. For a default WMC installation, you should add the folder “C:UsersPublicRecorded TV”. At this point, if you have other video file locations (MKV, mp4, divx, avi), you can add those in there also. Now start the server by clicking the button at the top left. You are all done on the server side.
  3. Download “Air Video” from the App Store. Once you start up the app, click the “+” button and if you are on the same network as the DVR, the server should pop up. Just navigate to the shared videos and start. It’s that simple.

One of the additional benefits of Air Video is that you can also stream at a lower resolution from your DVR over the internet, but you will need to go to the Air Video Website for more detailed instructions on that.