Luma3DS v10.0 Released

Luma3DS v10.0 Released


AuroraWright has released a new version of the popular Luma3DS CFW for homebrew capable Nintendo 3DS/2DS portable video gaming consoles. Luma3DS is a program to patch the system software of (New) Nintendo 3DS handheld consoles "on the fly", adding features (such as per-game language settings and debugging capabilities for developers) and removing restrictions enforced by Nintendo (such as the region lock). It also allows you to run unauthorized ("homebrew") content by removing signature checks. To use it, you will need a console capable of running homebrew software on the ARM9 processor.

What's New?

Quote:
HOTFIXED (June 30, 14:00 CEST):

* Fix process list memory viewer

HOTFIXED (17:15 CEST):

* Fix NTP client not setting time and date correctly due to one RTC not properly being set to 0. Also fix one related UI bug
* Merge [#1266](https://github.com/AuroraWright/Luma3DS/pull/1266)

---

* New feature: NTP client

* Located in the "miscellaneous" Rosalina submenu, this fetches the time from time1.google.com (hardcoded IP) by default
* This sets the config savefile RTC offset 0, hence the displayed by Home Menu will also be the time that Arm9 programs like GM9 will see
* Consequently, Luma3DS's own Arm9 code will properly set the date and time when modifying or creating new files
* New feature: blue light filters (thanks to [@panicbit](https://github.com/panicbit), [#1065](https://github.com/AuroraWright/Luma3DS/pull/1065))

* Lots of cheat engine bugfixes and improvements thanks to [@piepie62](https://github.com/piepie62) (multiple PRs), in addition to [@tstambaugh92](https://github.com/tstambaugh92) 's bugfixes ([#1116](https://github.com/AuroraWright/Luma3DS/pull/1116), [#1117](https://github.com/AuroraWright/Luma3DS/pull/1117))

* most CTRPF-AR code types now supported
* more cheats can be loaded at once
* New reimplemented sysmodule: pm

* Number of max. pm:dbg sessions increased for Rosalina usage
* New pm:dbg commands: GetCurrentAppTitleIdAndPid, DebugNextApplicationByForce, LaunchTitleDebug (mainly for gdbstub usage)
* Debug restrictions lifted for the gdbstub
* Service restrictions lifted for Cubic Ninja
* Lots of gdbstub improvements:

* Added support for debugging application at their very start (new option in Debugger submenu)
* Added support for `target extended-remote`
* You do not need to select a process to attach to in process list anymore using this, although it still works absolutely fine
* You will see a nice process list in IDA
* When launching new processes: only `titleId [mediaType [launchFlags]]` is supported, and the launched title shouldn't rely on APT and all 3 parameters should be hex-encoded (see [e11cc09](https://github.com/AuroraWright/Luma3DS/commit/e11cc090b27266e922db76cb7a7850d67bda8f18))
* Added support for accessing host files (including stdin/stdio/stderr) from target 3DS programs. Support for it has been added in libctru
* Added support for accessing target SD-card files from the host (`remote put`, `remote get` and `remote delete`)
* Doubled packet size
* Many bugfixes
* Fixed critical bugs in sm: one causing a crash when launching the camera applet when another title was using the camera, another possibly affecting sleep mode

* Fixed a critical bug where Luma3DS's Arm9 code would spam I2C requests, causing some particular commits of popular Arm9 payloads to fail on New3DS units with IPS screens.
If the issue still arises, put multiple payloads in the folder and use the chainloader menu to work around it

* Reworked build system. Armips is no longer required.

* Always dump errdisp errors to `/luma/errdisp.txt`

* Upgraded FatFs to R0.13c

* Upgraded I2C driver in Arm9 code

* Fix screens not working on firmlaunch, firmlaunch errors will now be displayed on screen

* Patch 11.8+ NIM-related Process9 to send all-zero key and IV when the UNITINFO patch is enabled (thanks to [@luigoalma](https://github.com/luigoalma), [#1142](https://github.com/AuroraWright/Luma3DS/pull/1142))

* Hide EmuNAND options when there is no EmuNAND present on the console

* Fix minor bugs involving DS(i) title autoloading

* Many other bugfixes

* Note: the pm reimplementation currently breaks NTR CFW to some extent (in particular game plugins). The abandoned "NTR CFW" is now unsupported, even if it may work.

* A solution for future versions is being worked on.
* It may be possible to change NTR CFW source code for it not to inject itself into pm, since Luma3DS removes svc permission checks anyway, to mitigate the issue. We do not have the time to do that ourselves
* It is not possible to disable custom pm

In addition, with thanks to [@fincs](https://github.com/fincs), this release of Luma3DS comes bundled with version 2.1.0 of the [Homebrew Menu](https://github.com/fincs/new-hbmenu).
Description

Luma3DS is a program to patch the system software of (New) Nintendo 3DS handheld consoles "on the fly", adding features (such as per-game language settings and debugging capabilities for developers) and removing restrictions enforced by Nintendo (such as the region lock). It also allows you to run unauthorized ("homebrew") content by removing signature checks. To use it, you will need a console capable of running homebrew software on the ARM9 processor.

Features

## Custom sysmodules

* Loader: Inspired by yifanlu's [re-implementation of Loader](https://github.com/yifanlu/3ds_injector), Luma3DS integrates a custom Loader with the ability to inject code, allowing most of our patches to work with ease, and does most of the work involved in language emulation and game patching/LayeredFS. More information about these features can be found on the [Optional features](https://github.com/AuroraWright/Luma3DS/wiki/Optional-features) page.
* [Rosalina](https://github.com/AuroraWright/Luma3DS/wiki/Rosalina): A completely custom sysmodule with a myriad of features for end user convenience, triggered by pressing L+Down+Select (by default, can be changed) once the 3DS is booted. See the linked page for more information.
* Service Manager (SM) and PXI: The builtin sysmodules SM and PXI were re-implemented by @TuxSH and integrated into Luma, and are somewhat more efficient than their Nintendo counterparts. Additionally, service access checking was removed from the SM re-implementation, removing many restrictions.

## [](#data-protection)Data protection

* Entrypoint/source detection: As of version 9.0, the entrypoint Luma3DS is booted from is displayed on the bottom screen in the configuration menu. Luma3DS can detect whether it was booted from the SD card, CTRNAND, FIRM0/1, as well as the entrypoint that launched it (boot9strap, ntrboot, etc.) and will enable/disable features accordingly. For example, when launched from ntrboot, Luma3DS only allows itself to be used as a chainloader because it isn't safe to fully boot from it.
* FIRM partition write protection: Luma3DS prevents the system from writing to the FIRM partitions. This allows you to perform a System Update safely without boot9strap being removed.
* Session persistence: You will be returned to the correct NAND (sysNAND or emuNAND1/2/3/4) when returning from titles that soft reboot the 3DS, such as System Settings, extended memory games (Smash Brothers, Monster Hunter XX, etc.), DS carts, and DSiWare. This excludes GBA Virtual Console games launched from emuNAND; due to the way AGB_FIRM works you must be rebooted to sysNAND on exit or your save will be lost.

## [](#removal-of-restrictions)Removal of restrictions

* AGB patches: Custom Gameboy Advance Virtual Console games can be launched with AGB_FIRM, eliminating the need to use a homebrew emulator.
* Archive/ARM9 exheader/Services/SVC access: SVC, service, archive, and ARM9 exheader permission checks are patched out by default as of Luma3DS v9.0.
* Exception handlers: If something causes a crash/exception, Luma3DS will show a dump and offer to save it to the SD card for parsing later. ARM11 exception handlers can be turned off, but this is highly not recommended; ARM9 exception handlers cannot be turned off. Luma3DS' exception handlers are capable of handling crashes in chainloaded payloads (unless the payload has its own handlers, such as GodMode9), CPU exceptions, svcBreak()s, kernel panics, most cases of ErrDisp, etc.
* To parse an exception dump:
* Note: Our exception dump parser uses [Python](https://www.python.org); it must be installed and added to your system PATH.
* Clone Luma3DS' git repository (or just download the `/exceptions/parser` directory)
* Open a terminal/CMD avigate to the `/exceptions/parser` directory, and run `python setup.py install`. This will install the exception dump parser to your system.
* Navigate to where your kept your exception dump and run `luma3ds_exception_dump_parser FILE_NAME_HERE.dmp`
* NTR/TWL cart whitelist patches: The Home Menu and TWL_FIRM whitelist for DS carts have been patched out; if your 3DS flashcart shows in the original Nintendo DSi Home Menu, it should work with a 3DS running Luma3DS. Additionally, very old DS carts that did not show in the DSi Home Menu can be booted with homebrew such as [NTR Launcher](https://github.com/ApacheThunder/NTR_Launcher).
* Region-free patches: The region lock preventing foreign/imported 3DS games from working has been removed. Carts from the NA (North America), EU (Europe), JP (Japan), KOR (Korea), TWN (Taiwan, Hong Kong), and CHN (mainland China) regions should work without issue on any region firmware with Luma3DS, eliminating the need to perform region changes. Note: CHN/TWN/KOR 3DSes use a different shared font archive than NA/EU/JP. It may be necessary to install the other regions' shared font archives if your out of region game does not work.
* Signature check patches: Most signature checks performed by Horizon (the 3DS operating system) have been patched out, allowing unsigned code/homebrew to run without issue.

## [](#developer-features)Developer features

These features are useful for debugging and writing homebrew; typically they will not be useful for the end user.

* A kernel extension extending the features of Kernel11:

* New features for existing SVCs, for example:

* New types for svcGet
ProcessInfo: 0x10000 to get a process's name, 0x10001 to get a process's title ID, 0x10002 to 0x10007 for section attributes, 0x10008 for TTBR1, etc.
* New types for svcGetSystemInfo: 0x10000 for CFW info, 0x10001 for N3DS-related info, 0x10002 for TTBCR and TTBR0 per core, etc.
* New types for svcGetThreadInfo: 0x10000 for thread local storage.
* Many other changes to be listed here.
* New SVCs:

* svcControlService(): Performs actions related to services or global handles.
* SERVICEOP_STEAL_CLIENT_SESSION: Steal a client session given a service or global port name
* SERVICEOP_GET_NAME: Get the name of a service or global port given a client or session handle
* svcCustomBackdoor(): Executes a function in supervisor mode, using the supervisor-mode stack.
* svcConvertVAToPA(): Gives the physical address corresponding to a virtual address.
* svcFlushDataCacheRange(): Flushes a range of the data cache (L2C included).
* svcFlushEntireDataCache(): Flushes the data cache entirely (L2C included).
* svcInvalidateInstructionCacheRange(): Invalidates a range of the instruction cache.
* svcInvalidateEntireInstructionCache(): Invalidates the instruction cache entirely.
* svcMapProcessMemoryEx(): Maps a block of process memory.
* svcUnmapProcessMemoryEx(): Unmaps a block of process memory.
* svcControlMemoryEx(): Controls memory mapping, with the choice to use region attributes or not.
* svcCopyHandle(): Copy a handle from a process to another one.
* svcTranslateHandle(): Get the address and class name of the underlying kernel object corresponding to a handle.
* Indirect SVC: svc 0xFE
* [See csvc.h](https://github.com/AuroraWright/Luma3DS/blob/master/sysmodules/rosalina/include/csvc.h) for more information.
* Debug features:

* Everything behaves as if the "Allow debug" kernel flags was always set, and svcKernelSetState as well as the official debug handlers always believe that the unit is a development one. This is needed for the below item
* No need to do svcKernelSetState(6, 1, 1LL) for user-specified exception handlers anymore.
* Luma3DS' fatal exception handlers are now only used either on privileged-mode crashes or when there is no preferred alternative, namely: KDebug based-debugging, or user-defined exception handlers.
* New memory mapping: PA 00000000..30000000 -] VA 80000000..B0000000 [ Priv: RWX, User: RWX ] [ Shared, Strongly Ordered ] (accessible from the GDB stub)

* Because of memory issues, ErrDisp is not launched; err:f has been reimplemented.
Instructions

See [guide](https://www.homebrewgeneral.net/2019/06/3ds-exploits-tutorials-and-guides_10.html) for details on how to get your system ready.

Changelog

v10.0

HOTFIXED (June 30, 14:00 CEST):

* Fix process list memory viewer

HOTFIXED (17:15 CEST):

* Fix NTP client not setting time and date correctly due to one RTC not properly being set to 0. Also fix one related UI bug
* Merge [#1266](https://github.com/AuroraWright/Luma3DS/pull/1266)

---

* New feature: NTP client

* Located in the "miscellaneous" Rosalina submenu, this fetches the time from time1.google.com (hardcoded IP) by default
* This sets the config savefile RTC offset 0, hence the displayed by Home Menu will also be the time that Arm9 programs like GM9 will see
* Consequently, Luma3DS's own Arm9 code will properly set the date and time when modifying or creating new files
* New feature: blue light filters (thanks to [@panicbit](https://github.com/panicbit), [#1065](https://github.com/AuroraWright/Luma3DS/pull/1065))

* Lots of cheat engine bugfixes and improvements thanks to [@piepie62](https://github.com/piepie62) (multiple PRs), in addition to [@tstambaugh92](https://github.com/tstambaugh92) 's bugfixes ([#1116](https://github.com/AuroraWright/Luma3DS/pull/1116), [#1117](https://github.com/AuroraWright/Luma3DS/pull/1117))

* most CTRPF-AR code types now supported
* more cheats can be loaded at once
* New reimplemented sysmodule: pm

* Number of max. pm:dbg sessions increased for Rosalina usage
* New pm:dbg commands: GetCurrentAppTitleIdAndPid, DebugNextApplicationByForce, LaunchTitleDebug (mainly for gdbstub usage)
* Debug restrictions lifted for the gdbstub
* Service restrictions lifted for Cubic Ninja
* Lots of gdbstub improvements:

* Added support for debugging application at their very start (new option in Debugger submenu)
* Added support for `target extended-remote`
* You do not need to select a process to attach to in process list anymore using this, although it still works absolutely fine
* You will see a nice process list in IDA
* When launching new processes: only `titleId [mediaType [launchFlags]]` is supported, and the launched title shouldn't rely on APT and all 3 parameters should be hex-encoded (see [e11cc09](https://github.com/AuroraWright/Luma3DS/commit/e11cc090b27266e922db76cb7a7850d67bda8f18))
* Added support for accessing host files (including stdin/stdio/stderr) from target 3DS programs. Support for it has been added in libctru
* Added support for accessing target SD-card files from the host (`remote put`, `remote get` and `remote delete`)
* Doubled packet size
* Many bugfixes
* Fixed critical bugs in sm: one causing a crash when launching the camera applet when another title was using the camera, another possibly affecting sleep mode

* Fixed a critical bug where Luma3DS's Arm9 code would spam I2C requests, causing some particular commits of popular Arm9 payloads to fail on New3DS units with IPS screens.
If the issue still arises, put multiple payloads in the folder and use the chainloader menu to work around it

* Reworked build system. Armips is no longer required.

* Always dump errdisp errors to `/luma/errdisp.txt`

* Upgraded FatFs to R0.13c

* Upgraded I2C driver in Arm9 code

* Fix screens not working on firmlaunch, firmlaunch errors will now be displayed on screen

* Patch 11.8+ NIM-related Process9 to send all-zero key and IV when the UNITINFO patch is enabled (thanks to [@luigoalma](https://github.com/luigoalma), [#1142](https://github.com/AuroraWright/Luma3DS/pull/1142))

* Hide EmuNAND options when there is no EmuNAND present on the console

* Fix minor bugs involving DS(i) title autoloading

* Many other bugfixes

* Note: the pm reimplementation currently breaks NTR CFW to some extent (in particular game plugins). The abandoned "NTR CFW" is now unsupported, even if it may work.

* A solution for future versions is being worked on.
* It may be possible to change NTR CFW source code for it not to inject itself into pm, since Luma3DS removes svc permission checks anyway, to mitigate the issue. We do not have the time to do that ourselves
* It is not possible to disable custom pm

In addition, with thanks to [@fincs](https://github.com/fincs), this release of Luma3DS comes bundled with version 2.1.0 of the [Homebrew Menu](https://github.com/fincs/new-hbmenu).
Links & Downloads
https://github.com/AuroraWright/Luma3DS/releases

Post a Comment

0 Comments