Category Archives: Platforms

Streaming TV and Chromecast – Stan won’t support iPad HDMI

I was in contact with Stan (streaming TV) support over the weekend. The iPad wouldn’t play, whether connected via an HDMI cable or the Chromecast. It would play zero to a few frames, then freeze up.

They suggested doing a factory reset on the Chromecast and removing and re-installing the Stan app.

It sounded unlikely (it’s the real-life version of the IT Crowd’s “Have you tried turning it off then on again”), but to my surprise, it actually worked.

HDMI was still a problem though. They said it wasn’t supported.

So why doesn’t Stan support HDMI? An interesting answer came back:

“We are unlikely to support this method of streaming in the future due to DRM (Digital Rights Management) contractual agreements we have with the studios we licence our content off of. If anything changes, we will be sure to let you know.”

This is puzzling, given their main competitors Netflix and Presto seem to support it.

It’s worth noting that Stan (and I believe the others) don’t support my 2011-model Samsung smart TV either. Thank goodness for the Chromecast. It’s not as easy as being able to play directly just on the TV (with no other devices required), but at least it works — and navigating menus is far easier on a tablet than a TV remote control.

As one observer (I forget who) noted — there’s little point paying extra for a smart TV (over a dumb one) when an A$49 device like a Chromecast is less likely to become obsolete — or if it does, it can be cheaply and easily replaced.

Enable Stereo Mix on Windows 7 under BootCamp

After rebuilding my Mac Pro with Windows 7 on an SSD (more about this later), Stereo Mix went missing.

To re-enable it, I ended up changing the audio driver to the Microsoft High-Definition Audio drivers, then back to the Realtek drivers:

  • Control Panel / Device Manager
  • Browse to Sound Video and Game Controllers
  • Choose Realtek High Definition Audio / Change (you’ll need an admin password at this point)
  • Update driver / Browse / Let me pick, and choose High Definition Audio Device.
  • Let it finish, then go back in again but at the last step choose Realtek High Definition Audio. This time I found it needed a reboot.

I assume this updates you to the drivers that came with Windows, rather than those that came with Boot Camp.

After the reboot, Stereo Mix is available. You just need to enable it under Control Panel / Sound / Recording devices, right-click, Show disabled devices, then enable it. You can set it as the default so you can record things in Audacity etc.

The old PC made new again: trying out Linux

My old hand-me-down laptop is getting too slow under Windows.

I tried reinstalling, and it’s still slow. Perhaps it’s the patch upon patch upon patch that needs to be applied to make it safe that explains why Windows installations always slow down over time — and why reinstalling didn’t solve the problem.

So I went looking around for lightweight Windows-like Linux distros… and ended up with LXLE.

The steps were pretty simple.

  1. Windows Disk Management to shrink the main partition enough so there was space for Linux.
  2. Download LXLE (silly me, I could have chosen 64 bit, but went with 32 because Windows was 32… the specs say it’s actually 64-bit… though with only 2Gb of memory, 32 might be better, as it is with Windows?)
  3. Used UNetbootin to create a bootable USB drive
  4. Boot onto the USB and follow the steps. Easy.
  5. Two things I’ve done apart from installing the default OS: install Chrome so I could sync my bookmarks, passwords etc
  6. And install gpointing-device-settings via Synaptic, to turn off the annoying touchpad click (which I keep firing accidentally)

The laptop seems rejuvenated. The speed is nice. I mostly use it for web and a little word processing (which Libre Office, installed with the distro, should cover).

The interface is similar enough to Windows that I’ll get by fine with it. (And unlike trying to move to OSX, no annoying differences in keyboard shortcuts.)

And if I desperately want something in Windows, I can still boot it up if I need to.

Still to investigate:

  • Compatibility with VPN for work
  • RDP for work and other uses
  • See if GIMP will cover the same stuff I use Paint.Net for, or if I need to find something else


It has had some problems with waking up after sleep, and forgetting the touchpad No Click setting when rebooting.

And now, after a week…

Linux boot problem

Now it won’t boot.

The whizzes on Twitter suggest it might be a hard disk corruption… which it might be, though Windows is still booting fine.

Or it might be that grub needs reinstalling. I’m not even sure how or why I’d do that.

The other suggestion people have is to try a different (more stable?) distro, such as Lubuntu. Might be worth a look, though I’m wondering how much better it would be.

As I get time I’ll keep testing.

Upgrading to Android 5

