Fluffy Switch

From GameBrew
Fluffy
Fluffynx.png
General
Authorfourminute
TypeGame Installer Companion
Version2.9.2
LicenseGPL-3.0
Last Updated2019/05/26
Links
Download
Website
Source
Support Author

A Tinfoil and Goldleaf GUI.

Features

  • Support for XorTroll/Goldleaf and Adubbz/Tinfoil (OG).
  • Support for languages: English, Chinese, Vietnamese, Spanish, French, Brazilian Portuguese, Turkish, Italian, German, and Bahasa Indonesia!
  • Cross platform: Fluffy works natively on Windows, Linux, and MacOS!
  • USB and Network: Display live transfer rate in MB/s with progress percentage.
  • USB and Network: Display current NSP being installed and numbered queue.
  • USB and Network: Batch NSP install support with individual selection.
  • USB and Network: Consecutive installs without restart.
  • USB and Network: Exception/Error handling, no restart required when an installation fails.
  • USB and Network: Ability to abort an installation in queue.
  • Tinfoil Network: Spoof file URL's to fix lengthy file name bug in Tinfoil's code.
  • Tinfoil Network: Randomized port selection.
  • Tinfoil Network: By default fall-back to Network Mode in the event USB mode can't be used(e.g. missing libraries).
  • Goldleaf: Display current file being accessed.
  • Goldleaf: Goldleaf v0.6 compatible with all of the file handling features.
  • Goldleaf: Default protections are in place to safe-guard users from a potentially compromised Goldleaf file.
    • Default: File operations such as file creation, deletion, renaming will result in a user-prompt(yes or no).
    • Default: Read-only access for all files.
    • Default: Read/write to non-NSP files are restricted.
  • All of these security restrictions are changeable in fluffy.conf.
  • Tinfoil USB: Selectable transfer rates between "Normal Mode" and "Safe Mode" for those with aging hardware(e.g. out of spec USB ports).
  • USB: Switch connected indicator.
  • User-Interface: Light Mode and Dark Mode.
  • General: Auto saves to config Switch IP Address, Light/Dark Mode Settings, and Language Selection.
  • General Support for UI scaling up to 4K resolution.
  • Tinfoil USB: Switch Firmware 5.x USB Fix (Thanks to satelliteseeker for finding this fix, choose 'Safe Mode').
  • Cute fluffy penguin.

User guide

Windows (Fluffy.exe)

1. Install TinFoil or Goldleaf on your Switch:

  • These steps apply for all custom firmware. This includes but not limited to: Kosmos, ReINX, SXOS, etc.
  • Download Recommended TinFoil.
  • Copy and paste "TinFoil.nro" to a folder named "Switch"(create it if necessary) on the root of your SD card.
  • or Download Goldleaf by XorTroll.

2. Install and Setup Zadig Driver:

  • Download Zadig: https://zadig.akeo.ie or github mirror in case the website goes down.
  • With your Switch plugged in to your PC using a USB-C cable, open TinFoil(on your Switch). This will ensure your Switch is visible.
  • Open Zadig > Options > List All Devices.
  • In the scroll box above the button "Install Driver", tap the arrow until arriving at "libusbK".
  • Click "Install Driver".

3. Run Fluffy and Install NSP(s) using Tinfoil:

  • Connect your Switch and your PC with a USB Type-C cable.
  • Run Fluffy.exe.
  • On your Switch open Tinfoil > Title Management > USB Install NSP
  • On Fluffy click "NSP Selection" > Select your NSP(s)
  • On Fluffy's Tinfoil USB screen click "Begin Transfer".

3. Run Fluffy and Install NSP(s) using Goldleaf:

  • Run Fluffy.exe.
  • On your Switch open Goldleaf > Explore Content
  • On Fluffy's Goldleaf screen click "Begin Transfer".
  • On your Switch select "PC Drive (via USB)"
  • Navigate to and install your NSP(s).

Windows (Fluffy.pyw)

1. Install TinFoil or Goldleaf on your Switch:

  • These steps apply for all custom firmware. This includes but not limited to: Kosmos, ReINX, SXOS, etc.
  • Download Recommended TinFoil.
  • Copy and paste "TinFoil.nro" to a folder named "Switch"(create it if necessary) on the root of your SD card.
  • or Download Goldleaf by XorTroll.

2. Install and Setup Zadig Driver:

  • Download Zadig: https://zadig.akeo.ie or github mirror in case the website goes down.
  • With your Switch plugged in to your PC using a USB-C cable, open TinFoil(on your Switch). This will ensure your Switch is visible.
  • Open Zadig > Options > List All Devices.
  • In the scroll box above the button "Install Driver", tap the arrow until arriving at "libusbK".
  • Click "Install Driver".

