Hacking Hardware Homebrew AX88772B/C/D USB Ethernet Patcher for vWii

  • Thread starter Thread starter doworian
  • Start date Start date
  • Views Views 5,179
  • Replies Replies 39
  • Likes Likes 12
## v1.1.0

Fixes IOS58 ethernet, used by Homebrew Channel and most homebrew apps/games.

v1.0.0 only patched the device ID in IOS58, which wasn't enough. The AX88772B has register-level incompatibilities that caused every received packet to be silently corrupted. System Settings worked (IOS80, fully patched) but anything running on IOS58 couldn't send or receive.

Changelog:

**IOS58 ETH driver patches (3 new):**
- RX Control 0x4000 (EHCI path): `0x318` → `0x118` - stops 2-byte IP alignment padding that misaligned every packet
- RX Control 0x2000 (OHCI path): `0x218` → `0x118` - same fix for the OHCI buffer path
- SW Reset axDown: `0x4C` → `0xCC` - sets IPOSC to keep oscillator alive during PHY power-down

**Network test:**
- Press B after patching to test the connection
- Reloads IOS58 to activate patches, shows local IPv4 and WAN IP

**Fixes:**
- VID/PID sweep now scans all IOS58 content modules
- Controller reconnect after IOS reload no longer hangs
Post automatically merged:

## v1.2.0

Adds IOS36 ethernet patching — used by Mario Kart Wii and CTGP-R when launched from the Wii Menu.

v1.1.0 patched IOS80 (System Settings) and IOS58 (HBC/homebrew), but games like MKWii reload to IOS36 for their network stack. The adapter was recognized and working in System Settings and HBC, but wouldn't even attempt to initialize in-game.

IOS36's ETH module is a shared content (`shared1`, 30584 bytes) that turned out to be byte-identical to IOS80's private copy - same binary, same offsets, same 9 patches. The only difference in the NAND dump was literally the 21 bytes we'd already patched in IOS80.

Changelog:

**IOS36 ARM32 ETH driver (9 patches, same as IOS80):**
- ehc/oh0 device path PID: `7720` → `772b`
- PID immediate in register construction: `ADD R3,#0x20` → `#0x2B`
- RX Control A/B/C: `0x018`/`0x218`/`0x318` → `0x118` - header mode fix
- SW Reset init + down: `0x44`/`0x4C` → `0xC4`/`0xCC` - IPOSC keep-alive
- VID/PID scanner: `MOV+ADD+ADD` → `LDR` literal pool

**Internal:**
- Renamed `patch_ios80_ethernet()` → `patch_arm32_ethernet()` - same function handles both IOS36 and IOS80
- Patcher now runs 3 steps: IOS36 → IOS80 → IOS58
- Version checks added for IOS36 v3864
it would work on a regular wii?
 
You would have to adjust the addresses as vIOS are differen, but I assume the code around that part is the same. So porting it should be trivial.
 
it would work on a regular wii?
I checked and it's not possible because the Wii version's system IOS are different revisions than those of vWii, and the installer will be denied to avoid bricking the original Nintendo Wii, since you are installing vWii IOS on an original Wii.

You would have to adjust the addresses as vIOS are differen, but I assume the code around that part is the same. So porting it should be trivial.
It would be incredible if it were possible, since now the Wii has problems with new routers and the Ugreen adapter is sometimes compatible with the Nintendo Wii.
 
I checked and it's not possible because the Wii version's system IOS are different revisions than those of vWii, and the installer will be denied to avoid bricking the original Nintendo Wii, since you are installing vWii IOS on an original Wii.


It would be incredible if it were possible, since now the Wii has problems with new routers and the Ugreen adapter is sometimes compatible with the Nintendo Wii.
the new ugreen adapters do not work, they change the chipset, I did not nothice this until it was to late, got 8 of them, sadly I live in ecuador so return them was more expensive than just keep them
 
Sorry guys, kind of forgot about this thread!

I'll make an effort to:
- Add compatibility (rather than a hard replacement)
- Add a Wii version (if I can get my Wii working)
- Add more adapters and maybe try to even tackle the AX88179 since they seem to be selling these more commonly.
 
My thoughts 30 minutes ago:
> "Wow it's been like a week since I said I would work on the patcher, I might as well get around to it since I have free time"
> *Checks the date of my last post*
> *1 month has passed by*

Okay! Time to actually work on this. Goals remain the same! I can also test on my normal Wii now, so now majority of you can actually use this :P

Expect some frequent updates from me!
Post automatically merged:




i will be detecting the version of your adapter so you will know if you are capable of patching.​
Post automatically merged:

Update dropped, go check it out! (I threw in my attempt at making the D variant work!)

To anyone waiting for the Wii version, just be a little patient, I just spent a lot of time making sure the Wii U version is in good shape...
 
Last edited by doworian,
I just tried the patch on my regular Wii with the AX88772B adapter, and the installation of IOS 59 failed. The remaining IOS versions weren't patched, but the main ones were. However, after exiting the patch, the Homebrew Channel was upside down due to the IOS 58 modification. I was curious if it would at least detect the adapter, and I verified that it did detect the Mac Andress. I tested the connection, and it was successful. The adapter stayed on, but it's not doing anything, as if it doesn't have an internet connection.

Now we know it's possible to make it work on a regular 2007 Wii. Thanks for making the adapters compatible. By the way, I also tested the AX88179 and it shows up as the AX88772D, not the AX88179, even though the adapter is actually an AX88179.
 
The AX88772D is the AX88179 with just USB 2.0. That's why making it work isn't as easy, it's a completely different series
 
  • Like
Reactions: Marcos328
The AX88772D is the AX88179 with just USB 2.0. That's why making it work isn't as easy, it's a completely different series
That explains why it detects me as AX88772D, thanks for the explanation.

I forgot to mention that I also tried the AX88772D, and it does nothing and isn't detected. However, the AX88772B on a standard Wii does partially detect it due to a lack of an unpatched IOS because the installation stops at IOS 59, which is only for Japanese consoles.
 
I just tried the patch on my regular Wii with the AX88772B adapter, and the installation of IOS 59 failed. The remaining IOS versions weren't patched, but the main ones were. However, after exiting the patch, the Homebrew Channel was upside down due to the IOS 58 modification. I was curious if it would at least detect the adapter, and I verified that it did detect the Mac Andress. I tested the connection, and it was successful. The adapter stayed on, but it's not doing anything, as if it doesn't have an internet connection.

Now we know it's possible to make it work on a regular 2007 Wii. Thanks for making the adapters compatible. By the way, I also tested the AX88179 and it shows up as the AX88772D, not the AX88179, even though the adapter is actually an AX88179.
1. This patcher is not for Wii, it's for vWii, which is a separate mode inside of the Wii U.
2. The AX88179 flagging as the AX88772D makes sense, considering we are identifying the adapters by their Vendor ID (VID) and Product ID (PID). The AX88179 and AX88772D report the same exact VID|PID.

I can make them identify differently though via bcdDevice (just like we do for the AX8872B/C variant), since I plan on trying to ensure the patcher works for the AX88772D/AX88179, it's likely to happen.

Whenever I finish making the Wii version, I would really appreciate you testing again, I don't have the D variant or an AX88179 myself, so I'm basically relying on you all to test my silly stuff.
 
  • Like
Reactions: Marcos328
What did you change for the 88179? Looking at the Linux kernel it as a completely different initialization.
 
1. This patcher is not for Wii, it's for vWii, which is a separate mode inside of the Wii U.
2. The AX88179 flagging as the AX88772D makes sense, considering we are identifying the adapters by their Vendor ID (VID) and Product ID (PID). The AX88179 and AX88772D report the same exact VID|PID.

I can make them identify differently though via bcdDevice (just like we do for the AX8872B/C variant), since I plan on trying to ensure the patcher works for the AX88772D/AX88179, it's likely to happen.

Whenever I finish making the Wii version, I would really appreciate you testing again, I don't have the D variant or an AX88179 myself, so I'm basically relying on you all to test my silly stuff.
I'd be happy to test your versions and let you know if the AX88179 adapter works, and please take your time. :)
Post automatically merged:

What did you change for the 88179? Looking at the Linux kernel it as a completely different initialization.
I tested it on the patch, since I don't have Linux, but it identifies it as AX88772D, while on my Windows computer it detects it as AX88179, which is a USB 3.0 adapter.
 
What did you change for the 88179? Looking at the Linux kernel it as a completely different initialization.
I have not started support for AX88179 specifically yet, I was just working on the AX88772D variant.
 
I meant either of those two as I would expect them to work similar if not exactly the same
 
Hello, I’m getting an error -116 when trying to test network. Ive dumped stick ios to my sd card and patched the ax88772b but testing gives me an error
 
Hello, I’m getting an error -116 when trying to test network. Ive dumped stick ios to my sd card and patched the ax88772b but testing gives me an error
Pushing a fix for this soon... along with some other issues.
Post automatically merged:

version 1.1 released

  • Fixed rxctrl path writing 0x018 instead of 0x118, causing receiving packets to fail
  • No longer crash on network test due to AHBPROT permissions
  • Cleaned up patching progress screen
 
Last edited by doworian,
  • Like
Reactions: alxxn
Pushing a fix for this soon... along with some other issues.
Post automatically merged:

version 1.1 released

  • Fixed rxctrl path writing 0x018 instead of 0x118, causing receiving packets to fail
  • No longer crash on network test due to AHBPROT permissions
  • Cleaned up patching progress screen
Network test works now, thank you
 
  • Like
Reactions: doworian
My AX88772C adapter is recognized as a AX88772B chip and after i aply the patch it doesn't work...
 
My AX88772C adapter is recognized as a AX88772B chip and after i aply the patch it doesn't work...
Can you plug your adapter into a computer and show me what the vendor ID is? The one I purchased is also supposed to be AX88772C, but the vendor ID specifically shows up as B.

1779652593892.png
 

Site & Scene News

Popular threads in this forum