HAI-Priiloader, A Bootloader For VC Injects

  • Thread starter Thread starter Karlmann
  • Start date Start date
  • Views Views 11,479
  • Replies Replies 89
  • Likes Likes 17
Final questions for now
Is it possible to revert to normal wii vc after installing this?

How can i compile it?
 
Final questions for now
Is it possible to revert to normal wii vc after installing this?

How can i compile it?
You can revert by replacing the modified OSv1 with its original ANCAST image.
I can send you my current build once I have access to my Wii U later this week. (will most likely place on the github)
 
I am willing to test it too if you need it.
Make sure to backup your NAND stuff and the OSv1. Should be in the file directory Karlmann told us if we used Teconmoon injector.

And make sure the OHBC is installed IT IS NOT THE HOMEBREW CHANNEL Search open homebrew channel there should be a github
 
  • Like
Reactions: MysticStarlight
Make sure to backup your NAND stuff and the OSv1. Should be in the file directory Karlmann told us if we used Teconmoon injector.

And make sure the OHBC is installed IT IS NOT THE HOMEBREW CHANNEL Search open homebrew channel there should be a github
Thanks! Just checked and yeah it is the OHBC. And I found OSv1 with ftpiiu and backed it up (it is located at storage_slc/sys/title/00050010/10004001/code/, if anyone reading this wants to know). Aditionally, I have a full NAND backup and ISFShax :D.
 
  • Like
Reactions: awesomeee
the issue exists with ES_Sign regardless of whether the breaking change was in ES or IOSC, this is just a pointless technicality. i was already able to work around it so there shouldn't be any more issues with wii vc
This is what developer said to what you said about ES not being issue or something
Post automatically merged:

Do you know if this could allow for a second gamepad to be used by provisioning it to a classic controller / a fakemote?
Post automatically merged:

@Karlmann
I followed the guide but im confused - do i install priiloader then replace the dol? When i try to open the modified dol it just boots me to priiloader even if it isnt installed
Post automatically merged:

Thanks! Just checked and yeah it is the OHBC. And I found OSv1 with ftpiiu and backed it up (it is located at storage_slc/sys/title/00050010/10004001/code/, if anyone reading this wants to know). Aditionally, I have a full NAND backup and ISFShax :D.
Do you know how to find the vWii nand title as stated in the github that holds the ANCAST image thing?
 
Last edited by awesomeee,
  • Like
Reactions: MysticStarlight
Do you know if this could allow for a second gamepad to be used by provisioning it to a classic controller / a fakemote?

I followed the guide but im confused - do i install priiloader then replace the dol? When i try to open the modified dol it just boots me to priiloader even if it isnt installed


Do you know how to find the vWii nand title as stated in the github that holds the ANCAST image thing?
Using fakemote requires finding the new offsets in HAI-IOS. I am more confident in fakemote enabling using the gamepad and wii remotes on vc injects at the same time for official applications.

You should replace the dol with the compiled priiloader installer. I would recommend uninstalling priiloader and then reinstalling.

There are two ways to obtain BC-NAND:
1. Use FTPiiU everywhere to extract the binary from vWii title 0000000100000200
2. Download the title directly using the vWii version of NUS downloader
 
You should replace the dol with the compiled priiloader installer. I would recommend uninstalling priiloader and then reinstalling.
I tried this but even if priiloader is uninstalled and i boot the modified dol it goes to the menu

Booting thru Wii VC ohbc loads SSL module and this DVD thing. Do i uninstall, reinstall THEN place modified dol?
Post automatically merged:

Alright how do i trim the ancast image / replace it? Where is it compiled?
Post automatically merged:

What FW.img am i patching? Where is it located
 
Last edited by awesomeee,
I tried this but even if priiloader is uninstalled and i boot the modified dol it goes to the menu

Booting thru Wii VC ohbc loads SSL module and this DVD thing. Do i uninstall, reinstall THEN place modified dol?
Post automatically merged:

Alright how do i trim the ancast image / replace it? Where is it compiled?
Post automatically merged:

What FW.img am i patching? Where is it located
I think the issue is from relatively recent changes on my end not being correctly implemented.
I tried this but even if priiloader is uninstalled and i boot the modified dol it goes to the menu

