[Switch] WinX — 基于 2024 EDK2 的 NintendoSwitchPkg 分支(测试与开发)
[Switch] WinX — A NintendoSwitchPkg Fork Using 2024 EDK2 (Testing & Development)
WinX 是基于 NintendoSwitchPkg、使用 202402 EDK II 代码库的 Nintendo Switch 实验性 UEFI 固件分支,目标探索在硬件上启动 Windows ARM64。当前 UEFI Shell、EFI 应用、USB 键盘、microSD 与显示输出已在真机可用,但 Windows 启动未确认且硬件支持不完整。项目仍在开发中并招募测试与开发人员。
Hi everyone!
I’d like to introduce WinX, an experimental UEFI firmware project for the Nintendo Switch, based on NintendoSwitchPkg.
WinX uses the 202402 EDK II codebase and focuses on bringing up a UEFI environment on the Nintendo Switch. One of the long-term goals is to investigate the possibility of booting Windows ARM64 on the hardware.
This is an ongoing development project, and I’m hoping to find people interested in testing, debugging, and contributing to its development.
Current Status
The following functionality has been reported working on real hardware:
- UEFI Shell: Boots successfully.
- EFI applications: Can be launched from the UEFI Shell.
- USB keyboard: USB 2.0 keyboard input works.
- microSD: The card can be detected and accessed from the UEFI environment.
- Display output: UEFI display output is working.
There are still important limitations:
- Windows boot has not been confirmed.
- bootmgr.efi currently reports Unsupported in my testing.
- USB functionality may be affected by device connection or power-state changes.
- Hardware support and ACPI descriptions are still incomplete.
- Other Switch models and configurations have not been fully tested.
These results represent progress toward a usable UEFI environment, not a completed Windows port.
Technical Details
WinX is more than just a newer EDK II build. The project includes changes and integration work related to the Nintendo Switch’s hardware and boot process.
Areas of interest include:
- Boot chain: Launching the BL33 UEFI firmware through the Switch boot environment.
- USB: Integrating USB host-controller support for devices such as keyboards.
- Storage: Improving SD/MMC initialization and storage access.
- ACPI: Describing hardware to an operating system through ACPI tables.
- Firmware integration: Building and configuring the firmware image for the target hardware.
The current implementation provides a foundation for further investigation, but Windows requires much more than a working UEFI Shell. The boot manager, kernel, hardware enumeration, ACPI configuration, and appropriate device drivers all need to be considered.
Looking for Testers and Developers
I’m looking for people who would like to help investigate and improve the project.
Experience in any of the following areas would be especially useful:
- UEFI and EDK II development
- ARM64 firmware and boot processes
- NVIDIA Tegra 210 hardware
- USB host controllers and SD/MMC
- ACPI tables and Windows ARM64 boot requirements
- Low-level debugging and real-hardware testing
Testing, code review, reproducing bugs, identifying missing functionality, and suggesting next steps would all be appreciated.
Even if you are not able to contribute code, technical feedback would be very helpful.
Project Links
- WinX repository: https://github.com/steck0714/winx
- Original NintendoSwitchPkg: https://github.com/imbushuo/NintendoSwitchPkg
WinX is derived from NintendoSwitchPkg. Please refer to the original repository for the upstream project’s history and implementation, and to the WinX repository for the changes made in this fork.
Important Notes
WinX is experimental and is not a finished Windows port. Windows booting has not been demonstrated, and hardware support remains incomplete.
The goal of this thread is to share the project, document its progress, receive feedback, and hopefully find people interested in helping with testing and development.
If you’re interested in UEFI development on the Nintendo Switch, feel free to check out the repository and share your thoughts!
Thanks for reading!
来源:Gbatemp · gbatemp.net