Problems connecting a Windows Phone device to an ASUS P7P55D PRO motherboard

I have had some problems when connecting Windows Phone devices to my desktop computer, from when it had Windows 7 installed and my phone was an HTC Trophy to right now, with Windows 8.1 and a Lumia 920. Other USB devices had no problem synchronizing but connecting a Windows Phone almost always resulted in weird behaviour:

  • The notification alert for device connected/disconnected played, but the device didn’t appear anywhere, not even Device Manager.
  • Device appeared, but when opening any window that had to list it, explorer.exe hanged.
  • Device appeared and everything seemed OK, but opening the Windows Phone application failed to connect with the “Your phone is having troubles” message. Trying to deploy an application from Visual Studio failed with the error “This operation returned because the timeout period expired“.

The solution is very simple: go ahead and flash the latest BIOS version available (2101, released on 06/11/2012). You can use the integrated EZ Flash 2 tool from the BIOS menu to do it easily, because it can read the ROM file from a plugged USB device or from the computer’s disk, even if it is formatted as NTFS.

My motherboard had the stock version (0501, from 26/08/2009), and I suspect that the version that fixed the problem is 0915 since it lists “Improve compatibility with some USB device” in the changelog.

Extension methods for switching BinaryReader/BinaryWriter endianness

Although very simple, I have published a new small portable class library that adds some extension methods to the BinaryReader and BinaryWriter classes. It consists of overloads to the Read* and Write methods to allow switching the endianness of the data being readen/written. Since almost all current .NET CLR platforms run on little endian (Windows Phone does too, thanks to the ability of ARM to switch between big and little endian), these functions are helpful when reading data exported from other platforms, or more commonly, JPEG files.

The library is available for download from GitHub, both in source code and compiled form. Or if you prefer, you can search for the BinaryEndiannessExtensions package on NuGet and add it directly to your project.