When Google first offered the Nexus One in Canada (by making a GSM version for AT&T, which is compatible with Rogers, Telus, and Bell in Canada), I jumped on. I had my order in the day the web store was updated, and in my hands by the end of the same week. Despite the cost, I consider it the best gadget purchase I’ve ever made.

Fast-forward to last week. With my wifes birthday coming up, I thought it would be nice to surprise her with a trip to the local Telus dealer (her carrier) for a shiny new phone. After looking at their offerings (the only two real considerations were the Motorola Milestone and the HTC Hero), she decided that she’d come down with a case of Phone Envy and wanted a Nexus One as well.

So, no big deal – we ordered the phone and waited. Unfortunately, due to the stat holiday on July 1st, the phone didn’t arrive on Friday like expected and instead came in yesterday (the following Monday). I left the phone plugged in to charge, and when the light turned green to say all was well I fired it up.

And waited.

And waited some more.

Nexus One Boot Screen

The Boot Screen on my other, unlocked (and functional) Nexus One

After about five minutes of staring at the above picture (minus the lock on the bottom, as I hadn’t gotten around to doing that yet), I got the feeling something was wrong.

I powered off the phone by pulling out the battery, then booted in to HBOOT mode (hold down the VOLUME DOWN key while pressing Power). That worked fine, so I tried to enter recovery. Unfortunately, I was met with the same screen. I tried several more times for both normal mode and recovery without success. Then I gave up and called Google.

At this point, I’d like to point out that I’m fairly certain it’s just a software error. Unfortunately, the only way I could really do anything about that would be to Unlock the phone, which voids the warranty. As such, the call to support was warranted.

I called the number listed on the Google Phone Contact Support page (1-888-48-NEXUS) and after a few quick IVR choices I was greeted nearly immediately by a tech. He asked about the problem, what I had tried, and immediately agreed the phone was D0A and would need to be replaced. That’s when things started to go downhill.

The problem is that I live in Canada, and HTC has a different policy for international orders than their standard ‘send you a replacement and then send the old one back’ policy for domestic ones. If you live in Canada and get a DoA phone, you have two options:

  1. Send it back via their normal repair process and get a refurbished phone (no option for a new one)
  2. Initiate a ‘Buyers Remorse’ return, get a refund for the device, and then order a new one.

The choice was fairly obvious – I ordered my wife a new phone, so that’s what she was going to get. After gathering a little more information, the Google tech transfered me over to HTC support to process the return order.

As the new tech was going over the specifics, a thought occurred:

Me: Okay, so I do the return, and within 14 business days of you receiving the device and okay’ing everything, you credit the purchase price back, correct?

Tech: Yes, that’s correct.

Me: So what about the duty charge that I had to pay CoD?

Tech: Oh, that. Hang on. –Pause– Okay, I checked on that, and what happens is you’ll get some paperwork from us once the refund has been processed. Once you have that paperwork, contact Customs and they’ll be able to issue a refund.

So at this point, I may have to wait three weeks for credit from HTC (although apparently it usually doesn’t take that long), and then I can file a claim to get my ~$70CAD that I paid for taxes back.

All was said and done, and I prompted received a confirmation email repeating what the agent said. However, as of posting I still haven’t received a FedEx shipping label in my email as promised. I called HTC back, and they escalated the ticket and said they’d resend the label, so now I’m waiting on that. Once I’ve got the label in and the phone sent away, I’ll order another N1 and see what happens.

The pain begins in Part 2!

I recently hit the 5,000 tweet mark on Twitter, and figured that it’s as good a time as any to write something about my experience on the abbreviated social networking site. It also seems appropriate as I permanently deleted my Facebook account (well, I’m in the process, anyway).

Click ‘Continue Reading’ below for the wall-of-text review.

More »

To the person who found my blog by searching “what command to run on terminal emulator“, I’d probably suggest the following:

help

Rogers LogoAlthough I can’t confirm when this happened (it may have happened a while ago and I just never noticed), I was browsing the internet last night on my Google Nexus One and noticed that, when I mistyped http://imdb.com, I was redirected to http://www20.search.rogers.com (which doesn’t work outside of Rogers’ network) instead of receiving a normal Not Found error. This all smacks of the infamous VeriSign Site Finder fiasco.