3. Install Python:

  • Download and Install Python 3 from Python Website.
  • Select the "PATH" option during install. Ensure no previous version of Python is installed and do not use the 64-bit version of Python 3. This may cause an error "PyUSB not found".
  • Also be sure to include Tkinter with your installation(it should be a default option).

4. Install Python Dependencies:

  • Open Command-line/CMD (Start, search "CMD") and run the following:
  • pip3 install pyusb pyqt5 libusb libusb1 qdarkstyle configparser

5. Run Fluffy and Install NSP(s) using Tinfoil:

  • Connect your Switch and PC with a USB Type-C cable.
  • Run Fluffy.pyw.
  • On your Switch open Tinfoil > Title Management > USB Install NSP.
  • On Fluffy click "NSP Selection" > Select your NSP(s).
  • On Fluffy's Tinfoil USB screen click "Begin Transfer".

5. Run Fluffy and Install NSP(s) using Goldleaf:

  • Connect your Switch and PC with a USB Type-C cable.
  • Run Fluffy.pyw.
  • On your Switch open Goldleaf > Explore Content.
  • On Fluffy's Goldleaf screen click "Begin Transfer".
  • On your Switch select "PC Drive (via USB)".
  • Navigate to and install your NSP(s).

Linux

Ubuntu/Debian based distributions

1. Install Python and Dependencies:

  • Required: python3 python3-pyusb python3-pyqt5 python3-tk python3.6-tk libusb libusb1 qdarkstyle.
  • Install Python3:
  • sudo apt install python3 python3-pip python3-tk.
  • Then open Terminal and run this command:
  • pip3 install pyusb pyqt5 libusb libusb1 qdarkstyle configparser.
  • If that doesn't work try:
  • pip install pyusb pyqt5 libusb libusb1 qdarkstyle configparser.

2. Download Fluffy and Switch Rule:

  • Download the latest Fluffy.pyw and 80-fluffy-switch.rules.
  • Open Terminal and change into the directory where these files are located using the cd command:
  • cd /path/to/fluffy/
  • Copy the file 80-fluffy-switch.rules to /etc/udev/rules.d/ using this command:
  • sudo cp 80-fluffy-switch.rules /etc/udev/rules.d/
  • Then give both the proper permissions:
  • sudo chmod 644 /etc/udev/rules.d/80-fluffy-switch.rules
  • sudo chmod 755 fluffy.pyw

3. Starting Fluffy:

  • To start Fluffy.pyw you should be able to double-click to open. But if that doesn't work, you may need to run Fluffy.pyw using Terminal.
  • Open Terminal and Enter:
  • python3 /path/to/fluffy.pyw
  • Alternatively, you can install IDLE(A Python interface):
  • sudo apt-get install idle3
  • Open IDLE > Open Fluffy.pyw then select Run > Run Module.

Arch/Manjaro/Antergos

Install the AUR package fluffy-switch maintained by YoyPa.

Installation and Application Launcher (Optional)

You may wish to Install Fluffy. Download the latest Fluffy.pyw and 'icon.ico' and 'install.sh' from here. Extract and move each file into a single folder.

Installation is then as simple as: cd /path/to/files/

sudo ./install.sh

MacOS

brew install tcl-tk
brew reinstall python3
pip3 install pyusb pyqt5 libusb libusb1 qdarkstyle configparser
python3 ./fluffy.pyw

Special thanks to GuillaumeJulien for these instructions.

For more info on brew, head to https://brew.sh/.

Troubleshooting

Q. (Linux) Fluffy.pyw still shows up as an unknown file?

Run it using Terminal:

python3 fluffy.pyw

Q. Why do I keep getting the error: "USBCore No Backend Available"?

This can be caused by 1-2 things.

  • Not all USB Type-C cables will work with the Switch. If your Switch connects then frequently disconnects, then reconnects again, etc. Or if you receive this error, it's highly likely you will need a newer USB Type-C cable. Yes, there are differences despite being visually similar.

Q. Why do I keep getting the error: "No module named 'PyQt5'"?

Ensure "PATH" is selected when installing Python. If that still doesn't solve it, try running Fluffy using IDLE(32-bit mode).

Q. Why does network install hang/freeze?

This is normal. Network install can sometimes hang and take a long time to work depending on your nework, how many devices are using your WiFi, your WiFi speed, etc.

Give it some time and it will initiate the transfer. It may take several minutes. Fluffy may seem frozen, but in most instances a little patience is advisable.

Q. What kind of cable does the Switch use?

USB Type-C cable. Though, not all USB Type-C cables are the same. Some will not be compatible with the Switch.

Q. Does Fluffy work on MacOS and Linux?

Absolutely! Python is cross-platform and so Fluffy should work on both operating systems.

Q. Which Custom Firmware works best with Fluffy and TinFoil?

All of them will work the same. That is up to you.

