LoungeChair - Access Nintendo Switch Online services on your PC

LoungeChair

rDrSrnm.png


This application does not support voice chat at the moment.

With LoungeChair, you can access Nintendo Switch Online game services like SplatNet 2 on your PC. All you have to do is sign in with your Nintendo Account. (Note: I will never be able to see your personal information or access your Nintendo Account. Source code for the application is provided on GitHub as well.)

Downloads

Go to the latest release page on Github to download LoungeChair. Please note that this program is in alpha and as such may contain bugs. Please report these on the GitHub Issues tracker.

FAQ

Will this application ever support Voice Chat?

Maybe. It is on the list of planned features, but it would require me to invest more time for reverse
engineering the voice chat protocol that the smartphone application uses. (... Anyone want to help? lol)

Where is the source code?

There are two parts to the application. The WinForms application's source code can be found at this location.
Source for the second part, which is a library for the Nintendo Account and Nintendo Switch Online APIs,
is located here.

Credits

Special thanks:
  • Yahya14
  • Airball
  • MissingNO123
  • /u/frozenpandaman

Shoutouts:
  • Simon
  • MasterF0x
  • Everyone else from the LOVE PACK for TOGETHERNESS ❤ Modding Hub
 
Last edited by OatmealDome,

Kioku

猫。子猫です!
Member
Joined
Jun 24, 2007
Messages
12,010
Trophies
3
Location
In the Murderbox!
Website
www.twitch.tv
XP
16,163
Country
United States
This is awesome. I'm wondering if Ninty won't do an official PC app. I've got everything running through my mixamp for sound. So, talking through my pc is more practical than a damn mobile device.
 

OatmealDome

Well-Known Member
OP
Newcomer
Joined
May 12, 2015
Messages
97
Trophies
0
XP
341
Country
United States
hmm, as far as I know it feels like splatnet 2 is just a webpage with cookies telling the nnid, it looks like a webpage with how it loads up
Looks really good, impressive!
quick question, since your window is named "Browser", does nintendo uses a web view in their application to load the online services? :O

You're exactly correct. Game services are loaded in a glorified web browser. (Additional info: The initial request needs a token, and the server sends a session cookie (in SplatNet 2, "iksm_session") back in response which is then used for the rest of the game service's session.)

The Question would be if the Server gets information about the User-Agent and stuff - since we know the Switch can transmit alot of data it should be double-checked.

Otherwise - nice1 :)

Currently, the user agent sent to the server is "AccountsHelper/1.0.0 NASDKAPI" for all requests. The legitimate application is different and uses two different user agents. Additionally, it includes some other HTTP headers saying the platform (ie iOS or Android).

RIP no native Mac support :P
(Oh well x3)

It'd be nice to see if you could eventually make smth like this into a responsive webapp; while that kind of defeats the purpose per se, I'd like to be able to use my Online Services w/o having to use the app on my phone

Unfortunately, my Hackintosh installation and my MacBook are out of service, so I can't help you there.

I'm not really a webapp developer, so I think that would be for someone else to do.


This error confuses me. It's literally something that should not happen at all. Does it still happen when you restart the application?
 

Supercool330

Well-Known Member
Member
Joined
Sep 28, 2008
Messages
752
Trophies
1
XP
1,129
Country
United States
Fun fact, I already spent some time reverse engineering the voice protocol. The first part is receiving invitations, which appears to be done using Firebase Cloud Messaging, which unfortunately doesn't have a native client, but the browser client has typescript source maps, so it would be possible to implement a native client based on that (note that I'm pretty sure this requires an HTTP/2 push client). The voice chat is actually implemented in C++ and compiled to a native binary. Based on a very cursory skim, it uses WebRTC for the underlying communication protocol, and Opus for voice encoding. I find it sort of interesting how heavily Nintendo relied on web (browser) compatible technologies for a client they seem to only intend to release as a mobile app. Unless there is something big that I'm missing, a pure website implementation of the client should be possible (but would require a decent number of newer technologies such as Service Workers, WebRTC, MediaStreams, HTTP/2, and more).
 

RandomUser