My Google Nexus 5 finally received the Android 5 update… well, the notification for it at least.

Eventually I decided to upgrade it.

Good stuff

Easy upgrade.

It seems pretty speedy on the Nexus 5.

Some good, useful functionality, like priority contacts (who it looks like can be set to ring when nobody else does — something I’ve used an app called Auto Ring for in the past, which still seems to work). Beware though, “Priority” apparently means low battery alerts are allowed to make sounds. Didn’t appreciate being woken up by that.

Better links from contacts to recent activity such as calls and texts.

Torch. Wasn’t there before.

Google Fit… it turns out this is compatible with Android 4. I hadn’t seen it, but it added itself with the upgrade. Quite neat, I’ve been tracking my steps.

Android 5 upgrade  Android Device Administrator

Bad stuff

The new look may take some getting used to. I don’t understand why they’ve got rid of most of the lines between things. The keyboard is now one big lump, with no distinguishing lines between the virtual keys.

Gmail now handles the stuff that used to go through the email app, such as Exchange ActiveSync. I find that a bit painful, as I liked to keep my work/Exchange email separate from my Gmail.

Worse, it now enforces Exchange’s device restrictions (did Android 4 do this? I don’t recall that it did). This includes scary things like the ability to wipe your device if you get your password wrong too many times. Given how apps sometimes go crazy polling the server when the password changes, I’m not sure I trust it with this power.

I ended up deleting the Exchange account from Gmail. It wasn’t easy — you can’t simply remove the account. It turned out the way to do it was via Settings / Security / Device Administrators. Turning that back off forces the accounts relying on it to be removed.

I might need to find a new Exchange app. Touchdown looks good — They do a good job of hiding much it costs (appears to be US$20 after a month’s trial), but it looks like a good Exchange app that limits security restrictions to itself, not the whole phone. CloudMagic also appears to work okay, but has a completely free option, as well a paid (US$4.99/month) option.

More as I explore the new version.

I’m really liking Google Fit. Sure, it doesn’t track very much information, but I gather the Nexus 5 has a pedometer built in, so it’s nice to be able to see some results from it.

Google Fit

Response times seem to be a little bit slower, going onto the home screen, but nothing worth worrying about (yet).

More help is available

From the “Do you understand why people hate you, Microsoft?” department:

D:\>net stop xyz
The service name is invalid.

More help is available by typing NET HELPMSG 2185.

D:\>net helpmsg 2185

The service name is invalid.


Yes. Very bloody helpful.

I don’t expect miracles in the command line, but I do expect that if I’m told more help is available, that more help is actually available.

Why can’t you resize Remote Desktop windows?

RDP optionsIf you can spontaneously change the resolution of Windows in a Virtual Machine, how come you can’t do it in a Remote Desktop session?

I’m forever opening up RDP sessions in the wrong resolution, because the RDP client seems to have a funny way of selectively remembering (or forgetting) the preference.

Sometimes if focussing entirely on the remote session, I’d like it to be full-sized. At other times I’d like it smaller so I can more easily jump between things.

Is there something complicated that stops RDP windows being resized after connection has been made? If it is possible in a VM, presumably it can’t be too hard in RDP?

It looks like in Windows 8 and later you can easily turn on “smart resizing”, and in earlier versions this can be configured in the .rdp file. But this scales the window at the original resolution, rather than changing resolution.

It’d be nice if proper resizing of the window was possible.

iTunes free U2 album: How to make it appear

So you don’t want to splash out on a new iWatch or iPhone, but you do want that new U2 album that’s free on iTunes until 14th October?

The instructions (for Mac or PC itunes) say:

On your Mac or PC, open iTunes, then select the Albums tab. Select Songs of Innocence. Select a track to listen or click the iCloud icon to download.

What they don’t tell you is what to do if it’s not showing there. In my case, it wasn’t. It also wasn’t in Purchased, and although I could see it in the iTunes Store (and play previews), the iCloud icon wasn’t appearing.

Screen Shot 2014-09-10 at 10.58.33 am

The answer is you need to switch on the option to see iCloud purchases:

Preferences / Store / Show iTunes in the Cloud purchases

Then it should appear in the Albums tab.

With thanks to Sam Wilkinson on Twitter

Update 2014-09-16: For those who aren’t as keen on U2, Apple has now published an article on how to remove the album from your iTunes:

Remove iTunes gift album “Songs of Innocence” from your iTunes music library and purchases