Q. Why does my install keep hanging and/or crashing?

Answer: Switch Transfer Mode to "Safe Mode". If you're installing via Tinfoil Network, it is normal for the install to sometimes hang.

Q. Why do I have unsufficient permission error (usb)(linux)? (credit: YoyPa)

You need to make a udev rule to modify the switch usb device permission in /etc/udev/rules.d/

Screenshots

fluffynx2.png

Changelog

v2.9.2

  • Added: Korean Translation (thank you DDinghoya).
  • Fixed: French and Spanish Translation Fixes (cr. YoyPa).
  • Fixed: OS rename syntax error.
  • Fixed: Weird Gentoo compatibility issue.

v2.9.1

  • Fixed: MacOS: About menu not appearing.

Special note: This is the biggest release yet with 1.5k lines of code changed. v2.9.0

  • Added: Goldleaf v0.6 Compatibility†‡§
    • Including all file-handling features.
  • Added: Goldleaf: File access security.
    • Default protections are in place to safe-guard users from a potentially compromised Goldleaf file.
    • Default: File operations such as file creation, deletion, renaming will result in a user-prompt(yes or no).
    • Default: Read-only access for all files.
    • Default: Read/write to non-NSP files are restricted.
    • All of these security restrictions are changeable in fluffy.conf.
  • Added: Windows Executable(.exe), should help many users that struggle to run Fluffy.
  • Added: About dialog with credit list, find your name there!
  • Fixed: Scaling issues with Fluffy logo on certain resolutions.
  • Fixed: Improved install aborting. Proper thread elimination.
  • Fixed: Improved multi-threading. All threads are now daemons.
  • Fixed: No more false error messages when canceling a task.
  • Fixed: usb.core.NoBackendError: Revert to Network Mode, stops crash.
  • Fixed: Dark Mode checkbox will remain checked despite being off in some scenarios.
  • Changed: Config and log files for linux users now stored in $HOME.fluffy folder.
  • Misc: Code overhaul. Significantly more object oriented. Improved logging and exception handling. So many changes. Such wow.

v2.8.0

  • Added: Goldleaf v0.5 Compatibility(Thank you friedkeenan).
  • Added: Bahasa Indonesia Translation(Thank you wendyliga).
  • Fixed: MacOS: "Non-ASCII character" Error(Thank you AD2076).
  • Fixed: PFS0 doesn't close file object.
  • Misc: Code cleanup and slight change to the way Goldleaf handles USB comms.

v2.7.1

  • Rolled Back: Device detach feature incompatible with certain systems.

v2.7.0

  • Added: Localisation support for German(translation:TheLastZombie, Thanks).
  • Fixed: Goldleaf: Consecutive installs results in failure.
  • Fixed: Goldleaf: Improved ticket install stability.
  • Fixed: When an error is thrown, IP text boxes would re-enable during USB install.
  • Fixed: Italian: Typo in language list.
  • Misc: Better config file(Thanks YoyPa).

