28 December 2011

Warning: Watch out if you run Windows on a partitioned disk (e.g., Boot Camp)

Windows has a horrible misbehavior when it updates itself in a partitioned environment.  

This hit my son hard when, home for the holidays, his Windows 7 installation in a small Boot Camp partition on his MacBook Pro decided to run Windows Update, which is a behavior that is enabled by default and un-obvious to turn off in Win7.  From what I'm reading, the behavior is hazardous to many types of systems, not just Windows-on-Mac situations.

"Windows Installer [creates] a temporary folder on the logical volume with the most free space, during the actual installation process, but that folder is deleted after use."
...The trouble is, it will do that even if that capacious volume is not a Windows-formatted partition!

Meaning, if you're running...
  • A server, 
  • A Storage Area Network or file-server, 
  • A multi-boot configuration
...in which more than one logical volume are visible to Windows or where your physical volume is partitioned into two or more logical volumes...

...then Windows 7's commandeering of the largest partition for scratchpad purposes can damage the file system on that partition.

Astonishing.  Totally unacceptable behavior from an operating system.

(Most virtual machine configurations including cloud instances cannot see host partitions, but SANs and file servers are routinely accessible to them, and this behavior might put them them at risk.)

This results in tales of woe such as are increasingly documented on Apple's support forums with scary headlines like "Unrepairable disk errors on Mac partitions caused by Bootcamp Windows updates?"

In my son's case, his OS X installation summarily disappeared during the Windows Update process, and the machine could no longer be booted except into Windows.  His panicked trip to the local Apple Store just before closing time resulted in a gratifying all-hands-on-deck response from the Genius Bar and an impressive deployment of all their tools, but the tools reported that the drive was irreparably hosed.  His backup drives are back at his college, and (ahem) a month out of date.  

Fortunately he has a geek for a dad, and I was eventually able to get into his damaged partition using various tricks including the marvelous Target Disk Mode which allows a Mac to act like an external disk drive for another Mac.  Ultimately I was able to copy all his files over to a USB hard disk.  But the damaged partition was really and truly ruined; the disk needed reformatting if it was going to be used at all.

As I write, the machine has a freshly formatted disk and no further Boot Camp partition.  He'll run Windows in a virtual machine when needed from now on.  Fortunately, he's running OS X Lion, so the machine could be booted into Recovery Mode after its disk was wiped; it just performed an Internet Recovery and is now downloading and installing the operating system.  Soon it will be sporting a fresh installation of OS X; the download process takes a little over an hour on our WiFi.  No CDs needed!  Pretty wonderful.  We'll then copy his files back, and he'll be back in business.

Lessons:
  • Be very cautious with Windows 7 in a partitioned, multi-boot situation, and very possibly where there are big file resources available on LAN.
  • If you use Win7 as one of several OSes, then prefer virtual machines over multi-boot implementations (e.g., Boot Camp)
  • BACK UP!!
UPDATE:

Poster "Intell" at the invaluable MacRumors forum notes,

Windows when started up on Boot Camp does not have write abilities to a Mac/HFS+ formatted volume, when using Apple's drivers. Thus, the installer will be forced to use the Windows/NTFS volume. Furthermore, the installer will only do this to internal NTFS formatted drives with priority given to the current startup disk.

So perhaps my son's tale of woe and those of the unfortunates populating forum threads like "Unrepairable disk errors on Mac partitions caused by Bootcamp Windows updates?" relate to improperly installed, corrupted or out-of-date drivers.

So add another couple bullets to the list of lessons:
  • Follow Apple's Boot Camp installation instructions to-the-letter
  • Ensure your Boot Camp drivers are installed and current
Users of other multi-boot environments should take heed as well.

Also consider turning off automatic updates so installation can be approved at a convenient time and when the computer has been backed up.  To do so: Click the Start button, select Control Panel, then select Windows Update.  In the left-hand bar, select Change Settings.  Then, in the Important Updates field, consider "Download updates but let me choose whether to install them."  Selecting this option will prevent spontaneous update installations, including those annoying installations that trigger on shut-down ...especially when the machine senses you're in a hurry, or so it sometimes seems.

