Fix for 0xc00d36b4 error when play MP4 videos on a Surface 2

Whilst in the USA last week I bought a Surface 2 tablet. Upon boot it ran around 20 updates, as you expect, but unfortunately one of these seemed to remove its ability to play MP4 videos, giving a 0xc00d36b4 error whenever you try. A bit of a pain as one of the main reasons I wanted a tablet was for watching training videos and PluralSight on the move.

After a fiddling and hunting on the web I found I was not alone, so I added my voice to the thread, and eventually an answer appeared. It seems the Nvidia Audio Enhancements seem to be the problem. I guess they got updated within the first wave of updates.

So the fix is according to the thread is as follows

  1. Go to the desktop view on your Surface
  2. Tap and hold the volume icon. 
  3. Select sounds from the pop up menu - I only had to go this far as a dialog appeared asking of I wished to disable audio enhancements (maybe it found it was corrupt)
  4. Go to the playback tab
  5. Highlight the speakers option
  6. Select properties
  7. Go to the enhancements tab
  8. Check the “Disable all enhancements” box
  9. Tap OK.

And videos should now play

Announcing a CodePlex project that provides an IronPython DSL that can be used to define the handling of TFS Alerts

I have just published a new project to CodePlex http://tfsalertsdsl.codeplex.com/.

Microsoft Team Foundation Server (TFS) provides an alerting model where given a certain condition, such as a check-in, work item edit or build completion, an email can be sent to an interest party or a call made to a SOAP based web service. Using this SOAP model it is possible to provide any bespoke operations you wish that are triggered by a change on the TFS server.

This framework is designed to ease the development of these bespoke SOAP wen services by providing helper methods for common XML processing steps and API operations such as calling back to the TFS server or accessing SMTP services.

They main differentiator of this project is that it also provides a Python based DSL that allows the actual operation performed when the endpoint is called to be edited without the need to  to rebuild and redeploy the bespoke service. Operations are defined by script such as show below

For more details have a look at the project site, hope you find it useful

Fixing a WCF authentication schemes configured on the host (‘IntegratedWindowsAuthentication’) do not allow those configured on the binding ‘BasicHttpBinding’ (‘Anonymous’) error

Whilst testing a WCF web service I got the error

The authentication schemes configured on the host (‘IntegratedWindowsAuthentication’) do not allow those configured on the binding ‘BasicHttpBinding’ (‘Anonymous’). Please ensure that the SecurityMode is set to Transport or TransportCredentialOnly. Additionally, this may be resolved by changing the authentication schemes for this application through the IIS management tool, through the ServiceHost.Authentication.AuthenticationSchemes property, in the application configuration file at the <serviceAuthenticationManager> element, by updating the ClientCredentialType property on the binding, or by adjusting the AuthenticationScheme property on the HttpTransportBindingElement.

Now this sort of made sense as the web services was mean to be secured using Windows Authentication, so the IIS setting was correct, anonymous authentication was off

image

Turns out the issue was, as you might expect, an incorrect web.config entry

  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name=”windowsSecured”> <!—this was the problem –>
          <security mode=”TransportCredentialOnly”>
            <transport clientCredentialType=”Windows” />
          </security>
        </binding>
      </basicHttpBinding>
  </bindings>
    <services>
      <service behaviorConfiguration=”CTAppBox.WebService.Service1Behavior” name=”CTAppBox.WebService.TfsService”>
        <endpoint address=”” binding=”basicHttpBinding”  contract=”CTAppBox.WebService.ITfsService”>
          <identity>
            <dns value=”localhost”/>
          </identity>
        </endpoint>
        <endpoint address=”mex” binding=”mexHttpBinding” contract=”IMetadataExchange”/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name=”CTAppBox.WebService.Service1Behavior”>
          <!– To avoid disclosing metadata information, set the value below to false before deployment –>
          <serviceMetadata httpGetEnabled=”true”/>
          <!– To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information –>
          <serviceDebug includeExceptionDetailInFaults=”true”/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

The problem was the basicHttpBinding had a named binding windowsSecured and no non-named default. When the service was bound to the binding it did not use the name binding, just the defaults (which were not shown in the config file).

The solution was to remove the name=”windowsSecured” entry, or we could have added a name to the service binding

When your TFS Lab test agents can’t start check the DNS

