Arquivos

Heimdall (c) 2010-2014 Benjamin Dobell, Glass Echidna

http://www.glassechidna.com.au/products/heimdall/



DISCLAIMER:



    This software attempts to flash your Galaxy S device. The very nature of

    flashing is dangerous. As with all flashing software, Heimdall has the

    potential to damage (brick) your device if not used carefully. If you're

    concerned, don't use this software. Flashing ROMs onto your device may also

    void your warranty. Benjamin Dobell and Glass Echidna are not responsible

    for the result of your actions.





These instructions were written for Windows 7 / Vista / Server 2008 however the

procedure should be essentially the same for all supported versions of

Windows (XP onwards).





Driver Installation Instructions:



    1. Put your device into download mode and plug it in.



    2. Run zadig.exe included in the Drivers subdirectory.



    3. From the menu chose Options -> List All Devices.



    4. From the USB Device list chose "Samsung USB Composite DEvice".



    5. Press "Install Driver", click "Yes" to the prompt and if you receive

       a message about being unable to verify the publisher of the driver

       click "Install this driver software anyway".



    6. Done







Driver Uninstallation Instructions:



    1. Put your device into download mode by holding Volume Down + Home + Power.



    2. Plug your phone into your PC.



    3. Open up Device Manager on your PC (Control Panel -> System -> Device Manager).



    4. Under "Libusb (WinUSB) devices" right click on "Samsung USB Composite Device" and chose Properties.



    5. Go to the Driver tab and select Update Driver.



    6. Chose to browse your computer for the driver.



    7. Chose to pick from a list of devices drivers on your computer.



    8. Pick the original Samsung Composite driver, press next and then follow the prompts.



    9. Done







