Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3ds Freezes if the port number is changed after starting inputredirection on a computer #9

Open
Professor-Marill opened this issue Oct 30, 2024 · 5 comments

Comments

@Professor-Marill
Copy link

Not sure if this is a problem with inputredirection, ntr or potentially luma, but thought it would be good to post.
If inputredirection is enabled and connected to the application on the computer and you change the port number on the 3ds, when you exit the menu the 3ds freezes and the only thing that works is the rosalina menu and you have to either stop inputredirection, or restart the 3ds. From my testing this happens regardless of if you have started a stream on the computer or not. I do plan on firing up wireshark and seeing what the network traffic is like when it happens.

OS: Ubuntu 22.04 LTS
NTR-HR: v0.2.1.2
InputredirectionFinalv3 Linux
Luma3DS v11.0
NTR Viewer: CuteNTR

@Professor-Marill
Copy link
Author

After some testing it appears that it happens it appears to happen if you remainin the NTR menus too long as well.
I will start with updating Luma on my N3DSXl.

@xzn
Copy link
Owner

xzn commented Oct 30, 2024

To change viewer's port, you will need to use a viewer that support changing the port number on the PC's side. (Currently that include Snickerstream and ntrviewer-hr)

For 3DS hanging when staying in menu too long, is there a specific game that you are running when it happens? I've had reports that some Kirby games would hang in that way, and it also happens with Rosalina menu as well so I'm not sure how to fix it.

Note:

For Snickerstream the port number on 3DS NTR-HR setting and PC side must match.

For NTRViewer-HR, just change the port number on PC side and hit Connect.

Examples:

image

image

@Professor-Marill
Copy link
Author

It happens anywhere if input-redirection is enabled and you press x and y to enter the menu, stay there for 20 seconds or more and then leave. The wire-shark data suggests that it freezes when the 3ds loses access to the WiFi. What games they were playing were most likely irrelevant. It was more likely that they were playing with input-redirection enabled and for some reason the 3ds dropped the connection. Its likely that the rosalina menu was also coincidental, because I am still able to ping ans send data while the rosalina menu is open.

Whenever you enter the NTR menu, it immediately stops sending packets over the network. No other device on that network can see it anymore while the menu is up. That's why it stops streaming when you enter the menu. This is most likely the case for the port change as well. When you hit the apply button for some reason it stops sending packets for a brief period of time. Can you point me in the direction of the source code for the NTR menu so I can take a look at what it does. Also would you mind specifying what Luma version you are running as well as what console so we can eliminate any variable causes.

I would also like to see if you can reproduce the steps. So here is what I did. After turning on your 3ds, run BootNTR 3.6 HR, then go into the rosalina menu an turn on input-redirection. After its on go into the NTR menu for about 20 seconds, and then leave the menu. It should be frozen. Another way to reproduce is to repeat the first two steps but go into the settings menu and turn off the wireless communications.

As for a way to fix it. I think its more important for people to know what the issue is and how to resolve it.
Hope this helps. Thank you for you patience and the quick reply.

@xzn
Copy link
Owner

xzn commented Oct 30, 2024

I tried following your steps:

  1. Choose NTR 3.6 HR from BootNTR
  2. Enable input redirection in Rosalina
  3. Go into X+Y for more than 20 seconds

I've only tested this on the home menu and my 3DS doesn't freeze. (Also I don't lose wifi when doing this.) I'm on Luma3DS 13.2.1 and my kernel version is 2.57

I'm not sure about going into wireless settings and disabling wifi. Doesn't that reset your console so you have to start NTR-HR again?

I can ping my 3DS while the X+Y menu is opened, and my X+Y menu code is similar to the Rosalina menu one (as in, I copied some code from there.) However the current release version does have a bug (which is a bogus while loop where I forgot to actually access the address and were testing the address itself) that's fixed in the latest prerelease.

Which version of NTR-HR are you using? If you are already using the prerelease version then I don't know what's going on..

Edit:

For the prerelease, the menu source code starts at:

showMainMenu();

The 3DS pausing code is here:

void acquireVideo(void) {

Another change in the latest prerelease I believe is the lack of busy loop (sleep is used instead) when waiting in the menu. Maybe that changes thing as well?

See

u32 waitKeys(void) {

@Professor-Marill
Copy link
Author

It does appear to be related to one of those. I downloaded the latest Pre-realease and it does solve the issue. Seems like that issue is specifically a problem in v0.2.1.2 and below and will stay fixed when a new release is published. Thank you for your assistance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants