2

I started this question in order to have more light shed on a tool that's used by almost all the Samsung device owners that perform operations such as flashing: ODIN.

Since there's already a good answer that covers the meaning behind the most commonly used checkboxes, I would like to make everyone think about the ODIN configuration file, namely Odin3.ini. This file resides in the same position as the ODIN main executable, and it's mandatory in order to run the program itself. Its content (v.3.10.7) can be observed below:

[Option]
Title=odin
FactoryResetTime=1
OptionEnable=1
SLP=0
AuthorityKey=pw
RtnForSprint=1


[APOption]
RePartition=0
AutoReboot=1
FResetTime=1
FlashLock=0
TFlash=0
NandErase=0


[CPOption]
PhoneEFSClear=0
PhoneBootUpdate=0k

[UIOption]
LED=0


[ButtonOption]
Bootloader=1
PDA=1
Phone=1
CSC=1
UMS/PATCH=0
USERDATA=0

[D300Jig]
;[0] not use / COM [1~2] usable
D300COM=0
;[0] not use / [1] use
MicroCable=0

[PortArrange]
;SAMSUNG Mobile Modem port (for Download mode)
DPort0=
DPort1= 
DPort2=
DPort3= 
DPort4= 
DPort5=
DPort6=
DPort7=
;SAMSUNG Android USB Modem port (for Samsung Kies)
SPort0=
SPort1=
SPort2=
SPort3=
SPort4=
SPort5=
SPort6=
SPort7=

As of recently, I performed some tests on the abovementioned values. You can see my findings in the answer below, which is freely editable by anyone.

Now comes the question part: was anyone able to ascertain the usage of those settings I was unable to/didn't test? For instance:

  • Usefulness of FactoryResetTime - it doesn't reset the flash counter, before you say that;
  • FTP connection output after editing SLP;
  • Eventual output of DeviceInfo;
  • Usage of AuthorityKey;
  • Usage of RtnForSprint (only v3.10.7);
  • Usage of the T Flash checkbox;
  • What's supposed to be chosen as UMS/PATCH file - I've never seen one.

And yes, I'm aware that this is a bit of work, it's broad, and that it's not strictly related to Android. However, I found nothing on the XDA community, and I feel that we've yet to discover the real power of this ODIN tool. Any answer about this topic has the potential to help Samsung users out there to better understand this piece of software.

  • UMS/PATCH might be for flashing a partial update rather than simply overwriting everything. USERDATA is almost certainly /data. I'm guessing most of the rest is really only useful on Samsung's intranet. – Matthew Read Mar 15 '16 at 0:01
  • @MatthewRead As of now, I started disassembling Odin's code. The interesting thing, is that I found the "LOKE" component to be referenced in a string. I guess that it's for the purpose of output. Regarding the USERDATA, I experienced internal SD wiping anytime I flashed a stock ROM. Maybe that's made to prevent Odin from cleaning the /storage/sdcard0 (/data/media). – Death Mask Salesman Mar 15 '16 at 0:06
  • 1
    I think that I've found the IP of the server Odin connects to. It appears to be 165.213.149.206. – Death Mask Salesman Mar 15 '16 at 0:25
  • Found a new flag that can be manually added, in order to make Phone EFS Clear and Phone Bootloader Update selectable. It belongs to the [Options] label. – Death Mask Salesman Mar 15 '16 at 0:44
  • You might want to move all of that into an answer. Possibly make it Community Wiki if you want others to be able to update it. – Matthew Read Mar 15 '16 at 0:55
1

As suggested by @MatthewRead, this answer will reflect the same fashion of the question - it will be editable by anyone who has something useful to say.

In regards to the original question, here are my latest findings:

  • For label [Options]:

    • Title: string. Used for changing the string displayed near "Odin"; freely customizable;
    • FactoryResetTime: unknown. I was able to change this value, but nothing happened;
    • OptionEnable: flag. When set to 0, it makes any setting greyed out;
    • PhoneEnable: flag. Usually not present in a fresh Odin3.ini, can be manually added. When set to 1, it makes Phone EFS Clear and Phone Bootloader Update selectable;
    • DeviceInfo: flag. Usually not present in a fresh Odin3.ini, can be manually added. When set to 1, it makes the DeviceInfo checkbox available. Ticking the checkbox doesn't produce any result;
    • SLP: flag. When set to 1, makes the program try a connection to 165.213.149.206 via FTP, in order to search for updates of the main executable. NOTE: I backtracked the IP, and it indeedly is a Korean server;
    • AuthorityKey: unknown. This seems like a string of some kind, and I think it's connected to the previous parameter, but I've no clues;
    • RtnForSprint: flag. Untested.
  • For label [APOption]:

    • From RePartition to NandErase: flags. Editing them modifies the default behaviour of the corresponding option (0 = unticked / 1 = ticked).
  • For label [CPOption]:

    • PhoneEFSClear: flag. Usually, the corresponding checkbox is greyed out. By changing the value to 1, it's possible to make it be checked, but still greyed out. Doing so will make the application prompt you to choose a firmware file, preventing you to start the flashing process only for, say, rebooting;
    • PhoneBootUpdate: apparently flag. The default value of 0k may seem odd, but this flag does the same thing as the previous one, on the Phone Bootloader Update checkbox.
  • For label [UIOption]:

    • LED: unknown. It may be anything: I changed this value, but nothing happened.
  • For label [ButtonOption]:

    • From Bootloader to UMS/PATCH: flags. Editing them enables or "greyes" out the corresponding checkbox (0 = disabled / 1 = enabled);
    • USERDATA: unknown, possibly flag. Since I didn't find any reference for this value in the program's code, I guess that this is a feature that will be developed in the future. For now, it does nothing.
  • For label [D300Jig]:

    • D300COM: integer. I changed this value, but nothing happened;
    • MicroCable: flag. I changed this value, but nothing happened.
  • For label [PortArrange]:

    • From DPort0 to SPort7: unknown. Untested.

