[APP][NO ROOT] SkyGo for Fire TV

Search This thread

gaebler

Member
Oct 17, 2009
19
11
I got around the 20190005 error by bypassing the check for TV mode and the Sky logo started blinking as with the app on the tablet. Then it stopped with 20190000 error. It turned out this is some kind of generic error for a lot of things. I added a printstacktrace to display the exception in the log and it seems to be a cisco drm error that is not documented.
Essentially the exception is this:
DrmDeaktivationException(errorCode=INITIALIZATION_ERROR_UNKNOWN_ERROR, thirdPartyErrorCode=-35651509)
If that is translated into an unsigned DWORD its 0xFDE0004B which is unfortunately not documented - I have attached a PDF with error codes I found at a cisco web page.
I don't know if that error is related to earlier messages in the log related to HDCP, while the fire stick supports it, there is an api call, that returns 0x0 (HDCP_NONE) or maybe thats just the return code of the call with the result elsewhere, while the call before returns active 0x1 (HDCP_V1) and max 0x4 (HDCP_V2_2):
Code:
I WVCdm   : CdmEngine::QueryStatus
E MTKTEEClient: [MTKTEEClient::GetHDCPCapability()],get current is 1, max is 4
D OEMCryptoCENC: OEMCrypto_GetHDCPCapability result = 0x0
W de.sky.bw: type=1400 audit(0.0:41): avc: denied { create } for scontext=u:r:untrusted_app:s0:c512,c768 tcontext...permissive=0
I WVCdm   : CdmEngine::QueryStatus
E MTKTEEClient: [MTKTEEClient::GetHDCPCapability()],get current is 1, max is 4
D OEMCryptoCENC: OEMCrypto_GetHDCPCapability result = 0x0
I wonder if there is an API call to switch HDCP to a higher level.
Anyway, since Magisk hide and rename is active, there is not much I can do about this error. But interesting stuff.

I will give the liboemcrypto disabler for Magisk a try and see what the result it.
 

Attachments

  • VGDrmStatusCodes.pdf
    80.6 KB · Views: 203
Last edited:
  • Like
Reactions: puppinoo and Sus_i

gaebler

Member
Oct 17, 2009
19
11
The liboemcrypto disablers only result was that Netflix did not work anymore so I removed it.
Trying to add debugging output to VGDrmBaseService.smali did not work either, then the VGDrmBaseService Threads do not start and you get a TimeOutException. My guess is, that this is started from the libvgc.so and the size/checksum/contents of the class is checked, because even changing one constant from 0x04 to 0x02 led to that behaviour, reverting the smali back to what it was fixed the problem.
 

sherpya

Member
Jun 20, 2011
32
30
oss.netfarm.it
-35651509 is 0xfde0004b unfortunately not documented in the pdf (perhaps 0xfde is the prefix for DRM_CRED_ messages), I've tried to change all parts that do ui mode detection code (instead of skipping the check), also in vgdrm service, but same error, definitively something inside libvgc.so

---------- Post added at 07:18 PM ---------- Previous post was at 06:40 PM ----------

it's the apk signature, resigning the apk breaks the drm, I'm not sure magisk can fake the call to UiModeManager()->getCurrentModeType() but there is a shared pref that you can try to change if you have root, device_is_tv, set it to false with the original apk (after a first run)
 
Last edited:
  • Like
Reactions: gaebler and Sus_i

gaebler

Member
Oct 17, 2009
19
11
Thanks sherpya, yep, changing device_is_tv to false did the trick, the app starts now, but it looks awful and you need a mouse to click on something.
Now I need to check if there is a way to tell the app a meaningful resolution or screen size it actually starts with. I have not tried logging on to play something.
 

gaebler

Member
Oct 17, 2009
19
11
When using the wm command to set size to 1024x768 and density to 160 dpi, it looks good now and after logging on with my sky germany credentials I get error 36620 when trying to play something. So stuck again.
 

fosseperme

Senior Member
Dec 28, 2009
392
458
35
Salerno
www.facebook.com
I have same problem with sky go italy app and take this error from logcat

BufferQuequeProducer [it.sky.anywhere/com.bskyb.skygo.MainActivity] connect: already connected cur=1 req=1

Pratically the player of app see how if the display is already connected to reproduce the image, while is not connect yet.

See here for major details

A modify of android manifest, adding the value "TextureView.isAvailable()=True" should resolve the error, but actually modyfing the manifest change the signature of apk and the sky go app not recognized others signatures instead of the original.
 

I_did_it_just_tmrrow

Senior Member
Feb 27, 2011
364
68
When using the wm command to set size to 1024x768 and density to 160 dpi, it looks good now and after logging on with my sky germany credentials I get error 36620 when trying to play something. So stuck again.
I have same problem with sky go italy app and take this error from logcat

BufferQuequeProducer [it.sky.anywhere/com.bskyb.skygo.MainActivity] connect: already connected cur=1 req=1

Pratically the player of app see how if the display is already connected to reproduce the image, while is not connect yet.

See here for major details

A modify of android manifest, adding the value "TextureView.isAvailable()=True" should resolve the error, but actually modyfing the manifest change the signature of apk and the sky go app not recognized others signatures instead of the original.
I had the same error on my nvidia ShieldTV Pro (foster aka 2015 model).


To bring my app to this step I used TitaniumBackup. I installed it on my Pie phone and the I do a backup off the app and restored it on my Pie-TV.


It feels very close. But I got now the 36620 error too. @fosseperme isnt there a chance to alter the manifest afterwards with Magisk or something similar?
 

I_did_it_just_tmrrow

Senior Member
Feb 27, 2011
364
68
When using the wm command to set size to 1024x768 and density to 160 dpi, it looks good now and after logging on with my sky germany credentials I get error 36620 when trying to play something. So stuck again.
okay, I try a lot now too.

I thought my 36620 error could be caused by a attached hdmi on my AndroidTV device. I found this here to solve this:
Code:
chmod 000 /sys/class/switch/hdmi/state
chmod 000 /sys/devices/virtual/switch/hdmi/state
Source was this freaktab post


But somebody should check this on a fireTV stick.



Can I get more logs from the app with this module?
https://repo.xposed.info/module/tw.idv.palatis.xappdebug
Is there something special I need to do or is after enabling it in my logcat's?
 

gaebler

Member
Oct 17, 2009
19
11
okay, I try a lot now too.

I thought my 36620 error could be caused by a attached hdmi on my AndroidTV device. I found this here to solve this:
Code:
chmod 000 /sys/class/switch/hdmi/state
chmod 000 /sys/devices/virtual/switch/hdmi/state
Source was this freaktab post


But somebody should check this on a fireTV stick.

Did not work for me or changed anything with the 36620 error on the Fire TV 4k.
I remember that before it was posted that resigning the APK breaks Cisco DRM that I replaced the hdmi String occurences in libvgc.so with hXmi with a hex editor. I think I am going to retry that with the unpacked shared libraries within the /app directory structure, but my guess is that Cisco has somehow secured the libvgc.so with a hash/checksum to detect such manipulations. If I was a programmer, I would also reject the Sky app working if the hdmi switch exists, but is not accessible.
 

I_did_it_just_tmrrow

Senior Member
Feb 27, 2011
364
68
I followed all the steps successfully and I have an image but the following message still comes up "external display output is blocked"

https%3A%2F%2Fi.ibb.co%2FVJyHyWb%2FF4-A3-ED6-F-C59-E-42-F3-8-FDD-0588-D3-DD06-A5.jpg


Anyone knows how to solve it?

Thanks
The user @aiemassfiria was creating a dalvik-mod with lucky-patcher for the UK Sky-Go app.

See here: https://forum.xda-developers.com/android/apps-games/skygo-uk-modded-android-box-hdmi-output-t3861281



Sadly lucky-patcher mods are not welcome here, so a mod was deleting the link. I am not able to find the SkyGo.PATCH.apk .
 

gaebler

Member
Oct 17, 2009
19
11
Did not work for me or changed anything with the 36620 error on the Fire TV 4k.
I remember that before it was posted that resigning the APK breaks Cisco DRM that I replaced the hdmi String occurences in libvgc.so with hXmi with a hex editor. I think I am going to retry that with the unpacked shared libraries within the /app directory structure, but my guess is that Cisco has somehow secured the libvgc.so with a hash/checksum to detect such manipulations. If I was a programmer, I would also reject the Sky app working if the hdmi switch exists, but is not accessible.

Editing libvgc.so in the /data/app folder did not change anything, neither did a chmod 000 on the directory, which will reject someone from finding the hdmi state file(s).
 

I_did_it_just_tmrrow

Senior Member
Feb 27, 2011
364
68
Editing libvgc.so in the /data/app folder did not change anything, neither did a chmod 000 on the directory, which will reject someone from finding the hdmi state file(s).
ok good to know.
This tricky hdmi-check... :(
Is there a chance to find another or older libvgc.so in some others apps like:
SkyGo - older version
Foxtel Go
SkyGo Italy
SkyGo UK





I was trying to check some xposed and magisk modules.

There is a miracast / hdmi enabler called Miracast, Tethering HDMI Enabler by VR25 here: https://forum.xda-developers.com/apps/magisk/module-miracast-tethering-enabler-adb-t3611335
But it does not change anything. I send VR25 some logcats and props of my devices, but I guess he had not much time at the moment. @VR25 this is the thread I was talking about.

On the other hand there is a xposed module called Device ID MASKER by BytesReverser, see here:
https://forum.xda-developers.com/xposed/modules/app-4-device-id-masker-t3559682

The developer had a pro and a free version. I try the free version without success. I had no problem with paying some bugs for a solution for this but the dev does not reply to my questions until now.
@BytesReverser if you got my mail or if you read this here and think you can help us. It would be awesome!

I think it should be possible with root and perhaps with the help of magisk or edxposed to spoof a tablet-like device to an specific app. Sadly I had not the knowledge to do this nor find a working tool for that...
 
Last edited:

BytesReverser

Senior Member
Feb 10, 2017
86
32
127.0.0.1
ok good to know.
This tricky hdmi-check... :(
Is there a chance to find another or older libvgc.so in some others apps like:
SkyGo - older version
Foxtel Go
SkyGo Italy
SkyGo UK





I was trying to check some xposed and magisk modules.

There is a miracast / hdmi enabler called Miracast, Tethering HDMI Enabler by VR25 here: https://forum.xda-developers.com/apps/magisk/module-miracast-tethering-enabler-adb-t3611335
But it does not change anything. I send VR25 some logcats and props of my devices, but I guess he had not much time at the moment. @VR25 this is the thread I was talking about.

On the other hand there is a xposed module called Device ID MASKER by BytesReverser, see here:
https://forum.xda-developers.com/xposed/modules/app-4-device-id-masker-t3559682

The developer had a pro and a free version. I try the free version without success. I had no problem with paying some bugs for a solution for this but the dev does not reply to my questions until now.
@BytesReverser if you got my mail or if you read this here and think you can help us. It would be awesome!

I think it should be possible with root and perhaps with the help of magisk or edxposed to spoof a tablet-like device to an specific app. Sadly I had not the knowledge to do this nor find a working tool for that...

please email me with subject XDA in details about issues you are facing at [email protected]
 

I_did_it_just_tmrrow

Senior Member
Feb 27, 2011
364
68
please email me with subject XDA in details about issues you are facing at [email protected]
@BytesReverser thx for the offer. I send you a mail with attached logcats.

@VR25 thx for the tipp with XprivacyLua. I tried it but sadly without success. Checked all boxes and after that I try the pro app to fake values like: IMEI, IMID, Phone-Number, Android-ID... Same error.


I still think the indicator for android-tv is a connected hdmi. Is there a chance to fake temporarily a hdmi device on my phone, to see if I got the same error?
 
  • Like
Reactions: VR25

I_did_it_just_tmrrow

Senior Member
Feb 27, 2011
364
68
Another thing is that the sky app asks the UI manager what type it is and if UI_MODE_TYPE_TELEVISION (4) it returns TV and quits with error 20190005 device not supported.
Does anyone have an idea if the return value of class android.app.UiModeManager and method getCurrentModeType() can be tweaked with Magisk?
The UiModeManager comes from a typecast from what method getSystemService(Context.UI_MODE_SERVICE) of class android.content.Context returns.
There is also a check for ro.platform.has.tvuimode, but I have not found that being set in the firetv stick 4k.
I got it. Was able to write a little hook. You can check your inbox gaebler and sherpya

it's the apk signature, resigning the apk breaks the drm, I'm not sure magisk can fake the call to UiModeManager()->getCurrentModeType() but there is a shared pref that you can try to change if you have root, device_is_tv, set it to false with the original apk (after a first run)
This is not needed anymore with my little hook. I can sideload the app now with need to modify the /data/data/de.sky.bw/shared_prefs/de.sky.bw_preferences.xml

I got a new error, the same when I try to share my screen on android-phone.

Not to mention the check if /sys/devices/virtual/switch/hdmi/state contains anything other than 0. Which is also done in libvgc.so. I need to check if the 0 can be injected without harm to the running fireos. In addition sky registers a listener to get notified if the state changes (plug/unplug).

So in theory the app should run on fire os, but making it pass the checks is the challenge.
And yes, I am talking about using the app with a valid payed Sky account, just on the device of my choice (Fire TV Stick 4k). If the Apps on the Sky boxes weren't that limited (no Eurosport Player, no Amazon, almost all other streaming vendors missing except Netflix), I would save the efforts. The sky mini box is too big, limited in apps too and I still would need the fire tv stick and switch hdmi ports on the TV and use two remotes, which is a pain.
This is my next hook try. I need to find a way to hook java-file.io. Should be possible too.

With this adb command it looks better in androidtv:
Code:
adb shell wm density 260
 
Last edited:
  • Like
Reactions: neoxitric and Sus_i

neoxitric

Member
Feb 18, 2013
21
2
great progress! would love to use skygo on my firetv / Mi box s again. anything i could test or something i can do to support you?
 

Top Liked Posts

  • There are no posts matching your filters.
  • 14
    attachment.php

    Modified version of SkyGo for Fire TV

    Sky-Go-2018.04.12.apk

    Modifications:
    • App is up and running again
    • Updates blocked
    • Icon customized

    This is the German version, the UK app cannot be patched.

    .
    3
    The liboemcrypto disablers only result was that Netflix did not work anymore so I removed it.
    Trying to add debugging output to VGDrmBaseService.smali did not work either, then the VGDrmBaseService Threads do not start and you get a TimeOutException. My guess is, that this is started from the libvgc.so and the size/checksum/contents of the class is checked, because even changing one constant from 0x04 to 0x02 led to that behaviour, reverting the smali back to what it was fixed the problem.
    3
    Interesting. Keep investigating/reporting, please ;) :good:
    One thing I know from my tablet is that Magisk hide is necessary... and the magisk manager needs to be repacked/renamed to manager, easy to do as there is an option for that in settings.
    Can't remember in detail, I think without gapps the app won't play too, but I haven't tried it for a year or so, idk.
    Since Kindle/Fire Tablets are supported by Sky Go App these days, spoofing the manufacturer is probably not neccessary as well as installing play services (gms and gsf), there is code that builds the URL to query either amazon store or playstore (depending if manufacturer is Amazon it returns either one as default and the other as backup). There is probably a check (I have not found it yet) if the sky package is available in either of the stores and if its not, then the app is probably throwing an error message.
    The URL could possibly be used to compare the installed version vs. the available versions in the store to make things more difficult.
    Not to mention the check if /sys/devices/virtual/switch/hdmi/state contains anything other than 0. Which is also done in libvgc.so. I need to check if the 0 can be injected without harm to the running fireos. In addition sky registers a listener to get notified if the state changes (plug/unplug).

    So in theory the app should run on fire os, but making it pass the checks is the challenge.
    And yes, I am talking about using the app with a valid payed Sky account, just on the device of my choice (Fire TV Stick 4k). If the Apps on the Sky boxes weren't that limited (no Eurosport Player, no Amazon, almost all other streaming vendors missing except Netflix), I would save the efforts. The sky mini box is too big, limited in apps too and I still would need the fire tv stick and switch hdmi ports on the TV and use two remotes, which is a pain.
    2
    I had a look at the sky app, as mentioned there are multiple checks. One of the checks is for manufacturer=Amazon, which can be fixed by using Magisk.
    Another thing is that the sky app asks the UI manager what type it is and if UI_MODE_TYPE_TELEVISION (4) it returns TV and quits with error 20190005 device not supported.
    Does anyone have an idea if the return value of class android.app.UiModeManager and method getCurrentModeType() can be tweaked with Magisk?
    The UiModeManager comes from a typecast from what method getSystemService(Context.UI_MODE_SERVICE) of class android.content.Context returns.
    There is also a check for ro.platform.has.tvuimode, but I have not found that being set in the firetv stick 4k.
    2
    Can other users also confirm this, then I shut the thread?

    I don't have a Sky subscription anymore.
    App is still working for me on an androidTVBox. Thanks to OP cause the option of using silkbrowser is no longer an option.