Tutorial  Updated

Haxchi Mod - Custom redNAND Launch Title

Just to keep myself safe from blame...
PLEASE DO NOT ATTEMPT THIS UNLESS YOU KNOW WHAT YOU ARE DOING

I decided to just make a new thread dedicated to everything I've modified and created to have a "custom title" on sysNAND that launches redNAND
It makes use of Haxchi, a DS VC exploit originally released by @smealum and then modified by @FIX94 to launch HBL and work for other games.

UPDATE: The latest commit for FIX94's haxchi includes a version with cfwbooter built in, omitting the need for cfwboot.elf. Files and instructions have been updated to reflect this.

Latest install.py version: 2.1.1
New in this version:
  • Fixed bug in uploading config.txt (for some reason I made it upload to config.ini -_-)
Features:
  • Allows input of any low ID, meaning it will automatically work with future exploit games (and can possibly be used to inject DS games, untested)
  • Makes sure the game and location provided actually exist before attempting to install
  • Automatically downloads and modifies meta.xml with user-defined name
  • Installs files from SD instead of uploading over network, which greatly increases speed (especially for the larger .tga meta files)

As for the modified iosuhax, you will have to compile a new fw.img from the github below
https://github.com/TheCyberQuake/iosuhax



NEW INSTALLER AND INSTALL PROCESS:
Finally got around to fixing up the installer.
It's now a universal installer, and should work automatically with future exploit games.

Download install.py from below, and place in the same folder as wupclient.py
https://mega.nz/#!xVVAHRgL!cMJdtZD6sLp0TIQ7q6BIjNzk5xB25jr8qamy423zUoE

From there you can either download a pre-made install pack from below and place it's files onto the SD card within a folder called haxchi (i.e. sd:/haxchi), or you can place any rom.zip and config.txt in /haxchi, and meta files within /haxchi/meta (excluding meta.xml, which will automatically be modified later).
https://mega.nz/#F!lRFgzSJY!ANFeNyPwRM_SjlH23ca4Zg
At this point I recommend grabbing the official haxchi from fix94, at least until I can rework my install packs or find a better way to do it while still being user friendly.

From there you can run wupserver on the Wii U (by loading fw.img with CFW Booter or haxchi).

You can then either double-click install.py, or type "python install.py" into command prompt/terminal