Booting thru Wii VC ohbc loads SSL module and this DVD thing. Do i uninstall, reinstall THEN place modified dol?
Post automatically merged:

Alright how do i trim the ancast image / replace it? Where is it compiled?
Post automatically merged:

What FW.img am i patching? Where is it located
I am looking into whether the commit pushed to github has issues. Additionally, the SSL module may be unloaded when a IOS reload is requested. To address I am working on manually adding a custom IOS module to the fw.img directly that can load other IOS modules every time HAI-IOS is ran.

fw.img should be located in /code directory of vc injects. Additionally, it should be available in the rhythm heaven fever title teconmoon's injector downloads as part of generating a vc inject.
 
  • Like
Reactions: awesomeee
I think the issue is from relatively recent changes on my end not being correctly implemented.

I am looking into whether the commit pushed to github has issues. Additionally, the SSL module may be unloaded when a IOS reload is requested. To address I am working on manually adding a custom IOS module to the fw.img directly that can load other IOS modules every time HAI-IOS is ran.

fw.img should be located in /code directory of vc injects. Additionally, it should be available in the rhythm heaven fever title teconmoon's injector downloads as part of generating a vc inject.
That explains it! I do not want to be a burden. Was the modified ancast image included in the compiled folder? The installation is confusing to me apologies
 
@awesomee if you use HxD I think (I think!!) you can search for the hex value ''EFA282D9'' and when it's found you just remove everything before it.
Thank you!!

@Karlmann Thanks too.
Post automatically merged:

@MysticStarlight Found it!
What you are doing is grabbing the 00000003.app file and putting that in Hexed.it trim what you guys said Simple as that lmao
Post automatically merged:

The process is simple
1. backup the ancast image and your osv1
2. Trim the ANCAST image (The one i needed help trimming)
3. PUT THIS TRIMMED IMAGE IN THE OSv1 RENAMED TO boot.bin ! DO NOT PUT TRIMMED IMAGE IN THE OTHER THING
Post automatically merged:

fw.img should be located in /code directory of vc injects. Additionally, it should be available in the rhythm heaven fever title teconmoon's injector downloads as part of generating a vc inject.
Which FW.IMG do i modify? I see these folders
1742757724849.png
 
Last edited by awesomeee,
Meanwhile I can't compile HAI-Priiloader. I am using msys2 but it's giving me this error:
# make
make -C ./src/loader
make[1]: Entering directory '/c/HAI-Priiloader/src/loader'
-----------------------------------------------
compiling the loader...
-----------------------------------------------
loader.c
_stack.s
_startup.s
make[1]: Leaving directory '/c/HAI-Priiloader/src/loader'
make -C ./tools/bootloader
make[1]: Entering directory '/c/HAI-Priiloader/tools/bootloader'
make[1]: Leaving directory '/c/HAI-Priiloader/tools/bootloader'
make -C ./tools/OpenDolBoot
make[1]: Entering directory '/c/HAI-Priiloader/tools/OpenDolBoot'
building OpenDolBoot...
make[1]: Leaving directory '/c/HAI-Priiloader/tools/OpenDolBoot'
make -C ./src/priiloader
make[1]: Entering directory '/c/HAI-Priiloader/src/priiloader'
fatal: No names found, cannot describe anything.
writing versions to file
Using 0xc1c29cb as revision, c1c29cb as revision string

-----------------------------------------------
compiling priiloader...