Lab Management has a lot of moving parts, especially if you are using SCVMM based environments. All the parts have to communicate if the system is work.

One of the most common problem I have seen are due to DNS issues. A slowly propagating DNS can cause chaos as the test controller will not be able to resolve the name of the dynamically registered lab VMs.

The best fix is to sort out your DNS issues, but that is not always possible (some things just take the time they take, especially on large WANs).

An immediate fix is to use the local host files on the test controller to define IP address for the lab[guid].corp.domain names created when using network isolation. Once this is done the handshake between the controller and agent is usually possible.

If it isn’t then you are back to all the usually diagnostics tools

Building VMs for use in TFS Lab Management environments

We have recently gone through an exercise to provide a consistent set of prebuilt configured VMs for use in our TFS Lab Management environments.

This is not an insignificant piece of work as this post by Rik Hepworth discusses detailing all the IT pro work he had to do to create them. This is all before we even think about the work required to create deployment TFS builds and the like.

It is well worth a read if you are planning to provision a library of VM for Lab Management as it has some really useful tips and tricks

More on TF215106: Access denied from the TFS API after upgrade from 2012 to 2013

In my previous post I thought I had fixed my problems with TF215106 errors

“TF215106: Access denied. TYPHOONTFS\\TFSService needs Update build information permissions for build definition ClassLibrary1.Main.Manual in team project Scrum to perform the action. For more information, contact the Team Foundation Server administrator.”}

Turns out I had not, acutally I not idea why it worked for a while! There could well be an API version issue, but I had to actually also missed I needed to do what the error message said!

If you check MSDN, it tells you how to check the permissions for a given build; on checking I saw that the update build information permission was not set for the build in question.

image

Once I set it for the domain account my service was running as, everything worked as expected.

All I can assume that there is a change from TSF 2012 to 2013 over defaulting the permission as I have not needed to set it explicitly in the past

‘Upgrading’ my Lenovo W520 to Windows 8.1

The upgrade experience for Windows 8 Enterprise is basically a reinstall, as you lose some many desktop apps and settings. So I decided to do a clean install, my PC was in need of a repave anyway.

My PC has 3 disks, a bitlockered SSD for the OS, another bitlockered drive used for data and a non bitlockered drive I use for ISOs, downloads etc. Just to be on the safe side I removed the bitlocker encryption on my second drive, then I deleted the contents of my SSD and re-installed.

All seemed to go OK, the OS installed and then a rebooted but then hung. I then remember the problems I had had installing Windows 8 RP, if I did not have the Intel video card enabled (I usually have it disabled as I find having both it and the Nvidia confuses projectors). Once I enabled both video cards the setup completed and I was able to join the PC to the domain and associate my LiveID with the domain account.

On checking device manager I saw a few items were missing drivers

  • Microsoft basic display adapter – Just used Window update and it found the Nvidia driver
  • Base system device –  This needed the Ricoh Media Card Reader driver from the Lenovo site
  • PCI serial port –  This took a while to find but in the end I needed the Intel Management Engine Interface 7.1 and Serial Over LAN (SOL) Driver from the Lenovo site

I also found, as before, I need to use Windows update to update the soundcard drivers, the default ones  were working on the laptop, but not via the base station outputs.

I then set to installing my desktop applications. Other than Office and Visual Studio I tried to do this all with Chocolatey, thus building up a script to make this easier in the future e.g

cinst poshgit
cinst 7zip
cinst notepadplusplus
cinst WindowsLiveWriter
cinst sysinternals
cinst skype
cinst git-tf
cinst eclipse-standard-kepler

This left me with one issue, i could not work out how to setup fingerprint login. In Windows 8 there was a Biometric icon on the Control Panel, but not in Windows 8.1. So I installed the Lenovo provided fingerprint tools, as I had to do in Windows 7. This allowed me to scan a fingerprint and associate it with an account. However, then i tried to login or unlock the screen with the fingerprint I got a message that ‘cannot use a fingerprint for a domain user’. Now in previous versions of the OS there was a checkbox on the Biometric control panel that set whether fingerprints could be used for domain accounts, but as i said before this tool is not present in 8.1.

After much searching, using Google as Bing found nothing, I found that you now have to enable fingerprint usage via a Windows 8.1 settings not the control panel. Once this was done my fingerprint scanner worked as expected.

So just need to re-bitlocker my PC and we are good to go.