yashsingh1/xdaforums huggingface dataset:
[Galaxy S I9000 Android Development] AdamOutler:
Benjamin Dobell,

Since I have been very picky about your program in beta testing, here is a copy of mine. Please be just as picky. Without 1.3 binaries it will complain and I'm not distributing 1.3beta in this package, however if you have 1.3 beta installed on Linux, or Mac, it will work... So this is basically a functional alpha version. I'd like to widdle down any problems.

Link removed

I was able to bring total package size down to 10 megs overhead for this one-click format. The hilarious thing is that of that 10 megs overhead, that's:

50% VCC Redistribution package for windows

45% Zip file containing Windows Drivers

5% actual program including Heimdall for all platforms, windows permissions elevation script, actual code running things, and images.

Currently left on my todo list:

1. Improve threading so intensive tasks run in background and let the user know what's going on in the background

2. offer an elegant way to install "this" version of Heimdall

[/LIST]

All functionality should be working with the exception of 1.3 binaries issue above. As a work around, install 1.3 beta and click "No" to the popup. For windows, place heimdall in Program Files (x86)\Heimdall\heimdall.exe I
[Galaxy S I9000 Android Development] Benjamin Dobell:
Okay, I'll definitely take a look in a couple of hours. Right now I'm finishing off the documentation and about to start building Heimdall 1.3.0 packages for all presently supported platforms. Once I've finally done that (it's taken me way too long) then you'll be set to make a final release.

By the way, any word on what happened to your tab? I was thinking about it. Even though you didn't specify repartition that shouldn't have been a problem because you specified a PIT file. When you specify a PIT (and not repartition) Heimdall checks that the PIT files match. If they don't Heimdall will safely abort the flash. At least that's what is meant to happen.
[Galaxy S I9000 Android Development] AdamOutler:
It's my dev phone... Another Samsung Captivate that I keep in relatively stock form. The problem was I copied a PBL and an SBL using "dd" from my device. Apparently either A. It destroys the formatting or B. Samsung performs some action on the bootloaders when they are flashed to the partition, thereby rendering them useless to be copied off the device... Then I flashed the invalid bootloaders to my device. I tested my dd'd copies of all other partitions first using heimdall one-click.. the dd'd bootloaders killed it though.

Don't let me rush you. Please... As far as I'm concerned, I can release in a week or two... After I've thoroughly tested packaging and deployment on all platforms. Heimdall One-Click works and has been tested thoroughly through my own testing and over 5000 downloads of One-Click UnBrick with no problems. The One-Click-Packaging works, but I want to refine things like I stated above.
[Galaxy S I9000 Android Development] Benjamin Dobell:
Don't know why I said Tab, I knew it was a Captivate! I'm glad the fault wasn't with Heimdall but I hope you manage to fix it via JTAG!

It's not a problem, it's been practically done for some time. I just got a bit caught up releasing an updated version of Anti-Squish, my little casual Android game.
[Galaxy S I9000 Android Development] jerome.d:
Adam, two stupid questions:

1) what does "Heimdall one click" do? I assume you must have described it in several preceding posts here, but do you have a written "readme" somewhere?

2) I tried to download and install your package, but couldn't. When I unzip your file, I find some (empty) directories and a big excutable "OneClickPackager.jar" file, but when I try to launch it (I am on Ubuntu 10.04) it fails:

Exception in thread "main" java.lang.NoClassDefFoundError: com/AdamOutler/HeimdallOneClick/HeimdallOneClickPackagerView
Caused by: java.lang.ClassNotFoundException: com.AdamOutler.HeimdallOneClick.HeimdallOneClickPackagerView
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: com.AdamOutler.HeimdallOneClick.HeimdallOneClickPackagerView. Program will exit.

What did i do wrong?
[Galaxy S I9000 Android Development] AdamOutler:
It was my fault... here

This is Heimdall One-Click Packager Alpha1. It packages a tar.gz into a cross-platform one-click format. Please use this for evaluation only. Do not distribute this.

As for your first question, I have not yet written the wiki article yet... There is a link from within Heimdall One-Click to the wiki... but it's just not written yet.

