Hi Folks,
In the following blog post we’ll review a topic which has been widely discussed in mainstream tech journalism but languishes in obscurity within the WP7 developer community.
I am of course talking about the Windows Phone 7 Unlocked ROMs.
Prior to starting this blog post, I’d like to call out this is the 1st blog post in a series of multiple advanced Windows Phone 7 blog posts.
Additional subsequent blog posts will include Windows Phone 7 Emulator Automation, Windows Phone 7 and TFS2010 Continuous Build integration and other topics.
I’ve been told on many occasions that blog posts should be shorter than 50 pages (nonsense if you ask me), so I’ve split up this massive Advanced Windows Phone 7 blog post into several short blog posts.
What’s in a ROM?
From Wikipedia:
“A […] ROM, is a computer file which contains a copy of the data from a read-only memory chip, often […] a computer's firmware.”
It’s vitally important that Windows Phone 7 developers realize that the Windows Phone Emulator is in fact not powered by magical Microsoft pixies. I’ve checked.
The WP7 Emulator is in fact a mix between a virtualization software known as “XDE” (“Emulator Virtual TransportDevice“) and an Image.
Both XDE and the Image change with each public build Microsoft ships for WP7.
Since Microsoft only shipped the Image for development purposes there is limited functionality enabled in them. Specifically: Custom Application support, and Internet Explorer for HTML support.
Through the ingenious work of Dan Ciprian Ardelean and numerous other XDA developers the various Images have been fully unlocked:
Compare and contrast these Print screens of the WP7 home screen from the locked ROM and the Unlocked ROM.
In this blog post I intend to show the benefits of the Unlocked ROMs for developers.
If this is the first time you’ve heard about the unlocked ROMs and want to see what they offer, there’re great resources online.
How do I get these unlocked ROMs?
It’s important to mention there are currently 2 Unlocked ROMs:
1. The 6077 build – Also known as the Mix10 WP7 ROM. Has unlocked Zune Marketplace functionality, lots of apps which has been dropped since and terrible performance.
2. The 6177 build – Also known as the April10 WP7 ROM. Has unlocked Office, lots of new functionality that has lighten up since Mix10 and considerably improved performance.
And there will probably be many more of these Unlocked ROMs as Microsoft ships more and more public bits for WP7.
Both of these work Side-by-side on the latest XDE emulator:
The Mix10 WP7 ROM is available at http://www.multiupload.com/H6IIOZKEMX. (Copied from XDA developers thread)
The April10 WP7 ROM is available at http://www.multiupload.com/POF771XDFD. (Copied from XDA Developers thread)
To fire up the images copy the 2 BIN files into the XDE folder and execute them using the XDE emulator.
The XDE folder on a x64 machine is located at: C:\Program Files (x86)\Microsoft XDE\1.0
If your development machine does not have the latest Windows Phone 7 SDK installed, fear not, you can still install XDE as a stand-alone product.
Instructions can be found at this excellent post by MacHackPC.
How to replace the default Visual Studio ROM with the Unlocked ROM?
When debugging in Visual Studio the default ROM used will be the Locked ROM.
In this blog post we’ll explore why the unlocked ROM is so darn useful for developers when debugging applications.
In order to use the unlocked ROM as the default for VS2010 debugging:
1. Simply open up the default WP7 SDK Directory
2. Drop in the April10 Unlocked ROM BIN file
3. And rename it to “WM70C1.bin”
On a x64 machine the WP7 SDK Directory is located at: C:\Program Files (x86)\Microsoft SDKs\WindowsPhone\v7.0\Emulation\Images
By replacing the original WM70C1.bin file with our unlocked ROM, Visual Studio 2010 will now open up the unlocked ROM for debugging.
Why should developers care about the Unlocked ROM?
There’s a plethora of reasons why the unlocked ROM is important for application develoeprs. Let’s go over them .
Advantage #1: Developers can see the native Look & Feel of WP7
The WP7 UI is not just a fancy version of “desktop” Silverlight 3 UI.
There are different patterns of user experience, different controls used and wildly divergent visual conventions.
Developers who build entire WP7 applications without even trying to use the platform will end up building atrocious user experiences.
Panorama Control Switching between screens (Office)
Line-Of-Business Form for creating new appointments:
Pivot Control: (Contacts page)
There’s a lot of subtle details in how WP7 UI and UX work, and as developers on this brand new platform we should endeavour to fully understand it so we can recreate it in our applications.
For more information on WP7 UX feel free to read the weighty Windows Phone 7 Interaction and UI Guidelines.
Reason #2: All Tasks have been enabled
WP7 has quite a few tasks and choosers that allow developers to interact with various built-in phone functionality.
The majority of these tasks are enabled in the Unlocked WP7 ROM.
Let’s review each of these tasks and choosers, how to invoke it and what’s the UX in the April 2010 Unlocked ROM.
Invoking CameraCaptureTask
new CameraCaptureTask().Show();
Invoking EmailAddressChooserTask
new EmailAddressChooserTask().Show();
(I’ve staged “Foo” and “Bar” contacts to give this dialog some substance).
Invoking EmailComposeTask
new EmailComposeTask()
{
To = "J@JustinAngel.net",
Subject = "Seriously?",
Body = "They actually pay you to develop for Windows Phone 7? Cool!",
Cc = "fake@Vertigo.com"
}.Show();
Invoking MarketplaceLauncher
MarketplaceLauncher.Show(MarketplaceContent.Music,
MarketplaceOperation.Search,
"Foo Fighters");
It is likely to assume that the MarketplaceLauncher task will be enabled in subsequent releases.
Invoking MediaPlayerLauncher
new MediaPlayerLauncher()
{
Media = new Uri(@"http://ecn.channel9.msdn.com/o9/ch9/4/1/9/7/4/5/WPMetroDesignOverivew_ch9.wmv"),
Controls = MediaPlaybackControls.All
}.Show();
Invoking PhoneCallTask
new PhoneCallTask()
{
DisplayName = "Hello World",
PhoneNumber = "123 456 789"
}.Show();
Invoking PhoneNumberChooserTask
new PhoneNumberChooserTask().Show();
It’s likely to assume this error would be fixed in subsequent versions.
Invoking PhotoChooserTask
new PhotoChooserTask()
{
ShowCamera = true,
PixelHeight = 640,
PixelWidth = 480
}.Show();
Invoking SaveEmailAddressTask
new SaveEmailAddressTask() { Email = "J@JustinAngel.net" }.Show;
Invoking SavePhoneNumberTask
new SavePhoneNumberTask() { PhoneNumber = "123 456 7890" }.Show();
Invoking SearchTask
new SearchTask() { SearchQuery = "Windows Phone 7 prototypes, one for Shazam and one for Netflix" }.Show();
Invoking WebBrowserTask
new WebBrowserTask() { URL = "http://www.vertigo.com/Mobile.aspx" }.Show();
Reason #3: Windows Phone 7 Task Manager
The Windows Phone 7 System Info provides useful insight for developers on how their applications are behaving.
Opening SystemInfo and the Task Manager View
Details Summary view + Terminate Button
Threads and Heaps (Gen0, Gen1, Gen2, Gen 64k+) screens
Allocations and modules screens
Reason #4: Local Files and IsoStore View
Using the Shortcuts application developers can view their installed XAP files and IsoStore files.
Let’s start this demo off by writing a “Foo.txt” & “Foo.html” files into our main Isolated Storage directory.
using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
using (var sw = new StreamWriter(isoStore.OpenFile("Foo.txt", FileMode.OpenOrCreate, FileAccess.Write)))
{
sw.Write("Hello WP7!");
}
Open up Shortcuts application and set “Show All Files”
Navigate to the “\Applications” Local Device Path
Viewing the contents of an Installed XAP
Opening files installed in the XAP and inspecting them on the device
Opening the Isolated Storage for our application
Fin
In this short blog post we’ve introduced the concept of Unlocked WP7 ROMs, how to best use them and what functionality they have to offer developers.
Specifically, they allow experimenting with native look & feel, using the built-in WP7 tasks, using0 the platform’s Task Manager and exploring local storage.
In subsequent blog posts we’ll talk about how to automate the Windows Phone 7 Emulator, Setup TFS2010 Windows Phone 7 Continuous Integration and other secrets the unlocked ROMs has to share with us.
Leave a Comment
Feel free to leave a comment with your take on the Windows Phone 7 Unlocked ROMs.
Sincerely,
-- Justin Angel
Comments