At long last the much promised and oft delayed blog post update that I’ve been promising off and on for MONTHS. Going to cover a huge range of topics here, therefore nothing that I cover will get extensive depth or attention. Will cover the App Store status, nControl, chimeraTV, electraTV, uicache / ldrestart recent changes / snafu, DalesDeadBug update, cycripter and any known issues that are occuring with any of the above. Will also include a link to a handy tutorial for saving OTA blobs for the 4K AppleTV, just in case we find a way to make them useful!

Saving 4K OTA blobs covered by idownloadblog:





nitoTV App Store

This is several months behind schedule, and at this point its pretty much entirely my fault. I still need to do some payment processing work on the amazon front regarding declined cards / failed payments, etc. Im going to be looking into this immediately after i finish writing this post.

If you hadn’t noticed the new nito.tv website launched at the same time chimera(TV) did. You may have also noticed a beta code for people to help beta test it before i finally launch it, there is no way to get this code yet, not until i finish the payment work I mentioned above. Off the top of my head, this is the only thing holding us back anymore.

nControl

Obviously nControl was released a few months ago, to resoundingly positive response (thank you!) It’s available on chariz repo for 10$ and is currently my only source of income, so all purchases are greatly appreciated! If you need any additional details about nControl in general I kindly redirect you to the exhaustively documented wiki page that I maintain on the subject: https://wiki.awkwardtv.org/wiki/nControl

The tvOS version is only available through patreon and i’d actually prefer that people no longer go that route, patreon makes it WAY too much effort to get the money they owe you so I massively regret doing that in the first place, just didn’t want to launch iOS and tvOS separetely and honestly thought the store would wrap up shortly thereafter.

chimeraTV

For the first time (potentially ever) the tvOS jailbreak was released in tandem with the iOS version of the Electra Teams *OS 12 jailbreak. This was a momentus occasion and was a large source of me being delayed from focusing on completing the nitoTV App Store. Its a rock solid jailbreak (especially with latest release) and I’m quite proud to maintain the tvOS version of it. It covers 12.0 - > 12.1.1 on tvOS, this is due to the fact the Apple staggers version numbers between iOS and tvOS for some unknown and maddening reason. For instance (12.1.2 on iOS == 12.1.1 on tvOS). It drives me just as mad as it does the rest of you, but it’s been like that since the beginning of ARM based AppleTVs (send gen +) So I doubt it will ever change.

Candidly it was a bit of a challenge to get AppleBetas awesome UI to cooperate on tvOS but i’m glad iIforced myself to use the same code as much as possible (lots of ifdefs), since its written in Swift you can imagine the fight I put up to avoid using the same code base for the UI stuff. Eventually I acquiesced (yes I do make concessions!)

electraTV

Wow it’s really been a long time since i’ve updated this blog (sorry!) electraTV was released several months before chimera (well the initial versions were, the 11.4.1 iteration wasn’t THAT long ago) The electra jailbreak covers ALL versions of 11 (11.0->11.4.1) In its latest jailbreakd2 based iteration it is incredibly stable and reliable. Not much else to say about it!

uicache / ldrestart changes

I wasted most of last week fighting against issues with ldrestart. If you aren’t familiar with ldrestart it is responsible for running after jailbreaking or loading any new Tweaks to make sure anything they may inject into gets restarted. With the older version of jailbreakd (in backr00m & versions of electraTV that supported 11.2.1->11.3, but not 11.4.1) couldn’t handle the speed at which all the daemons get reloaded by ldrestart, this would lead to a lockup that would result in the system eventually rebooting (after being locked up for several minutes).

ldrestart has actually always been an issue, even when i used a kpp bypass in greeng0blin (Im fairly certain thats accurate!) So as a workaround i used to ‘killall -9 backboardd’ That would respring enough different things (PineBoard, HeadBoard et al) that i would be sufficient for the things i most commonly injected. Obviously this is a hacky stopgap, and uicache used to also kill a variety of other processes to cover them as well (lsd, appstored, etc) to help cover things like DalesDeadBug.

After coolstar re-wrote uikitools (including uicache) i decided it was probably a good time for me to take a look at uicache again. If you want to know how much of a hassle and challenge uicache was in the earlier days (pre APFS) read some of the older posts on this blog. It’s history is covered ad naeuseum.

