teaching machines

Nogramming :: Travis Boettcher

December 1, 2012 by . Filed under cs491 mobile, fall 2012, postmortems.

For my nogramming assignment, I decided to write a couple of tutorials explaining how to do a couple of things I’ve recently been using on my phone. The first will explain how to set up WiFi calling on an Android phone, and the second will briefly go over what I had to go through to set up my desktop computer to wake up from sleep mode with a single button click from my phone.

WiFi Calling

Motivation

I have been a customer of T-Mobile for several years now. In fact, other than my first phone contract (which was with AT&T) I’ve always been a T-Mobile customer. One of the reasons that kept me coming back to then is their “WiFi Calling” feature. Basically as long as you are on wifi, you can send and receive both calls and text messages.
Or at least you’re supposed to be able to. Recently (within the past couple of years) T-Mobile changed how they implement the WiFi calling feature. I used to have very few problems with it, but now it either doesn’t work at all (there are many times I look at my phone and see an error message because of WiFi calling) or when it does work the quality is poor.
You might wonder why this feature would be so important to me. I’ll admit it’s probably not extremely necessary for everyone, but where I live has poor cell reception as it is, so when I’m down in my basement I have no signal whatsoever. And of course I don’t have a land line.
So recently I went on a journey to find an alternate solution to T-Mobile’s built-in feature. What I came up with is:

  1. Free! I accomplished this using Google Voice (a free service offered by Google that allows you to forward calls from your Google Voice number to any number of other phone numbers) and the Lite version of the Android app GrooVe IP;
  2. Free! Calls you make with this setup (i.e. when you’re connected to wifi) are completely free (as long as they’re domestic), and don’t use any of your plan’s minutes;
  3. Just as functional as T-Mobile’s WiFi calling; and
  4. MORE functional than T-Mobile’s WiFi calling! With Google Voice set up on my tablet, I can now send and receive both calls and texts FROM MY TABLET! (This is more ‘geeky’ than functional, but . . .)

Now you may be wondering, “How can I get a piece of this freeing, free, functional, Google Voice, GrooVe IP pie?” Well, lucky for you all you have to do is follow the how-to below!

How-to

  1. Sign up for a Google account if you don’t already have one.
  2. Sign up for Google Voice.
    1. If you’re with Sprint you’ve got a couple of extra options, but I’ll assume you’re not on Sprint.
    2. Ok, you’re not with Sprint. You’ve got two choices:
      1. Use your existing phone number. This would be the most ideal in theory since you wouldn’t have to tell anyone that you changed your number, but there are a couple of problems with it. The first is that it costs money ($20 at the time of this writing); this defeats the purpose of having a ‘free’ solution. The other major problem is that most likely porting your number will cancel your current contract! This means even more money spent on paying Early Termination Fees (I capitalized the term because ETFs are scary – T-Mobile’s is up to $250 PER LINE). The time you should port your existing number is when your contract is ending.
      2. The second option is to get a Google number.
    3. Signing up for a Google number is relatively painless: when you sign into Google Voice, you will be greeted with a pop-up asking you to upgrade your account. Click the “I want a new number” option.
    4. Next you’ll need to enter a forwarding phone. I’m using my cell (and if you’re reading this I would assume you are too), so under Phone Type I selected ‘Mobile’.
    5.  When you click ‘Continue’ you may be required to prove that you have access to the phone number you entered. Just follow the instructions – I believe in you!
    6. Now you need a Google number. Enter your area/zip/city and/or a word/phrase/number and search for available numbers. Select a number from those shown and click next.
    7. You are now the proud owner of a Google Voice number!
    8. The last thing you should have to do here (other than learn more about Google Voice) is change a simple setting:
      1. Click on the gear symbol and select ‘Settings’.
      2. Under the ‘Phones’ tab, make sure ‘Forward calls to Google Chat’ is selected.
  3. Download the Google Voice app from Google Play onto your phone:
    1. I’m not sure if this step is necessary for calling, but to get texts I believe you need the Google Voice app.
    2. After installing the app, simply sign in.
  4. Download GrooVe IP Lite from Google Play onto your phone:
    1. You can pay for and install the non-Lite version if you want – it’s only $4.99 – but for our purposes it doesn’t add any features that we need right now. What it does add that makes me consider it: native dialer integration (the free app uses it’s own dialer) and it removes the ads (although now that Adblock Plus is available for Android, that’s not as big a deal).
    2. Once the app is up and running, it will ask you to sign in to your Google Voice account. Either enter your username and password manually, or click the ‘OAuth Sign In’ button. As long as you set up your Android phone with the same Gmail account as your Google Voice account, you should easily be able to sign in by clicking your email.
  5. You’re done! Other than tweaking settings and handing out your new number, everything you need to make use of WiFi calling should be complete.

Wake-on-LAN

Motivation