Enter the low ID of the game you wish to install to (can be found on this github page, it's the last 8 characters of the full 16 character title ID), and then enter the games install location (USB or NAND).
From there the script will install haxchi's rom.zip from sd:/haxchi, and the meta files from sd:/haxchi/meta. After that it will download meta.xml over the network to the PC, and then ask for what you wish the custom name to be (i.e. the name that shows up on home menu), then modify meta.xml to meta.xml.tmp, and then finally upload back to the Wii U.

Finally, the script will attempt to install config.txt, which is needed for the latest haxchi versions made by FIX94. If it succeeds (meaning the file existed on SD) it will also apply chmod 0x644 to the file to make it properly work with haxchi.
 
Last edited by TheCyberQuake,

TheCyberQuake

Certified Geek
OP
Member
Joined
Dec 2, 2014
Messages
5,020
Trophies
1
Age
28
Location
Las Vegas, Nevada
XP
4,449
Country
United States
I'm making new images for the inject, but it doesn't like it when I replace bootDrcTex and bootTvTex.
I modified your tga's with photoshop. iconTex works just fine. meta.xml worked just fine as well.
Any ideas?
Make sure you save in photoshop as 24bit for bootDrcTex.tga and bootTvTex.tga, do not enable the compression (RLE compression? I don't quite remember what it's exactly called but it's a check box that should be left unchecked)

Also, for those who like to look at code, this is what I currently have for the new python script:
Code:
import wupclient

if __name__ == '__main__':
    print("Connecting to wupserver")
    w = wupclient.wupclient()
    if(w.s == None):
        print("Failed to connect to wupserver!")
        exit()
    print("Connected!")
    wupclient.w = w
    print("Mounting SD")
    ret = wupclient.mount_sd()
    if(ret == 0):
        print("Failed to mount SD!")
    else:
        print("Mounted! Installing Haxchi from SD")
        ret = w.cp("/vol/storage_sdcard/haxchi/rom.zip", "/vol/storage_usb01/usr/title/00050000/101A5600/content/0010/rom.zip")
        if(ret == 0):
            print("Failed to install Haxchi!")
        else:
            print("Installing Meta files")
            ret = w.cpdir("/vol/storage_sdcard/haxchi/meta", "/vol/storage_usb01/usr/title/00050000/101A5600/meta")
            if(ret == 0):
                print("Failed to install Meta files!")
            else:
                print("Downloading meta.xml for modification")
                ret = w.dl("/vol/storage_usb01/usr/title/00050000/101A5600/meta/meta.xml")
                if(ret == 0):
                    print("Download failed!")
                else:
                    customname = raw_input("Custom title name: ")
                    print("Modifying meta.xml")
                    linecount = 0
                    f1 = open('meta.xml', 'r')
                    f2 = open('meta.xml.tmp', 'w')
                    for line in f1:
                        linecount = linecount + 1
                        if(72 <= linecount <= 77 or 79 <= linecount <= 82):
                            customline = line[0:42] + customname + line[-15:]
                            f2.write(customline)
                        elif(linecount == 78 or linecount == 83):
                            customline = line[0:43] + customname + line[-16:]
                            f2.write(customline)
                        else:
                            f2.write(line)
                    f1.close()
                    f2.close()
                    print("Uploading modified meta.xml")
                    ret = w.up("meta.xml.tmp", "/vol/storage_usb01/usr/title/00050000/101A5600/meta/meta.xml")                   
                    if(ret != 0):
                        print("Complete!")
                    else:
                        print("Upload failed")
    if(w.fsa_handle != None):
        w.close(w.fsa_handle)
        w.fsa_handle = None
    if(w.s != None):
        w.s.close()
        w.s = None
input()
I haven't been able to test even that script fully yet, but I have tested individual parts and putting them together shouldn't break any other pieces. The main change here is adding w.dl to download the game's meta file, asking for user input, then modifying lines within a certain range to incorporate the modified title name (and saving that to meta.xml.tmp) and finally using w.up to place the file back onto the Wii U. Anyone who knows how to use wupclient could probably take a look and modify it for any game, but for now this exact script works on Kirby US.
 

KotuMF

Active Member
Newcomer
Joined
Sep 8, 2016
Messages
40
Trophies
0
Location
California
XP
70
Country
United States
Make sure you save in photoshop as 24bit for bootDrcTex.tga and bootTvTex.tga, do not enable the compression (RLE compression? I don't quite remember what it's exactly called but it's a check box that should be left unchecked)
Sweet thanks, it works! How about the .btsnd file? I can't find out how to do it.

EDIT: Also in your scripts, I recommend you make it so the command box stays so we know if it says Successful or not :)
 
Last edited by KotuMF,

KevinX8

Proud user of The Dark Theme
Member
Joined
May 12, 2016
Messages
960
Trophies
0
Age
33
Location
Down there
XP
1,013
Country
For anyone that's thinking of using coldboothax don't, quick start menu is actually faster and those not kill access to sysnand
 

hunter1999

Active Member
Newcomer
Joined
Nov 8, 2016
Messages
25
Trophies
0
Age
34
XP
67
Country
I got it working eventually, the issue was that I did not notice that there was a size difference between the DRC and TV files, I was using the same for both, lol. Thank you a lot for the help!
bootTvTex.tga and bootDrcTex.tga use 24bit, no RLE compression
iconTex.tga uses 32bit, no RLE compression.
I believe those are the correct settings.
i used those settings and it's gave me error
 

TheCyberQuake

Certified Geek
OP
Member
Joined
Dec 2, 2014
Messages
5,020
Trophies
1
Age
28
Location
Las Vegas, Nevada
XP
4,449
Country
United States
@FIX94 works too fast, I can't keep my stuff up to date because every hour it seems something else changed xD
I'm currently working on adding packs that make use of the new mutliboot function and config.ini, along with changing the script some more to try to copy config.ini from the SD as well, and if it succeeds, also chmod the file.
 

TheCyberQuake

Certified Geek
OP
Member
Joined
Dec 2, 2014
Messages
5,020
Trophies
1
Age
28
Location
Las Vegas, Nevada
XP
4,449
Country
United States
What if I want to run CFW/IOSU on SysNand without using rednand, can I still use these files and instructions??
I actually plan on releasing within the next hour or so a new version that includes the new haxchi that can multiboot. Mine will boot redNAND if R is held, whatever fw.img you have on sd root if L is held (aka you can put sysNAND wupserver/CFW on there and that will do it), and finally holding down will boot /wiiu/custom.elf. The default option (no buttons held) will boot HBL.
 

pietempgba

Well-Known Member
Member
Joined
Jun 9, 2016
Messages
1,049
Trophies
0
XP
1,515
Country
United States
I actually plan on releasing within the next hour or so a new version that includes the new haxchi that can multiboot. Mine will boot redNAND if R is held, whatever fw.img you have on sd root if L is held (aka you can put sysNAND wupserver/CFW on there and that will do it), and finally holding down will boot /wiiu/custom.elf. The default option (no buttons held) will boot HBL.
what is custom.elf
 

TheCyberQuake

Certified Geek
OP
Member
Joined
Dec 2, 2014
Messages
5,020
Trophies
1
Age
28
Location
Las Vegas, Nevada
XP
4,449
Country
United States
what is custom.elf
it's just whatever you want it to be. rename any .elf to custom.elf and place in /wiiu/custom.elf.
Mostly for those who don't want to mess with config.txt. I'm trying to make the install process so easy that pretty much anyone can do it. At this point (my newest script) pretty much everthing is automated by the script except for copying files to the SD and modifying wupclient.py for the IP address.
 

pietempgba

Well-Known Member
Member
Joined
Jun 9, 2016
Messages
1,049
Trophies
0
XP
1,515
Country
United States
you could use a bat file for that if you wanted

my bat file is a mess here's a example


echo 1) install brainage pal
echo.
set /p install=
cls
color A
if "%install%"=="1" (copy "bru\rom.zip" "..."
cls
w.dl("vol\storage_mlc01\usr\title\00050000\10179C00\meta\meta.xml", "\bru\meta")
xcopy "bru\meta" "..."
cls
python -i install_brainage_pal.py)
 
Last edited by pietempgba,

veraci_00

Well-Known Member
Member
Joined
Mar 6, 2016
Messages
473
Trophies
0
Age
42
XP
293
Country
United States
what's the command line for the splash screen? I'm sorry, but I don't know the common names. is it:

w.up("bootDrcTex.tga", "/vol/storage_mlc01/usr/title/00050000/10198900/meta/bootDrcTex.tga")
 

naughty_cat

Well-Known Member
Member
Joined
Dec 19, 2013
Messages
218
Trophies
1
Age
36
XP
617
Country
Egypt
I actually plan on releasing within the next hour or so a new version that includes the new haxchi that can multiboot. Mine will boot redNAND if R is held, whatever fw.img you have on sd root if L is held (aka you can put sysNAND wupserver/CFW on there and that will do it), and finally holding down will boot /wiiu/custom.elf. The default option (no buttons held) will boot HBL.

Well... I don't wanna sound pushy, but, is it going to be easy, or can you at least give instructions when you release this on how to change the default (no button held) to something else? (as in the default could be rednand, while holding R could be HBL maybe???)
 

TheCyberQuake

Certified Geek
OP
Member
Joined
Dec 2, 2014
Messages
5,020
Trophies
1
Age
28
Location
Las Vegas, Nevada
XP
4,449
Country
United States
Well... I don't wanna sound pushy, but, is it going to be easy, or can you at least give instructions when you release this on how to change the default (no button held) to something else? (as in the default could be rednand, while holding R could be HBL maybe???)
Yeah, you can edit it. FIX94's github for haxchi tells you how. Other than my modified redNAND launcher most everything else is unmodified unless listed as such in OP. The newer one I'm uploading soon is completely unmodified, I've just put it together in a way people can just slap it on their SD and computer, click a single script and have a fully modified VC
 

TheCyberQuake

Certified Geek
OP
Member
Joined
Dec 2, 2014
Messages
5,020
Trophies
1
Age
28
Location
Las Vegas, Nevada
XP
4,449
Country
United States
I have the new scripts done for USA region. Here are the changes from the last upload:
  • meta.xml gets downloaded from the Wii U, the script asks for the custom title, and then modifies and reuploads meta.xml.
  • Attempts to also transfer config.txt to support the latest haxchi by FIX94
  • If config.txt transfer is successful, it also sets chmod for that file
Unfortunately out of time for the night so I'll have to push releasing the rest of it until tomorrow.
 
  • Like
Reactions: soulkyo

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    S @ salazarcosplay: good morning everyone +1