25 December 2011

How to Firewall Your Phone System Against Robocallers, Telemarketers and Other Pests

As I mentioned in my first post on our money-saving Internet home telephone setup (see
How to Roll-Your-Own with VoIP for Massive Phone Savings), one of the awesome benefits of our setup is how we're blocking unwanted phone calls from disturbing the peace here at Entropy Central.  Callers are greeted not by ringing but by my friendly voice, saying,
Thanks for your call...  Friends, family and people with whom we do business, press 1...  For voicemail, press 2...  For an international dialtone, press 3.  Telemarketers and robo-callers, we have a specific digit for you.
The caller must press 1 on their phone to ring our home phones.  This simple requirement blocks automated calling systems, even ones manned by humans, since their operators are often connected only when the phone line is picked up after their system dials up the next mark to be fleeced.

In the run-up to the November, 2010 elections here in the U.S., our home line was receiving as many as twelve unwanted vote-for-me calls a day!  Most of these came at dinner-time.  And each and every one of these was blocked by this simple solution.

Even now, during the Holiday lull, the system has blocked nearly two dozen unwanted calls in December alone from charities and civic organizations looking for contributions.  My VoIP provider, voip.ms, provides web-based call data reports that lists every single caller, and these blocked calls are readily identified since they last only a few seconds, indicating the caller's call automation system has given up on reaching a live victim.  Win!

Just think, if everyone did this, we could kill the telemarketer industry in no time.  Oh, happy day!

Here's how:

The process is simpler than the acronym-fest that is VoIP might suggest at first glance:

Max is a great, free audio format converter for the Mac.
  • Record your message.  Nowadays most computers, smartphones, media players and tablets have built-in microphones and note-recording apps.  Easy.  On the Mac, the built-in QuickTime Player makes audio recordings (among a hundred other functions!).  The default location for recordings it makes is your user account's Movies folder.
  • If necessary, convert your message into a format compatible with your roll-your-own-VoIP provider's Interactive Voice Response (IVR, or digital receptionist) requirements.  For voip.ms, that means 8kHz, 16-bit .WAV encoding.  That's a crude but bandwidth-friendly format, and chances are you'll need a conversion utility to down-convert your audio file which is probably of higher quality.  An excellent, free, open-source utility for OS X is Max from sbooth.org.  Start Max up, select Convert Files from the File menu, point it at your recording, and click the Convert button in the upper left corner.  You'll get a pop-up requesting that you choose an output format.  Select "WAV (Microsoft)" and then specify the 16-bit flavor.  Click the Convert button, and the converted file will be stored in your user's Music directory, probably in an "Unknown Artist" folder since you haven't had your big break yet.
  • Now log into your voip.ms account and navigate to its DID Numbers | Recordings pane.  (A "DID Number" is just the direct-dial number that callers dial.  Generally you'll have at least one.  And you can have multiple lines or extensions per DID number, too.  On voip.ms, these are known as sub-accounts.  Sub-accounts can also be assigned to VoIP applications on your smartphone or computer, too.)
  • Now use the pane's menu to upload your newly-converted recording onto voip.ms' servers.
  • Navigate to the DID Numbers | Digital Receptionist (IVR) pane.  Click the "Create a new IVR" link.  Give your new IVR a name and specify that it use the recording you just uploaded.  Select a Time Out of 2 seconds... that seems to work well.  Choose whether you want callers' voicemails recorded in an inbox specific to a sub-account (equivalent to a line or extension for your voip.ms account) or to use a catchall voicemail box for the DID number.  (You can create and manage voicemail inboxes and select options such as voip.ms' wonderful email-my-voicemails option using the DID Numbers | Voicemail menu.  So it would be trivial to have your IVR say, "Press 8 to leave a message for Suzie, press 9 to leave a message for Sam..." with personal voicemail boxes for everyone in your family.)
  • Now you get to define what happens when your callers press buttons on their phones.  You do this by typing a number in a box and then specifying what that number-press or other event will do.  My settings:
  • 1:  SIP/IAX, with my home line's sub account specified.  What this is telling voip.ms to do is connect your caller to your physical line.  This is what my recording invites "friends, family and people with whom we do business" to do by pressing 1 on their phone.
  • 2: Voicemail, with my desired voicemail inbox specified.  
  • 3: In my case, since we have an international family, we specify a dial tone here so that when we're out of the house, we can call our home line, enter a passcode, and springboard to an international call using voip.ms's super-cheap rates.  This is massively cheaper than using cell providers' and hotels'  larcenous international rates, and more convenient than carrying a discount calling card, with no purchase required and no risk of loss.  To your cell phone (or whoever's phone you're calling from), it's just a call to your own number.  If you want to try this, voip.ms refers to this as Direct Inward System Access (DISA), and you'll find it in the DID Numbers | DISA menu.
  • i: A catch-all for an unrecognized button-press.  Select IVR, and choose the IVR you're working on.  Yeah, that's a loop: it means incoming callers who press a bogus button will get your recording again.
  • t: Timeout.  Here a little thought is required to consider your specific situation.  Originally, after a timeout I chose to have the caller routed to voicemail.  Unfortunately this let a few patient robo-callers leave messages in our voicemail.  What I ended up doing was create a second IVR that was identical to the first one but had no timeout.  So callers who let the whole message play through without pushing a button get it replayed, exactly once.  After that, t'heck with 'em: Hangup.