edit: I left a debug line in there.... Download the newest version I'm uploading right now if you're testing it... This version will work. it will take some time to generate a package, but it works. http://oneclick.adamoutler.com/svn/...OneClickPackager/Alpha/OneClickPackagerA2.jar It's up now.
[Galaxy S I9000 Android Development] jerome.d:
I was indeed testing it, but I was a little bit puzzled: where is the final packaged file supposed to appear? It seems indeed to take some time, but there is no way to tell if it is working or just stuck at "generating oneclick file". Would it be possible to implement a progress bar somewhere?
[Galaxy S I9000 Android Development] AdamOutler:
That is what o was talking about threading... however... download the package I just uploaded above.. it at least says done at the end. It will generate a file with the same name as the tar.gz. in the same folder.
[Galaxy S I9000 Android Development] jerome.d:
Sorry to be dumb: I was trying the latest version when I noticed that you changed the name of the button "select a file" to "select a Heimdall tar.gz file".

This means that I should first create the Heimdall package? If I do so, what it the use of Heimdall one click? This is meant to avoid that the end user has to download heimdall (&frontend) to flash the firmware? I thought your app was made to take an Odin .tar.gz package, to create a heimdall package from it and to embed it into an executable file which would flash this package through heimdall... I must have misunderstood somewhere!
[Galaxy S I9000 Android Development] AdamOutler:
Its for custom and stock ROM distribution. A developer can make a package once and it is then a one-click for all.
[Galaxy S I9000 Android Development] AdamOutler:
Again... its alpha.. to not distribute. Do not flash a bootloader or any critical files with this. There will be an official release thread when it is ready.
[Galaxy S I9000 Android Development] Yeas:
Is there a particular way to make Hiemdall on Mac recognize the phone when its in download mode?
[Galaxy S I9000 Android Development] jerome.d:
Yes, of course.

Once a developer makes his package and gives the oneclick file, is there any way to "decompile" the Heimdall firmware package inside? If I want to get only the firmware to run some tests, make some other mixed packages, etc, can I do that from the oneclick executable?
[Galaxy S I9000 Android Development] AdamOutler:
Your question delves into more then a single post of information, If you're asking about how to work with partition files? The short answer is yes. The best way is to decompress everything in the tar.gz package and create a new Heimdall image. It's in tar.gz format with a firmware.xml. You can rename the .jar to a .zip. the Heimdall tar.gz is located in zip format in the jar at:

com/AdamOutler/HeimdallOneClick/resources/ROMPackageHeimdallPackage.tar.gz

You can also mount and modify a FactoryFS in Linux. It's basically an image of the entire /system/ folder on your device. You can't modify a zImage, you need to get the kernel source.

You can also flash the firmware to a device, make changes on a device, then 'dd' the image back off to create the new TGZ with heimdall-frontend.
[Galaxy S I9000 Android Development] AdamOutler:
Benjamin Dobell,

I'm coming up with a way to make things a bit easier for all to make a package. We now all know we need to stay away from "dd"ing boot.bin, sbl.bin and possibly param.lfs. however, the rest can be "dd'''d. I came up with this script. I am trying to figure out a way to locate the kernel and modem partitions. Any ideas?

PackageFolder="/sdcard/partitions"

#if the PackageFolder does not exist make it.
test ! -e "PackageFolder" && mkdir "$PackageFolder"

#setup System,Cache,DBData and EFS locations
SystemPart=`busybox mount|busybox grep "/system"|busybox sed -n 1p|busybox awk '{ print $1 }'`
CachePart=`busybox mount|busybox grep "/cache"|busybox sed -n 1p|busybox awk '{ print $1 }'`
DbdataPart=`busybox mount|busybox grep "/dbdata"|busybox sed -n 1p|busybox awk '{ print $1 }'`
EFSPart=`busybox mount|busybox grep "/efs"|busybox sed -n 1p|busybox awk '{ print $1 }'`

#direct disk copy partition locations to files in package folder
dd if="$SystemPart" of="$PackageFolder"/FactoryFS.rfs
dd if="$CachePart" of="$PackageFolder"/Cache
dd if="$bdataPart" of="$PackageFolder"/DBdata
dd if="$EFSPart" of="$PackageFolder"/EFS

btw, did you get a chance to test the packager?
[Galaxy S I9000 Android Development] jerome.d:
That's what I was talking about: from the oneclick .jar, being able to get back all the files used to create the Heimdall package (i.e. zImage, boot.bin, etc.). I was not talking about editing some of these files to modify the kernel or other stuff.

