Homebrew NUSspli - Install content directly from the Nintendo Update Servers to your Wii U

dollerbill

Member
Newcomer
Joined
Apr 11, 2016
Messages
16
Trophies
0
Age
35
XP
93
Country
United States
so after ~4 hours downloading the WiiU froze and had to be force-shut down. When I rebooted I tried downloading the same title to see if the download could resume right where it left off, but unfortunately, the download started completely over, even though I received the warning "WARNING: The download directory already exists" (this made me hopeful that it was going to scan the existing files)

In a future release, it would be great to only need downloading the remaining files that hadn't completed successfully
 

AmandaRose

Do what I do. Hold tight and pretend it’s a plan
Member
Joined
Aug 19, 2015
Messages
10,189
Trophies
1
Location
Glasgow
Website
www.rockstarnorth.com
XP
16,144
Country
United Kingdom
so after ~4 hours downloading the WiiU froze and had to be force-shut down. When I rebooted I tried downloading the same title to see if the download could resume right where it left off, but unfortunately, the download started completely over, even though I received the warning "WARNING: The download directory already exists" (this made me hopeful that it was going to scan the existing files)

In a future release, it would be great to only need downloading the remaining files that hadn't completed successfully
I have had the app freeze before and I just left it as is and after a while (about 15 mins) the download started again and finished
 

dollerbill

Member
Newcomer
Joined
Apr 11, 2016
Messages
16
Trophies
0
Age
35
XP
93
Country
United States
I have had the app freeze before and I just left it as is and after a while (about 15 mins) the download started again and finished
I waited for 5-10 and thought that was enough that it would have resumed if it were possible... if it freezes again I'll leave it for 20 minutes to make sure it can't come back
 
Last edited by dollerbill,

pedrobonfim

Member
Newcomer
Joined
Apr 18, 2020
Messages
8
Trophies
0
Age
29
XP
91
Country
Brazil
good night, for me it's working well. however for a friend, after he put the game ID and choose any of the options (Nand, USB or download only) the screen goes back to the beginning and does not download. Does anyone know what can it be? homebrew launcher V2.1 fix and NUSspli 1.4
 
  • Like
Reactions: jeannotte

V10lator

Well-Known Member
OP
Member
Joined
Apr 21, 2019
Messages
2,628
Trophies
1
Age
36
XP
5,469
Country
Germany

yoyoyo69

Well-Known Member
Member
Joined
Apr 11, 2010
Messages
419
Trophies
1
XP
1,980
Country
United States
My download kept failing after a long time, could be network, but unsure why it just drops entirely. Click resume, downloads for a long time again, but ultimately fails every time. I retried this several times for hours last night. I may move my Wii U at some point to test if it is the network or not (I don't have a lan adaptor)
 

V10lator

Well-Known Member
OP
Member
Joined
Apr 21, 2019
Messages
2,628
Trophies
1
Age
36
XP
5,469
Country
Germany
Click resume, downloads for a long time again, but ultimately fails every time.
It should continue where it stopped but there's a bug. Sorry about that, will be fixed in the next release (which happens as soon as I'm able to build a channel version).
 

yoyoyo69

Well-Known Member
Member
Joined
Apr 11, 2010
Messages
419
Trophies
1
XP
1,980
Country
United States
It should continue where it stopped but there's a bug. Sorry about that, will be fixed in the next release (which happens as soon as I'm able to build a channel version).

It's all good man, no need to apologise. We had nothing, we you were good enough to not only make and share this, but to support and continue to develop it.

It continues with the file it was at (sorry if I wasn't clear about this), I think mine was file 17 of 34 or something like that. Each loop through that file failed though, I'm guessing it lost connection at some point before that file finished.

With the smaller files, less less chance of losing connection, therefore more chance of success. The file it stopped at was about 500Mb, with the slow speed, it took a while, but i did give it a good few, long tries.

I will try and make time to move my Wii U to a better location and test more effectively.
 

dojafoja

life elevated
Member
Joined
Jan 2, 2014
Messages
696
Trophies
1
XP
2,606
Country
Does this app resume partial downloads, without downloading the entire file again? I tried reading the source to see if it does but I suck at reading and understanding C. If it doesn't, I wanted to throw it out there that NUS supports Range Requests and you can request a specific range of data in your request header. Thanks for your contribution.
 

Leogui35

Member
Newcomer
Joined
May 27, 2020
Messages
5
Trophies
0
Age
38
XP
43
Country
Brazil
in 1.5 the app freezes before starting to download the games, I tested 3 games and before starting to download it freezes, I went back to 1.4 and it worked normal
 
  • Like
Reactions: Alexander1970

Alexander1970

XP not matters.
Member
Joined
Nov 8, 2018
Messages
14,973
Trophies
3
Location
Austria
XP
2,495
Country
Austria
Hello.:)