Notes:

  • SLP: as previously mentioned, this flag triggers a FTP connection to a hard-coded IP address. I think that it may be useful in order to update Odin from a trusted source, but I've no proof. It would be useful if someone with an outdated Odin tests this;
  • D300Jig: I found a reference to this section in Odin's code, along with a string that's supposed to be displayed at output. Still, I wasn't able to make it work. Two Russian forums claim it to be a way to flash firmwares on old devices wo/ neither Loke nor the Recovery partition. More research is needed.
  • It may be unrelated to this topic, but previous versions of Odin (v3.7) did have a "Dump" option. There's no way to manually turn it on, and after a discussion with the author of Heimdall, Benjamin Dobell, I can confirm that it's Loke that signals the feature's availability to Odin. The later versions of the software lack the feature, since the latest bootloaders do not implement it either. – Death Mask Salesman Mar 15 '16 at 15:07
1

My guess is that The D300JIG is meant to be used with Samsungs proprietary JTAG unit called the Samsung Anyway Jig. Its what their software engineers and service centers use to revive bricked phones and flash firmware. Either that or it could be related to flashing and servicing their D300 series smart TV's

Also Authority Key=pw is probably for a password needed to access Samsung secure servers on the ip address you mentioned above

  • 1
    Do you have any research to backup your claims with? – Death Mask Salesman Jul 11 '16 at 5:07
1

I just reverse engineered the Odin3 ini part (using IDA 66 + HexRaysDecompiler & Rohitab API Monitor 2.32).

So these are all available ini settings + it's default values:

; These ini settings applies to Odin3 v3.12 (Compiled 21. jan 2016)

[Option]
 ; [Avoid missing this or anything starting like 'Odin3. [Android + SLP]' ]
    Title                   =       [Android + SLP]
    FactoryResetTime        =       1   # [Default: 1 ] ???
    PacketSize              = 1048576   # [Default: 1048576 ] ???

    OptionEnable            =       1   # [Default: 1 ] 'Options' gets available 
    PhoneEnable             =       1   # [Default: 0 ] 'Phone EFS Clear' & 'Phone Bootloader Update' gets available
    DeviceInfo              =       1   # [Default: 0 ] 'DeviceInfo' gets available 
    RtnForSprint            =       1   # [Default: 0 ] 'RTN For Sprint' gets available

    ; Check for Update
    ;   ftp://odindown.user:nwodnido110110@165.213.149.206/pub/Tools/USB_Downloader/Odin_Downloader/
    ;   "OdinVersion.txt", "OdinNew.exe", "OdinLauncher.exe"
    ;SLP                    =       0   # Version 3.09 only! [Default: 0 ]
    ;ComPortWaitingTime     =       0   # Version 3.09 only! [Default: 1 ] 
    ;AuthorityKey           =       pw

[ButtonOption]
    Bootloader  =   1   # [Default: 1 ]     'BL'  FileInput gets available
    PDA         =   1   # [Default: 1 ]     'AP'  FileInput gets available
    Phone       =   1   # [Default: 1 ]     'CP'  FileInput gets available
    CSC         =   1   # [Default: 1 ]     'CSC' FileInput gets available
    UMS/PATCH   =   1   # [Default: 1 ]     'UMS' FileInput gets available
    ;USERDATA   =   0


[APOption]
    RePartition     =   0   # [Default: 0 ] Sets checkbox default for 'Re-Partition'
    AutoReboot      =   0   # [Default: 1 ] Sets checkbox default for 'Auto Reboot'     Reboot after data upload
    FResetTime      =   0   # [Default: 1 ] Sets checkbox default for 'F. Reset Time'

    FlashLock       =   0   # [Default: 0 ] Sets checkbox default for 'Flash Lock'
    NandErase       =   0   # [Default: 0 ] Sets checkbox default for 'Nand Erase All'
    TFlash          =   0   # [Default: 0 ] Sets checkbox default for 'T Flash'