I tried HeimdallOneClick. The .jar executable file is created, but when I try to launch it (without having plugged my phone - this is a simple test!), I get the following error

invalid file (bad magic number): Exec format error

I do not know if this comes from the fact that it did not detect a phone plugged to the PC, but if this is it, the error message should be more explicit.

In fact, if a phone is not plugged to the PC, the program should pause with a message of the kind "Please put your phone in download mode and plug it via a USB cable to the computer. Press 'enter' when done."
[Galaxy S I9000 Android Development] jerome.d:
I do not understand how you try to create a package: you assume that people will want to create a package by copying the current state of their phone? I.e. your program would create a package from the files currently on the phone?

It seems to me that very few people would want to do that: this would also probably copy many personnal configurations or files and include them in the package. That's not something you would want to distribute!

I am assuming that, when people create packages, they use "original" files: kernels, boot, etc. that they wrote on the computer, not the ones they get after having put them on the phone (after all, the /efs from the phone contains its IMEI I think...).
[Galaxy S I9000 Android Development] AdamOutler:
I've just run two tests on this one, on two computers, Ubuntu 11.04 64 and Windows7 64. Worked both times.

There was a problem with the way I was copying the files into the jar. It was duplicating the name.. I was using a test file called HeimdallPackage.tar.gz and that was what my program expected. It has been fixed.

This is the beta version. http://oneclick.adamoutler.com/svn/...er.OneClickPackager/Beta/OneClickPackager.jar

Yeah.. That was just to show the way to identify paritions... If someone wants to, they can share their EFS or make it manditory for a certain country build if a problem is worked out where a phone will not normally work in that country.

That's the only way you're going to be able to generate a FactoryFS. The Modem, zImage and the FactoryFS comprise most ROMs. FactoryFS is easy. We need zImage and Modem. Keep in mind, the Tar.GZ format is not intended for end users in the first place. a normal end user will flash a package and that's all. This is intended for developers who want to put the finishing touch on their ROM distribution. I'll be using Heimdall One-Click for all final distributions. It makes it easier for the end user to flash.... and that's the purpose of distributing a ROM in the first place, for the end user.

You'll understand more once you see the video. This is the safest way to flash. It also basically generates a factory quality package.

For those wanting to generate an actual working one-click, the package has been fixed. It's moved into Beta stage. Again, do not distribute this. It's got a giant BETA banner at the top.

1. create a tar.gz package with Heimdall-Frontend 1.3 beta

2. use One-Click Packager beta to turn it into a Windows/Mac/Linux flashable file.

http://oneclick.adamoutler.com/svn/...er.OneClickPackager/Beta/OneClickPackager.jar

no problems known in this build, with the exception of a rather long wait time for the initial startup of Heimdall One-Click. This will be threaded to the background and the flash button will be disabled until the operation is complete in final builds.
[Galaxy S I9000 Android Development] norpan111:
I dont get it, successfully installed both frontend and the other one on ubuntu 11.04 but i cant find the application to start it ? It says installed in Ubuntu Software Center but i find no way to launch it?
[Galaxy S I9000 Android Development] AdamOutler:
I noticed that.... I always drop to a terminal and type heimdall-frontend.
[Galaxy S I9000 Android Development] Benjamin Dobell:
To run Heimdall Frontend on Linux you need to open a terminal and type:

heimdall-frontend

Obviously a bit of a pain, but the main issue is that there's no standardised way of adding applications to a menu across all Linux distributions. I'd have to add special handling for each distribution. If I just tried to make it work with Ubuntu then it might cause issues on Debian, Fedora and Linux Mint.
[Galaxy S I9000 Android Development] AdamOutler:
The .deb should symlink heimdall-frontend to the apps folder. The source build cannot expect anything.
[Galaxy S I9000 Android Development] Benjamin Dobell:
Heimdall Suite 1.3.0 is now available from the Heimdall product page. Sorry about the delay, had a few distractions.

I'm going to get some sleep now but I'll add a blog announcement on Glass Echidna's website some time in the next 12 hours.
[Galaxy S I9000 Android Development] AdamOutler:
Great. I'll check it out tonight.
[Galaxy S I9000 Android Development] AdamOutler:
I see you've changed a few things. The suites are neat. They're all on one packages.