Since we no longer need to load from /var/mobile/Applications, a lot of the extra hurdles in uicache have ceased to be necessary, essentially all that is really needed is [[LSApplicationWorkspace defaultWorkspace] _LSPrivateRebuildApplicationDatabasesForSystemApps:YES internal:YES user:NO]; + tweak to force App states to return TRUE for isEnabled.

In the course of thinning down uicache I decided it’d be a good time to try and get ldrestart working on tvOS. After battling with it off an on all last week I came up with something that appeared to work pretty consistently on tvOS 12. Instead of being thorough and testing on 10.2.2->11.4.1 as well I hastily released it. This lead some people to get stuck in respring loops / lockups that eventually restarted the device. This was due to the fact that uicache:restart in postinst scripts would trigger ldrestart instead of uicache in nitoTV.

In the older version of uicache there was an issue that existed once our new apps were loaded in the UI, a respring was never “required” but if it didn’t occur all applications would exhibit weird behavior where they wouldnt launch, or wouldnt exit once launched, etc, to “fix” that I made it always kill backboardd as a compromise. Since this was also no longer necessary I made uicache killing backboardd “optional” by appending -r. Lack of forsite here, the old nitoTV wouldn’t know backboardd wouldn’t respring anymore, nor to run ldrestart when finish:restart was received, this lead to people getting stuck with a red progress indicator forever when trying to update to latest (at the time) version of nitoTV.

Due to the depth and gravity of the issue I sidelined getting ldrestart working in backr00m (one of the only places it has show stopping issues still) I reverted to uicache always respringing until I have time to revisit the issue.

In conjunction with deciding I was pouring too much time into this issue Chimera 1.0.6 was released the other night with massive stability improvements. Libtakeover & related injection was stripped out into inject_criticald which provided massively stability improvements for the jailbreak, this made focusing on getting that out a few hours after the iOS release a very high priority.

The big takeaway from all of this:

* uicache run by itself (no arguments) is sufficient to gets apps loaded / removed after installing them into /Applications.

* ldrestart is part of uikittools on tvOS now and should be safe to run on latest electraTV release and chimeraTV release, but won’t work at all on backr00m.

if you have installed a tweak and it doesnt seem to be working, try running ldrestart, it should help.

sleepy/wake

Part of the uicache update came the addition of 'sleepy’ and 'wake’ binaries. Use them from the command line to sleep or wake your AppleTV.

DalesDeadBug

This was recently updated to spoof newer versions, if you can’t seem to get it working after installing it, prime candidate to run ldrestart after installing or making changes to that don’t seem to be propogating. It works to get SteamLink installed on tvOS 10.2.2, but crashes immediately, not sure if im going to be able to fix it. It won’t be possible to make that a priority (I looked into it briefly, thats the best I can do for now).

If you need more info on what DalesDeadBug does, please read the wiki page: https://wiki.awkwardtv.org/wiki/DalesDeadBug

Cycripter

If you didn’t notice, yesterday I decided to take one more brief detour to rectify a glaring deficiency in recent jailbreaks, inability to use cycript. I might have my differences with saurik recently, but this is still one of the most amazing projects he ever undertook and gifted to us.

cycripter / CycriptLoader.dylib have been updated and open sourced to make it easier to use cycript on iOS or tvOS. All details necessary can be viewed on the wiki and the git.nito.tv repo.

More Details: https://wiki.awkwardtv.org/wiki/Cycript

Known Issues

I havent kept a very exhaustive list of these, so I’m only going to cover two that I can think of right now.

* Infuse doesn’t work on chimeraTV.

Try launching infuse before running the jailbreak (so if you are currently in a jailbroken state, reboot first)

if you run the jailbreak after Infuse has already been open it will work. I don’t think it is necessarily any jailbreak detection, but it may be some kind of a protecetion from code injection, im honestly not sure.

* Music app doesn’t work

Try updating to the latest version of chimeraTV on https://chimera.sh it didn’t work in the prior version for me either, but after the latest install it started working.

Wrap-up

That’s it for now, my core focus after this post is going to be to wrap up work on my long delayed tvOS App Store. I really hope to get it wrapped up this week or next. Stay tuned! And if you made it down this far, thanks!!