Flashing Heimdall Firmware Package with Heimdall Frontend:



    As of Heimdall Frontend 1.3 there are now two main ways to flash a ROM from

    Heimdall Frontend. The simpler and preferred option is to download a

    Heimdall Firmware Package and follow the following steps.





    1. Fully charge your device (use the wall charger as it's faster).



    2. Open the Heimdall Frontend (heimdall-frontend) executable.



    3. From the "Load Package" tab, under the "Heimdall Firmware Package"

       section click the "Browse" button.



    4. Use the dialogue that appears to navigate to, and select, the Heimdall

       firmware package that you wish to flash.



    5. You will see progress bars appear as the package is decompressed and

       extracted.



       When the package has finished being decompressed you should see

       information about the particular firmware package that has been

       selected.



    6. Verify that your device is listed under "Supported Devices". If it's not

       then STOP immediately! DO NOT flash this firmware to your device!

       Instead search for an appropriate firmware package for your device.



       If you believe there is a mistake and your device is actually

       supported please get in contact with the firmware developer (not Glass

       Echidna!) and ask them to rectify the issue. If the developer provided

       a URL you may be able to contact them by pressing the "Homepage" button.



    7. If you've verified your device is supported you may continue to press

       the "Load / Customise" button.



    8. You should now be looking at the "Flash" tab. If not verify that you did

       in fact push the "Load / Customise" button.



       Generally, you won't NEED or WANT to customise a firmware package! In

       which case you can safely move on to step 9.



       Nonetheless, the "Flash" tab provides you with a means to customise the

       firmware package before flashing it to your device. See "Performing a

       Custom Flash with Heimdall Frontend" for more details.



    9. Put your Galaxy S device into download mode and plug it in to your PC.



       Download mode can be accessed several different ways depending on your

       particular device model. If you're unsure how to do this please search

       online for the appropriate method.



   10. Press the "Start" button.



   11. Heimdall Frontend will display the progress and inform you when the

       flash is complete.



       If something went wrong i.e. your device wasn't detected because it

       wasn't in download mode, then the status section will let you know the

       cause of the problem.







Performing a Custom Flash with Heimdall Frontend:



    This is the advanced means of flashing firmware to your device.



    If you're not an advanced user or a developer, in the event that a Heimdall

    Firmware Package doesn't exist for the particular firmware (or files) that

    you wish to flash, then I strongly recommend you get in touch with developer

    of the firmware (or files) and politely ask them to create a Heimdall

    Firmware Package for you. In doing so then you don't have to worry about

    making mistakes due to inexperience.



    If you're looking to customise an existing Heimdall Firmware Package then

    follow steps 1-8 of "Flashing Heimdall Firmware Package with Heimdall

    Frontend" then start from below with step 5.





    1. Fully charge your device (use the wall charger as it's faster).



    2. Download a decrypted device ROM or a Heimdall Firmware Package

       and extract everything to the one directory.



    3. If the ROM is not a Heimdall Firmware Package it may instead be provided

       as multiple archives (nested or otherwise), extract them all to the same

       location.



       NOTE: If you want to use the CSC then extract it last.



    3. Open the Heimdall Frontend (heimdall-frontend) executable.



    4. Select the "Flash" tab. From the "Flash" tab you're able to completely

       customise a flash. 



    5. Before you can chose which partitions you want to flash with particular

       files you MUST first select a PIT file. To do this click the "Browse"

       button in the "PIT" section. This will open a dialogue allowing you to

       navigate to and select a valid PIT (.pit) file.



       If you do not already have a valid PIT file stored on your computer you

       can download your device's PIT file from the "Utilities" tab.



    6. If a valid PIT file has been selected then "Add" button below the

       "Partitions (Files)" list-box will become enabled. Press this button to

       add a partition to your flash.



    7. When you first add a partition you will see the "Partition Name" and

       "Partition ID" be populated with information. Use the "Partition Name"

       drop down to select which partition you wish to flash. "Partition ID"

       will automatically update and is never directly editable.



    8. You must then select a file to flash to the partition that you just

       specified using the "Browse" button under the "File / Partition". You

       will not be able to flash, create a firmware package or add another

       partition until you have selected a file. However, you're still able to

       press the "Remove" button if you've decided not to flash the partition

       you've just specified.



    9. When you've specified a file name then you'll be able to see the updated

       information in the partition list to the right. You can select any

       partition from this list and customise it as you see fit.



       You can also remove a partition from the list by selecting it and

       clicking the "Remove" button. Removing a partition from the list doesn't

       remove it from your device, it simply means it will not be flashed.



   10. Repeat steps 7-9 as often as needed to specify all the partitions/files

       that you wish to flash.



   11. Now you can chose whether you would like to repartition your device as

       well as whether you would like to prevent the device rebooting once a

       flash has been completed. These options can be enabled or disabled by

       toggling the "Repartition" and "No Reboot" check-boxes.



       In the general case you will only need to enable repartition if you wish

       to change the PIT file on your device. Keep in mind that repartitioning

       will wipe your device!



       The "No Reboot" option is rarely required. It's mostly in place so you

       can manually boot straight into recovery mode after a flash (rather than

       booting up normally).



   12. If you've added at least one partition to your flash (and selected a

       file for that partition) then the "Start" button will be enabled. Press

       the "Start" button to begin the flashing process.



       You may notice that the "Create Package" tab becomes available at the

       whenever the "Start" button becomes available. From this tab you're able

       to create a reusable, redistributable Heimdall Firmware Package with the

       files and partitions you just selected. See "How to Create a Heimdall

       Firmware Package" for details.



   13. Heimdall Frontend will display the progress and inform you when the

       flash is complete.



       If something went wrong i.e. your device wasn't detected because it

       wasn't in download mode, then the status section will let you know the

       cause of the problem.







Flashing Firmware from Command Line:



    1. Fully charge your phone (use the wall charger as it's faster).



    2. Download a decrypted device ROM or a Heimdall Firmware Package

       and extract everything to the one directory.



    3. If the ROM is not a Heimdall Firmware Package it may instead be provided

       as multiple archives (nested or otherwise), extract them all to the same

       location.



       NOTE: If you want to use the CSC then extract it last. If you're asked

             to overwrite files then do so.



    4. Put your Galaxy S device into download mode and plug it in..



    5. Open command prompt and navigate to the directory where you installed

       heimdall.



       NOTE: Adding Heimdall to your PATH variable will allow you to run

             Heimdall from any directory.



    6. Type the following to list all the functionality Heimdall supports:



            heimdall help



    7. Before flashing, you must first know the names of the partitions you

       wish to flash. These can be obtained by executing:



            heimdall print-pit --no-reboot



       The inclusion of --no-reboot ensures the phone will not reboot after PIT

       file has been downloaded and displayed. After executing a command with

       the --no-reboot argument, the next command should include the --resume

       argument.



       NOTE: You can still safely reboot your phone manually (with the power

             button) after executing --no-reboot commands.



    8. Use the help and print-pit output to construct a command with all the

       file you want to flash.



       Here is an example that does a full flash and repartition on a GT-I9000:



            heimdall flash --repartition --resume --pit s1_odin_20100512.pit --FACTORYFS factoryfs.rfs --CACHE cache.rfs --DBDATA dbdata.rfs --IBL+PBL boot.bin --SBL Sbl.bin --PARAM param.lfs --KERNEL zImage --MODEM modem.bin



       NOTE: The above command assumes the files specified are installed in the

             same directory as Heimdall.



    9. Heimdall will display the progress as it flashes so that you know things

       are working as they should.







How to Create a Heimdall Firmware Package:



    Firstly, Heimdall's firmware package format is just a regular TAR archive

    compressed with gzip. The only two real requirements are that a valid

    firmware.xml must be included (refer to Appendix A) and you can only

    include files (no directories, links etc.) As such if you'd like there is

    nothing preventing you from creating Heimdall packages manually. Of course

    Heimdall Frontend provides a simple user interface that takes care of all

    the hard work for you.



    There are two ways in which you can create a firmware package. You can

    create a package from scratch, or you can load an existing package, apply

    modifications and then save the package. Creating a package from scratch

    is the preferred approach, by taking this approach you're far less likely

    to run into file name length limitations. These are not Heimdall's own

    limitation but rather a limitation of the TAR archive format.



    Before you can access Heimdall Frontend's firmware creation functionality

    (available from the "Create Package" tab) you must first specify which

    files will be included in your package, as well as a few flashing options

    i.e. Whether or not users should repartition when flashing. This

    information must be filled out from the "Flash" tab in exactly the same

    fashion you would provide information to flash your device (see "Performing

    a Custom Flash with Heimdall Frontend"). As mentioned above, it's not the

    preferred means, but you're able to load an existing package as a starting

    point for this information.



    Once you've specified the files/partitions you wish to include in your

    firmware package the "Create Package" tab will become available. Clicking

    this tab will display additional information that you can include in your

    package. In order to continue you must fill out all sections except for the

    URLs section, which is optional. The following is a break-down of what all

    these options mean.



    - General Firmware Information: -



        Firmware Name - This is the name of your particular firmware. An

            example would be "Cyanogenmod".



        Firmware Version - This is the version identifier for your package. Any

            valid string will be accepted although a the inclusion of decimal

            point version number is preferred i.e. "7.1". If it makes sense

            then feel free to append a text string like "RC1" or "Beta 1" to

            the decimal point version.



        Platform Name - This is the name of the platform (or operating system)

            that your firmware is based on. In most cases this will simply be

            "Android".



        Platform Version - This is the operating system version that your

            firmware is based on. Again decimal point version numbers are

            preferred over text, i.e. "2.3.4" is preferred over "Gingerbread".





    - Developers -



    URLs (Optional):



        Homepage - Here you can enter your personal URL or a URL particularly

            pertaining to the firmware being packaged. The URL must be well

            formed for it to work. An example of a well formed URL is

            "http://www.glassechidna.com.au/products/heimdall/". It is

            important to include "http://" in order to specify the protocol as

            other protocols such as "ftp://" are equally valid although

            unlikely to be used.



        Donate - Here you can enter a URL that will link users to a page to

            make donations for the effort you've put into developing your

            firmware. Once again the URL must be well formed but there is no

            requirement on how your donation page should work. For instance

            both "http://www.glassechidna.com.au/donate/" and

            "http://forum.xda-developers.com/donatetome.php?u=2710388" are

            equally valid.



    Developer Info:



        Name - Here you can enter in the name of individual team members or a

            team name. Click "Add" and the developer will be added to the list

            on the right. If you make a mistake you can select a developer from

            the list and click "Remove". You can list as many developers as you

            like however visual constraints of the "Load Package" tab means

            only a few names will be visible. Where possible you may want to

            opt for team names over listing individual team members.





    - Supported Devices -



    This section allows you to create a list of devices that are supported by

    your particular firmware. Although Heimdall isn't capable of enforcing this

    we strongly recommend you take this section seriously. If filled out

    correctly you could help save a number of accidental bricks!



    Device Info:



        Manufacturer - This is where you can enter the name of the manufacturer

            for a particular device. For now this will most likely be

            "Samsung".



        Name - This is the human readable name for a particular device.

            "Galaxy S", "Galaxy S II", "Droid Charge", "Vibrant" and

            "Galaxy S (Telstra)" are all valid names. There are a lot of

            possible variations here so be as specific as you think is

            necessary.



        Product Code - This is by far the most important bit of device

            information. Device names tend to be region specific and further

            subject to the whims of telecommunication companies and resellers.

            Product Codes (or product IDs) are designated by manufacturers and

            are generally the definitive means of referring to a particular

            device. Examples are "GT-I9000", "GT-I9100" and "SCH-I897". If

            you're unsure of a particular product code then both Google and

            GSMArena are your friends!





    After filling out all the necessary information the "Build" button will be

    enabled. If it's still disabled then you know you're missing some required

    information. In particular you must specify at least one developer and at

    least one supported device. Pressing the "Build" button will bring up a

    save dialogue where you must chose a file name for your particular package.

    Don't worry about specifying the ".tar.gz" extension Heimdall Frontend will

    take care of this automatically.



    Once you've chosen a file name Heimdall Frontend will begin the process of

    building the firmware package. In doing so a valid firmware.xml file will

    be generated from the information entered. All files will be archived in a

    single TAR file then the TAR archive will be compressed via gzip

    compression. Compression will take a little while but you will see progress

    bars so you know the application hasn't hung. When the progress bars

    disappear you're finished making your package.



    Congratulations! You're now ready to redistribute your firmware package

    online or by any means you see fit.







Appendix A - firmware.xml



The following details a part of the Heimdall Firmware Package format. This

is only relevant to developers or advanced users who wish to create Heimdall

Firmware Packages outside of Heimdall Frontend or in some way integrate support

for the format in their own software.





All Heimdall Firmware Packages must contain a file called firmware.xml. This

file stores flash information and meta-data for the package as well as

information about other files contained within the package.



The format is fairly straight-forward so it won't be explained in great detail.

Nonetheless the following is an example of a valid firmware.xml file.



<?xml version="1.0" encoding="UTF-8"?>

<firmware version="1">

	<name>Test Firmware</name>

	<version>1.1</version>

	<platform>

		<name>Android</name>

		<version>2.3.4</version>

	</platform>

	<developers>

		<name>Benjamin Dobell</name>

		<name>Hedonism Bot</name>

	</developers>

	<url>http://www.glassechidna.com.au/</url>

	<donateurl>http://www.glassechidna.com.au/donate/</donateurl>

	<devices>

		<device>

			<manufacturer>Samsung</manufacturer>

			<product>GT-I9000</product>

			<name>Galaxy S</name>

		</device>

		<device>

			<manufacturer>Samsung</manufacturer>

			<product>GT-I9000T</product>

			<name>Galaxy S (Telstra)</name>

		</device>

		<device>

			<manufacturer>Samsung</manufacturer>

			<product>GT-I9000M</product>

			<name>Vibrant</name>

		</device>

	</devices>

	<pit>Nl3276-I9000 s1_odin_20100512.pit</pit>

	<repartition>0</repartition>

	<noreboot>0</noreboot>

	<files>

		<file>

			<id>0</id>

			<filename>gq3276-boot.bin</filename>

		</file>

		<file>

			<id>24</id>

			<filename>Uh3276-cache.rfs</filename>

		</file>

		<file>

			<id>22</id>

			<filename>em3276-factoryfs.rfs</filename>

		</file>

		<file>

			<id>11</id>

			<filename>fl3276-modem.bin</filename>

		</file>

		<file>

			<id>21</id>

			<filename>Xd3276-param.lfs</filename>

		</file>

		<file>

			<id>3</id>

			<filename>if3276-Sbl.bin</filename>

		</file>

		<file>

			<id>6</id>

			<filename>cr3276-zImage</filename>

		</file>

	</files>

</firmware>





New lines need not be included and the order in which elements are specified

does not need to match that of the above example.



One and only one <firmware> element must be included. The <firmware> element

must also have a version attribute specified. The version must be parsable as

an integer and indicates what version of the Heimdall Firmware Package

specification the package adheres to.



All data is stored as strings, however a <file>'s <id> element must be parsable

as an integer. The <id> value represents the partition ID (according to the

specified PIT file) that the file should be flashed to.



A <firmware>'s <repartition> and <noreboot> elements must also be parsable as

an integer. However, as they represent boolean values, a value of zero ("0")

means false (or disabled) where as a non-zero value (typically "1") means true

(or enabled).



File names are specified relative to the TAR archive in which firmware.xml and

all other files are to be stored. Heimdall Firmware Packages do not support

directories or links, as such file names should only be a name and not a path.



<url> and <donateurl> are the only optional elements, all other elements must

be included.







Appendix B - Installing Heimdall Suite from Source



    Heimdall and Heimdall Frontend both utilise CMake for managing the build

    process. CMake can generate files for various build systems including GNU

    Make and Visual Studio. However, official packages are compiled with GNU

    Make and MinGW-W64 GCC/G++.



    NOTE: Official builds use MinGW-W64 simply because on-going cross-platform

          development is simpler when using just the one IDE (Jetbrain's CLion)

          and similar toolchains.



    1. Setup a MinGW-W64 build environment by utilising MSYS2:



        http://msys2.github.io/



    2. After installing MSYS2 a command prompt will launch, enter:



        Pacman -Syu

        Pacman -S mingw-w64-x86_64 mingw-w64-x86_64-clang mingw-w64-x86_64-cmake mingw-w64-x86_64-libusb mingw-w64-x86_64-qt5-static make



    3. Add the MinGW-W64 binaries to your PATH environment variable:



        export PATH="/mingw64/bin:$PATH"



    4. Build Heimdall & Heimdall Frontend



        mkdir build

        cd build

        cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DQt5Widgets_DIR=/c/msys64/mingw64/qt5-static/lib/cmake/Qt5Widgets ..

        make