I have a problem with the Mac suite though... Is there a way you could release a mac binary only package? The Mac package is huge. 11 megs. The last one was only 366.5kb. I like the windows one. The front-end can be removed and the back end can be deployed.

My problem is that ROMs with all files are about 130-185 megs (depending on inclusions). my progam adds 10 megs to that.... 200 megabytes is the cap for most hosting sites like mediafire and others. That additional 10 megs is pushing the package size and bumping through the upper end of file hosting. This means larger ROMs cannot be distributed in one-click packaging.

There's several things I can do to make it smaller on my end, such as hosting the file online or creating an unofficial version, but it would be nice to have the package fully portable and use official versions of Heimdall. So please, if you would, release a command-line only dmg?
[Galaxy S I9000 Android Development] Benjamin Dobell:
Heimdall 1.1.1 was also released as a suite, it's just 1.2.0 wasn't because it didn't include an updated Heimdall Frontend.

I can upload Windows and OS X command line only releases to Github but I don't really want to list them on the Heimdall Product page. Well I could list them in a slightly different spot than "Latest Releases". The Heimdall page is a bit of a mess really, I need to clean it up at some stage.
[Galaxy S I9000 Android Development] AdamOutler:
That would be great! I was looking at that earlier... the best I can come up with is some dividers or bold text to separate win mac and linux.
[Galaxy S I9000 Android Development] scottietohottie:
Am I right in saying that this is your web page? I.e. do you have free rain a to content and layout?
[Galaxy S I9000 Android Development] AdamOutler:
Benjamin Dobell owns Glass Enchidna. http://www.glassechidna.com.au/

I have no idea what a Enchidna is... I think they have them in Austrailia.
[Galaxy S I9000 Android Development] Benjamin Dobell:
Haha, it's "Echidna" not "Enchidna". Basically they're a small mammal that lays eggs and vaguely resembles porcupine, that's right a mammal that lays eggs!
[Galaxy S I9000 Android Development] AdamOutler:
Echidna... got it.

I figure'd id keep the blog clean and respond in here... A debian repository is a very tricky thing to setup. However, you have the deb files already, so you can now add it to a repository... it involves creating an account at launchpad.net, generating a key, signing the package, uploading to your repository...

The final result is that the end user only has to copypasta something like:

sudo add-apt-repository ppa:GlassEchidna
sudo apt-get update && sudo apt-get install heimdall-frontend

I'd watch some videos on it... it's not easy... but it makes everyone else work less. http://www.google.com/search?q=how+ot+set+up+a+launchpad+package

After setting that up, i'd see if you can get into the 3rd party repos at Ubuntu.com.
[Galaxy S I9000 Android Development] strictlyrude27:
Words right out of my mouth - was literally just about to post about getting a Launchpad. I just stumbled into the updated thread, so glad to update to 1.3.0.
[Galaxy S I9000 Android Development] jerome.d:
Hello Benjamin,

I have just installed the .deb binaries of the last release of Heimdall. I did not flash with them yet, but I used the "utilities" to print the pit file of my SGS2, and I noticed something that you might want to take into account for a future improvement.

Each time we print or download the pit file, the device reboots after the command is finished. I do not think it should reboot. When one prints or downloads the pit file, this is generally speaking to prepare a flash and the device should therefore remains in download mode.

Is it possible to keep the device in download mode after a print or download of pit file?
[Galaxy S I9000 Android Development] scottietohottie:
Sorry guys bit slack on replies.

When you say you want to tidy it up, is it a house clean or a refresh and which bit? The page mentioned here

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

or here

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

Or the whole site?

I organise quite a bit user testing, and work with guys on layout design. depending on what your after I could knock together some possible's if you want.
[Galaxy S I9000 Android Development] Benjamin Dobell:
One reason why I'm a bit reluctant to do so is that I'm not even sure if the all the binary dependencies are correct. As is, building all the different packages for the various platforms is already time consuming enough, although OS X is largely to blame for that.

Regardless, I'll look into it.
[Galaxy S I9000 Android Development] Benjamin Dobell:
I mostly meant just the Heimdall page. The site as a whole isn't particularly flashy but it seems to do the job for now.

I'd like to see a complete site make-over at some stage but before that happens we need to sort out a proper logo for Glass Echidna.
[Galaxy S I9000 Android Development] Benjamin Dobell:
The reason it wasn't done already was because even when you specify the "--no-reboot" flag you couldn't perform another action without rebooting.

I've been meaning to look into this for quite some time. However I just found some time to perform a bit of experimentation. The good news is I've now got "--no-reboot" working as users would expect.

The reason is didn't really function as expected previously is basically a result of Heimdall's command line design. Because Heimdall's actions are performed by a command line tool (even when you use the Frontend), Heimdall didn't have a concept of an on-going connection. Each invocation of Heimdall would completely setup the connection and initialise the protocol. A device that hadn't rebooted didn't seem to allow the protocol to be initialised again.

However, with the changes I've just made, now when Heimdall command line is invoked, before initialising the protocol (and handshaking with the device), Heimdall tries to perform some basic communication with the device. If the device responds in a timely fashion then Heimdall skips the protocol initialisation phase. This seems to solve the problem.

As a result I've made a few conceptual changes in the Heimdall command line binary. For instance "beginning a session" means something slightly different than it used to. This is a result of the knowledge gained from this experimentation, as well as the knowledge gained from the recent SGS2 changes. Although some internal changes have been made the way in which Heimdall is used hasn't changed at all.

At the moment these changes are just sitting on my Windows machine. I need to clean things up a bit and update Heimdall's makefile slightly. However once that's done I'll upload the changes to Github so that some users with devices other than the GT-I9000 can ensure it works for them. If that all works out I'll release these improvements as a 1.3.1 update.
[Galaxy S I9000 Android Development] AdamOutler:
Heimdall One-Click has moved to Open-Beta.

http://xdaforums.com/showthread.php?t=1191924

Anyone can beta test. Don't flash unless you have an SGH-i897. I'm just looking for the result "Connected".
[Galaxy S I9000 Android Development] scottietohottie:
Want to pm me what the restrictions are and I'll chuck something together. Also I'll look at a logo if you want, anything in mind?
[Galaxy S I9000 Android Development] jerome.d:
Makes sense.

However, once you implement this new behaviour of Heimdall, do not forget to add a "reboot" command (in the command line program and the frontend) which would allow users to reboot their phone without having to long-press the power button (say, for example, if I want to download a pit file and then reboot my phone, without performing any flash).
[Galaxy S I9000 Android Development] sunseaker:
I just tried to compile version 1.3.0 on openSUSE11.4 but got this error when I issued the "sudo make install" command.

# sudo make install
make[1]: Entering directory `/home/Gbr/Heimdall-1.3/heimdall'
test -z "/usr/local/bin" || /bin/mkdir -p "/usr/local/bin"
/bin/sh ./libtool --mode=install /usr/bin/install -c heimdall '/usr/local/bin'
libtool: install: /usr/bin/install -c heimdall /usr/local/bin/heimdall
test -z "/lib/udev/rules.d" || /bin/mkdir -p "/lib/udev/rules.d"
/usr/bin/install -c -m 644 60-heimdall-galaxy-s.rules '/lib/udev/rules.d'
make install-data-hook
make[2]: Entering directory `/home/Gbr/Heimdall-1.3/heimdall'
sudo service udev restart
service: no such service udev
make[2]: *** [install-data-hook] Error 1
make[2]: Leaving directory `/home/Gbr/Heimdall-1.3/heimdall'
make[1]: *** [install-data-am] Error 2
make[1]: Leaving directory `/home/Gbr/Heimdall-1.3/heimdall'
make: *** [install-am] Error 2

Any ideas what is causing this?
[Galaxy S I9000 Android Development] Benjamin Dobell:
It looks like although OpenSUSE does have the service binary it isn't setup to work with udev rules. I'm not sure how OpenSUSE handles udev rules, you might have to just copy them across to the correct directory then reboot.

In saying that, Heimdall will work fine without the udev rules, you'd just need to run it with super user permissions.
[Galaxy S I9000 Android Development] sunseaker:
Thanks for replying. I'll do as suggested and copy the udev rules to the appriate folder.

Can I take it that Heimdall is otherwise correctly installed and it's only the udev rules that were throwing those errors? It seems to start up fine (with the frontend).