Upgrade of web site from .Net 2 to 4.5 breaks asmx web services

Despite my best Googling, nobody seems to have had quite this problem (and written about it).

I’m migrating a .Net 2 web site to .Net 4.5 (well, 4.5.1 to be precise). Everything seemed to work except browsing to the .asmx (web service) pages, which threw a System.BadImageFormatException: Invalid token error:

Error Stack:System.InvalidOperationException: Failed to handle request. —> System.InvalidOperationException: Unable to handle request. —> System.Configuration.ConfigurationErrorsException: Invalid token. —> System.BadImageFormatException: Invalid token.
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection)
at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.Load(String assemblyString)
at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)
— End of inner exception stack trace —
at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)
at System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()
at System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai)
at System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)
at System.Web.Compilation.WebDirectoryBatchCompiler..ctor(VirtualDirectory vdir)
at System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(VirtualDirectory vdir, Boolean ignoreErrors)
at System.Web.Compilation.BuildManager.BatchCompileWebDirectory(VirtualDirectory vdir, VirtualPath virtualDir, Boolean ignoreErrors)
at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetVPathBuildResult(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean ensureIsUpToDate)
at System.Web.UI.PageParser.GetCompiledPageInstance(VirtualPath virtualPath, String inputFile, HttpContext context)
at System.Web.UI.PageParser.GetCompiledPageInstance(String virtualPath, String inputFile, HttpContext context)
at System.Web.Services.Protocols.DocumentationServerProtocol.GetCompiledPageInstance(String virtualPath, String inputFile, HttpContext context)
at System.Web.Services.Protocols.DocumentationServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)
— End of inner exception stack trace —
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)
at System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response)
— End of inner exception stack trace —
at System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response)
at System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath)
at System.Web.Script.Services.ScriptHandlerFactory.GetHandler(HttpContext context, String requestType, String url, String pathTranslated)
at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)| Global.asax:Application_Error()

I tried adjusting the .Net version — turns out it would work fine in 3.5 or lower, but broke in 4 or higher.

My machine itself was okay — creating a new 4.5 web site with just a web service in it worked fine.

In the end the solution was to create a new web site and add the individual pages back into it, leaving out the Bin directory. I rebuilt that by adding references to the various DLLs back one by one. Something in the old Bin directory apparently was throwing it out.

Samsung Galaxy SII doesn’t mount under Linux

unable to mount samsung_android: error initialising camera -1 unspecified error

Screenshot of the error message

Unable to mount SAMSUNG_Android

Error initialising camera: -1 Unspecified error

So this is the error message I get when plugging my Samsung Galaxy S2 into the USB port on my Linux boxen, all running Linux Mint Maya running the MATE desktop (Ubuntu 12.04). 

PTP_transfer_enable The answer is, of course, you need to enable PTP transfers, rather than MTP transfers.  MTP transfers work great for Windows or Mac, but not Linux.  On your phone, drag down the Notifications screen, then under “Ongoing” you’ll find something about “other USB options”.  Select that and you can pick the PTP transfer.

Per the notes on how to take a screenshot on a different phone, I took a screenshot of the final screen. Getting the screenshot onto my computer, that was a whole world of hurt.  Settings | More Settings | USB utilities | USB mass storage needs to be turned on, otherwise the file browsing from Linux shows only the directory structure, no files whatsoever.

Of course, Cathy’s HTC Desire, it Just Works.

New graphics card in the Mac Pro

To recap: I’ve got two old 2008 Mac Pros. Lovely machines. The video card in one went bung (possibly power problems).

As a workaround I’ve been using a friend’s spare ATI Radeon 3870, which only works in Windows, not OS X.

I’ve just bought an upgrade: an nVidia GeForce GTX 480. Very nice. A beast of a card, too, very impressive looking. Got it on eBay from a bloke in NSW selling under the name “Mac PC Parts” for about A$270, which is a bit cheaper than the official Apple upgrade — which is no longer available anyway — and a LOT cheaper than any of the new cards at OWC or other etailers and retailers that I could find.

Mac Pro, video card installed

A note of caution to fellow Mac Pro 2008 users: it appears to be near-impossible to get the card out once plugged-in, due to the placement of the PCIe catch on that model of Mac Pro. It might explain why later models went to a bar thingy which is easier to get to. This also means it’s worth plugging in the two power cables before the card goes in.