I’m no fan of browser redirects in any form, and I’m even less of a fan of Yahoo which Rogers partners with to, among other things, provide results on their hijacked landing page. But what can you do? It’s their service, and there’s no opt-out link on the page.

Well, the answer is to manually opt-out. Unfortunately, you need to have a rooted/jail-broken phone to do this. As stated above, I have a Google Nexus One which runs CyanogenMod, but this should work with any other rooted Android phone and even jail-broken iPhones (although the paths are different — you’ll need to alter them as applicable).

To manually opt-out, do the following (assumes Android phone):

  1. Open a shell on your phone. You can use ConnectBot, Terminal Emulator, or adb shell.
  2. Assume root (su command).
  3. Remount the system partition in to read/write mode —  mount -o rw,remount /system
  4. Browse to /system/etc.
  5. Use your favourite text editor to open hosts.
  6. Add the following to the bottom of the hosts file — 127.0.0.1 www20.search.rogers.com
  7. Save and quit!

You’re done! You’ve just manually opt’ed-out of Rogers Wildcard DNS hijack. Now you’ll just get the normal ‘Not Found’ errors, as when Rogers see that the domain you’ve entered doesn’t exist and tried to redirect you to their search page, your phone will point that domain to itself and fail as it isn’t running a webserver.

TL;DR Version: To prevent getting directed to Rogers’ Search Page when you mistype an address, edit your hosts file to point www20.search.rogers.com to the 127.0.0.1 loopback address.

Update (05/01/2011): You can now officially opt-out using this link: http://searchassist.teoma.com/templates/rogers/optout

It's Froyo!

It's Froyo!

IMPORTANT NOTE: It’s been pointed out that the Froyo ROM floating around is nothing more than a Release Candidate. Although that means that it’s technically feature complete, it’s still little more than a beta. Expect bugs, expect brokenness, and don’t expect any help with it.

I’ve been using the pre-rooted Froyo update (Android 2.2) for a few hours now, and here are my first impressions:

  • Speed: Holy crap is this fast! In fact, it’s even faster than some of the ROMs running over-clocked kernels. It takes about the same amount of time to boot, but the phone is very responsive as soon as the lock screen appears, and I haven’t encountered any lag throughout the system.
  • App Restore: I had no idea this feature was in Froyo, but imagine my surprise when I booted up Froyo after a full wipe only to have it immediately restore all of my installed apps! Talk about a time saver!
  • Bookmarks: Even though I was missing a few, most of my bookmarks in Browser were automatically synced. This alone almost makes the Froyo update worth while.
  • Exchange Sync: Everything works exactly as before, only now it syncs with my Exchange calendar out-of-box quickly and painlessly. No more need for CorpCAL.apk!
  • Froyo-Only Apps: One of the first apps out for Froyo is ChromeToPhone — it lets you send links from Chrome on your desktop/laptop computer directly to your Android device. Gone are the days of using URL shorteners or QR codes to get something on your phone – instead, simply browse to the site you want on your computer, then click a button in the toolbar. You’re Android device will near-instantly receive the link and notify you.
  • Bugs: Yes, there are a few. The main one I’ve run in to is trying to turn off USB Storage. If you attempt to turn it off on the phone before ‘Safely Removing’ the device in Windows, Android becomes generally unresponsive and eventually reboots. While annoying, I’m not really that surprised, as I did it wrong. Also, Terminal Emulator crashes in Froyo due to a compatibility issue with the stock ROM. This will hopefully be addressed in a future update, but for the time being, use ConnectBot.

I can’t wait for the eventual CyanogenMod 6.x based on Froyo, but that won’t be out for a while, as Google has yet to release the source code for 2.2. Things are definitely looking good for Android, though!

UPDATE: The HTC_IME (virtual keyboard) has been updated for Froyo. Get it on XDA.

I found myself in need of a new microphone for my computer, as the cord on my cheap Staples-brand one broke. After spending the day looking around town for a nice set that fully covered my ears, I found these at Future Shop:

Razer Carcharias

Razer Carcharias - Image Credit: hardwarelogic.com