[CPOption]
    PhoneEFSClear   =   0   # [Default: 0 ] Sets checkbox default for 'Phone EFS Clear'
    PhoneBootUpdate =   0   # [Default: 0 ] Sets checkbox default for 'Phone Bootloader Update'

;[UIOption]
;   LED =   0 [Default: 0 ]  Version 3.09 only! Sets checkbox default for 'LED Control'

;Note:  checkboxes for 'RTN For Sprint' & 'DeviceInfo' is missing


[D300Jig]
    ;[0] not use *DefaultValue* / COM [1~2] usable
    D300COM     =   0

    ;[0] not use *DefaultValue* / [1] use (only applied if D300COM = 1)
    MicroCable  =   0

; [PortArrange]
    ; ;SAMSUNG Mobile Modem port (for Download mode)
    ; DPort0    =   
    ; DPort1    =    
    ; DPort2    =   
    ; DPort3    =    
    ; DPort4    =    
    ; DPort5    =   
    ; DPort6    =   
    ; DPort7    =   
    ; ;SAMSUNG Android USB Modem port (for Samsung Kies)
    ; SPort0    =   
    ; SPort1    =   
    ; SPort2    =   
    ; SPort3    =   
    ; SPort4    =   
    ; SPort5    =   
    ; SPort6    =   
    ; SPort7    =   

Odin3.ini Api monitor log:

"Option"        "Title"             "[Android + SLP]"
"Option"        "Title"             "Odin3. [Android + SLP]"
"Option"        "FactoryResetTime"  "1"
"Option"        "PacketSize"        "1048576"

"APOption"      "RePartition"       "0"
"APOption"      "AutoReboot"        "1"
"APOption"      "FResetTime"        "1"

"CPOption"      "PhoneEFSClear"     "0"
"CPOption"      "PhoneBootUpdate"   "0"

"APOption"      "FlashLock"         "0"
"APOption"      "NandErase"         "0"
"APOption"      "TFlash"            "0"

"ButtonOption"  "Bootloader"        "1"
"ButtonOption"  "PDA"               "1"
"ButtonOption"  "Phone"             "1"
"ButtonOption"  "CSC"               "1"
"ButtonOption"  "UMS/PATCH"         "1"

"Option"        "OptionEnable"      "1"
"Option"        "PhoneEnable"       "0"
"Option"        "DeviceInfo"        "0"
"Option"        "RtnForSprint"      "0"

I slowly try to find out more about the meaning of the options.

Some other good to know stuff:

Odin3 keyboard shortcuts

<ALT> + S           BL
<ALT> + P           AP
<ALT> + M           CP
<ALT> + C           CSC

<CTRL> + S      Start
<CTRL> + R      Reset
<CTRL> + E      Exit

How Odin3 detects if some device is connected? Check the names of the entries in HKLM\HARDWARE\DEVICEMAP\SERIALCOMM contains 'mdm' and if it's value starts with 'COM'

Sample

"\Device\ssudmdm0000"   "COM8"

Note: "Odin_Multi_Downloader_v4.44"(2011) is more picky and only finds "\Device\sscdmdm0..9"

"Odin3.09"(2013) finds "\Device\ssudmdm" "\Device\sscdmdm" "\Device\ssacmdm" "\Device\ssadmdm"

It's 'SAMSUNG Mobile USB Modem'(USB\VID_04E8&PID_685D&Modem) that writes the entries to 'HKLM\HARDWARE\DEVICEMAP\SERIALCOMM' -> Enabling/Disabling this in the Windows device manager triggers the to log entries "Removed!! / Added!!" in Odin3

But instead of the modem disable/enable 'SAMSUNG Mobile USB CDC Composite Device' for proper reinitialisation. Or get Nirsoft DevManView and do it by this cmd-script:

::Comment in incase Odin3 'hangs' on  "SetupConnection.."
::  ... and so keeps an open handle to "\\Device\ssudmdm0000"
::  ... that prevents/lock the device and dependencies from being removed 
::taskkill /fi "IMAGENAME eq odin*"

DevManView /ShowLegacyDrivers  /use_wildcard /disable  "SAMSUNG Mobile USB *" 
DevManView /ShowLegacyDrivers  /use_wildcard /enable   "SAMSUNG Mobile USB *" 

then just create a link to the desktop and set in the link properties a hot key combo like ALT+CTRL+Y to run it.

Well alternatively so can also do it the plug'n'play way, pull the USB plug and them plug it in again.

  • +1 for your interest in this topic, and for the useful info you uncovered. – Death Mask Salesman Sep 23 '16 at 7:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.