in 1.5 the app freezes before starting to download the games, I tested 3 games and before starting to download it freezes, I went back to 1.4 and it worked normal

I can confirm this Issue with v1.5
It (not freezes) stays on the Screen with "Fake ticket created successfully".
Tried install to USB and Download to SD Option and of course different Games.

P1370092.JPG

Waited around 3 - 4 Minutes....
When you press the "HOME" Button it returns after 3-4 Seconds first to the NUSspli Start Menu Screen and then to the Homebrew Launcher.

According to the Log it is downloading.....??

Sat 30 May 2020 10:13:49.459 main()
Sat 30 May 2020 10:13:49.463 Changed audio thread priority!
Sat 30 May 2020 10:13:49.510 libgui initialized!
Sat 30 May 2020 10:13:49.618 RNG seeded!
Sat 30 May 2020 10:13:49.641 Network initialized!
Sat 30 May 2020 10:13:49.668 cJSON initialized!
Sat 30 May 2020 10:13:49.701 SWKBD_Init()
Sat 30 May 2020 10:13:50.041 SWKBD initialized!
Sat 30 May 2020 10:13:50.068 MCP initialized!
Sat 30 May 2020 10:13:50.085 I/O thread initialized!
Sat 30 May 2020 10:13:50.085 I/O queue running!
Sat 30 May 2020 10:13:50.101 Checking thread stacks...
Sat 30 May 2020 10:13:50.102 Initializing config file...
Sat 30 May 2020 10:13:50.110 Config file loaded!
Sat 30 May 2020 10:13:50.118 Download URL: xxxx
Sat 30 May 2020 10:13:50.119 Download PATH: <RAM>
Sat 30 May 2020 10:13:50.119 Calling curl_easy_perform()
Sat 30 May 2020 10:13:54.172 curl_easy_perform() returned: 0
Sat 30 May 2020 10:13:54.174 CURL returned: 0 / 200
Sat 30 May 2020 10:13:54.189 Flushing...
Sat 30 May 2020 10:13:54.459 keys.json parsed!
Sat 30 May 2020 10:14:12.007 Initialising SWKBD
Sat 30 May 2020 10:14:12.007 SWKBD_Show()
Sat 30 May 2020 10:14:12.010 Swkbd_AppearInputForm(): true
Sat 30 May 2020 10:14:12.011 SWKBD initialised successfully
Sat 30 May 2020 10:14:12.010 nn::swkbd::AppearInputForm success
Sat 30 May 2020 10:14:12.016 SWKBD nn::swkbd::IsNeedCalcSubThreadFont()
Sat 30 May 2020 10:14:12.062 SWKBD nn::swkbd::IsNeedCalcSubThreadFont()
Sat 30 May 2020 10:14:25.136 SWKBD Ok button pressed
Sat 30 May 2020 10:14:25.137 SWKBD_Hide()
Sat 30 May 2020 10:14:25.472 IOSUHAX: USB drive mounted!
Sat 30 May 2020 10:14:30.742 Downloading title... tID: 000500001016a100, tVer: , name: Wario Land 4, folder:
Sat 30 May 2020 10:14:30.748 Started the download of "Wario Land 4"
Sat 30 May 2020 10:14:30.749 The content will be saved on "sd:/install/000500001016a100"
Sat 30 May 2020 10:14:30.826 Creating directory
Sat 30 May 2020 10:14:31.238 Download directory successfully created
Sat 30 May 2020 10:14:31.239 Downloading TMD...
Sat 30 May 2020 10:14:31.239 Download URL: xxx
Sat 30 May 2020 10:14:31.240 Download PATH: /vol/external01/install/000500001016a100/title.tmd
Sat 30 May 2020 10:14:31.246 Calling curl_easy_perform()
Sat 30 May 2020 10:14:33.777 curl_easy_perform() returned: 0
Sat 30 May 2020 10:14:33.779 curl_easy_perform executed successfully
Sat 30 May 2020 10:14:33.781 The download returned: 200
Sat 30 May 2020 10:14:33.782 The file was downloaded successfully
Sat 30 May 2020 10:14:33.782 Download title.tmd finished!
Sat 30 May 2020 10:14:33.783 Flushing...
Sat 30 May 2020 10:14:33.784 TMD Downloaded
Sat 30 May 2020 10:14:33.791 =>Title type: eShop or Packed
Sat 30 May 2020 10:14:33.792 Download URL: xxxxx
Sat 30 May 2020 10:14:33.792 Download PATH: /vol/external01/install/000500001016a100/title.tik
Sat 30 May 2020 10:14:34.869 curl_easy_perform() returned: 0
Sat 30 May 2020 10:14:34.870 curl_easy_perform executed successfully
Sat 30 May 2020 10:14:34.872 The download returned: 404
Sat 30 May 2020 10:14:34.885 Title.tik not found on the NUS. Checking known keys...
Sat 30 May 2020 10:14:34.915 Generate tik function
Sat 30 May 2020 10:14:34.917 Fake ticket created successfully
Sat 30 May 2020 10:14:34.939 Creating CERT...
Sat 30 May 2020 10:14:34.965 Cert created!
Sat 30 May 2020 10:14:35.050 Download URL: xxxxx
Sat 30 May 2020 10:14:35.050 Download PATH: /vol/external01/install/000500001016a100/00000000.app
Sat 30 May 2020 10:14:35.055 Calling curl_easy_perform()
Sat 30 May 2020 10:14:35.967 curl_easy_perform() returned: 0
Sat 30 May 2020 10:14:35.968 curl_easy_perform executed successfully
Sat 30 May 2020 10:14:35.970 The download returned: 200
Sat 30 May 2020 10:14:35.971 The file was downloaded successfully
Sat 30 May 2020 10:14:35.971 Download 00000000.app finished!
Sat 30 May 2020 10:14:35.972 Download URL: xxxxxxx
Sat 30 May 2020 10:14:35.973 Download PATH: /vol/external01/install/000500001016a100/00000001.app
Sat 30 May 2020 10:14:36.001 Calling curl_easy_perform()
Sat 30 May 2020 10:14:36.953 curl_easy_perform() returned: 0
Sat 30 May 2020 10:14:36.954 curl_easy_perform executed successfully
Sat 30 May 2020 10:14:36.955 The download returned: 200
Sat 30 May 2020 10:14:36.956 The file was downloaded successfully
Sat 30 May 2020 10:14:36.957 Download 00000001.app finished!
Sat 30 May 2020 10:14:36.958 Download URL: xxxxx
Sat 30 May 2020 10:14:36.959 Download PATH: /vol/external01/install/000500001016a100/00000002.app
Sat 30 May 2020 10:14:36.982 Calling curl_easy_perform()
Sat 30 May 2020 10:14:37.816 curl_easy_perform() returned: 0
Sat 30 May 2020 10:14:37.817 curl_easy_perform executed successfully
Sat 30 May 2020 10:14:37.820 The download returned: 200
Sat 30 May 2020 10:14:37.821 The file was downloaded successfully
Sat 30 May 2020 10:14:37.821 Download 00000002.app finished!
Sat 30 May 2020 10:14:37.822 Download URL: xxxxx
Sat 30 May 2020 10:14:37.823 Download PATH: /vol/external01/install/000500001016a100/00000003.app
Sat 30 May 2020 10:14:37.850 Calling curl_easy_perform()
Sat 30 May 2020 10:14:40.234 curl_easy_perform() returned: 0
Sat 30 May 2020 10:14:40.236 curl_easy_perform executed successfully
Sat 30 May 2020 10:14:40.238 The download returned: 200
Sat 30 May 2020 10:14:40.239 The file was downloaded successfully
Sat 30 May 2020 10:14:40.240 Download 00000003.app finished!
Sat 30 May 2020 10:14:40.240 Download URL: xxxxx
Sat 30 May 2020 10:14:40.241 Download PATH: /vol/external01/install/000500001016a100/00000003.h3
Sat 30 May 2020 10:14:40.241 Download PATH: /vol/external01/install/000500001016a100/00000003.h3
Sat 30 May 2020 10:14:40.340 Calling curl_easy_perform()
Sat 30 May 2020 10:14:40.973 curl_easy_perform() returned: 0
Sat 30 May 2020 10:14:40.974 curl_easy_perform executed successfully
Sat 30 May 2020 10:14:40.976 The download returned: 200
Sat 30 May 2020 10:14:40.977 The file was downloaded successfully
Sat 30 May 2020 10:14:40.978 Download 00000003.h3 finished!
Sat 30 May 2020 10:14:40.978 Download URL: xxxxxx
Sat 30 May 2020 10:14:40.979 Download PATH: /vol/external01/install/000500001016a100/00000004.app
Sat 30 May 2020 10:14:40.985 Calling curl_easy_perform()
Sat 30 May 2020 10:16:22.507 curl_easy_perform() returned: 0
Sat 30 May 2020 10:16:22.509 curl_easy_perform executed successfully
Sat 30 May 2020 10:16:22.510 The download returned: 200
Sat 30 May 2020 10:16:22.511 The file was downloaded successfully
Sat 30 May 2020 10:16:22.511 Download 00000004.app finished!
Sat 30 May 2020 10:16:22.513 Download PATH: /vol/external01/install/000500001016a100/00000004.h3
Sat 30 May 2020 10:16:22.621 Calling curl_easy_perform()
Sat 30 May 2020 10:16:24.805 curl_easy_perform() returned: 0
Sat 30 May 2020 10:16:24.805 curl_easy_perform executed successfully
Sat 30 May 2020 10:16:24.807 The download returned: 200
Sat 30 May 2020 10:16:24.808 The file was downloaded successfully
Sat 30 May 2020 10:16:24.809 Download 00000004.h3 finished!
Sat 30 May 2020 10:16:24.810 Download URL: xxxxxx
Sat 30 May 2020 10:16:24.811 Download PATH: /vol/external01/install/000500001016a100/00000005.app
Sat 30 May 2020 10:16:24.816 Calling curl_easy_perform()
Sat 30 May 2020 10:16:34.543 curl_easy_perform() returned: 0
Sat 30 May 2020 10:16:34.544 curl_easy_perform executed successfully
Sat 30 May 2020 10:16:34.545 The download returned: 200
Sat 30 May 2020 10:16:34.545 The file was downloaded successfully
Sat 30 May 2020 10:16:34.546 Download 00000005.app finished!
Sat 30 May 2020 10:16:34.546 Download URL: xxxxxx
Sat 30 May 2020 10:16:34.547 Download PATH: /vol/external01/install/000500001016a100/00000005.h3
Sat 30 May 2020 10:16:34.668 Calling curl_easy_perform()
Sat 30 May 2020 10:16:35.046 curl_easy_perform() returned: 0
Sat 30 May 2020 10:16:35.047 curl_easy_perform executed successfully
Sat 30 May 2020 10:16:35.048 The download returned: 200
Sat 30 May 2020 10:16:35.049 The file was downloaded successfully
Sat 30 May 2020 10:16:35.050 Download 00000005.h3 finished!
Sat 30 May 2020 10:16:35.050 Download URL: xxxxx
Sat 30 May 2020 10:16:35.051 Download PATH: /vol/external01/install/000500001016a100/00000006.app
Sat 30 May 2020 10:16:35.058 Calling curl_easy_perform()
Sat 30 May 2020 10:16:45.433 The download returned: 200
Sat 30 May 2020 10:16:45.430 curl_easy_perform() returned: 0
Sat 30 May 2020 10:16:45.431 curl_easy_perform executed successfully
Sat 30 May 2020 10:16:45.433 The file was downloaded successfully
Sat 30 May 2020 10:16:45.435 Download 00000006.app finished!
Sat 30 May 2020 10:16:45.436 Download URL: xxxxxx
Sat 30 May 2020 10:16:45.436 Download PATH: /vol/external01/install/000500001016a100/00000006.h3
Sat 30 May 2020 10:16:45.577 Calling curl_easy_perform()
Sat 30 May 2020 10:16:47.852 curl_easy_perform() returned: 0
Sat 30 May 2020 10:16:47.852 curl_easy_perform executed successfully
Sat 30 May 2020 10:16:47.855 The file was downloaded successfully
Sat 30 May 2020 10:16:47.856 Download 00000006.h3 finished!
Sat 30 May 2020 10:16:47.857 Download URL: xxxxx
Sat 30 May 2020 10:16:47.857 Download PATH: /vol/external01/install/000500001016a100/00000007.app
Sat 30 May 2020 10:16:47.864 Calling curl_easy_perform()


Thank you.:)

EDIT: Yes,as expected,download was successful and Content is complete and works for Installation.

oooool-2.jpg
 
Last edited by Alexander1970,
  • Like
Reactions: BaamAlex

V10lator

Well-Known Member
OP
Member
Joined
Apr 21, 2019
Messages
2,628
Trophies
1
Age
36
XP
5,469
Country
Germany
Does this app resume partial downloads, without downloading the entire file again? I tried reading the source to see if it does but I suck at reading and understanding C. If it doesn't, I wanted to throw it out there that NUS supports Range Requests and you can request a specific range of data in your request header. Thanks for your contribution.
It skips files already completely downloaded but does not continue single failed files. The latter is a planned feature but needs more research as the NUS is a bit tricky here.

@Leogui35 @alexander1970 Thanks for the report, will have a look at it soon.
 

dojafoja

life elevated
Member
Joined
Jan 2, 2014
Messages
696
Trophies
1
XP
2,606
Country
It skips files already completely downloaded but does not continue single failed files. The latter is a planned feature but needs more research as the NUS is a bit tricky here.
NUS responds to the Range request just like you would expect from any modern server. In your request header just add:
Code:
Range: bytes=<partialFileSize>-
where partialFileSize is the size of the partially downloaded file on disk, as reported by your OS. I couldn't tell you how to do it in C but in Python it's very trivial and I have tested it thoroughly. The resulting files always install fine. In Python, using urllib2 I do it like this:
Code:
rqst = urllib2.Request(url)
rqst.add_header("Range", "bytes={}-".format(partialFileSize))

