Tutorial  Updated

Building iosuhax on windows

In this tutorial I will go over how to build iosuhax from either my branch (for wupserver only) or dimoks branch (for rednand and signature patches) without having anything related installed yet.

Getting python
The first thing you want to do is download python, for this guide you will click download python 3.5, this will give you the current 3.5 32bit installer of python. If you already have a python 2 installation and you dont want to uninstall for python 3 then skip this step but note that you may have to add the python installation path into the PATH variable yourself if you didnt do that during that installation.
After opening the 3.5 32bit installer make sure to enable "Add Python 3.5 to PATH" because we want to be able to call python from anywhere, now let it install.

Installing pycrypto
To easly install pycrypto we will install it from this github page for the current 3.5 or this page for 2.7 if you have that. Open up a command prompt by for example pressing windows+r and typing in "cmd", in this command prompt you want to enter the following (just copy paste this depending on your python version):
PYTHON 3
Python 3.5 32bit:
Code:
pip install --use-wheel --no-index --find-links=https://github.com/sfbahr/PyCrypto-Wheels/raw/master/pycrypto-2.6.1-cp35-none-win32.whl pycrypto
Python 3.5 64bit:
Code:
pip install --use-wheel --no-index --find-links=https://github.com/sfbahr/PyCrypto-Wheels/raw/master/pycrypto-2.6.1-cp35-none-win_amd64.whl pycrypto
PYTHON 2
Python 2.7 32bit:
Code:
pip install --use-wheel --no-index --find-links=https://bitbucket.org/alexandrul/wheels/downloads/pycrypto-2.6.1-cp27-none-win32.whl pycrypto
Python 2.7 64bit:
Code:
pip install --use-wheel --no-index --find-links=https://bitbucket.org/alexandrul/wheels/downloads/pycrypto-2.6.1-cp27-none-win_amd64.whl pycrypto
If you have any older python 2/3 version then maybe just consider upgrading to the current version of python 2/3.
This will automatically install pycrypto for your python version, just let it finish up.

Getting devkitARM
Download the devkitpro updater from here and start it up, it will give you quite a few options on things to install, all you need to select is "Minimal System" and "devkitARM", you can uncheck everything else. Now just let it download and install everything.

Getting armips
For armips you can just download my pre-compiled exe and put it into "C:\devkitPro\msys\bin" so it can be directly used on compilation.

Downloading and preparing iosuhax
Depending on what you want head over to my branch or dimoks branch, click on "Clone or download" and if you have git then clone it, if you dont have git just click "Download ZIP" and extract the contents of it into a new folder on your computer. Make sure that new full folder path does not contain any spaces, a wrong path would be "C:\my folder\iosuhax", a correct folder would be "C:\my_folder\iosuhax".

Now if you have "the 2 keys" already you can edit the getfwimg from the little guide below:
Go into the "bin" folder, right click on getfwimg and select "Edit with IDLE", put the 2 keys in like this:
Code:
wiiu_common_key = "D7000000000000000000000000000000"
starbuck_ancast_key = "B5000000000000000000000000000000"
Of course these are not the full keys but only their first 2 digits. Now just save it.
If you dont have "those 2 keys" you can easly get them from your wiiu itself like this without having to edit any scripts:
Go grab otp2sd and start it via the homebrew launcher, it will just restart you and place a otp.bin on your wiiu sd card. Copy that otp.bin one folder above the iosuhax one so in our example let iosuhax be in "C:\my_folder\iosuhax", so you copy otp.bin into "C:\my_folder", iosuhax will find that otp.bin and use it automatically, you dont need to edit any scripts this way.

Now that you finally prepared iosuhax its time to compile it! Shift-right click in the iosuhax main folder, click on "Open command window here" and just type in "make" and press enter, this will get you a fw.img as output which you can put on you sd card root and use in cfw booter! If it failed to compile because of commands being unknown you may have to reboot your computer to make sure it properly installed all of the software.

I hope with this you were able to successfully compile iosuhax, now have fun with it :)

Note by Cyan:
Dimok branch can now build both CFW with and without NAND redirection to SD card, while Fix94 branch only compile a SysNAND CFW.

Fix94 branch : sysNAND. doesn't have latest cfw patches, but fix94 version contain new wupserver command instead.
Dimok branch : sysNAND and redNAND. This branch has currently more features than fix94 branch (allows HBL channel version installation, unrestricted NAND FTP access, NAND to SD dump, FAT32 USB mount support, etc.)

When you are at the compiling step,
fix94 sysNAND, type : make
dimok sysNAND, type : make cfw
dimok redNAND, type : make redNAND
by default, typing only "make" on dimok branch, it will build redNAND
 
Last edited by Cyan, , Reason: Added new compile steps and differences between Fix94 and Dimok branches.
Do you happen to maybe have other software which includes commands such as "make" already? those might cause problems in this case and have to be taken out of your PATH variable/uninstalled.

