• Stars
    star
    903
  • Rank 50,580 (Top 1.0 %)
  • Language
    Kotlin
  • License
    MIT License
  • Created over 3 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Notice

Manual firmware downloads and downloading from the firmware history feature have been disabled for now. Samsung changed something on the backend and always serves the latest available firmware, no matter which is requested.

If you know a workaround, please follow up on this issue.

Bifrost - Samsung Firmware Downloader

This is yet another firmware downloader for Samsung devices, but it has some special features.

For one, it's cross-platform. Bifrost runs on Windows, Linux, macOS, and even Android!

Bifrost is also a graphical program, with a shared UI across all supported platforms.

Most of the functionality in Bifrost is based on Samloader. The Python code has been converted to Kotlin and tweaked to take advantage of some of Kotlin's features.

Bifrost uses Jetpack Compose, JetBrains Compose for Desktop, and Kotlin Multiplatform to create a shared codebase for all supported platforms.

Download

Binaries are available for 64-bit versions Windows, Linux, macOS, and Android. JetBrains Compose can't currently build for 32-bit operating systems.

Check out the Releases page for the downloads.

Changelog

Release notes are available in CHANGELOG.md.

FAQ & Troubleshooting

Bifrost is returning error 400/401 when downloading

These errors are on Samsung's end. If you can, try using a different region/CSC.

Bifrost is returning error 403 when checking for updates

These errors are on Samsung's end. Samsung may no longer be serving firmware for your device or may not have started serving firmware yet. Try a different region/CSC if possible and check to make sure your model number is correct.

Bifrost opens to a blank screen on Windows

On certain GPUs, Jetpack Compose/Skia has trouble rendering. Try running the program as an administrator.

If you have switchable graphics, try using a different GPU.

Download speeds are slow

Samsung's servers sometimes throttle downloads to about 3MiB/s. For older devices, you may see even slower speeds. Different regions/CSCs may have faster downloads.

How do I know which CSC to use?

On your device, do the following:

  1. Open the Settings app.
  2. Scroll down to "About phone" or "About tablet" and tap it.
  3. Tap "Software information".
  4. Scroll down to "Service provider software version".
  5. You'll see something like "XAA/XAA,XAA/XAU/TMB" or "XAR/XAR/" on the second line.

The first three letters there are your current CSC. The last three letters are the original/firmware CSC of your device.
Using the above examples, the first has a current CSC of XAA and a firmware CSC of TMB. The second has a current CSC of XAR and a firmware CSC of XAR.

How do I choose an alternative CSC if mine isn't working?

Use the CSC picker dialog (the button that looks like a list inside the "Region" text field).
You can search for your country or region in there and see the different CSCs used. If there are specific carriers associated with a CSC, they'll also be shown.

Why is my antivirus flagging the app?

Certain antivirus programs may flag Bifrost as malware. This is (hopefully obviously) a false positive.

There's a trojan horse malware family named Bifrost, which is part of the greater Bifrose family.
Antivirus programs flagging Bifrost (this app) seem to be doing it solely based on this app having the same name as the malware.

Bifrost (the malware) only affects Windows systems and has limited functionality after Windows XP. For more information, see this Wikipedia article.

Bifrost (this app) does not contain malware. You can verify this by browsing through the source code or by compiling it yourself using the instructions below.

Building

Building this project should be fairly easy.

Prep:

  1. Make sure you have the latest Android Studio Canary installed.
  2. Clone this project into Android Studio and let it import.

Desktop:

Run the package Gradle task.

Command Line:

  1. Open the Terminal view in Android Studio (bottom-left).
  2. Enter gradlew createDistributable on Windows, ./gradlew createDistributable on Linux, or ./gradlew packageDmg on macOS.
  3. Once it finishes building, check the output log to see where the executable was saved.