stub.bin
loader.bin
ChannelHandler.cpp
C:/HAI-Priiloader/src/priiloader/source/ChannelHandler.cpp: In function 'u8* GetDol(u32, u64)':
C:/HAI-Priiloader/src/priiloader/source/ChannelHandler.cpp:54:39: warning: format '%lx' expects argu
ment of type 'long unsigned int', but argument 3 has type 'u32' {aka 'unsigned int'} [-Wformat=]
54 | sprintf(filepath, "/title/%08lx/%08lx/content/%08lx.app", TITLE_UPPER(title), TITLE_
LOWER(title), bootcontent);
| ~~~~^
| |
| long unsigned int
| %08x
C:/HAI-Priiloader/src/priiloader/source/ChannelHandler.cpp:54:45: warning: format '%lx' expects argu
ment of type 'long unsigned int', but argument 4 has type 'u32' {aka 'unsigned int'} [-Wformat=]
54 | sprintf(filepath, "/title/%08lx/%08lx/content/%08lx.app", TITLE_UPPER(title), TITLE_
LOWER(title), bootcontent);
| ~~~~^
| |
| long unsigned int
| %08x
C:/HAI-Priiloader/src/priiloader/source/ChannelHandler.cpp:54:59: warning: format '%lx' expects argu
ment of type 'long unsigned int', but argument 5 has type 'u32' {aka 'unsigned int'} [-Wformat=]
54 | sprintf(filepath, "/title/%08lx/%08lx/content/%08lx.app", TITLE_UPPER(title), TITLE_
LOWER(title), bootcontent);
| ~~~~^
~~~~~~~~~~~
| |
|
| long unsigned int
u32 {aka unsigned int}
| %08x
DiscContent.cpp
Global.cpp
HTTP_Parser.cpp
HomebrewChannel.cpp
Input.cpp
SystemMenu.cpp
C:/HAI-Priiloader/src/priiloader/source/SystemMenu.cpp: In function 'bool DecryptvWiiSysMenu(void*)'
:
C:/HAI-Priiloader/src/priiloader/source/SystemMenu.cpp:185:81: error: invalid conversion from 'const
void*' to 'void*' [-fpermissive]
185 | if (AES_Decrypt(vwii_ancast_retail_key, sizeof(vwii_ancast_retail_key), vwii_ancast_
iv, sizeof(vwii_ancast_iv), anc + 1, anc + 1, anc->info_block.body_size) < 0)
| ^~~~~~~~~~~~
~~
| |
| const void*
In file included from C:/devkitPro/libogc/include/gccore.h:71,
from C:/HAI-Priiloader/src/priiloader/source/SystemMenu.cpp:22:
C:/devkitPro/libogc/include/ogc/aes.h:46:54: note: initializing argument 3 of 's32 AES_Decrypt(con
st void*, u32, void*, u32, const void*, void*, u32)'
46 | s32 AES_Decrypt(const void* key, u32 key_size, void* iv, u32 iv_size, const void* in_data, v
oid* out_data, u32 data_size);
| ~~~~~~^~
make[2]: *** [/opt/devkitpro/devkitPPC/base_rules:15: SystemMenu.o] Error 1
make[1]: *** [Makefile:132: build] Error 2
make[1]: Leaving directory '/c/HAI-Priiloader/src/priiloader'
make: *** [Makefile:5: all] Error 2
 
Meanwhile I can't compile HAI-Priiloader. I am using msys2 but it's giving me this error:
# make
make -C ./src/loader
make[1]: Entering directory '/c/HAI-Priiloader/src/loader'
-----------------------------------------------
compiling the loader...
-----------------------------------------------
loader.c
_stack.s
_startup.s
make[1]: Leaving directory '/c/HAI-Priiloader/src/loader'
make -C ./tools/bootloader
make[1]: Entering directory '/c/HAI-Priiloader/tools/bootloader'
make[1]: Leaving directory '/c/HAI-Priiloader/tools/bootloader'
make -C ./tools/OpenDolBoot
make[1]: Entering directory '/c/HAI-Priiloader/tools/OpenDolBoot'
building OpenDolBoot...
make[1]: Leaving directory '/c/HAI-Priiloader/tools/OpenDolBoot'
make -C ./src/priiloader
make[1]: Entering directory '/c/HAI-Priiloader/src/priiloader'
fatal: No names found, cannot describe anything.
writing versions to file
Using 0xc1c29cb as revision, c1c29cb as revision string

-----------------------------------------------
compiling priiloader...