Rosalina in Plush Form
Member
Joined
May 9, 2010
Messages
967
Trophies
1
XP
1,042
Country
United States
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.Exception: Lounge login failure: Resource not found.
at LoungeChairAPI.Lounge.OnlineLounge.<Login>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at LoungeChair.MainForm.<LogIntoOnlineLounge>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at LoungeChair.Forms.LoadingForm.<LoadingForm_Load>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2101.1 built by: NET47REL1LAST
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
LoungeChair
Assembly Version: 1.0.6422.34538
Win32 Version: 1.0.6422.34538
CodeBase: file:///D:/Downloads/LoungeChair-1.0.6422.34538/bin/LoungeChair.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2094.0 built by: NET47REL1LAST
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2093.0 built by: NET47REL1LAST
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2046.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
LoungeChairAPI
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///D:/Downloads/LoungeChair-1.0.6422.34538/bin/LoungeChairAPI.DLL
----------------------------------------
CefSharp.Core
Assembly Version: 57.0.0.0
Win32 Version:
CodeBase: file:///D:/Downloads/LoungeChair-1.0.6422.34538/bin/CefSharp.Core.DLL
----------------------------------------
System.Net.Http
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2046.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Net.Http/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Net.Http.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2099.0 built by: NET47REL1LAST
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2046.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2046.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.7.2046.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
CefSharp
Assembly Version: 57.0.0.0
Win32 Version: 57.0.0.0
CodeBase: file:///D:/Downloads/LoungeChair-1.0.6422.34538/bin/CefSharp.DLL
----------------------------------------
Microsoft.GeneratedCode
Assembly Version: 1.0.0.0
Win32 Version: 4.7.2046.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Newtonsoft.Json
Assembly Version: 10.0.0.0
Win32 Version: 10.0.3.21018
CodeBase: file:///D:/Downloads/LoungeChair-1.0.6422.34538/bin/Newtonsoft.Json.DLL
----------------------------------------
System.Numerics
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2046.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
System.Runtime.Serialization
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2046.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Serialization/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll
----------------------------------------
System.Data
Assembly Version: 4.0.0.0
Win32 Version: 4.7.2046.0 built by: NET47REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Do you have the .NET Framework 4.7 installed? it probably missing some updated run-time libraries.
 

OrGoN3

Well-Known Member
Member
Joined
Apr 23, 2007
Messages
3,241
Trophies
1
XP
3,273
Country
United States
Last edited by OrGoN3,

OatmealDome

Well-Known Member
OP
Newcomer
Joined
May 12, 2015
Messages
97
Trophies
0
XP
341
Country
United States
Connecting to Nintendo services via non-Nintendo devices breaks their TOS/AUP. Thus, there is always a possibility for a ban.

Edit: So what exactly is this? Is it a clone of their mobile app? https://play.google.com/store/apps/details?id=com.nintendo.znca

Yep, exactly why I said I wasn't sure. (It would be a really shitty thing to ban for. Just block my application's access, Nintendo pls)

And yes, it's a clone (w/o voice chat) for their mobile app.
 
  • Like
Reactions: TotalInsanity4
D

Deleted User

Guest
Just tried using it, keeps giving me a error with "resource not found". Have Microsoft .NET 4.7 installed and I went ahead and re-install just in case. still the same error.
 

OatmealDome

Well-Known Member
OP
Newcomer
Joined
May 12, 2015
Messages
97
Trophies
0
XP
341
Country
United States
Just tried using it, keeps giving me a error with "resource not found". Have Microsoft .NET 4.7 installed and I went ahead and re-install just in case. still the same error.
Deleted and tried again, crash. Deleted and tried another account, crash. Not sure what to do or how I could help you on this.

Okay, I looked into this. The only way I can reproduce this issue is if you use a Nintendo Account that is not linked to a Switch. Do you guys/gals have Switches linked to your account? (I hope so, otherwise what is the point of using this application lol)
 
  • Like
Reactions: Subtle Demise

pokemoner2500

Well-Known Member
Member
Joined
Aug 14, 2013
Messages
882
Trophies
1
Age
24
XP
1,593
Country
United States
Okay, I looked into this. The only way I can reproduce this issue is if you use a Nintendo Account that is not linked to a Switch. Do you guys/gals have Switches linked to your account? (I hope so, otherwise what is the point of using this application lol)
Yep, it's linked alright.
 

Keizel

Well-Known Member
Member
Joined
Jun 28, 2015
Messages
381
Trophies
0
XP
372
Country
United States
I can confirm that it works but only in english. When I use my smartphone, I can read the app in spanish.
 

ogioto

Active Member
Newcomer
Joined
Mar 30, 2017
Messages
26
Trophies
0
Age
32
XP
90
Country
Isn't installing an android emulator on your pc waaaaay easier? It's not bad having a program for those, who can't or don't wanna deal wit emulators and stuff, but at least they could have developed more before releasing it in this state, even for an alpha...

PS: The upside of the android emu is that u can use it for a shit ton of cool things, beside the Nintendo app (like other cool apps/games)
 
D

Deleted User

Guest
Okay, I looked into this. The only way I can reproduce this issue is if you use a Nintendo Account that is not linked to a Switch. Do you guys/gals have Switches linked to your account? (I hope so, otherwise what is the point of using this application lol)

I linked it for sure!
 

_______

 
Member
Joined
May 13, 2016
Messages
515
Trophies
0
XP
834
Country
Japan
RIP no native Mac support :P
(Oh well x3)

It'd be nice to see if you could eventually make smth like this into a responsive webapp; while that kind of defeats the purpose per se, I'd like to be able to use my Online Services w/o having to use the app on my phone

It's written in C#, which means you can port it to Swift/Objective-C easily.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: Scratch it?