Anyway, the card has taken the graphics rating in Windows 7’s Performance index thingy from 5.1 to 7.9. It even seems more responsive for regular web browsing.

There’s a certain amount of geek pride in getting each item, one by one, to the top of the scale.

But given the weak point is now the hard drive, it would seem that the next upgrade needs to be a new hard drive/SSD.

Windows performance index

But the main reason I wanted to get it was to get this computer running OS X again — son the elder is getting familiar with it at uni, and may need to run OS X-specific software again soon.

Alas, plugging in the OS X drive and trying to boot off it got me a “Operating system not found on disk” error. It would seem the Microsoft gremlins got onto it.

The disk doesn’t have anything important on it anyway, so stand by for updates as I figure out how to wipe it and rebuild OS X.

Update: It was easy. Download Mavericks onto a USB, boot it up and use the built-in disk manager to re-partition the OS X drive (I unplugged the Windows drive just to be sure I wouldn’t accidentally wipe it) then install onto it.

Plugged the Windows drive back in, and installed ReFit again to provide a more visible boot menu. Done.

Diablo I (yes, Diablo 1) LAN play on Vista or Windows 7

– and presumably 8.

There’s various convoluted steps to get LAN play working on more recent versions of Windows.

Mount the ISO on your hard drive, and use the somewhat unstable Microsoft supplied ISO mounting program to fool the program into thinking you CD is in a CD drive.  Install Diablo from here.  This step is not strictly necessary, but it’s so much quicker and cleaner than the alternatives.

Fetch and apply the patch to bring Diablo 1.00 up to version 1.09.  It may also be helpful to pull up the properties of the .exe and enable compatibility mode with WinXP Service Pack x. When fetching patch, get it for the version you’re installing – much confusion is caused if you get the spawned Diablo patch and apply it to the full version.

Go and get IPXWrapper, and per the instructions drop the DLL files into your Diablo directory. If you have a heterogeneous environment, all machines need to use this wrapper – IPXWrapper is a translation layer than transforms IPX into UDP, and without it IPX aware OSes like WinXP won’t see the network traffic of the IPX unaware OSes like Vista.  Punch a hole in your Windows Firewall to allow UDP port 54792.

To fix the palette issue, you might want to wrap the exe in a batch script to kill Windows Explorer whilst you’re playing Diablo.  However a better idea is to download the registry patch, which seems to work under Vista as well:

32-bit Windows 7 –
64-bit Windows 7 –

See?  Easy.  Doesn’t take more than a few hours if you don’t know what you’re doing.

Where did I take that photo?

I couldn’t find anyone extracting out the geolocation geotagging EXIF data from their photographs so they could pull it up on something like Google Maps.  There are stand-alone programs with embedded maps, but the bits and bobs lying around on the average system ought to be enough to just generate a URL to a mapping website.  The following bash script echoes the  URL that geolocates your JPEG.  Because my camera doesn’t emit it, I couldn’t be bothered dealing with the seconds part of a location, but I did detect that you don’t have a camera the same as mine.  Drop a line if you’ve used this and fixed it.

# emit a hyperlink to google maps for the location of a photograph
declare Seconds=""
Seconds=`exif -m --ifd=GPS --tag=0x02 $1 | grep -oP "[\d|\d\.]+$"`
if (( $Seconds=='0' ))
  Seconds=`exif -m --ifd=GPS --tag=0x04 $1 | grep -oP "[\d|\d\.]+$"`
if (( $Seconds!='0' ))
  echo "Script does not support seconds being specified"
echo -n ""
declare NorthSouth=`exif -m --ifd=GPS --tag=0x01 $1`
if [ "$NorthSouth" == "S" ] 
  echo -n "-"
echo -n `exif -m --ifd=GPS --tag=0x02 $1 | grep -oP "^[\d|\d\.]+"`
echo -n "%20"
echo -n `exif -m --ifd=GPS --tag=0x02 $1 | grep -oP "(?<= )[\d|\d\.]+,"`
declare EastWest=`exif -m --ifd=GPS --tag=0x03 $1`
if [ "$EastWest" == "W" ]
  echo -n "-"
echo -n `exif -m --ifd=GPS --tag=0x04 $1 | grep -oP "^[\d|\d\.]+"`
echo -n "%20"
echo -n `exif -m --ifd=GPS --tag=0x04 $1 | grep -oP "(?<= )[\d|\d\.]+(?=,)"`