Last week I wrote about an app that had bad live-tile-behavior. This behavior causes the phone to keep requesting live-tiles from a server. And while doing that, is causes massive data-connection-load and CPU-drain. I've had many responses to that blog-post, from people who described other malfunctions of the Startmenu of Windows Phone 7.8. So many, that I had to do some more investigation. My research still has some loose ends (behavior that is not consequently reproducable). But I'll try to summarize here.
Windows Phone has 3 mechanisms for updating a live-tile. I investigated all of them. I will explain each type of live-tile and what found, while trying to use it on WP 7.8.
- ShellTile.Update(ShellTileData) - This method allows you to manually update the contents of the live-tile from within an app or a background-task of an app. Apps use this to create custom tiles. For example, a twitter client may register a background task, that checks the twitter-feed and write text-updates on the live-tile. I've had no problems using this functionality in both WP 7.5 and WP 7.8.
- ShellTileSchedule.Start() - This method allows to set a URL to a live-tile-image on an external host. The URL is fetched at predefined interfalls. I found that the Shell Tile Scheduler may start behaving irretically under some circumstances. The app from my previous blog-post, did in fact use this method. I have tried to reproduce this behavior in an app of my own. But I have not been able to isolate the situation that triggers this problem. If the problem occurs, there is a serious problem, that may lead to low performance of the phone and high bills from your mobile operator! This behavior seems to be specific to WP 7.8. So far I have not been able to reproduce it on WP 7.5 and WP 8.
- HttpNotificationChannel.BindToShellTile() - This method opens a channel to the Microsoft Notification Servers. External sources can post images, text or counters to the Microsoft Notification Servers. This will be routed to the phone. I found this functionality to be completely broken on WP 7.8. It is possible to send a text or counter. But as soon as an URL for a live-tile-image is sent to the phone, the phone immediately closes the endpoint to the server and nothing is updated. I found that when the app completely registers a new endpoint, the live-tile can sometimes be updated once and then the endpoint is closed again. In my case deleting the PushClient Endpoint registry-keys did not help and even a hard-reset did not resurect the live-tiles. Live-tile notifications still worked only once, or not at all. On WP 7.5 this method just works as expected. I actually hope I did something wrong here. Or else I don't understand how this could ever get past the Microsoft Quality Assurance department.
In a reaction on my previous write-up, PeterF from Weerplaza.nl wrote that all his live-tiles had become unresponsive. That is conclusive with my own findings. A bit later wmpoweruser.com also wrote that many users were experiencing the same problems.
In another reaction on my post, Bashar mentioned that an app from Microsoft was also showing the same Tile Scheduler bug as the Tweakers.net app did. This concerns the Microsoft Bing Translator app. When you download the free app from the Marketplace and you pin it on the Startmenu, it will try to update the live-tile with word-of-the-day images. The problem may not start immediately; it can maybe even take an hour before the problem occurs. But when the problem starts, you will see that the live-tile starts flickering a bit. That is the result of constant updates of the tile. This means, that this app from Microsoft can also drain your 3G-data-connection and battery of your phone. If you have this app, make sure you unpin it from the Startmenu, or else your next phone-bill may be a very unpleasant surprise.
Not all apps that use the Tile Scheduler will go nuts. My own test app behaved normally. So it is very hard to detect which apps are dangerous at this moment.
Those are the test-results so far. I'm not sure these problems are reproducable on all devices. The results have not been conclusive enough for that. I am curious to see if other developers or users experience the same malfunctioning Live-tile notifications. And I'm also curious if there are more apps the use the Tile scheduler and end up in data hogging. Please let me know if you have information that can confirm or deny my test-results.
I hope Microsoft is able to send out a quick update to fix these problems. And while they're at it, I'd really appreciate it if they can fix the delay/lag in the Startmenu when you tap a tile to open an app!
Yesterday I got a text-message from my Mobile Operator. My mobile contract has a Fair Use Policy and the text-message stated that I had used 50% of the monthly limit. Well, that's weird. It's february 1st! On the first day I used half of my data-limit? So I opened the Nokia Counters app. It showed me that I already used more than 600 MB!! How is that possible? Another thing I had noticed was that my battery seemed to be draining much faster than usual. I realized that the power-consumption was probably a result of the high data-traffic.
What could use so much data? I hadn't used my phone a lot this day. I did update this phone to WP 7.8 the day before. No apps were running. And even if apps were running, they should be tombstoned and not use data. Or maybe one of the apps had a background task running. But I did not install new apps. And I did not have this problem before.
Another thing I had noticed right after the update to WP 7.8 was that one of the pinned live tiles was empty. I did not really pay further attention to it and I assumed the app would be updated soon enough if this was a real problem. But now I realized, that live-tiles needed to be updated and not much else is using data at that moment. The app without live-tile is the unofficial tweakers.net app by Robert de Veen:
So I did a few tests. I watched the Nokia Counters app. I unpinned the app with empty tile. Data usage stopped. Pinning it on the start-menu again and 3G draining started immediately again. In my case, it used about 1 MB per minute!
Time for more testing! I did more analysis on live-tiles in the past, so I knew this data can be captured the easy way. Just put the phone in airplanemode, connect the phone to the PC with Zune, fire-up Wireshark with http-filter in promiscuous mode and watch all the data pass by. The problem is quite obvious. The OS tried to fetch the live-tile on this URL:
The server responded with a redirect to this URL:
Apparently, that sub-domain tweakers.robertdeveen.com is not available anymore. The OS attempts to fetch the redirected URL, but instead of a live-tile image, it receives a error-page in html. And instead of waiting for the next cycle for fetching live-tiles, the OS starts an endless loop of tile-fetching-attempts. This causes high CPU-load and high bandwidth-usage and that will drain the battery too.
Did the sub-domain just go black on this day? Or does the WP 7.8 update cause this sudden behavior? To find out, I tested on two more devices. One WP 7.8 and one WP 7.5 device. On WP 7.5, this problem is not reproducable. On the other WP 7.8 device the problem was immediately reproducable. So, the problem seems to lie in the code of the new WP 7.8 startmenu. I don't know how much of that code is shared with WP 8, or even Windows 8 or Windows RT. That would need more investigation. It is possible that this problem reaches beyond WP 7.8.
One last thing I wanted to test. How does this code behave when the phone is locked? Normal behavior is that the phone will switch off Wifi after being locked for about one minute. It will then switch to 3G for data, because the Wifi-radio can be switched off and the battery would last longer. You can see this when you lock the phone and unlock immediately. The Wifi icon will stay on. But if you wait longer than a minute and then unlock, you see the Wifi icon reconnect. In this case that would mean, that the 3G would also drain, even when a locked phone is within reach of Wifi. So I looked at Nokia Counters, locked the phone, leave it locked for a while, unlock and have a look at Nokia Counters again. I was surprised to see that no 3G data was used. I also noticed that the Wifi-icon would stay connected, even after being locked for some minutes. I checked this by using ARP-poisoning and watching Wifi usage of the phone. It confirms that when a bad live-tile is pinned on the startmenu, it will keep using Wifi, even when the phone is locked for a while. The good thing is that 3G is not drained while staying within reach of Wifi. But it causes to drain the battery even more.
I will end with some suggestions:
- To Robert de Veen: Please fix the tweakers.robertdeveen.com sub-domain, which hosts the live-tile-images, as soon as possible.
- To Microsoft: Please fix the startmenu. When fetching a live-tile fails, just wait for the next cycle.
- To all WP 7.8 users: Watch your 3G usage. When it is absurdly high after the WP 7.8 update and one of the tiles is empty, unpin that app from the startmenu and see if the problem is gone.
- Heathcliff74 -
Update 1: Robert de Veen has pushed out a new version of the app for Marketplace aprroval. The new version does not have live-tile-updates, so the problem should be resolved. This new version is expected to be published in a matter of days. Thanks to Robert for the quick response!!
Update 2: The server that hosts the live-tile-images of the Tweakers.net app seems to have a daily traffic-limit. So the problem with the live-tiles of this app seem to be gone in the morning, but it will reappear somewhere during the day. So I still advise everybody to unpin the tweakers.net app, until the app is updated to a newer version.
Update 3: Together with Rafael Rivera (@WithinRafael), we tested the issue on WP8 (build 8.0.9903.10). It seems that WP8 is fortunately NOT affected!
Hello everyone! Let me start with wishing everybody a peaceful and healthy New Year! It's a bit late, but I didn't have a chance to do it earlier. I started the new year with my new job. Very impressive and a lot of things to learn. It's a totally new challenge and I'm excited to work for my new employer. It's not anything related to mobile development, in case you wonder.
For this new year I created a new version of WP7 Root Tools too. I've done a lot of testing and I got a lot of help from other people. It seems WP7 Root Tools is very stable now and I fixed the last known problems. I also fixed the problem with Samsung devices that showed error RA-ARA-01 in the installer. I thought I fixed it in the previous version, but still a lot of users complained they had this problem. I didn't have the problem on my own Samsung. So I got some help from Dennis Wilson. He did have a Samsung device that which had issues with the WP7 Root Tools root-access-installer. We used USB over Network from FabulaTech. An excellent piece of software. We set up a transatlantic remote-debugging-session. And I debugged WP7 Root Tools from my home in The Netherlands on his Samsung device in Phoenix - Arizona, about 8000 km away. How cool is that!?
I also did some User Interface improvements, as you can see in the screenshot.
I'm still working on other developments. But since this version is really stable now, and I fixed the Samsung installer-issue, I wanted to release this. But I plan to release more new features soon.
You can download WP7 Root Tools 1.0 from the download-section.
Happy developing in 2013!
- Heathcliff74 -
Update is non-reversible
If you use Zune or Cab-sender to update to Windows Phone 7.8 (when it becomes available), the process is non-reversible. This means that you can't use your Zune backup to restore to a version from before the update to Windows Phone 7.8. If more updates will follow, you will be able to restore to earlier versions from Windows Phone 7.8. But still not to versions earlier than that. Microsoft has decided to flag the Windows Phone 7.8 update as "not possible to restore to earlier build anymore".
In most cases, it will still be possible to do a full flash with an older stock ROM image. But that means you loose unlocks and app-data.
If you updated to Windows Phone 7.8, using Zune, and then try to restore a backup, you will get error 801812E0. Microsoft provides this information and they insure you that your device is okay, even though you get the error code.
I'm not sure why Microsoft decided to do this, but I guess this is meant to be some anti-piracy-measure.
If you unlocked your device using "alternative methods", I advise you to wait until the Cabs are available to use with Cab-sender and then take some precautions before updating, because reverting might not be an option. I have not actually tested this for the Windows Phone 7.8 update, but I will try to get confirmation as soon as possible.
- Download the necessay Cab files.
- Make sure you have WP7 Root Tools fully installed on your phone.
- Put your phone in Airplane mode and don't enable internet until all steps are done.
- On PC go to %systemroot%/system32/drivers/etc and open the hosts file in a text editor and add this line:
- Install the CAB files using Cab-sender.
- Your phone should still be unlocked now. Open WP7 Root Tools, go to the Tweaks tab, and enable "Prevent relock".
- Now you can disable Airplane mode.
I hope this will help you with the update. But remember: this method is not yet confirmed for the Windows Phone 7.8 update!
- Heathcliff74 -
I own a DELL Inspiron laptop. I carry it around a lot. I'm always really careful with my laptop and all accessories. But despite the fact that I am really careful with my hardware, over time I've spent a small fortune on it. Not on components in the laptop, but on DC POWER ADAPTERS! I don't remember how much I had of them, but I think there were 6! 1 of them died from a blow-up. All others are rendered useless, because of the signal-cables from the adapter to the laptop have broken. I want to stress again, that I am really careful with my stuff! I've know about this weakness for a long time, and for that reason alone I always make sure the adapter cables are never bent or stretched too much. Also when putting the adapter in the case, I also roll the cable very carefully.
But despite this very careful usage, the adapters keep on getting broken! The cable from the adapter actually has 3 wires: V+, GND and 1 wire for a data-signal. In the laptop and in the adapter are chip's that do a handshake when the connection is made. In the handshake the adapter tells its capabilities to the laptop. This a sort of safety measure that you don't accidentally use an adapter with not enough power and then "blow up" the adapter.
But the problem is this: the long wire between the adapter and the laptop is totally NOT suitable for this data-signal. After using the adapter for a while the quality of the wire decreases. While the wires are still perfectly capable of transmitting the power from the adapter to the laptop, the wire for the data is not capable of sending it's ID to the laptop. I still have about 3 adapters laying around here that have good power, but bad ID-signal and therefore useless. The circuit that should prevent the adapter from dieing, is in fact the weakest link and the first reason for the adapter to die!
This is in fact a lousy construction, but the worst is yet to come. When the problem arises, this is the error message you get: "The AC power adapter type cannot be determined. Your system will operate slower and the battery will not charge. Please connect a Dell 90W AC adapter or higher for best system operation." WHAT!?!? The CPU will run on half speed!!! And there is no way to override that behavior!!
This is terrible! When this happens, that means you cannot use your laptop anymore without adapter, because there is no way to charge your battery anymore. Using the laptop somewhere on the way is not possible anymore! Also the laptop is SLOOOOOWW! WHY, DELL?! WHY?! I know my freakin' adapter is OK! Stop bugging me! Let me do my work!
So, after knowing this problem, and after having bought plenty of adapters (DELL original and also replacement adapters, which all have the same weakness) I thought I'd try something different. I came across this article. This looks promising! It describes how to place the ID-chip from the adapter in the laptop, so it will always recognize the adapter, even universal adapters. So I wanted to try to mod my laptop. First I carefully took out the ID-chip from one of my power-adapters, including the diode and resistor in that circuit.
Then I cut the ID-wire from the DC Power Jack in my laptop and soldered the ID-chip inside the laptop.
Result: Nothing! I did everything very carefully, but obviously I made a mistake somewhere. Or the chip has died somewhere along the process. I don't have digital equipment to measure what's wrong. I ended up restoring the cut fire from DC Power Jack and all is back how it was. Adapters are still not being recognized. So I have to buy YET ANOTHER adapter to be able to properly use this laptop again.
So, if you are planning on buying a new laptop, and you plan on carrying it around a lot, and you are considering a DELL Inspiron Laptop... then DON'T!! It will be totally frustrating when you can't use your laptop anymore without adapter, or your laptop becomes SLOOOOW. Just buy a brand that has a simple power-adapter, which lives much longer, and can be replaced with a universal adapter.
I am totally convinced that DELL does this to make extra bucks from people who need to buy new adapters over and over again. I will never buy a DELL laptop again.
- Heathcliff74 -