Despite the fact that Samsung releases a lot of devices every year, the company doesn't offer an official user-friendly firmware download portal for its Galaxy-branded smartphones and tablets. You can either try your luck with the built-in update checker in Settings, or you can use the Samsung Smart Switch app — neither of these options will satisfy power users itching to get the latest update right now. Samsung enthusiasts thus often turn to third-party services to download updates, which are conveniently packed and ready to be flashed via Odin. Tools like SamFirm and Frija are also widely used by the community, as one can easily query Samsung FUS (Firmware Update Server) and download the latest build for their model using these utilities.

However, none of the aforementioned firmware downloaders are open source. The tools utilize a specific library from the Smart Switch distribution in order to authenticate to the update server. The library itself is obfuscated using Themida, which is one of the reasons why the utilities are difficult to port to operating systems other than Microsoft Windows. Nevertheless, XDA Junior Member nn000 has managed to cross these barriers.

After carefully reverse-engineering the download protocol, the developer decided to code the downloader in Python, which means the final tool can be executed on virtually any operating system. The result is Samloader, a cross-platform CLI application that can fetch Samsung firmware packages without using any proprietary DLL. This extremely tiny script (less than 100KB) can also decrypt the OTA artifacts and create a standard flashable package.

samloader_samsung_firmware_downloader_macos

How to use Samloader to download firmware for your Samsung Galaxy device

  1. Make sure you have Python 3 and pip installed.
  2. Download the codebase of Samloader using this link or clone the repository using git:
            git clone https://github.com/nlscc/samloader
        
  3. Install using pip:
            cd samloader
    pip3 install .
  4. Check the latest firmware version for your model:
            samloader checkupdate [model] [region]
        
    • For example, if you need to find out the latest firmware for the T-Mobile Samsung Galaxy S20 Ultra, then type the following:
              samloader checkupdate SM-G988U TMB
          
  5. Download the specified firmware version for a given phone and region to a specified file or directory:
            samloader download [version] [model] [region] [out]
        
  6. Decrypt the encrypted firmware artifacts:
    • For enc2 encrypted firmware:
              samloader decrypt2 [version] [model] [region] [infile] [outfile]
          
    • For enc4 encrypted firmware:
              samloader decrypt4 [version] [model] [region] [infile] [outfile]
          

It is worth mentioning that Samloader doesn’t support every Samsung update channel out there. Some carriers (like AT&T and Verizon) don't provide updates through Samsung's OTA server. Moreover, you can't download beta channel firmware using this script.

Samloader: GitHub Repo ||| XDA Discussion Thread