No, my only source for make is C:\devkitPro\msys\bin\make.exe. Removing "C:\devkitPro\msys\bin' from PATH caused the application to be unrecognized.
 
No, my only source for make is C:\devkitPro\msys\bin\make.exe. Removing "C:\devkitPro\msys\bin' from PATH caused the application to be unrecognized.
I had the same issue. I uninstalled devkitPro and installed again.
The only difference I saw was in the PATH, now I have first c:\devkitPro\msys\bin and second C:\windows\system32

Hope it works for you
 
I had the same issue. I uninstalled devkitPro and installed again.

That solved the issue for me. When I installed again, I decided to check all of the boxes.

--------------------- MERGED ---------------------------

Here's a message that I am getting when compiling from FIX94's branch:

Code:
arm-none-eabi-gcc -Wall -mbig-endian -std=c99 -march=armv5 -Os -I/c/devkitPro/libnds/include -c source/net_ifmgr_ncl.c -o build/net_ifmgr_ncl.o
source/net_ifmgr_ncl.c: In function 'IFMGRNCL_GetInterfaceStatus':
source/net_ifmgr_ncl.c:52:16: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
  u16* outbuf = (u32*)iobuf2;
                ^

I also got a similar message when compiling from a Ubuntu machine. Is it safe to ignore this warning? The MD5 of both fw.bin is 91aec1450002169e68c86ed1dc75cdbd.
 
I also got a similar message when compiling from a Ubuntu machine. Is it safe to ignore this warning? The MD5 of both fw.bin is 91aec1450002169e68c86ed1dc75cdbd.
The warning is totally normal and that is indeed the hash you want to get from my branch. Also I just fixed that warning in my branch so people dont get scared by it again ;)
 
Just removed the need to find the iv, at least in my branch it will now be automatically written into a .py file, I hope dimok will update his branch soon as well to match this updated guide.
 
Hi, thanks a lot for the REALLY easy guide, followed the steps and obtained the fw.img. Just a question though, is normal to get two files inside the bin folder. One is the fw.img and the other is fw.img.full.bin. They both are the same size.
 
yes, the fw.img you get is basically the "pure" iosu file which would run in cfw booter (which is pretty pointless for that case) and fw.img.full.bin is the decrypted one that anpack can then use to make it a cfw. Also I just updated the guide again and now both my and dimoks branch only need to get one script edited, everything else should be done automatically now.
 
  • Like
Reactions: soulkyo
yes, the fw.img you get is basically the "pure" iosu file which would run in cfw booter (which is pretty pointless for that case) and fw.img.full.bin is the decrypted one that anpack can then use to make it a cfw. Also I just updated the guide again and now both my and dimoks branch only need to get one script edited, everything else should be done automatically now.
Thanks for replying and clarifying it for me. Live long and prosper.
 
@FIX94 Wouldn't be easier to let people decrypt the encrypted fw.img and then apply an xdelta/diff patch to it and then reencrypt it back? It should be easier to distribute new versions of your firmwares.
 
I got this :

A:\iosuhax>make
somewhat simple 5.5.1 fw.img downloader
downloading osv10 cetk
downloading fw.img
decrypt first
decrypt second
decrypt third
Traceback (most recent call last):
File "getfwimg.py", line 100, in <module>
keys_store.write("key=\""+codecs.encode(starbuck_ancast_key, 'hex')+"\"\n")
TypeError: Can't convert 'bytes' object to str implicitly
make: *** [bin/fw.img.full.bin] Error 1

So is everything good ?
So what is error 1 at the end ?
I have a fw.img and fw.img.full.bin, How do i check crc32 ?
THX !
 
I got this :

A:\iosuhax>make
somewhat simple 5.5.1 fw.img downloader
downloading osv10 cetk
downloading fw.img
decrypt first
decrypt second
decrypt third
Traceback (most recent call last):
File "getfwimg.py", line 100, in <module>
keys_store.write("key=\""+codecs.encode(starbuck_ancast_key, 'hex')+"\"\n")
TypeError: Can't convert 'bytes' object to str implicitly
make: *** [bin/fw.img.full.bin] Error 1

So is everything good ?
So what is error 1 at the end ?
I have a fw.img and fw.img.full.bin, How do i check crc32 ?
THX !
Yeah, same. I don't think it worked?
 
I have 78E9F89824EF506F4CA1BDC4B155F281 MD5 checksum for fw.img
and 5983894B5AFC8614CE3C9188C74980C6 for fw.img.full.bin

I have fw.img crc32 d674201b which is good
But f40844dc for fw.img.full.bin instead of 9f2c91ff

Do i have to "make" again after rebooting my PC ?
 
Last edited by barak06,

Site & Scene News

Popular threads in this forum