However, at $99 CAD, they were a little outside of my price range. All was not lost, though – I walked up the counter and asked if the clerk could do anything about the price. After being initially rebuffed (“Sorry, this is the best price I can offer”), I pulled out my Nexus One and loaded up Barcode Scanner. I proceeded to scan the UPC code on the box, then do a Product Search. I showed the clerk that, according the results listed, I could get the same product from Wal-Mart for $69 CAD.

Five minutes later, I walked out with my new $69 headset. And I can honestly say, they are the best headphones I’ve ever owned.

Android FroyoI’ve written a few articles about Android, and my opinion of the platform should be pretty apparent. So, I’m just going to jump right in to my favorite features highlighted for version 2.2 (Froyo), and what they’re all about:

  • Better Exchange Support: As big a fan as I am of Google Apps, I still use Exchange at work, so having a phone that can integrate with Exchange is very important. Android has done this well since 1.5 (possibly earlier, but that was the first version I used), however there was no official support for Exchange Calendar Syncing. I’ve been using the CorpCAL.apk to sync my calendar, but with Froyo I’ll be able to do it out-of-box. Add in the remote-wipe ability, and the experience is complete!
  • Portable Hotspots: I’ve only used tethering on my Nexus One a few times, but being able to do so saved me a lot of trouble. With Froyo, not only can you tether, but you can turn your Android device in to a wireless hot spot for up eight other devices. How handy is that?
  • Voice Dialing Over Bluetooth: Finally.
  • Flash: To quote Vic Gundotra, Google’s Vice-President of Engineering who was detailing Froyo features during the Google I/O keynote session, “Part of being open means you’re inclusive rather than exclusive.” Google understands that yes, people do in fact use Flash. It might not be the best mobile media framework out, and yes, it might out-right suck, but people use it. Rather than actively restrict people using their platform, Google allows developers to do what they want and end users to see what they want, unlike a certain fruit-based company that likes to spin their perspective and convince their users that their form of closed is better than another’s.
  • Market Improvements: I’ve been waiting for these for a long time. Although the biggest news was that you’ll be able to browse the Android Market from your computer’s web browser and remotely install apps to your Android device, the biggest news for me was also the simplest, smallest feature: the addition of an ‘Update All’ button. No longer will you have to groan as Market notifies you that seven apps have updates available. Gone are the days of clicking an app, then clicking update, then clicking OK, then going back to the Downloads list, and then repeating. One button, one small feature, has alone made 2.2 worth the update. Of course, I could be going a little overboard there….
  • Continuing Support: Although carriers are lagging behind, Google has continued to support older devices, such as the G1, the MyTouch 3G (aka the HTC Dream and Magic, respectively). Through a recent announcement, Google will continue to push code to support older devices in newer releases, such as Froyo.

So is Froyo something that I’m looking forward to? Absolutely. What else am I looking forward to? Well, there is a certain ROM that looks like it will get the Froyo treatment as well….

(I did not create the Android logo posted. Portions of this page are modifications based on work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License.)

Important! This article assumes that your phone is rooted. If you don’t know what that is or how to do it, this article won’t be able to help you. If your phone isn’t rooted, this won’t work.

I love my Android phone, but the root side of it still has some quirks. The default shell, for example, is pretty bare-bones. Fortunately, there are ROMs out there like CyanogenMod that help with that side of things by providing little extras like, for example, the BASH shell. BASH is incredibly handy on an Android phone as the default shell doesn’t allow you to scroll back through your command history using the track ball.

So while BASH is included in some ROMs, it’s not the default shell. Typically, I’ve been using ConnectBot (available on the Android Market) which works well, however I’d usually end up starting out every session like this:

su -c bash

It’s only one line, but really, it’s annoying to have to type it out every time. I’m in the IT field, so my nature is to be lazy and automate everything. Enter Terminal Emulator.

Available for free from the Android Market, Terminal Emulator is very basic. It doesn’t allow you to SSH to remote systems or anything like that – instead, it just immediately opens a local shell. As an added bonus, the preferences let you specify the Command Line to the shell executable.

