Skip to content

JTegraNX v1.6

Compare
Choose a tag to compare
@dylwedma11748 dylwedma11748 released this 01 Jun 07:27
· 81 commits to master since this release
73ae644

What's new

JTegraNX has been re-written from scratch in an extreme effort to make it much more stable.

Ok, so there was a re-write, what core changes were made?

  • JTegraNX no longer uses TegraRCMSmash, the functionality for RCM payload injection is now written into JTegraNX.
    • The payload injecting bit uses usb4java to get the job done.
      • Before the RCM device is initialized, JTegraNX checks to see if the payload file exists and can be used, if this is false, the RCM device doesn't get initialized, allowing you to choose a different payload without having to reboot your Switch into RCM mode.
    • The stack smashing uses <setupapi.h> instead of libusbK.
    • Custom arguments are no longer supported.
      • The main use for this was SD card mounting, which has also been removed because Hekate can be bundled with JTegraNX and Hekate has it covered.
        If an error occurs, the error gets printed to the log, instead of JTegraNX crashing.
  • RCM device listener now uses libusbK's HotK module.
    • This squishes two bugs.
      • One bug where the RCM device wouldn't be detected on launch even if it was connected.
      • The other bug where rebooting to RCM from a payload sometimes wouldn't be detected.
  • Added APX driver detection and installation.
    • Administrator privileges are required for driver installation.
    • JTegraNX can only detect if the APX driver is missing if the RCM device is connected when JTegraNX launches.
      • This is because the HotK and LstK modules in libusbK only detect devices that have a libusbK driver installed for them. So if a device isn't detected on startup using LstK, JTegraNX uses <setupapi.h> to check if a device matching the vendor and product IDs of a Switch in RCM mode is connected. If it finds one then it assumes that the APX driver is missing. Getting JTegraNX to detect the missing driver when the device is connected after it launches would require me to implement a second device listener outside of libusbK. Standard libusb won't work because it can only detect the RCM device if the APX driver is installed.
      • If you install the APX driver while the RCM device detected, there will be a prompt for you to reconnect the device. This is to prevent the 50/50 chance of an error while writing the payload to the device.
    • JTegraNX also detects if the incorrect APX driver is installed when the RCM device is connected on and after startup.
      • I shouldn't have to explain the difference between a missing driver and an incorrect driver.
  • The bundled payload system now uses a custom library of mine called GitHandler.
    • This makes the payload updating much more stable.
    • This also squishes a critical bug that occurred when the release tag for Hekate was v5.5.4-v2
      • This bug was caused by the old system attempting to parse v5.5.4-v2 to get the download link for Hekate, which failed because JTegraNX was expecting a String like v5.5.4 and instead got v5.5.4-v2. This caused JTegraNX to hang.
               if (line.contains("<a href=\"/CTCaer/hekate/releases/tag/")) {
                   latestVersion = line.substring(line.indexOf("tag/") + 5, line.indexOf("\">"));
                   latestNyxVersion = line.substring(line.indexOf("Nyx") + 5, line.length() - 4);
                   success = true;
                   break;
               }
      
      • GitHandler gets past this by parsing each downloadable asset's download link per release per repository.
  • Added SD card preparation
    • When activated, JTegraNX will download all the basic requirements for getting your Switch ready for CFW (Based on this guide) and copy them to the specified output path, don't be afraid to point it to the root of your SD card.
    • This feature also uses GitHandler to ensure that the latest release of each prerequisite is downloaded.
  • Because I'm so confident in GitHandler, JTegraNX's self updater also uses it now.
  • The config system now only uses one config file for everything.
    • This includes UI settings, saved configs, and payload update information.
    • Loading external configs has also been removed because of the new system.
    • If the selected config is deleted, and the payload path field's text matches the deleted config's payload path, the payload path field's text is cleared.
  • The main config file and bundled payloads are now saved in "Documents/JTegraNX/".
  • The tray icon now has a button to simply inject the payload specified in the Payload Path field.
    • It automatically updates the label when the payload path is changed.
      • If the specified payload doesn't exist, it won't let you inject it.
      • The button will also not let you inject a payload if the APX driver is missing or incorrect.
    • Now you no longer have to rely on auto-inject when JTegraNX is minimized to the tray.
  • The tray icon now shows notifications when a payload is injected or when an error occurs.
    • The notifications only get triggered if JTegraNX is minimized to the tray.
  • Hiding the log has been removed because honestly, it seems pointless.
  • You can now customize JTegraNX's settings to your liking.
    • You can now toggle auto-checking for JTegraNX updates.
    • You can now toggle auto-checking for payload updates.
    • You can now choose which payloads you want to include with JTegraNX.
    • You can now toggle the tray icon being enabled or disabled.
  • New icons and more RCM status images were added.
    • Tooltips were added for buttons that have an icon with no text.