Note: This blog is not intended for end users of an on-demand or live TV service. If you are an end user and have error 6030, you should contact the customer support of your video service provider (and mention this resolution).

The Issue:

  1. Regardless whether your PlayReady protected content is live or on-demand, do you suddenly start seeing error 6030 and subsequent video playback failure after May 8, 2012 in your Silverlight player? The error message for error 6030 is: This content requires an output protection which cannot be enabled on this machine.
  2. If you check your Silverlight version, is it Silverlight version 5.1, instead of prior versions such as Silverlight 5.0?

If your answers are yes for both questions, this short blog may be for you.

 

The Fix:

If you are running PlayReady Server SDK Professional Edition, regardless whether your content is live or on-demand, all you need to do is to add the following PlayEnabler object with a specific technology GUID into your license server handler code:

           PlayEnabler objPlayEnabler;

           //HD or SD

           objPlayEnabler = new PlayEnabler(new Guid("786627D8-C2A6-44BE-8F88-08AE255B01A7"));

           //SD

           // objPlayEnabler = new PlayEnabler(new Guid(new Guid("B621D91F-EDCC-4035-8D4B-DC71760D43E9"));

            playright.AddPlayEnabler(objPlayEnabler);

where playright is an instance of PlayRight class which should already be present in your license server handler code. Yes, basically, the PlayEnabler is added into the PlayRight and the PlayRight is added into MediaLicense.

If you are using live TV scalable license feature in PlayReady Server SDK Premim Edition, you should add the same PlayEnabler object, but in your Root License Server code. There is no need to change your leaf license server code.

After this code change, PlayReady licenses will contain the Play Enabler technology GUID and 6030 issue should be resolved.

This resolution works with both persistent and non-persistent licenses on PlayReady Server SDK v 2.1, v 2.0 and v 1.5.2.

 

The Background:

This is not a bug, rather it is a change since Silverlight 5.1. The best way to understand the details and reasons for this change is to read the new Microsoft PlayReady compliance rules published here (http://download.microsoft.com/download/9/B/A/9BAB8317-611E-44DD-9558-48A88B2EB77F/Compliance_Rules_for_PlayReady_Final_Products_15_Mar_2012.doc). The related content is on page 18-19, Section 3.8 Output Control for Unknown Outputs.

One common quesiton is: does adding PlayEnabler bypass any Output Protection restriction?

  1. If the output connector detection returns unknown, none of the Output Protection restrictions set in PlayReady license server are respected or applied. In this
    case, the only Output Protection being applied is PlayEnabler (allow or disallow).
  2. If the output connector detection returns a known result, Output Protection restrictions set in PlayReady license server are respected and applied. Output
    Protection behavior is unchanged in this case and no OP is “bypassed”.

As you can see, adding PlayEnabler is actually accepting “best effort” treatment for unknown connectors. Not adding PlayEnabler is actually enforcing
Output Protection for unknown connectors, which is the default behavior in Silverlight 5.1.