GUI:

  1. Go to Android Studio's settings (Ctrl+Alt+S on Windows and Linux, CMD+, on macOS), go to "Experimental", and uncheck "Only include test tasks in the Gradle task list generated during Gradle Sync".
  2. Open the Gradle view in Android Studio (top-right).
  3. Expand the project, then expand "desktop".
  4. Expand "Tasks", then "compose desktop" and double-click "createDistributable" on Windows and Linux, or "packageDmg" on macOS.
  5. Once it finishes building, check the output log to see where the executable was saved.

Android:

Command Line:

  1. Open the Terminal view in Android Studio (bottom-left).
  2. Enter gradlew :android:build on Windows or ./gradlew :android:build on macOS and Linux.
  3. Once it finishes building, go to android/build/outputs/apk/debug and install android-debug.apk.

GUI:

  1. Open the Gradle view in Android Studio (top-right).
  2. Expand the project, then expand "android".
  3. Expand "Tasks," then "build," and double-click "build".
  4. Once it finishes building, go to android/build/outputs/apk/debug and install android-debug.apk.

Running

Windows

  1. Extract the release ZIP for Windows and go through the folders until you find "Bifrost.exe".
  2. Launch the EXE. If it fails, launch as Administrator.

Linux

  1. Extract the release ZIP for Linux and go through the folders until you find "Bifrost".
  2. Open a terminal in this location.
  3. Enter chmod +x Bifrost.
  4. Enter ./Bifrost.

macOS

  1. Extract the release ZIP and open the DMG.
  2. Move "Bifrost.app" to the Applications folder.
  3. Launch the app.

There may be a security error when launching the app. If there is, follow the steps outlined here.

Alternatively, if the above doesn't work, you can try running the following in a Terminal (requires root permissions):

sudo xattr -cr /Applications/Bifrost.app.

Once that command is executed, the app should run.

It's also possible that the DMG itself will refuse to open. If that happens, the same xattr command, but run on the DMG, should work:

sudo xattr -cr ~/Downloads/Bifrost-<VERSION>.dmg.

Android

  1. Download the release APK to your phone.
  2. Install and run it.

Translating

Bifrost supports basic text localization. You can help translate here: https://crowdin.com/project/bifrost-kotlin.

Note: Pay special attention to formatting arguments. Numbers inside curly brackets (e.g., {0}, {1}) should be kept as-is as they will be replaced with text during the application's runtime.

Note: Make sure to keep any other formatting characters as-is (e.g., \n should stay as \n and %% should stay as %%).

Translators:

Screenshots

Desktop:

Blank Desktop Downloader Blank Desktop Decrypter Blank Desktop History Desktop Download Progress Desktop Decrypter Progress Desktop History Populated

Mobile:

Blank Android Downloader Blank Android Decrypter Blank Android History Android Download Progress Android Decrypter Progress Android History Populated

Error Reporting

Bifrost uses Bugsnag for error reporting.

More Repositories

1

Tweaker

Kotlin
1,009
star
2

InstallWithOptions

Simple-ish app using Shizuku to install APKs on-device with advanced options
Kotlin
763
star
3

SystemUITunerRedesign

Replacement/extension for the stock Android System UI Tuner.
Kotlin
266
star
4

LockscreenWidgets

Kotlin
184
star
5

HINTControl

A cross-platform app using JetBrains Compose to view and control various T-Mobile Home Internet gateways.
Kotlin
143
star
6

RootActivityLauncher

Kotlin
141
star
7

MastodonRedirect

Deep linking proxy for Mastodon and Lemmy on Android, allowing you to launch your selected client automatically.
Kotlin
125
star
8

WiFiList

Kotlin
123
star
9

SystemUITunerSystemSettings

Kotlin
113
star
10

FabricateOverlay

Kotlin
105
star
11

CameraXInfo

A simple app to list supported CameraX extensions and video resolutions
Kotlin
100
star
12

OneUITunerRedesign

Kotlin
96
star
13

NachoNotch

Kotlin
75
star
14

OverlayManager

Kotlin
52
star
15

WidgetDrawer

Kotlin
45
star
16

CellReader

Playing around with reading cell stuff on Android
Kotlin
43
star
17