stub.bin
loader.bin
ChannelHandler.cpp
C:/HAI-Priiloader/src/priiloader/source/ChannelHandler.cpp: In function 'u8* GetDol(u32, u64)':
C:/HAI-Priiloader/src/priiloader/source/ChannelHandler.cpp:54:39: warning: format '%lx' expects argu
ment of type 'long unsigned int', but argument 3 has type 'u32' {aka 'unsigned int'} [-Wformat=]
54 | sprintf(filepath, "/title/%08lx/%08lx/content/%08lx.app", TITLE_UPPER(title), TITLE_
LOWER(title), bootcontent);
| ~~~~^
| |
| long unsigned int
| %08x
C:/HAI-Priiloader/src/priiloader/source/ChannelHandler.cpp:54:45: warning: format '%lx' expects argu
ment of type 'long unsigned int', but argument 4 has type 'u32' {aka 'unsigned int'} [-Wformat=]
54 | sprintf(filepath, "/title/%08lx/%08lx/content/%08lx.app", TITLE_UPPER(title), TITLE_
LOWER(title), bootcontent);
| ~~~~^
| |
| long unsigned int
| %08x
C:/HAI-Priiloader/src/priiloader/source/ChannelHandler.cpp:54:59: warning: format '%lx' expects argu
ment of type 'long unsigned int', but argument 5 has type 'u32' {aka 'unsigned int'} [-Wformat=]
54 | sprintf(filepath, "/title/%08lx/%08lx/content/%08lx.app", TITLE_UPPER(title), TITLE_
LOWER(title), bootcontent);
| ~~~~^
~~~~~~~~~~~
| |
|
| long unsigned int
u32 {aka unsigned int}
| %08x
DiscContent.cpp
Global.cpp
HTTP_Parser.cpp
HomebrewChannel.cpp
Input.cpp
SystemMenu.cpp
C:/HAI-Priiloader/src/priiloader/source/SystemMenu.cpp: In function 'bool DecryptvWiiSysMenu(void*)'
:
C:/HAI-Priiloader/src/priiloader/source/SystemMenu.cpp:185:81: error: invalid conversion from 'const
void*' to 'void*' [-fpermissive]
185 | if (AES_Decrypt(vwii_ancast_retail_key, sizeof(vwii_ancast_retail_key), vwii_ancast_
iv, sizeof(vwii_ancast_iv), anc + 1, anc + 1, anc->info_block.body_size) < 0)
| ^~~~~~~~~~~~
~~
| |
| const void*
In file included from C:/devkitPro/libogc/include/gccore.h:71,
from C:/HAI-Priiloader/src/priiloader/source/SystemMenu.cpp:22:
C:/devkitPro/libogc/include/ogc/aes.h:46:54: note: initializing argument 3 of 's32 AES_Decrypt(con
st void*, u32, void*, u32, const void*, void*, u32)'
46 | s32 AES_Decrypt(const void* key, u32 key_size, void* iv, u32 iv_size, const void* in_data, v
oid* out_data, u32 data_size);
| ~~~~~~^~
make[2]: *** [/opt/devkitpro/devkitPPC/base_rules:15: SystemMenu.o] Error 1
make[1]: *** [Makefile:132: build] Error 2
make[1]: Leaving directory '/c/HAI-Priiloader/src/priiloader'
make: *** [Makefile:5: all] Error 2
Ill DM you a compiled folder
Post automatically merged:

Okay i trimmed the ancast image and put it in osv1. Opening the homebrew channel inject boots directly to priiloader.
 
Last edited by awesomeee,
  • Like
Reactions: MysticStarlight
Ill DM you a compiled folder
Post automatically merged:

Okay i trimmed the ancast image and put it in osv1. Opening the homebrew channel inject boots directly to priiloader.
That part is working correctly. Unfortunately, due to other HAI-IOS issues ES_Launch_Title does not work so the only way to get the homebrew channel to work is by having HAI-Priiloader boot it. This part will certainly not work if the fw.img is not patched for a homebrew or forwarder inject as those are automatically patched to enable AHBPROT access and disable mem2 protection.
 
That part is working correctly. Unfortunately, due to other HAI-IOS issues ES_Launch_Title does not work so the only way to get the homebrew channel to work is by having HAI-Priiloader boot it. This part will certainly not work if the fw.img is not patched for a homebrew or forwarder inject as those are automatically patched to enable AHBPROT access and disable mem2 protection.
Okay another issue is that in priiloader the input from gamepad wont register. Do i need to use a wiimote?

I just need to know what folder i need to patch fw.img. Again thanks for all the help. I showed the picture. Above
 
Okay another issue is that in priiloader the input from gamepad wont register. Do i need to use a wiimote?

I just need to know what folder i need to patch fw.img. Again thanks for all the help. I showed the picture. Above
If it works properly, HAI-Priiloader should automatically boot OHBC. The location of fw.img is dependent on the id for the inject.
 

Site & Scene News

Popular threads in this forum