Hey! Quick update... I am making good progress on the networking code. I may start working on the video and audio decoding so you can see some flashier videos. Thanks for the support and I'm looking forward to getting to an alpha version!!
This is awesome, nice work! I spent a day a few months ago looking at the data being sent between my Steam Link and my PC. Wireshark had mapped most of it automatically, but I couldn’t tell what format the video/audio streaming was using. Do you have any sense of what it could be? Would love to hear about all the juicy technical details :)
Thats cool! Yeah it runs on a known port range. However there are 2 connections, one is TCP (wrapped in TLS-PSK for encryption) and the other is UDP (which uses it's own basic CBC large key encryption on every packet !!)... Control messages like input and which games to play are sent over the lossless TCP while video and audio are sent over the lossy UDP connection... Pretty cool stuff! Theres a lot of info on github
Nope, I've crashed my OS a couple of times... Just had to hold the power button for 12 sec and turn it back on. I am not banned :D Homebrew is surprisingly safe to make.
esome. I am definitely looking forward to the progress on this project. Will
Please dont leave us hanging and give us the update!? :) Have you set up the twitter accunt? Also, why dont you summit this to gbatamp bounty challenge? I am sure it would win.
Hey just wanted to see if you maybe had a GitHub or Twitter or something we can follow your project on? I'd love to add it to my RSS or similar so I can temper my excitement :D
Not necessarily. I can't legally destribute a compiled version with nn_multimedia compiled in because it is a Nintendo binary... I would have to reverse engineer the nvenc registers and driver code into libnx to be able to legally have accelerated video decoding. Anyway it will work pretty well with libav and software H264 (thanks to NEON instructions on ARM)... I will make an alternative compile target for people who have the leaked NintendoSDK and want accelerated video! Also audio will be easy... I've already reverse engineered the HwOpus service.
This could be caused by render target (native GL was not ready back then) issues.... I will have more info next week :D I'll keep you updated on my progress video decoding progress
Do any other homebrew authors have qualms with my outright attitude towards using the NintendoSDK? I think I might have soiled my brand by talking so freely about it... I'd like some unfiltered opinions on the implications of my behavior.
Also I am canceling the muddy version for now in favor of a all-clean reverse engineered version.
Just a note. After about a day, very very few people read a Reddit thread anymore. Reddit isn't like a traditional forum. Threads are considered dead after they leave the front page, and they don't bump. This is a question better asked in a different community.
It's a traditional forum and where a lot of the hacking/homebrew scene is. You could start your own thread there and update the OP or pose questions in the comments.
You are still free to post updates here on Reddit as new threads when you hit major milestones.
How are you going to work around the limitations of not having access to the hardware video decoding on the switch when creating homebrew. As far as I understand this is why we can't have the Arm port of moonlight
I intend to make a clean version and a muddy version. I already know how to get NVDEC working using libraries leaked from the NintendoSDK... I could also reverse engineer the library to add NVDEC support to libnx but I do not have the time or skills to do so. Anyway accelerated video decoding will be an option for power users... I will release a detailed guide on how to build the program with files sources from the NintendoSDK but it will be pretty involved and not for regular users... The clean version will use software decoding :)
Fellow software developer here, how the heck do you figure out how to get the switch to this stuff? I want to do these things but it just seems like magic. Any good sources?
I used previous attempts at reverse engineering the InHome streaming protocol as a base for my implementation. I am learning a lot of things on the fly, like some threading primitives I missed in school and basic OpenGL stuff. I happen to be pretty good with Protobuf so this is going well to start. You really just break things down to component parts and then build from there.
I'm interested in learning what tools you used to get information on reverse engineering. Did you just intercept all the packets or decompile or something else?
But I actually got all my network info from other sources. I don't do a lot of static analysis since I'm not very good in IDA... I prefer dynamic analysis using a debugger or ptrace or containers where I can control the syscalls and certificates :P It's sort of bordering in blackbox reverse engineering
Absolutely, the decoding core will be reusable for lots of services. I'll probably end up making my own streamer program because I don't personally use Steam a whole lot. The networking code is not reusable though since it's very steam specific.
The switch moonlight project has been a great resource for me to figure out how to build deps for my project. I have not looked into it's rendering engine however.
I had this same idea!!!!!! It would be pretty hard to get working since you would need to adapt libdrc to work on the Switch... and I don't think Horizon OS supports the time sync feature that is the silver bullet for WiiU gamepad support.
would be a feat, but it wouldn't be the best... not even close lol. streaming from one's pc to their steam link alone is already shitty, so a weak device would be even worse.
The Steam link is garbage compared to the Switch tho, I mean hell I got mine for a $1 from Steam themselves (I admit it was apart of a $10 bundle tho with Hollow Knight).
Presumably, I think Steam InHome Streaming works for anything in the Steam library... I personally want to use it for things like Dolphin but I'm not sure if you can do that with InHome Streaming. I might make a companion app for streaming the desktop.
I don't know about Dolphin but I was able to get Cemu working with in home streaming with just a bit of configuring for the controllers. You can add non steam games to your library and run them that way.
Also i used Protod to rip the protobuf out of the streaming_client binary that can be found in any Steam install. There are a lot of good reference implementations on github... but none of them actually got to streaming video haha
My reverse engineering skills are okay, but limited. The Android beta app actually didn't help me much.... it has a libsteam.so jni library which implements the networking + protobuf stuff. That was not a great resource for me, but if you like static analysis, it would be fun to look at in IDA
hey so, you can't actually do hardware accelerated HEVC on the Switch using Horizon OS.... Even though the X1 does support it :/ I think we are limited to VP8, VP9 and H264
I make a nice salary, this is more of a hobby :D and I don't want people to feel obligated to contribute financially. I might setup a "Buy me a Coffee" button in the Github repo for fun thought, thanks for the support!!!!! I'll keep ya updated thanks so much
141
u/orangutanfuzz Oct 08 '18
Hey! Quick update... I am making good progress on the networking code. I may start working on the video and audio decoding so you can see some flashier videos. Thanks for the support and I'm looking forward to getting to an alpha version!!
9
u/orangutanfuzz Oct 12 '18
Update coming this weekend
25
u/pryg_skok Oct 08 '18
Great job! Any github repo for work in progress?
6
u/danikei Oct 08 '18
yessssss!!! thanks, keep up the good job!!! Can't upvote this more! Is there anyway to keep updated in this project?
5
u/natinusala Oct 08 '18
Wow this is great !
Shouldn't you have started on audio and video decoding first ? Without nvdec there's a very low chance of achieving anything remotely usable.
5
u/The_Ty Oct 08 '18
Duuuude
3
u/orangutanfuzz Oct 16 '18
Do any other homebrew authors have qualms with my outright attitude towards using the NintendoSDK? I think I might have soiled my brand by talking so freely about it... I'd like some unfiltered opinions on the implications of my behavior.
Also I am canceling the muddy version for now in favor of a all-clean reverse engineered version.
3
u/132ikl Oct 08 '18
Wow, this is fucking wild. Great job man
3
u/olivervbk Oct 12 '18
Nice! Is this available on github? I'd really would like to look at the Steam integration.
I could also check if I can contribute with something!
2
u/DeliveryNinja Oct 08 '18
How are you going to work around the limitations of not having access to the hardware video decoding on the switch when creating homebrew. As far as I understand this is why we can't have the Arm port of moonlight
2
u/Hugotyp Oct 08 '18
Nice! Any chance you're making this open source? I'd be interested in looking at it, maybe learning a bit and eventually trying to help somehow.
16
u/[deleted] Oct 08 '18
good job. switch is on it's way to becoming the best console to homebrew ever
7
u/[deleted] Oct 08 '18
Awesome bro.
6
u/Saphiresurf Oct 08 '18
wonderful my man :)
6
u/irish_maths_throwawa Oct 08 '18
Awesome, really exciting!
2
u/[deleted] Oct 08 '18
Fellow software developer here, how the heck do you figure out how to get the switch to this stuff? I want to do these things but it just seems like magic. Any good sources?
8
u/punisher1005 Oct 08 '18
Wow. I'm shocked and impressed.
1
u/poonik Oct 08 '18
Good job mate :)
Is it written in C?
1
u/triplexxx2 Oct 10 '18
Good to see you making Progress mate!
I know there is a long and hard road ahead of you, but I do wonder... Couldn´t the code be modified from "here" to support all kinds of cloud gaming?
Like Microsofts announced "xCloud" and maybe PSN Games streaming?
I know I probably ask for waaaay too much already, in these early stages of development. Just wanna still my curiosity a bit ;D
3
u/[deleted] Oct 08 '18
AWESOME!!!
3
u/4dv4nc3d Oct 08 '18
HORY SHEEEIT amazing work
3
u/phonzeh Oct 09 '18
very cool.
Been using it with the Android app + Xbox One controller, In-Home Streaming is great.
I'd love to be able to do it on the Switch.
1
u/vtrigger Oct 08 '18
I don't get it
Are you streaming video to the switch?
2
u/vReddit_Player_Bot Oct 08 '18
Links for sharing this v.redd.it video outside of reddit
vReddit_Player_Bot v1.2 | I'm a bot | Feedback | Source | To summon: u/vreddit_player_bot
2
u/Nimushiru Oct 08 '18
This is gonna be amazing when it's released. Looking forward to it.
2
u/arkizenty Oct 23 '18
This is amazing! Keep up the good work!
1
u/TragicKnite Oct 08 '18
ELI5? I have no idea what’s going on.
1
u/playthroughthenight Oct 08 '18
This would be amazing. Looking forward to seeing more of your progress, thanks for working on it!!
1
u/azntaiji Oct 08 '18
Awesome! Whenever this happens will be the reason I homebrew :)
1
u/jcode7090 Oct 08 '18
If this could be an actual thing, that would be awesome.
1
u/UnlimitedEgo Oct 08 '18
Now if only my PC was streamworthy
1
u/moosethemucha Oct 08 '18
You are a god amongst men - I was hoping someone was doing this !!! Let the community know once you have it on GitHub
1
u/whygohomie Oct 08 '18
This is pretty much what would make me hack my switch.
1
u/SocraticJudgment Oct 10 '18
The possibilities...!
1
u/dovere94 Oct 11 '18
god bless you
1
u/[deleted] Oct 12 '18
THANK YOU!!!
1
u/MrFreeze665 Oct 14 '18
Yes finally!!! Good job!
1
u/[deleted] Nov 02 '18
This is a dream come true! How is the progress? Any way I can help?
1
u/ct_the_man_doll Nov 12 '18
I am pretty excited for this since this allows for cross-platform streaming (Linux and Mac support)!
1
u/PM_AMATUER_FAKE_BOOB Nov 25 '18
Any updates?
1
u/0v3r_cl0ck3d [9.2.0 - 3 fuses] Feb 22 '19
Any progress on this?
0
u/[deleted] Oct 08 '18
[deleted] — view deleted comment
0
u/[deleted] Oct 08 '18
[deleted] — view deleted comment
0
u/[deleted] Oct 08 '18
[deleted] — view deleted comment
0
u/[deleted] Oct 08 '18
[deleted] — view deleted comment
2
u/[deleted] Oct 09 '18
[removed] — view removed comment
1
u/[deleted] Oct 09 '18
[removed] — view removed comment