ShizukuHack

Kotlin
37
star
18

OPFPControl

Kotlin
34
star
19

BoredSigns

Kotlin
24
star
20

nobar-issues

Report and track the progress of bugs, features, etc for XDA's Navigation Gestures
23
star
21

ShizukuHackApi

Java
22
star
22

SystemUITuner2

Java
22
star
23

Sa2ration

Java
22
star
24

OneUITuner

Kotlin
21
star
25

SPRViewer

Kotlin
19
star
26

Rebooter

Kotlin
17
star
27

Insomnia

Kotlin
17
star
28

SamsungDecryptStuff

Kotlin
16
star
29

AutofillChanger

Kotlin
14
star
30

CalculatorWidget

Kotlin
13
star
31

se-dark

Dark themes for various StackExchange sites
CSS
13
star
32

Unblacklister

Super simple library to disable Android's hidden API blacklist
Kotlin
11
star
33

DeviceOwnerSDK

Kotlin
10
star
34

SamsungFlashlight

Simple app with a shortcut for toggling Samsung's flashlight at full power
Kotlin
9
star
35

zacharee

7
star
36

SeekBarPreference

Kotlin
6
star
37

GalaxyUnlock

Kotlin
6
star
38

AndroidAutoInstaller

Select third-party Android Auto apps to sideload
Kotlin
6
star
39

Permission_Granter

HTML
5
star
40

SSWidgets

Java
5
star
41

PassSafetynet

A super simple Xposed module that fakes the result of Safetynet checks.
Kotlin
5
star
42

SliderPreferenceEmbedded

Java
4
star
43

RCTDRemoverforLG

Kotlin
4
star
44

SIMSwitcher

Kotlin
4
star
45

android_packages_apps_AOSPSignBoard

Java
4
star
46

UniFiDarkMode

A Tampermonkey script to add dark mode to the UniFi dashboard.
JavaScript
3
star
47

TeardropNotch

Kotlin
3
star
48

ModControlRedesign

Kotlin
3
star
49

SUITGranter

Kotlin
3
star
50

LTECalculatorWeb

Kotlin
3
star
51

KMPFile

Kotlin Multiplatform File implementation for JVM, Android, and iOS
Kotlin
3
star
52

MultiplatformMaterialYou

Kotlin
3
star
53

V20Mods_Releases

https://forum.xda-developers.com/v20/themes/mod-aosp-signal-bars-t3551350
3
star
54

CollapsiblePreferenceCategory

Kotlin
2
star
55

zwander.tk

CSS
2
star
56

EPICGAMERGAME

Java
2
star
57

ComposeIntroSlider

A very simple intro slider library for Jetpack Compose
Kotlin
2
star
58

ZwanderOrchid

Java
2
star
59

OMCDecoder

Kotlin
2
star
60

OverlayLib

Kotlin
2
star
61

ModControl

Java
2
star
62

LTEBandCalculator

Calculate the 06828 NV value for Qualcomm
Kotlin
2
star
63

PatreonSupportersRetrieval

Kotlin
2
star
64

OurGroceriesTizen

C#
2
star
65

RoboControl

Kotlin
1
star
66

CameraXInfoViewer

JavaScript
1
star
67

LibRootJavaTest

Java
1
star
68

SystemSSWisgets

Java
1
star
69

Patchrom_FlymeOS_SM-N9009

FlymeOS Patchrom for SM-N9009.
Smali
1
star
70

lg-systemui-experiments

Smali
1
star
71

LocalePickerProxy

Kotlin
1
star
72

ModInstaller

Java
1
star
73

AndroidTests

Kotlin
1
star
74

yappy-dark

Dark theme for Yappy Web
CSS
1
star
75

Kinematics

Kotlin
1
star
76

E122

C++
1
star
77

Scoreboard

C++
1
star
78

DesignRobot

C++
1
star
79

X3SuperZoomDeviceTree

Makefile
1
star
80

HelperLib

A collection of Kotlin extension functions and values
Kotlin
1
star