cobalt

Cobalt for the nintendo switch


i was poking in the Youtube-app for the Nintendo Switch and saw that it's the cobalt browser pointing to youtube.com/tv. Since the switch is lacking a (good) browser*, i thought that it may be possible to compile a/the browser for the Nintendo switch myself. Learning about the topic showed me that i don't know nearly enough to do this myself and i also have no idea where to get some help with this.

Switch apps are compiled with the nx_sdk, which is reserved for "approved" developers and under an NDA, so its not exactly easy to try to copy what Youtube did. We do have a toolchain to compile homebrew and it features a lot of the same things of the official SDK but it's still just for hombrews.

In my despair i tried to modify the Youtube-app to just use a different domain than youtube.com, which works but there are other checks in place that i cant really solve with my limited assembly knowledge.

So i my question(s) is/are: Is there a way to get cobalt to the switch as homebrew? If yes, where can i start and what do i need? Is the youtube-app (switch) source code available somewhere (minus the switch SDK)? What else could lead me to an acceptable solution of having a/the browser on the Nintendo Switch?

* Officially the switch has no browser, however there is a very limited Netscape browser for situations like wifi-captive portals or triggered by ingame TOS, health notices or video playback. The browser can be run by homebrew any time but like said above, it lacks functionality that other browsers all have.


Solution

  • The Cobalt source is available from https://cobalt.googlesource.com/, but it won't include the Switch port code. You could try implementing your own Switch port, but it is not going to be trivial.

    More importantly, though, Cobalt is not a general-purpose browser. It is not based off of WebKit, and it only implements a greatly reduced subset of web specifications. Websites will not work out of the box on Cobalt, so it's not a promising endeavor.

    Cobalt is designed to run single-page web apps that target Cobalt directly. By making many simplifying assumptions, it can be more embedded-friendly.