Test it out!  And enjoy the peaceful dinnertime evenings without rude telemarketers interrupting your meal.


There are many other things you can do in the IVR menu.  You can define extensions that forward to other lines or even ring the VoIP app on your smartphone.  No limits!  And, as you'll see, no telemarketers.

31 July 2011

How to Be Alerted When Your VoIP Goes Down

We've found our VoIP setups to be exceptionally reliable, on a par with our former landlines.  But friends have expressed hesitation about tying their communications to the Internet.  What if there's an outage?
You'll practically never ever see this.

First, I hope it's clear that landlines are not immune from outages, either.  And unlike an answering machine hooked up to your landline, your VoIP voicemail is handled at the server level, so callers can still leave messages even if your local Internet is down.  Which, again, rarely happens around here...

But there's comfort in knowing the status of your complete VoIP system.  Fortunately, my provider, voip.ms, provides an applications programming interface (API) that makes it simple (but geeky!) to have your Mac continuously monitor your VoIP-line status and alert you if there's an outage or even if your equipment is having problems.  (My example code below is platform-independent, too, and can be adapted to whatever live-desktop and alert mechanism works for your computer.)

The trick is to leverage a wonderful utility called GeekTool to periodically check your account registration status on voip.ms' servers.  GeekTool can run scripts, and it's pretty easy to make a script which will use voip.ms' API, display the status and even trigger an alert via another popular utility called Growl.

Here's how

First, download and install GeekTool.  (An application version in the Mac App Store is coming soon-- at the time of this writing, it's a Preference panel instead.  OS X Lion users should prowl the site for the latest, Lion-compatible version.  UPDATE: The App Store version is here!  Mac App Store Link)  If you want alerts to pop up to notify you when an outage occurs, also download Growl and be sure to install Growlnotify from the Extras folder on its disk.  (You may already have Growl installed--it's part of Dropbox and other popular utilities and applications--but I doubt you have Growlnotify.)  Now:
  • Log on to your voip.ms account.  In the tab marked "Main Menu", select the "SOAP and JSON/REST API". 
  • Scroll down to the bottom.  Enable the API, assign a password (which can be different from your login password), and enter your IP address.  Click the update buttons after each entry.
  • Scroll up a bit, and look for the link that says "Click here to download Example Codes and API Documentation"  Download this, unzip, and look for the folder entitled "Examples SOAP for PHP5."  In this folder, look for the document "class.voipms.php".
  • Open class.voipms.php using TextEdit.  Put your account number and API password in it up top, then save it somewhere handy-- for example, I have a folder called "geekvoip" in my Documents folder.
Your account is now set up for automated access and monitoring.  Here's a simple script which we'll call from GeekTool:



GeekTool.

Copy that and paste into TextEdit.  (Note my example is made to check two subaccounts-- the code is easily modified to handle any number.)  Put your subaccount number(s) in it, and save it with a .php extension in the same folder you just saved class.voipms.php in. In my case, the file is named voip.php.

Now, open GeekTool.  Drag a Shell object onto your desktop.  In the Command field of the object, type a php command to execute the file you just saved.  In my case, the command looks like:

php ~/Documents/geekvoip/voip.php

Good settings for the GeekTool object are a Refresh of perhaps 600 seconds and a timeout of maybe 20 seconds.
My collection of GeekTools
includes status monitors for
my family's two VoIP lines.

You're done!  Position and size the GeekTool object as desired, and it will always be on your desktop.  If you've installed Growlnotify, you'll see a pop-up notification on the exceedingly rare occasion that your VoIP line can't be reached.

15 July 2011

VoIP as an Alternative to Cell Phones

A Roll-Your-Own-VoIP (Voice over Internet) setup for your smartphone is not only easy to arrange but can be a real money-saver, as I found when I needed to make some calls to the U.S. from London.  My choices: roam with my cell phone at $1.39 a minute, use my hotel's phone at even more exorbitant cost, or find a good WiFi location and make my calls for pennies using my preferred VoIP iPhone app, 3CXphone.  Turned out my hotel had unusually good WiFi, so the choice was simple, and my calls were crystal-clear... at a penny a minute! 

Which raises the issue of forgoing cell service altogether and using only a VoIP app.  You could then use an iPod Touch, an entry-level iPad, a deactivated or SIMless iPhone, Android phone or Blackberry... there are many such options.  The setup procedure would generally follow my instructions for setting up 3CXphone on an iPhone.

A Few Issues to Consider 

Obviously, a good Internet connection is fundamental.  3G can work but generally WiFi is needed, especially when roaming.  Unfortunately, good WiFi connections are in increasingly short supply in hotels and coffee-shop hotspots, whose WiFi networks are besieged by guests streaming video.  (Netflix has gone from nowhere to 30% of overall bandwidth consumption... and rising, and it's worse where lonely/bored travelers congregate.)  But if your peregrinations take you to coffee shops and hotspots with good WiFi service, this can be a real alternative.

Testing the local WiFi capability prior to making an important call can help prevent frustration.  You could make a test call, or Visualware offers a detailed free app for measuring bandwidth characteristics from your iDevice, iNetQCheck.  There are others, such as Speedtest.  Unfortunately, none of the available free testing apps currently test for VoIP-specific network performance.  This can be better than the generic/overall performance (if the router has good Quality-of-Service (QoS) technology which prioritizes the real-time data streams VoIP relies on) or worse (if the network has VoIP port 5060 blocked!).  My own home WiFi network performs much better for VoIP than a generic test would suggest, presumably due to the good QoS engine in my D-Link DIR-655 router, which prioritizes port-5060 traffic.

In the case of port blockage, your VoIP provider might provide alternative ports to try.  Voip.ms' alternative ports, per their online documentation, are 5080 and 42872.  But, these ports will probably not be prioritized by routers' QoS engines, so it's best to use them only if 5060 is blocked.  (I'm advised that a VoIP-specific testing app is coming to the App Store-- great news.  I'll mention it in an update here when it arrives.)

For me, with my travels, a conventional cell phone account is necessary, and using a VoIP app on my iPhone is a wonderful supplementary capability but not a wholly sufficient alternative.  But if my situation were more urban and involved less travel, going cell-less as well as landline-less could work.  As to the economics of it all, axing a cell line is even more compelling than unplugging your landline.  Consider the following, from the Wall St. Journal:
Consumers currently pay about $92 a year on average, or 16.3% of their total bill, in taxes as part of their cellphone plan -- the highest amount ever, according to the Heartland Institute, a public policy research organization. That's up from a 14.1% tax rate in 2006. ...taxes account for 16.3% of cellphone bills on average, compared to 7.4% for other goods and services... This year, for example, some municipalities raised taxes by 3% to a whopping 75%. The wireless industry says its consumers are unfairly targeted. "Many of these state and local taxes and fees are levied against our consumers because they're good bill payers," says a CTIA spokeswoman.... residents in at least five states, including Florida, Illinois and Washington, get hit with rates that account for more than 20% of their wireless bill, says [economist] Scott Mackey... In Baltimore, for example, taxes and fees account for 27% of the average customer's wireless bill, while in New York they account for about 20%.  [Wall St. Journal]
 ...And that just regards the taxes.  Cell plans themselves aren't cheap, especially if you travel.  (And is anyone else enraged by that bit about cell users being ripe for targeting because they pay their bills?  That's neither progressive nor regressive taxation nor a valid user fee; it's fleecing the easy mark, and it's wrong.) 

There are other VoIP apps that include their own VoIP service that can make and receive calls from any phone, such as TruPhone, Whistle, Fring, FooCall, iCall, OBion...  And of course there's Skype.  An attraction of the app+service approach is that you're spared the complication of separately setting up the app and an account at a VoIP wholesaler like voip.ms or CallCentric.  Many such apps are free to try, so you can see if they meet your needs.  Keep in mind that such services might operate on IP ports other than 5060, so they wouldn't enjoy QoS acceleration if present, meaning more variability in quality from call to call and location to location.  (Skype, for example, uses a randomly-assigned port to prevent blocking by ISPs.)  And some operate their servers in places that might be physically remote from you, reducing quality.

In my case, my prerogative was to replace my home's landline, so the ability to roam around the world for cheap with an app on my iPhone was a delightful bonus.  The Roll-Your-Own-VoIP approach was the best for my situation, but your needs might differ.  Fortunately this is the dawning of the golden age of phone-service alternatives-- jump right in!

VoIP over 3G

If you have the bars, using 3G rather than WiFi can be attractive in some circumstances:
  • For iPads and other non-voice devices with a 3G data subscription, and
  • For international calling.  For example, I've used my VoIP app on my iPhone to call from the U.S. to Europe.  Thus I use data bytes rather than expensive international-call minutes.  Of course, data bytes are in finite supply; your economic mileage will vary depending on your plan and usage.
Note: the VoIP port is sometimes blocked over 3G by cell carriers in some areas.  Try before you rely.


==========

One more thing: A correspondent asks about MagicJack.  I tried it.  It's not terrible, but I don't recommend it.  It does have the advantage that you can keep using your old-timey plug-in-the-wall-type analog phone.  E911 is included, which is nice for landline-replacement applications.  But to use it as officially supported, you need a computer, and your phone only works when that is up and running.  [A computerless version of MagicJack is now offered.]  There are google-able ways to make a MagicJack account work using something like 3CXphone, but there is no support for such things and no official MagicJack app.  The Roll-Your-Own-VoIP approach is considerably more flexible, higher quality in my experience, and about the same order-of-magnitude cost.  There were also issues with MagicJack the company and its support services.  The contrast could not be starker compared to the superb service and patient, responsive support I've gotten from voip.ms as I've climbed the learning-curve from rank newbie.

And how about Ooma.  This was another possibility for my landline-replacement project, but Roll-Your-Own-VoIP was considerably cheaper to implement, and it required no locked-to-the-provider proprietary adapter.  I'm happy, and delighted with the flexibility.

13 July 2011

Senate Probe: 'Mystery' Fees on Phone Bills Charge Billions to Consumers

Y'know, I didn't quite start this blog to be a wide-eyed evangelist for Roll-Your-Own-VoIP, but you could be forgiven for thinking so. And articles like this fuel the fire:
Third-party billing firms are charging Americans up to $2 billion a year in "unauthorized fees" on their landline telephone bills, generating massive profits for the nation's largest telephone companies that don't do nearly enough to crack down on the practice, a Senate Commerce Committee investigation has found.

Most consumers don't even detect the charges for months or years, if at all, because they typically range from $2 to $20 on their monthly bills. But when consumers and businesses do complain to telephone companies, they often get the runaround. [Fox News] [Hat tip: Alex]
Call away, it's cheap.  Just don't tax my VoIP!
This actually happened to me on my cell line: mysterious charges, three bucks here and ten bucks there, buried in the monthly bill.  Once I thought to print out my full cell bill to get to the bottom of it, and gave up after 20 pages of printing with more than ninety to go!  (Kudos to AT&T for quickly figuring out what was going on, stopping it, and refunding my  money.)

My VoIP bill, by comparison, is immune to such shenanigans.  My VoIP provider, voip.ms, provides up-to-the-minute online listings of all charges and usage.  The listings are searchable by date and by subaccount (e.g., by extension) and are readily understood, in part because there's so little tax-and-fee argle-bargle that I'm sure most consumers find as baffling as I do on our landline and cell bills.  The "third-party billing firms" mentioned in the article hide in the tall grass of all those fees and imposts.

Plus, voip.ms' way of doing things currently involves paying up a balance and then whittling it down with usage.  You get an email when it's time to replenish.  One benefit of this approach is that you're never on the hook for anything more than your balance.  If someone were to somehow hack into my account and run up a bill to Timbuktu, my maximum risk is the $17.86 currently on balance in my account.  And the call would take a while given the low costs of VoIP (23c/min to Timbuktu from the US).

10 July 2011

Summary Comparison: Landline vs. Alternatives



Landline
“Digital phone service” (Vonage, Comcast, PacBell, Ooma…)
Monthly cost (California suburban)
Typ. ~$35 + usage
Typ. ~$35 + options
Typ. $1-1.50 + usage
Ease of setup
Trivial
Easy
Somewhat geeky
Requires good broadband?
No
Yes
Yes
Requires proprietary or locked adapter?
No
Yes
No
Voice quality
Excellent
Very good to Excellent
Very good to Excellent
E911 emergency localization service
Yes
Yes
Yes (typ. $1.50/month)
Taxes etc.
Yes
Yes
No

Is the Landline Doomed?

FCC study: Landlines are going away.
Here's an interesting article noting that an advisory council to the FCC has determined the public switched telephone network (PSTN, better known as your old-timey landline) is fading away.  An obsolescence horizon is recommended to be established by government at about six years from now.

Previously I posted a how-to for replacing your landline with a simple and vastly cheaper home Voice-over-Internet (VoIP) service: How to Roll-Your-Own with VoIP for Massive Phone Savings.

Good timing.

But why wait for the inevitable?  If (per my own family's example) you can save about $30 a month by taking advantage of today's marvelous VoIP wholesalers, you can save more than $2,000 between now and the deadline recommended to the FCC... if you take the plunge soon.

Check out my how-to:

  • If you have decent broadband service and are just a little geeky, you can try VoIP out today using a smartphone and your existing WiFi (or your PC even if it's wired to the wall) for a pittance.  
  • To go all the way, as we did, and replace your costly monthly landline service with a VoIP adapter (so you can use your regular phones) requires a capital investment of all of $50 or so, plus another $20 if you want to keep your current phone number.  
  • You can go even further and replace your current phones with digital ones instead of using an analog-phone adapter.  (We'll consider doing that when our perfectly serviceable wireless handsets crap out in another year or two, as they do.  By then the cost for WiFi SIP handsets should be more reasonable.  For now, the cost of the Cisco PAP2T + a good multi-handset wireless analog phone is unbeatable.)

There's a host of options and many benefits.

Do it.  Before the government forces you to.