I thought this was my answer. I set the Command Line preference to “/system/xbin/bash -” (the location on CyanogenMod 5.x.x — this may differ depending on your ROM. Make sure the path is correct before hand, as if you set it incorrectly it’s nearly impossible to get Terminal Emulator back up and running) and re-launched it.

Success! I was in the BASH shell! However, I wasn’t root, and this did cause a problem. As soon as I typed su to become root, my shell was changed back to the default one. After doing a little more digging, though, I found my solution.

In the Terminal Emulator preferences, there’s another option for Initial Command - Terminal Emulator will execute this immediately on open. So, I inserted the line I was using in ConnectBot (su -c bash) and voilà! Terminal Emulator now immediately opens with a BASH shell as root.

The TL;DR version: Install Terminal Emulator from the Android Market, open it, hit the Menu button, then Preferences. Tap Initial Command and enter “su -c bash” — now it will always open with BASH running as root.

Extra Note: If you are using an Android phone without a physical keyboard, simply hold the Menu button on your phone for a few seconds in Terminal Emulator to force the virtual keyboard to appear.

UPDATE: As it turns out, you can do this in ConnectBot as well. Tap-and-hold on the local connection, then choose ‘Edit Host’ and ‘Post-login automation’. Note that if you do this, though, ConnectBot will enter the command, but you still have to press enter to active it.

A little while ago, I sold my old Rogers HTC Magic(+) to my sister, as I had managed to procure a Google Nexus One. Upon receiving it, however, she had troubles getting ringtones to detect in Settings >> Sound and Display >> Ringtones. A little troubleshooting led to the first problem, which was a ringtone downloaded from Rogers that was in the form of a .DM file. Unfortunately, Android devices aren’t able to read these DRM-encrusted files. Even with that explained, though, there was another issue – the phone wasn’t detecting any MP3′s, either.

After remoting in to the computer and taking a look around, everything seemed normal. I had her mount the SD card, and after browsing around, everything looked alright. As instructed, she had created the correct folder structure on the SD card and placed the MP3 appropriately:

/Media/Audio/Ringtones

(relative to the root of the SD card)

I was a bit stumped, but then I had a brain wave, and renamed the folders as such:

/media/audio/ringtones

Sure enough, the phone then happily detected the MP3 as a ringtone.

The TL;DR version: Like most Linux-based operating systems, Android uses case-sensitive paths. Avoid the urge to properly capitalize your folder names!

Now that I’ve had a few weeks to play around with my Nexus One, here are a few observations I’ve made:

  • I can’t live without the CyanogenMod ROM. Android 2.1 is nice, but the tweaks available in CM 5.x are too numerous to mention and offer many features that go well beyond what the N1 can do out-of-box. If you have an N1 (the TMO version, or the Rogers/AT&T one), get CyanogenMod. You’ll never go back.
  • The screen is, by far, the best I’ve seen on smart phone – it trumps my old iPhone 3G at every turn. Some people argue that the screen has a purple hue to it, but to them I ask, have you heard of Colour Temperature?
  • The last three phones I’ve had (an iPhone 3G, an HTC Dream, and an HTC Magic) have all had noticeable lag on the main screens and when load applications. The N1, both with the stock ROM (that I had left on for all of around an hour) and CyanogenMod simply scream. There’s nothing slow about this phone.
  • For all of those who say that the signal quality on the N1 is crap, please actually get one before forming an opinion. I’ve seen an increase in signal strength/quality on the N1 over the other HTC phones I’ve had, and over the iPhone 3G. Additionally, I’ve been able able to clock download speeds greater than 3Mbit/s on Rogers’ HSDPA network. Not too bad at all.
  • The camera is amazing – the fast auto-focus, bright flash, and fine-grain controls are simply amazing, and at 5 mega pixels, the picture quality is simply staggering for a smart phone.
  • My only real complaint about the N1 is battery life, but then again, I’m always complaining about that (the exception being my MSI Wind U123 with it’s 9 cell battery that gives me 8 hours of use). Under heavy usage, I have to charge the phone nightly. For that reason, I bought an extra battery with the phone, however as I have a power inverter for the car that features a USB port, I didn’t really need to get the spare.

That’s really about it for now. Overall, the N1 is an excellent phone, and I wouldn’t hesitate to recommend it anyone.