I have been wanting to set up a VirtualBox remote desktop server so that I can access my VMs from anywhere, but I don’t want my computer running all the time. I’m not going to go into the details of the process of setting up the server, but I will do a high level overview of how I set up my computer to wake up with a simple button push from my phone. To accomplish this, you have to use a technology called ‘Wake-on-LAN.’ Basically with this enabled, when your computer is asleep, you can send a ‘magic packet’ to the computer that wakes it up. My phone will be the thing sending the magic packet.

Because everyone’s hardware is different, I can’t give a how-to that’s going to work perfectly for you. The relevant hardware in my setup includes:

  1. My modem and router: Motorola SURFboard SBG6580
  2. My motherboard: Asus Sabertooth 990FX
  3. OS: Windows 7

How-to Overview

  1. Set up BIOS for Wake-on-LAN
    1. The first thing we have to do is set up the motherboard for Wake-on-LAN. To do this, you first have to enter the BIOS. Restart your computer and hit the correct key (in my case the ‘Delete’ key) to enter BIOS.
    2. Now you need to find the correct setting to change. Good luck. You actually should have Googled that before getting to this step . . .
      1. For the BIOS on my computer I needed enter ‘Advanced Mode’ and click on the ‘Advanced’ tab. Then I clicked on the ‘APM’ option (Advanced Power Management). It only lists one option at first – ‘ErP Ready’ – which is set to ‘Enabled.’ I changed that to ‘Disabled’ which brought up more options – the one I care about is ‘Wake computer with PME.’ PME stands for ‘Power Management Event,’ and is directly tied to the ability to Wake-on-LAN. I enabled this option, saved my changes and exited the BIOS.
  2. Set up OS for Wake-on-LAN
    1. I discovered this beautiful website called ‘Port Forward’ that helped me with the next two steps. They have really good tutorials on how to set up a static IP on many different devices, so instead of rehashing what they have already done so well, follow that tutorial.
    2. You also need to make sure the network adapter can wake the computer. To do this:
      1. Open ‘Network Connections’ by searching for ‘view network connections’ in the start menu.
      2. Right click on the Local Area Connection and select properties.
      3. Click the ‘Configure…’ button, and in the new window open the ‘Power Management’ tab.
      4. Make sure both ‘Allow this device to wake the computer’ and ‘Only allow a magic packet to wake the computer’ are checked, and click OK.
  3. Set up port forwarding
    1. As you might guess from the name of the website, portforward.com also has tutorials on how to set up port forwarding. It seemed to me they have an exhaustive list of routers listed on their website. Just find your brand and model, search for ‘Wake on LAN,’ and follow the tutorial.
  4. Set up DynDNS account
    1. To be able to access your computer from anywhere, you need to take advantage of DynDNS’s services. Go to their log-in page and sign up for a new account.
      1. They used to have a free account that you could sign up for. Technically they still do, but you have to sign up for their free trial in order to access it. I signed up for the trial and immediately canceled it so I wouldn’t forget to do it before they charged my card.
    2. When signing up for the free trial, you need to create a hostname. Once you enter a name, make sure ‘Wildcard:’ is unchecked, and that under ‘Service Type:’ you have selected ‘Host with IP address.’ For the ‘IP Address’ field, just click the link below it to automatically enter your current IP address.
  5. Install the Android app Wake On Lan
    1. Before you can use the app, you need to know the MAC address of the computer that you want to wake up.
      1. To find this on Windows 7, open up the start menu and search ‘cmd’ and press enter. In the command line, type ‘ipconfig /all’ and press enter. Find ‘Ethernet adapter Local Area Connection’ and write down the physical address.
    2. Once you have the MAC address, open up the Wake on Lan app and go to the ‘Wake’ tab.
      1. Under ‘Reference,’ name the device you are waking up.
      2. Under ‘MAC Address,’ enter the physical address you found above (replacing ‘-‘ with ‘:’).
      3. Under ‘Host Name / IP Address,’ enter the hostname you created with DynDNS earlier.
      4. Under ‘Port,’ enter either 9 or 7. This is the port you forwarded earlier. I set up both to forward, but if you didn’t, make sure to enter the correct one.
      5. Finally, before you click ‘Send Wake Packet,’ put your computer to sleep and hope for the best!
  6. If all everything was entered correctly, you can now click the ‘Send Wake Packet’ button and it will *magically* wake up your computer!
    1. If it didn’t work, try changing the ‘Host Name / IP Address’ field to ‘192.168.0.255’. As long as you are on the same LAN as the computer, this should work provided your computer is properly set up for Wake-on-LAN.
      1. If changing the IP address works but the hostname doesn’t, you have a problem with the port forwarding (possibly a firewall issue).
      2. If neither works, your computer is not yet set up properly for Wake-on-LAN.
  7. And finally, after much troubleshooting (hopefully not, but this is technology you’re working with), you’re finished! You can now wake up your computer from anywhere!
    1. As an added bonus, if you forward the port 3389 and are on a Windows computer, you should be able to use Microsoft’s Remote Desktop Connection (search for it in the Start menu) to remotely control your computer! Just enter your DynDNS hostname in the ‘Computer’ field and hit enter!