v 2.6.0

  • Added: Localisation support for:
    • i) Turkish(translation:TorpedoXL).
    • ii) French(translation:YoyPa).
    • iii) Spanish(translation:YoyPa).
    • iv) Brazilian Portuguese(translation:DavidOliM).
    • v) Italian(translation:danypava).
  • Fixed: Massive network bug that resulted in files with overly long file-names to throw the error "No headers received"(on Tinfoil's part). This bug is prominent in the original net code and is due in part of the way Tinfoil handles file URLs, a permanent fix has been applied. Fluffy will now send a fake file URL to the Switch, fooling Tinfoil but also sending legitimate NSP(s) in the process. Network install is no longer unstable.

v2.5.0

  • Added: Multilingual support! Now includes Chinese(translation:Sev73n) and Vietnamese(translation:fourminute). Thank you Sev73n for your contribution.
  • Added: Ability to abort an installation in queue.
  • Fixed: Further file path fixes.

v2.4.2b

  • Fixed: Fixed the dreaded c,omm,a bug,, where some users couldn't select games with comm,a,s in the title.
  • HotFix b: Updated to support various paths.

v2.4.1

  • Fixed: Fixed the dreaded a'p'ostro'ph'e bug', where some users couldn't select games with apostrophe's in the title.

v2.4.0

  • Added: Exception handling for all types of install. Fluffy will no longer crash when an install fails.
  • Added: Ability to install more games following failed or successful install. A restart is no longer required.
  • Fixed: No longer depends on binascii.
  • Fixed: Network: Will now select a random port when serving to fix failed to bind error.
  • Fixed: Significantly less CPU usage. Improved thread handling.

v2.3.3

  • Fixed: Import error for request.

v2.3.2

  • Added: Toggle between "Dark" and "Light" UI mode. (suggested by: Linuxares. Thanks).
  • Fixed: Logging will disable once file size is reached, clear logs on process start.

v2.3.1

  • Fixed: No longer generates "Icon.ico" and "Inlay.png".
  • Fixed: No longer needs privilege escalation(root) to run on Linux.

v2.3.0

  • Added: Goldleaf: Displays current NCA name.
  • Added: Displays idle NSP queue.
  • Fixed: Less restrictive file filtering.
  • Fixed: NCA count would sometimes incorrectly display.

v2.2.1

  • Added: Goldleaf: Ground up write-up of PFS0 and Goldleaf communications.
  • Added: Linux installation now possible. See ReadMe.
  • Fixed: Amiguity in shebang. Thanks Zer0t3ch.
  • Fixed: Does not remove Icon and Inlay.
  • Changed: Newer 128px Icon over the old 48px Icon.

v1.6.4

  • Added: Network Install ! With displays for transfer rate and progress percentage.
  • Added: Network Install: Custom port option.
  • Added: Network Install: Display current NSP count progress.
  • Added: USB & Network Install: Display current NSP name being installed.
  • Fixed: Network install issue: "Failed to retrieve header"
  • Fixed: Network install issue: Process refused to close post network install.
  • Fixed: Occasional and rare occurrence of incorrect NSP count.
  • Changed: "Pink Donut" has been replaced by a smaller, new logo.
  • Changed: "Transfer Rate" now displays "USB Transfer Mode"

v1.5.1

  • Added: Now shows install rate in MB/s.
  • Added: Transfer mode feature. Switchable between "Normal" and "Safe".
  • Fixed: Improved scaling.
  • Fixed: Reaping request failure.
  • Fixed: Log would fill with "Division By Zero" errors.
  • Fixed: List box too small for item entries, set minimum height.
  • Misc: Tkinter is no longer supported on this version due to stability issues. If you would like to use Tkinter please use v1.4.1 or below.
  • Misc: Removed automated closing after install.

v1.4.1

  • Added: Support for UI scaling on 4K and 1080p resolutions.
  • Added: Countdown following successful install until automatically exiting.
  • Fixed: Fluffy would refuse to exit and sit in the background.
  • Fixed: Unsafe cross-thread handling of PyQt elements.
  • Misc: Variables and functions have been renamed for better readability.

v1.3

  • Added: Redesigned User Interface! In order to take advantage of this new UI, you will need to install pyqt5 and qdarkstyle. Install these modules with "pip3 install pyqt5" and "pip3 *install qdarkstyle". Please note, this new UI is 100% optional. Fluffy will still run without these modules installed.
  • Fixed: Fluffy crashed when "icon.ico" wasn't in folder. Icon file no longer necessary.
  • Misc: Button "Select Folder" now shows "Select NSPs".
  • Misc: Status label now shows "Awaiting Selection."
  • Misc: GitHub label on PyQt interface.

v1.2

  • Added: Support for individual NSP selection (suggested by: Shadowhand, thanks).
  • Misc: Now shows "Loading X NSPs" during NSP selection process.
  • Misc: Changed "Open Folder" to "Select NSPs"

v1.1

  • Added: Support for logging.
  • Added: Show percentage # above progress bar.
  • Fixed: Window won't move or respond during installation.
  • Fixed: Proper exiting.
  • Misc: "Send Header" button disabled unless NSPs are selected.
  • Misc: Label now shows "Completed" when task is finished.
  • Misc: Changed file name from Fluffy.py to Fluffy.pyw to remove console.

v1.0

  • Initial Release.
  • Progress Bar Support.
  • Switch Connected Indicator.
  • Display Current NSP Being Installed..
  • 5.x USB Fix Support.

Credits

Fluffy was developed from the ground-up by Fourminute, including almost all of the features and bug fixes throughout. But there have been several people that have devoted their time and effort into improving Fluffy.

I would like to extend my thanks to the people below for helping make Fluffy what it is today.

  • wendyliga for their Bahasa Indonesia translation.
  • [1] TheLastZombie for their German translation.
  • YoyPa for their many and various code contributions, creating and maintaining the fluffy-switch AUR package, as well as their Spanish and French translations.
  • LoOkYe for testing and debugging Fluffy in its various stages of development on MacOS.
  • friedkeenan for their tremendous help on Goldleaf v0.6 compatibility.
  • TorpedoXL for their Turkish translation.
  • DavidOliM for their Brazilian Portuguese translation.
  • danypava for their Italian translation.
  • Sev73n for their Chinese(Mandarin) translation as well as translating the entire README.
  • To anyone else that I missed, thank you.

"Cute Penguin" was designed by fourminute. The font used in the "Fluffy" logo is 100% royalty free.

Fluffy (this program) and the "Cute Penguin" design is Copyright (c) 2019 fourminute.

External links

Advertising: