|
|
1 年之前 | |
|---|---|---|
| .. | ||
| _image_tool | 1 年之前 | |
| _images | 2 年之前 | |
| gfx | 1 年之前 | |
| .gitsubtree | 1 年之前 | |
| LICENSE | 2 年之前 | |
| README.md | 2 年之前 | |
| README.txt | 2 年之前 | |
| WiiEC.png | 2 年之前 | |
| application.fam | 2 年之前 | |
| bc_logging.h | 1 年之前 | |
| err.h | 1 年之前 | |
| i2c_workaround.h | 1 年之前 | |
| info.sh | 2 年之前 | |
| notes.txt | 2 年之前 | |
| wii_anal.c | 1 年之前 | |
| wii_anal.h | 2 年之前 | |
| wii_anal_ec.c | 1 年之前 | |
| wii_anal_ec.h | 2 年之前 | |
| wii_anal_keys.c | 2 年之前 | |
| wii_anal_keys.h | 2 年之前 | |
| wii_anal_lcd.c | 2 年之前 | |
| wii_anal_lcd.h | 2 年之前 | |
| wii_anal_ver.h | 2 年之前 | |
| wii_ec.c | 2 年之前 | |
| wii_ec.h | 1 年之前 | |
| wii_ec_classic.c | 2 年之前 | |
| wii_ec_classic.h | 2 年之前 | |
| wii_ec_macros.h | 2 年之前 | |
| wii_ec_nunchuck.c | 2 年之前 | |
| wii_ec_nunchuck.h | 2 年之前 | |
| wii_ec_udraw.c | 2 年之前 | |
| wii_ec_udraw.h | 2 年之前 | |
| wii_i2c.c | 1 年之前 | |
| wii_i2c.h | 1 年之前 | |
This Protocol Analyser offers a full Test and Calibrate system for Wii Extension Controllers.
Disclaimer: Use of this plugin, and notably connecting an Extension Controller to the FlipperZero is performed entirely at your own risk.
This plugin has (todate) only been tested with official Nintendo Nunchucks and Classic Controllers - namely Nunchucks and Classic Controllers.
This plugin has SOME code to handle encryption, but it it unused, untested, and some of it is known to un-work.
This plugin (currently) only works with Extension Controllers which implement the encryption-bypass strategy. IE. i2c_write(0xf0, 0x55) ; i2c_write(0xfb, 0x00)
If you need this functionality, either raise an Issue or, better still, a Pull Request.

The SPLASH Screen is displayed when the Plugin starts. It can be cleared by pressing any key, else it will auto-clear after 3.5 seconds.

The WAIT screen will display which pins you need to connect between the flipper and the Wii Extension Controller.
Disclaimer: Use of this plugin, and notably connecting the Controller to the FlipperZero is performed entirely at your own risk.
Looking in to the exposed side of the Extension Controller plug, with the notch on the bottom
| EC Pin # | EC Position | EC Pin ID | Pin Function | FZ GPIO Pin Name | FZ GPIO Pin # |
|---|---|---|---|---|---|
| 1 | top-left | +3v3 | Power | 3v3 | 9 |
| 2 | bottom-left | SCL | i2c clock | C0 | 16 |
| 3 | top-centre | EN | ¿detect? | ||
| 4 | bottom-centre | -x- | -none- | ||
| 5 | top-right | SDA | i2c data | C1 | 15 |
| 6 | bottom-right | Gnd | Power | Gnd | 18 |
Keys:
The easiest way to connect a Wii Extension Controller to a FlipperZero is arguably with a "WiiChuck" or a "Nunchucky"
![]() | |||
| WiiChuck |
| Axis | Movement | Lower | Higher |
|---|---|---|---|
| X | Left / Right | Left | Right |
| Y | Fwd / Bkwd | Fwd | Bkwd |
| Z | Down / Up | Down | Up |
Keys:
NB. Code DOES exist to scroll the display, but the LCD refresh rate is too low, and it looks awful


When you connect a Classic Controller [Pro], you will see a screen displaying a Classic Controller
Keys:

The Dump screen will show you the raw readings from the device.
If you connect a device which does not have a bespoke _decode() function (etc.), you will see (only) this screen.
info table)Keys:
On any Controller-specific screen with a Peak/Trough menu displayed:

Digital buttons do NOT require Calibration.
Some controllers have Calibration data which is calculated at the factory, and stored in memory (¿OTP?) on the Controller. EG. Classic Controller HAS Calibration data, but Classic Controller Pro does NOT!
Each device has a different way to interpret the Calibration Data.
EG. A Nunchuck has one joystick, and an accelerometer ...whereas a Classic Controller has 2 joysticks and 2 analogue buttons.
I have personally found the calibration data to be inaccurate (when compared to actual readings), I guess Controllers drift over the years‽
If the factory-values LIMIT movement, this is easily resolved - by expanding them on-the-fly.
BUT, I have seen Controllers with factory calibration data that suggests the limits are FURTHER than the joystick can reach ...and this requires a full re-calibration of the Controller!
Probably the best way to calibrate is to:
Nintendo (allegedly) take the 'at rest' reading immediately after the Controller is connected, and a 're-calibration' can be performed at any time by pressing {A, B, +, -} at the same time, for at least 3 seconds. Although I have no details on what this actually does.

On any screen (except SPLASH) you may press Long-Down to enter Debug mode.
You can (at any time) attach to the FlipperZero (via USB) with a serial console {minicom, putty, whatever} and start the log function to see the debug messages.
When you enter the DEBUG screen, the real-time scanner will be stopped. And the following keys made available:
You can limit the messages at compile-time [see ./info.sh], or at runtime [FZ->Settings->System->LogLevel]
[This is probably irrelevant since the introduction of FAP support]
If you have memory issues, limiting the messages at compile-time will make the plugin smaller.
But (¿obviously?) the more you limit the messsages, the less debug information will be sent to the logger.
i2c_workaround.c]