DS-Homebrew / TWiLightMenu

DSi Menu replacement for DS/DSi/3DS/2DS
https://wiki.ds-homebrew.com/twilightmenu/
GNU General Public License v3.0
3.23k stars 202 forks source link

OTA/Network updates #1525

Open noah1510 opened 3 years ago

noah1510 commented 3 years ago

As far as I know to update you always have to shut down your DS, put the SD card in your Computer and then copy the new files over. This is tedious and you have to manually check if there was an update.

All DS model since the DSi have internet connectivity, which could at least notify that there is an update available. In the future it would be nice to have OTA updates, which allow you to do the full update process from your DS without the need for a computer.

Here is a list of things that could be done:

Peter0x44 commented 3 years ago

All DS model since the DSi have internet connectivity, which could at least notify that there is an update available. All DS models period do. The only difference is that the DSi can use wpa2, but there are no (working) libraries currently to use it within homebrew.

The releases are also provided as 7z files, which I figure use the default dictionary sizes (16mb)

For decompressing a file compressed by LZMA method with dictionary size N, you need about N bytes of memory (RAM) available. The DSi does not have enough memory to even do this and the DS phat/lite have even less, but 7z doesn't have to be used

This is really a tremendous amount of effort to implement, and I think it would be better suited as a totally separate updater homebrew, like universal updater, instead of being a part of TWiLight Menu++

noah1510 commented 3 years ago

no (working) libraries currently to use it within homebrew

I didn't know that was the case. I figured that there would be some network library since the DS homebrew scene existed for quite some time.

In other words creating/finding a usable network library would be the first thing that is needed, even if it is only to have an update notifier.

I think it would be better suited as a totally separate updater homebrew, like universal updater, instead of being a part of TWiLight Menu++

That would be ideal but even more difficult. Updating the system should work in a different way compared to updating some applications. Especially since each TWiLight Menu++ update requires/includes an update for nds-bootstrap. I guess adding this as part of nds-bootstrap might make sense, since that is the part that actually loads the roms. This would also make it more of an universal updater.

but 7z doesn't have to be used

Data compression is the last thing to worry about. The release files are generated by a CI, so it is easy to add additional archive formats like simply using a tar file without any compression, or something like that.

Peter0x44 commented 3 years ago

I didn't know that was the case. I figured that there would be some network library since the DS homebrew scene existed for quite some time.

You didn't read what I said correctly - I only meant there are no libraries to use the DSi wpa2 wifi capabilities, the DS wep and horrible speeds work fine.

I guess adding this as part of nds-bootstrap might make sense, since that is the part that actually loads the roms.

No, it makes even less sense. nds-bootstrap should only load roms and do it well. I think it's totally out-of-scope for both TWiLight Menu++ and nds-bootstrap as a whole.

noah1510 commented 3 years ago

I think it's totally out-of-scope for both TWiLight Menu++ and nds-bootstrap as a whole

Even if it is not part of either project these projects would need to support being updated while they are running. Especially nds-bootstrap, since TWiLight Menu++ is closed (at least it seems like that) when the updater application would be running.

there are no libraries to use the DSi wpa2 wifi capabilities, the DS wep and horrible speeds work fine.

Well that is at least something. Adding support for faster speed and wpa2 is something that should be possible.

DraconicNEO commented 3 years ago

I feel like an updater should be its own separate app, not actually a feature in Twilight menu. Also WPA2 support is definitely needed for this to actually be worth it.

AbnormalPoof commented 3 years ago

We don't really need this...

  1. Theres universal updater for 3ds
  2. It's not that difficult to extract a 7z file
AbnormalPoof commented 3 years ago

Adding on top of Peter0x44's idea. I do think it'd be nice for twl menu to at least notify that an update is available

Also the DS doesn't have enough ram to do the updater on its own, so yea

DraconicNEO commented 3 years ago

Adding on top of Peter0x44's idea. I do think it'd be nice for twl menu to at least notify that an update is available

Also the DS doesn't have enough ram to do the updater on its own, so yea

Would probably cause slowdown if Twilight Menu had update checking at startup. Twilight Menu is already slow enough to start up, I don't think it needs something like that which would only make it worse.

Also would be very annoying for people wanting to stay on earlier versions or for someone who rolled back.

(Reasons for doing that include: broken features in a new update, preferred feature in an older version, etc.)

NightScript370 commented 2 years ago

Since this issue's creation, Universal-Team has started to work on a version of Universal-Updater intended for the Nintendo DS family of devices. It will be able to download a "TWiLightMenu++.zip" file & extract it to the correct spots on your SD card. This is similar to what you're requesting, and since a lot of UT members are shared with DS-Homebrew staff members, I think it's safe to say that we'd recommend using that instead.

Now, as for at least checking for an update, it would add an extra dependency for not such a useful scenario. However, I feel it would be beneficial for users, and it may be worth the extra kilobytes it adds

To respond to DraconicNEO, I'm sure they mean something like having the update checker run alongside the menu, and if it does, display text on the bottom of the top screen similar to Delfino Isle's news forcast system in Mario Sunshine.

DraconicNEO commented 2 years ago

Since this issue's creation, Universal-Team has started to work on a version of Universal-Updater intended for the Nintendo DS family of devices. It will be able to download a "TWiLightMenu++.zip" file & extract it to the correct spots on your SD card. This is similar to what you're requesting, and since a lot of UT members are shared with DS-Homebrew staff members, I think it's safe to say that we'd recommend using that instead.

I didn't know universal updater for DS/DSi was being worked on, in that case it would be much more useful than an updater app.

Now, as for at least checking for an update, it would add an extra dependency for not such a useful scenario. However, I feel it would be beneficial for users, and it may be worth the extra kilobytes it adds

To respond to DraconicNEO, I'm sure they mean something like having the update checker run alongside the menu, and if it does, display text on the bottom of the top screen similar to Delfino Isle's news forcast system in Mario Sunshine.

Ah that seems like it would be fine, I imagined that it would be some kind of popup similar to the game config menu when you press X or Y. Although I feel like if that was implemented there should at least be a way to turn it off since it could be annoying for someone who doesn't want to update yet.