Obviously this would look different in C but you get the idea
 

dojafoja

life elevated
Member
Joined
Jan 2, 2014
Messages
696
Trophies
1
XP
2,606
Country
Sadly it does not. Or... Well, most of the times it does but there are rare exceptions.
Hmm... Must be really rare. I wrote a PC application called Funkii-UI that was once mildly popular. I had a version that I never released that resumes partial downloads just fine using the method I described. I tested it hundreds of times and even had other users test it more times than I could remember. Never had it fail, not even once.
 

E1ite007

wierd avatar guy
Member
Joined
Nov 19, 2016
Messages
1,028
Trophies
1
Location
Itchy & Scratchy Land
XP
2,734
Country
Mexico
Hmm... Must be really rare. I wrote a PC application called Funkii-UI that was once mildly popular. I had a version that I never released that resumes partial downloads just fine using the method I described. I tested it hundreds of times and even had other users test it more times than I could remember. Never had it fail, not even once.
Actually, if I remember correctly, even USB Helper has a hard time resuming partial downloads and sometimes fails. uTikDownloadHelper did it as well, and even freeShop from the 3DS couldn't do it until the devs added Sleep Downloads, which meant that practially freeShop was downloading in the same way the 3DS eShop downloads games.
 
Last edited by E1ite007,

V10lator

Well-Known Member
OP
Member
Joined
Apr 21, 2019
Messages
2,628
Trophies
1
Age
36
XP
5,469
Country
Germany
I had a version that I never released that resumes partial downloads just fine using the method I described. I tested it hundreds of times and even had other users test it more times than I could remember. Never had it fail, not even once.
To be honest it had hiccups when I tested it but NUSspli was in alpha state back then, so it might have been some other (memory corrupting?) issue. Anyway, the largest single file I saw was 1,28 GB and that was with a title around 18 GB in size, so not continuing a single file shoudn't be that bad? Will have a fresh look into it soon anyway but there are more important things on my todo list. :)
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Veho @ Veho: Cut your life into pieces.