SGHFD (SGH Flasher/Dumper) by Alex/AT (C) Advanced Technologies, 2004-2006 Contents: 1. History. 2. Todo. 3. Legend. 1. History. v0.70 dev alpha: [!] We are nearing RC step by step. Most of the features are fully completed and the basic core is stable. After RC feature list will be frozen and only bugs will be fixed till the release. Some pending things still remain, but it's a matter of a week or two :) [!] DON'T ASK ME TO REVEAL SGHFD CODE, PROTOCOLS OR WHATEVER. I WILL NOT BY MY OWN AND BY LEGAL MEANS. MORE THAN THAT, I PLACE ANYONE WHO ASKS TO THE IGNORE LIST IMMEDIATELY, WITHOUT FURTHER NOTICE. [!] Almost 3/4 of a year delay. I'm sorry, but the life is tough thing to begin with. Had to cope with work/study/etc./etc. Will try not to introduce such delays anymore, but who knows. [!] Found that TFS flashing for Swift is faster than with original flashers (with a SEVERE difference). It's flashing OK, don't worry. This happens probably due to tight COM port module optimizations. [!] Support for the XML DIFs was introduced. Many requests were made to me, but I still consider this feature completely unnecessary. [!] Many advanced SGHFD functions are hidden by default. Enable advanced mode during initial setup to see them. [!] English, Russian, Ukrainian and Belarussian translations are almost done. Awaiting for other localizations in the meantime. You are welcome. Great thanks go to current localization maintainers for their work. [>] Implemented STDE TFS Writer core for Sysol models. Stability is unknown, please have TFS dump at hand when using. TFS writing with STDE TFS writer does not require phone disconnect at last. [+] [0721] Completed file manager operations for powered phone (file manager mode). Only Sysol models are currently supported in both PIMS and FM modes. Swift support pending. [*] [0719] Fixed some nasty bugs with Java compilation for D820, but internet permissions are still not set, sorry. Thanks to Slava_D for his help. [*] [0718] Fixed some Opti/FM stability issues caused by timer thread synchronization failures. May degrade performance of operation starts a bit. Future operation-based core will resolve this issue completely. [+] [0718] Implemented powered phone driver for file manager TFS operations. Miscellaneous errors can occur in this mode because of file sizes and names limitations, but it does work as original PIMS or third-party file managers. [*] [0713] Ukrainian localization accepted from micha @ forum.sgh.ru. Micha is now official maintainer of the localization. [*] [0713] Fixed many bugs in Java compilation. Added correct Java file names recoding. Thanks to Slava_D for reports. [*] [0713] Fixed nasty bug with file rename in DIF-based drivers for TFS file manager, including "offline" phone drivers. [*] [0712] Some small fixes here and there to make SGHFD core more stable. Multithreading fixed a lot. [*] [0708] Fixed D500 disconnecting. Added disconnect after TFS ops for D500 because these loaders can't init TFS more than once. [*] [0706] Preliminary D500 support complete. Thanks to Black_scorpion for the log dumps and testing. Whooooah! SGHFD grown up by 300 Kb (by 100 Kb compressed) because of D500 loaders inside. [*] [0704] Completed NOR test suite core. Must be working now. Thanks for suggestion goes to AT/F0x. Block detail support pending. [*] [0701] TFS/CFG operations now work with UTF8 file and directory names to remain compatible with other software (thanks to ... @ forum.sgh.ru for the report). [*] [0630] TFS File Manager GUI rewritten again to fix nasty access violation errors (thanks to Sergeyl and all others for many bug reports). Now must be robust, stable and easily modifable - I finally made all components exclusively hierarchical :) [+] [0623] Completed TFS File Manager delete operation for Swift models. [+] [0622] Added TFS File Manager online mode (immediate mode) for Swift series. [*] [0622] Fixed some GUI quirks related to component blinking. [+] [0621] Begin SGHFD API mode development. [+] [0620] Java compilation in TFS File Manager completed. [*] [0619] Completed Russian localization of help boxes (thanks to Valery Timofeev). [*] [0619] Flow control is now enabled by default (half-enabled for Swift series). This WILL have serious stability impact, hope that everything would be better, really. [+] [0619] Added possibility to control wait states via advanced options. [+] [0619] Added RTS/CTS controls into advanced options. [+] [0619] Added a group of advanced options for some stability tweaks. [+] [0619] Enabled possibility to use RTS/CTS when working with phone. Swift series have CTS honoring disabled by default, because their cables rarely have CTS/RTS signals. [*] [0618] Fixed some possible problems disconnecting Opti series (and probably not Opti only). [*] [0618] Fixed high (number 10 and higher) COM ports opening (thanks to ufaster @ forum.sgh.ru and Spirit69 @ forum.sgh.ru). [*] [0613] Probably fixed E800/E330 TFS remap decoder. Now TFS dumping for these series must be working in all possible cases (thanks to Snickle @ forum.sgh.ru for the report and E330 TFR dump supplied). [*] [0613] Fixed occasional access violations when reading Swift TFS folder structures in TFS File Manager (huge thanxxx to Sergeyl @ forum.sgh.ru). [+] [0613] Experimental support for unknown Swift hardware chip types. It may work or may not work, but nevertheless, it is here (thanks to OMICH @ forum.sgh.ru for report). [*] [0613] Fixed probably all UTF8 problems in Swift and Sysol E800/E330 series TFS operations (thanks to everyone around here for convincing me to do a complete bugcheck, though it took time, really). [+] [0612] Added D820 to Swift support list (thanks to -=AsteriX=- for the model report). [*] [0612] Probably fixed D500 flash types (thanks to mozgoder @ forum.sgh.ru). [*] [0612] Fixed TFS File Manager files writing for Swift series (thanks to SanyaX700 @ forum.sgh.ru). [*] [0612] Fixed UTF8 file name decoding in TFS operations for Swift models (thanks to SanyaX700 @ forum.sgh.ru). [+] [0611] YEAH! Completed new GUI at last! Feel the power of it! [+] [0611] Completed TFS File Manager Russian localization. [+] [0611] Sysol and Swift phone functions for TFS file manager are complete and require extensive testing. Sysol functions are preliminarily tested, Swift functions are not tested and may possibly be not working at all. [*] [0611] Fixed multilanguage folders problem when flashing TFS. [*] [0611] Fixed many problems with errors opening TFS/CFG drives in TFS file manager. [*] [0611] Fixed many filesystem handler reenter problems in TFS File Manager. [+] [0611] Began Sysol phone filesystem driver with delayed writes. [+] [0610] Created universal DIF and TFS/CFG file system driver for TFS file manager. Opens and edits DIF (TFS/CFG) correctly, save pending. [+] [0609] Advanced TFS File Manager functions up and working. Java compilation still pending. [*] [0608] Fixed MANY bugs in TFS File Manager interface. [*] [0608] Fixed little bug in COM port engine (not significant). Thanks to Sergeyl @ forum.sgh.ru. May happen to be critical for some drivers, but nevertheless, was not seen before. [+] [0606] Added NAND type display for Swift series when flash is undetected. This is intended to fix D500 flash identification. Also made Swift flashing work if only NAND is not identified. [+] [0606] More flash types added (from X620 data). [+] [0606] TFS File Manager error handling added. Copy and move confirmation queries added. Special operations (F1 hotkey) added, supporting creation of folder structures, empty DIF and TFS/CFG. Overwrite query added with single or all remaining file(s) options. Cancel option added for long operations. [+] [0604] Added TFS File Manager operation progress window (cancel function pending). [+] [0604] Completed TFS File Manager system disk drives driver. All functions (read/write/rename/delete/mkdir/etc.) work properly. [+] [0604] Completed TFS File Manager interface, including all common operations. Advanced operations pending. [*] [0604] Some ETA accounting tweaks. ETA must be more responsive in the beginning now plus the bug with negative ETA display fixed. [+] [0529] Swift series support complete. Thanks to many beta-testers for testing the function. D500E support being in question remains, but the main core is working stable nevertheless. [*] [0529] Fixed 'About' hyperlinks (thanks to Leonid Protasov). [+] [0528] TFS File Manager Universal API rewrite complete. New hot TFS File Manager is up and half-working (with local drives). [+] [0526] Russian localization almost complete. [*] [0525] Fixed again full phone disconnecting (without ability to reconnect when the message shows, thanks to stepan_v @ forum.sgh.ru). [*] [0524] X640 model added to E330 series (thanks to ageich @ forum.sgh.ru). [*] [0524] Fixed slow SGHFD startup due to comboboxes recreation (speeds up model change too). [*] [0524] Fixed COM port open error message to be phone status to prevent occasional messageboxes (thanks to Dim4ik911 and Neo01 @ forum.sgh.ru). [*] [0524] Fixed TFS dump process cancellation (thanks to coyot @ forum.sgh.ru). [*] [0524] Fixed occasional phone reinits (thanks to Mako @ forum.sgh.ru). [*] [0523] SGHFD now offers configuration dialog (settings) when run for the first time. [-] [0523] Removed GUI function to enable developer mode (has no meaning now). [*] [0523] Moved phone detection to the requests core. GUI is now smooth and fast even if not connected to the phone. CPU usage also lowered, detection precision has become much better. [+] [0523] Added SGHFD separate thread requests core. Some more preparations for async SGHFD done (you will be able to plan, queue commands and to execute phone and non-phone commands simultaneously in the near future). [*] [0523] Completed format conversion module. SMP support pending. [*] [0523] Completed S3 fixes. [*] [0523] Completed all interface elements. Yes, it works now and is pending to be localized (not so soon :). Wizards also pending. [*] [0523] Completed DIF create/apply function rewrite. [*] [0523] Completed INI file recreation and autosettings. [*] [0522] Made new S500 file selector. Must be quite usable now. [*] [0522] Completed some XML DIF support fixes. [*] [0522] Fixed miscellaneous DIF information form scroll bugs. [*] [0521] Fixed S3 functions to be times faster. [*] [0521] Fixed TFS writing to support Swift series separately (TFS version only differs here and original flasher checks it to be valid) [*] [0519] Completed new DIF selection window. Now it works properly, allowing to manage DIF list in a new way. [*] [0519] Completed initial XML DIF support. Await more backward compatible changes in the near future (0.71 etc.). XML DIF docs completed and posted on the site. [*] [0518] Tried to make workaround for rare random TFS corruption with some phone/cable/computer configurations when working with the flasher (bug found to be present in original flasher too). Thanks to Sergeyl for bug report. [+] [0514] Swift TFS dump support complete and reported to be working. [+] [0512] Swift series preliminary support complete. If some bugs arose, I will fix them ASAP. Preliminary Swift TFS reader is also complete. [*] [0510] Many improvements in the COM engine. Many of the previous bugs were related to SerialXP driver. With the new driver and with standard 115200 driver it works. COM engine tweaking was made only to optimize processor usage and prepare for the multithreaded SGHFD (yeah, that was a secret until now). [*] [0509] Recompiled with Borland Delphi 2006. Bugs may be introduced :) [*] [0509] Compressed with UPX 2.00. Executable became 2K smaller, even more bugs may be introduced :) v0.68 dev: [*] [0816] Completed preliminary Opti support. Public test version with Opti support released. [+] [0802] Added support for 17 Opti series, more than 25 models. [+] [0802] Tweaked DIF core to include Opti series partial flashing support. [+] [0802] Tweaked SPFE to include Opti sector support. [+] [0802] Added support for flash erasing for Sysol series. [*] [0802] Continued interface development, moved more functions. [*] [0802] Tweaked COM port core a bit. May be more/less stable now. [*] [0802] Tweaked Opti flash information display message to include flash size/sector number/offsets. Will do that for Sysol as well, but later. v0.67 dev: [!] Too many changes forced me to continue it as 0.68. See 0.68 for further details. [+] New "Flashing Studio" look and feel. ;) Help boxes added everywhere. I hope this will shorten number of usage related questions I daily receive by e-mail. [+] [0710] Disabled all function inlining because Delphi 2005 got constantly crashing on compiling SGHFD with inlined functions. [+] [0410] Refined NOR dumping interface. Now all single file types (BIN/DIF/S3) and all the modes (memory ranges) are handled via the same dialog and code. [+] [0409] Russian translation of HISTORY.TXT file (HISTORY.RUS). [+] [0409] Added new hex code to certain phone NOR offset flashing function together with its new GUI window (thanks to Abram for the suggestion). [+] [0409] Added new BIN to certain phone NOR offset flashing function. GUI window is completely redesigned and now can flash any BIN file part (again, thanks go to Abram for the suggestion). [+] [0308] Added flash erase support (TODO: OptiFlash series) because it was often requested by the community. v0.66 dev: [!] Too many changes forced me to continue it as 0.67. See 0.67 for further details. [+] [0306] Fixed all E330 TFS flashing bugs, added latest E330 SCP v1.77b loaders, added separate phone type for E330. Huge thanks go to AT/F0x for E800 and E330 phones supplied. [+] [0304] Correct TFS remap table sequencing in TFS decoders (this probably fixes last bugs with TFS dump routine). Thanks go to Akella (forum on SGH.ru) for the TFR file supplied. [+] [0221] Completed all S3 functions including conversion and flashing/dumping. [+] [0220] Completed preliminary OptiFlash support. Flashing and dumping work correctly. Now SGHFD supports S300-compatible series, a lot of beta-testing is required. [*] [0308] Many language pack changes, relocalization needed. [*] [0308] Fixed serious issue with TFS flashing which could occasionally miss zero-length files and generate segfaults (thanks to stepan_v for the bug report). [*] [0307] Fixed some minor TFS DIF sorting issues (in binary division search algorithm). TFS files are now ordered correctly. [*] [0306] Fixed interface slowdowns due to COM port reopens happening too often. [*] [0306] Updated E800 loaders to the latest E808 v1.8. [*] [0221] Added workaround for Delphi 2005 bug with using FOR statements in inlined functions. [*] [0221] Corrected cancelling converting S3 to BIN/DIF on file save. It was still "saving" the DIF into nothingness. [*] [0221] Switched to OptiFlash v4.11 loaders v5.08 (with 32-bit flash identification). Corrected miscellaneous flash setup bugs. [*] [0220] Fixed DIF optimizing where last DIF NORR block was wrongly accounted as NORD. v0.65 dev: [!] Too many changes forced me to continue it as 0.66. See 0.66 for further details. [+] [0220] English language file (english.lng) is now autocreated if it does not exist. It also is used for the language. This makes implementing language fixes and new translations easier. [+] [0220] Completely fixed TFS v3.12 decoding. TFS from E800, E820, E330 and E630 is correctly dumped now (in 3 tests). Great thanks go to Matvey and AT/F0x for the E330 TFRs supplied. This helped decoding this BRAIN DEAD file system a lot. [+] [0220] SGHFD can now succesfully connect to and disconnect from S300-compatible phones (including loader setup). Flash types were also added to the SGHFD core, SGHFD also correctly detects flash type and builds sectormap. Flashing and dumping are ongoing in the nearest devs. [+] [0218] SGHFD now can convert S3 files to BIN/DIF. Backward support is ongoing in the nearest dev. [*] [0220] Incorporated Ukrainian translation contributed by Pasha T. with the fixes from Igor -=Technolux=-. [*] [0218] Fixed TFS remap table loading which could lead to damaged files and errors on TFS dump (thanks to Quasar). [*] [0218] Changed interface fonts to Tahoma (thanks to Sergio666 for the recommendation). [*] [0218] Fixed multiple language issues. [*] [0218] Completed preliminary threaded SPFE COM port engine functions. Will develop further if needed. [*] [0215] Changed threaded SPFE COM port engine slice release method to fix STDE TFS operations slowdown. [*] [0213] Preliminary threaded SPFE COM port engine must fix most of the occasional dump timeouts. [*] [0213] Incorporated default language (English) into EXE, without requiring external file to be present. [*] [0213] Split language file into separate files, placed into "language" subdirectory. Now each language has its own file. [*] [0213] Minor DIF optimization changes (speed up a lot). Added progress indication to DIF optimization operation. [*] [0213] Fixed sending UTF8-encoded file names to E800 series TFS (thanks to Fes). [*] [0213] Added ".cla" files to BIN extension dialog. [-] [0218] Removed any means of 'SGHB' class for the DIF internals because all 'SGHB' class functions can be completely supported by 'SGHA' class DIFs. v0.64 (TFS decoder bugfix + emergency undo DIF bugfix): [*] Emergency bugfix! Fixed creation of the undo DIFs wherever possible. This updates 0.64 to 0.64.2. Great thanks go to stepan_v. [*] Fixed decoding directories having 128 and more files in them. [*] Changed rich edit component to JVCL one, SGHFD now supports embedded images and some more RTF formatting for comments. You have to create such RTFs with external editor, though. [*] Fixed some language issues. [*] Fixed "?" button pressable while doing phone operations. Pressing "?" during these operations could result in operation failure. [-] Removed E810 from the E800 series because E810 is OptiFlash series phone. v0.63 (TFS v3.12 revision): [+] Added TFS v3.12 (E800) decoding support. SGHFD can now dump E800 TFS (probably). [+] Added Ukrainian translation (great thanks to SAntehnik). [*] Fixed some language issues (erroneous text somewhere). v0.62 (first stable 0.60 version): [!] Recompiled SGHFD with Delphi 2005. It may run differently (possibly faster/slower, less/more buggy, etc.) [+] Added possibility to add multiple files to dialog which allows to flash files into TFS. [+] Added partial Chinese translation (great thanks to Skiing34). [+] Updated E800 loaders to incorporate RAW TFS engine supporting STDE. That speeds up E800 TFS dump operation a lot and allows for further TFS manager development. [+] Added E330 and E630 phones to E800-series. [+] Added options to disable "Phone disconnected" message and all status messages like "Dump completed". These options are called "Disable_Disconnect_Message" and "Disable_All_Status_Messages" and are situated in the "Settings" section of the INI file. Set them to 1 to enable (thanks to stepan_v). [+] Published several more files on the Web site, including release history, DIF format description, DIF files and COM port handling Delphi source code. [*] Fixed E800 support. [*] Major DIF handling speedup (but memory-consuming, can take up to several megabytes of memory while processing DIFs). [*] Reverted to phone models instead of phone series. [*] Fixed DIF comment handling when merging DIF files into one. [*] Fixed port buffering scheme to prevent some errors. This is temporary fix, new multithreaded COM engine is on the way for the next releases. [*] Minor phone disconnection errors fixed (thanks to Crescent). [*] UTF8 file name recoding for TFS operations (thanks to stepan_v). [*] Fixed bug with twice selecting original BIN when flashing BIN differences (thanks to SAntehnik). [*] Fixed bug with creating TFS/CFG even when operation is cancelled. [-] Removed NAND Dump (TFS/CFG dump operation) for E800 phones, because E800 uses TFS 3.12 which is still unsupported (E700 has TFS 3.03). TFS v3.12 support is on nearest TODO now. [-] Removed OS description from the phone types help, since it was erroneus (thanks to Hexx). v0.61 (first public 0.60 revision in 2005): [!] HAPPY NEW YEAR!!! MAY YOUR PHONES BE HEALTHY AND WELL-MODDED! ;) [+] Added checksum protection to E700 series TFS dump operation. [+] Added advanced 'Wait_States' parameter to the settings section of the INI file. You can set it to 1-4 if the default (no parameter is equal to 0) value does not work with your phone. [+] Added EEPROM protection from accidental DIFfing (by warning). [*] Major speedup of E700 series TFS dump operation (about 2.5 times). [*] Probably fixed TFS reading errors with long directories (which contain more than 128 files). [*] Fixed phone reconnecting immediately on some cables (again, thanks to Crescent). [*] Added protection from zero-length files when flashing TFS (NAND). This helped to resolve the case with loaders hang on TFS flashing. Also TFS writer (when dumping TFS or unpacking DIF) now ignores zero length files and does not add them to resulting TFS to prevent possible incompatibilities (thanks to Crescent for bug report). v0.60 (major revision, PLENTY of changes and new features): [!] v0.60 was considered developer BETA, since it had completely rewritten core. More stable versions follow. [+] Major rewrite. Most of the internal flashing/dumping operations (including BIN/TFS ones) are now handled by the universal DIF core. This makes a lot of other changes possible. Also it has great impact on program performance. [+] Added SGH NAND engine to SGH Partial Flasher Embedded (SPFE), which allows to read/write phone NAND flash sector by sector. Modified E700-series ARM loaders to incorporate new SPFE functions. [+] Added SGH TFS Decoder Embedded (STDE) component which allows to mount SGH TFS volumes and decode directories/files from them. [+] Added possibility to dump phone TFS into TFS/CFG file pair. [+] Multiple phone models support. [+] Added phone models help (colored question mark at the right of the phone type selector). [+] Included E800 loaders. [+] E800 NOR flashing/dumping (thanks to Taran-TOOL-YANDEX for exchange protocol logs captured). [+] E800 NAND (TFS) flashing. [+] S500 support, including 2BIN+2OGM -> BIN/DIF and backward conversion, 2BIN+2OGM flashing and dumping. [+] Private, author and safe to copy DIF blocks support. [+] DIF creation parameters window added. [+] DIF opening window added. [+] Added possibility to merge other DIFs when creating DIF. [+] Possibility to create DIF to undo other DIF changes when flashing the latter into the phone. [+] Added possibility to split DIFs with undo information into separate do/undo DIFs. [+] Added possibility to create undo information using DIF and original BIN file. [+] Added viewing DIF pack information before applying/flashing. [+] Added possibility to rearrange DIFs order before applying/flashing. [+] Added possibility to compress DIFs with ZLib. [+] Multilanguage support (localization) based on INI-formatted LNG files. [+] English and Russian languages. [+] Created and added HISTORY.TXT ;). [+] All last accessed file paths are now stored in the INI file. [+] Added system icons and sounds to all SGHFD messages. [+] Flash IDs are now shown if flash type is unknown. [+] Reversal (undo) DIF blocks support. [*] Reverted to INI file configuration instead of system registry. [*] ETA algorithm upgraded, now ETA (remaing time) will show values much more stable (and correctly). [*] Phone detection code fixed, which helped to lower CPU usage when waiting for phone to 0-2% (instead of 11-13% before), although when moving program window, some insignificant flicker may be possible. [*] Minor redesign, phone status, flash ID, "Disconnect" and "Cancel" buttons moved down, language selection box added, interface was panel-divided (that isn't visible, though). [*] Not closing files after flash operations was fixed (thanks to zimmer). [*] Changed initialization process to avoid reinitialization. [*] Improved DIF handling. Now everything must be faster and more stable. [*] BIN handling revamped. Now SGHFD preloads BINs into memory before doing anything. v0.55 (minor revision with respect to higher COM speeds): [+] Added checksum support for flashing. Now block transfer errors are correctly detected and handled. [+] Added block transfer retry mechanism. v0.52 (minor revision): [+] Possibility to create DIFs with reverse information. [*] Some minor DIF handling fixes. v0.51 (bugfix): [*] Minor phone communication fixes, now everything must be more stable (only probably, though ;). [*] Some cables did not report FF before BE on startup, while SGHFD was waiting for that. Fixed. v0.50 (higher COM speeds revision): [+] Higher COM speeds support (up to 806400). [*] Modified timer algorithms to have better support for some OS configurations (where SGHFD did not start before). [*] Highest detected COM number changed to 16 from 9 (because some USB cables are usually installed as COM11/COM12 ;). [-] Stripped "About" animation. SGHFD will now be about 100Kb less in size, totalling ~250Kb for now ;). v0.45 (minor revision): [+] Added "Phone disconnected" message, to hold from reconnection for auto-powering cables. [+] Added multiple DIF files applying (to BIN) and flashing. [*] Fixed major DIF creation bug. v0.42 (major bugfix): [+] Flash type detection added. [*] Now SGHFD is handling non-standard flash sectors correctly. All flashing bugs are completely fixed by that. [+] DIF format description is now supplied with the flasher. [*] CPU speed detection algorithm bug is fixed (probably). v0.40 (public release): [+] First almost working public release. v0.30b and before (initial beta release): [+] Initial test release, plenty of bugs and incomplete features here. 2. Todo. v1.00 (todo): [>] Support for some other phones (beyond Samsung, possibly LG in the nearest future). [>] Scripted dynamic patch engine. [>] SimpleAPI for external applications (based on shared memory). [>] Fully multithreaded COM support. v0.70 (todo): [>] Support for most of the known SGH series, including older ones. [>] MultiDIFs (yes, DIF files which contain multiple patches). [>] C100/110 phones support. [>] Add "flashing studio" wizards for inexperienced users. [>] Add four levels ("beginner", "intermediate", "pro" and "dev") of settings allowance. v0.69 dev (todo): [>] Complete TFS file manager inside. [>] D500 series support. [>] More NAND TFS engine functions. [>] Complete all basic functions. 3. Legend. [+] Feature added. [-] Feature removed. [*] Feature changed/bug fixed. [>] Feature in progress or planned (todo).