From ebbc3e7cd2086a9f62a857dffe9ab0bd1f5da768 Mon Sep 17 00:00:00 2001 From: Benjamin Dobell Date: Fri, 8 Mar 2013 00:00:52 +1100 Subject: - Removed legacy command line hard-coded partition name parameters. - As a result of the above two points, there are no "known boot partitions", and hence boot partitions are not automatically flashed last. - Made partitions flash in the order in order in which partition arguments are specified. Hence, it's recommended that you specify boot partitions last. - Added --usb-level argument that can be used for debugging libusbx, or flashing issues in general. - Removed generally non-functional firmware dumping behaviour. - Removed auto-resume functionality - Although this feature was definitely nice to have; I believe it may be responsible for flashing compatibility issues for a variety of devices. - As a result of the above. In order perform another action after a --no-reboot action, you must provide the --resume flag. - Heimdall Frontend also has support for specifying the --resume flag via a GUI. Heimdall Frontend also tries to keep track of your actions and enable "Resume" automatically after a "No Reboot" action. - Refactored quite a few of the actions, and code responsible for flashing (particularly PIT file flashing). - Bumped version to 1.4RC3 *however* this commit is not yet an official release candidate. It's still a WIP. In particular build files still have not been updated for Linux and OS X. --- heimdall-frontend/Source/mainwindow.cpp | 53 ++++++- heimdall-frontend/Source/mainwindow.h | 4 + heimdall-frontend/aboutform.ui | 2 +- heimdall-frontend/mainwindow.ui | 239 +++++++++++++++++++------------- 4 files changed, 193 insertions(+), 105 deletions(-) (limited to 'heimdall-frontend') diff --git a/heimdall-frontend/Source/mainwindow.cpp b/heimdall-frontend/Source/mainwindow.cpp index f990cdd..281fd77 100644 --- a/heimdall-frontend/Source/mainwindow.cpp +++ b/heimdall-frontend/Source/mainwindow.cpp @@ -262,7 +262,10 @@ void MainWindow::UpdateFlashInterfaceAvailability(void) flashProgressBar->setEnabled(false); optionsGroup->setEnabled(true); + sessionGroup->setEnabled(true); startFlashButton->setEnabled(validFlashSettings); + noRebootCheckBox->setEnabled(validFlashSettings); + resumeCheckbox->setEnabled(validFlashSettings); } else { @@ -270,7 +273,7 @@ void MainWindow::UpdateFlashInterfaceAvailability(void) flashProgressBar->setEnabled(true); optionsGroup->setEnabled(false); - startFlashButton->setEnabled(false); + sessionGroup->setEnabled(false); } } @@ -314,10 +317,7 @@ void MainWindow::UpdateUtilitiesInterfaceAvailability(void) closePcScreenButton->setEnabled(true); pitSaveAsButton->setEnabled(true); - if (!pitDestinationLineEdit->text().isEmpty()) - downloadPitButton->setEnabled(true); - else - downloadPitButton->setEnabled(false); + downloadPitButton->setEnabled(!pitDestinationLineEdit->text().isEmpty()); if (printPitDeviceRadioBox->isChecked()) { @@ -331,6 +331,7 @@ void MainWindow::UpdateUtilitiesInterfaceAvailability(void) printLocalPitGroup->setEnabled(true); printLocalPitLineEdit->setEnabled(true); printLocalPitBrowseButton->setEnabled(true); + printPitButton->setEnabled(!printLocalPitLineEdit->text().isEmpty()); } } @@ -420,6 +421,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) // Menu QObject::connect(actionDonate, SIGNAL(triggered()), this, SLOT(OpenDonationWebpage())); QObject::connect(actionVerboseOutput, SIGNAL(toggled(bool)), this, SLOT(SetVerboseOutput(bool))); + QObject::connect(actionResumeConnection, SIGNAL(toggled(bool)), this, SLOT(SetResume(bool))); QObject::connect(actionAboutHeimdall, SIGNAL(triggered()), this, SLOT(ShowAbout())); // Load Package Tab @@ -439,7 +441,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) QObject::connect(pitBrowseButton, SIGNAL(clicked()), this, SLOT(SelectPit())); QObject::connect(repartitionCheckBox, SIGNAL(stateChanged(int)), this, SLOT(SetRepartition(int))); + QObject::connect(noRebootCheckBox, SIGNAL(stateChanged(int)), this, SLOT(SetNoReboot(int))); + QObject::connect(resumeCheckbox, SIGNAL(stateChanged(int)), this, SLOT(SetResume(int))); QObject::connect(startFlashButton, SIGNAL(clicked()), this, SLOT(StartFlash())); @@ -882,13 +886,32 @@ void MainWindow::SelectPit(void) } } + void MainWindow::SetRepartition(int enabled) { workingPackageData.GetFirmwareInfo().SetRepartition(enabled); + + repartitionCheckBox->setChecked(enabled); } + void MainWindow::SetNoReboot(int enabled) { workingPackageData.GetFirmwareInfo().SetNoReboot(enabled); + + noRebootCheckBox->setChecked(enabled); +} + +void MainWindow::SetResume(bool enabled) +{ + resume = enabled; + + actionResumeConnection->setChecked(enabled); + resumeCheckbox->setChecked(enabled); +} + +void MainWindow::SetResume(int enabled) +{ + SetResume(enabled != 0); } void MainWindow::StartFlash(void) @@ -922,6 +945,9 @@ void MainWindow::StartFlash(void) if (firmwareInfo.GetNoReboot()) arguments.append("--no-reboot"); + if (resume) + arguments.append("--resume"); + if (verboseOutput) arguments.append("--verbose"); @@ -1095,6 +1121,9 @@ void MainWindow::ClosePcScreen(void) QStringList arguments; arguments.append("close-pc-screen"); + + if (resume) + arguments.append("--resume"); if (verboseOutput) arguments.append("--verbose"); @@ -1135,6 +1164,9 @@ void MainWindow::DownloadPit(void) arguments.append("--no-reboot"); + if (resume) + arguments.append("--resume"); + if (verboseOutput) arguments.append("--verbose"); @@ -1196,6 +1228,9 @@ void MainWindow::PrintPit(void) arguments.append("--stdout-errors"); arguments.append("--no-reboot"); + + if (resume) + arguments.append("--resume"); if (verboseOutput) arguments.append("--verbose"); @@ -1237,6 +1272,8 @@ void MainWindow::HandleHeimdallStdout(void) void MainWindow::HandleHeimdallReturned(int exitCode, QProcess::ExitStatus exitStatus) { + HandleHeimdallStdout(); + if (exitStatus == QProcess::NormalExit && exitCode == 0) { if (heimdallState == MainWindow::kHeimdallStateFlashing) @@ -1247,6 +1284,12 @@ void MainWindow::HandleHeimdallReturned(int exitCode, QProcess::ExitStatus exitS { deviceDetectedRadioButton->setChecked(true); } + + bool executedNoReboot = (heimdallState == kHeimdallStateFlashing && loadedPackageData.GetFirmwareInfo().GetNoReboot()) + || (heimdallState == kHeimdallStatePrintingPit && printPitDeviceRadioBox->isChecked()) || heimdallState == kHeimdallStateDownloadingPit; + + if (executedNoReboot) + SetResume(true); } else { diff --git a/heimdall-frontend/Source/mainwindow.h b/heimdall-frontend/Source/mainwindow.h index bea15cd..4abee8c 100644 --- a/heimdall-frontend/Source/mainwindow.h +++ b/heimdall-frontend/Source/mainwindow.h @@ -81,6 +81,7 @@ namespace HeimdallFrontend QList unusedPartitionIds; bool verboseOutput; + bool resume; void StartHeimdall(const QStringList& arguments); @@ -133,7 +134,10 @@ namespace HeimdallFrontend void SelectPit(void); void SetRepartition(int enabled); + void SetNoReboot(int enabled); + void SetResume(bool enabled); + void SetResume(int enabled); void StartFlash(void); diff --git a/heimdall-frontend/aboutform.ui b/heimdall-frontend/aboutform.ui index 142de47..ef1b947 100644 --- a/heimdall-frontend/aboutform.ui +++ b/heimdall-frontend/aboutform.ui @@ -114,7 +114,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Heimdall Frontend</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Version 1.4 RC1</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Version 1.4 RC3</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Copyright © 2010-2012 Benjamin Dobell, Glass Echidna</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Heimdall (command line)</span></p> diff --git a/heimdall-frontend/mainwindow.ui b/heimdall-frontend/mainwindow.ui index 6a165fb..ce42a89 100644 --- a/heimdall-frontend/mainwindow.ui +++ b/heimdall-frontend/mainwindow.ui @@ -401,7 +401,7 @@ 10 300 - 751 + 511 171 @@ -414,9 +414,9 @@ - 350 + 280 130 - 271 + 221 31 @@ -432,8 +432,8 @@ 10 30 - 731 - 91 + 491 + 81 @@ -451,7 +451,7 @@ 10 130 - 331 + 261 21 @@ -468,59 +468,6 @@ Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft - - - false - - - - 620 - 130 - 91 - 31 - - - - Start - - - - - - 720 - 130 - 21 - 23 - - - - - 75 - true - - - - The "Start" button will remain inactive until at least one partition/file is added. - - - QFrame::Panel - - - QFrame::Raised - - - 2 - - - 0 - - - ? - - - Qt::AlignCenter - - @@ -540,7 +487,7 @@ 10 20 391 - 61 + 91 @@ -624,6 +571,25 @@ Qt::AlignCenter + + + false + + + + 10 + 60 + 131 + 21 + + + + Repartitioning will wipe all data for your phone and install the selected PIT file. + + + Repartition + + @@ -738,44 +704,6 @@ - - - false - - - - 250 - 90 - 151 - 21 - - - - Can be enabled to prevent your device rebooting after the flash finishes. - - - No Reboot - - - - - false - - - - 20 - 90 - 151 - 21 - - - - Repartitioning will wipe all data for your phone and install the selected PIT file. - - - Repartition - - @@ -872,6 +800,110 @@ + + + + 530 + 300 + 231 + 171 + + + + Session + + + + false + + + + 10 + 30 + 211 + 21 + + + + Can be enabled to prevent your device rebooting after the flash finishes. + + + No Reboot + + + + + false + + + + 10 + 60 + 211 + 21 + + + + Can be enabled to prevent your device rebooting after the flash finishes. + + + Resume (use after "No Reboot") + + + + + false + + + + 50 + 120 + 111 + 31 + + + + Start + + + + + + 170 + 120 + 21 + 23 + + + + + 75 + true + + + + The "Start" button will remain inactive until at least one partition/file is added. + + + QFrame::Panel + + + QFrame::Raised + + + 2 + + + 0 + + + ? + + + Qt::AlignCenter + + + @@ -1826,6 +1858,8 @@ Advanced + + @@ -1860,6 +1894,14 @@ Verbose Output + + + true + + + Resume Connection + + @@ -1883,7 +1925,6 @@ partitionFileLineEdit partitionFileBrowseButton outputPlainTextEdit - startFlashButton createFirmwareNameLineEdit createFirmwareVersionLineEdit createPlatformNameLineEdit -- cgit v1.1 From f7f29172cb11fabf1d017ecdadaf32ea37eca4df Mon Sep 17 00:00:00 2001 From: Benjamin Dobell Date: Sun, 10 Mar 2013 02:32:16 +1100 Subject: Updated Linux build files and fixed a string formatting warning in Heimdall Frontend. --- heimdall-frontend/Source/Packaging.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'heimdall-frontend') diff --git a/heimdall-frontend/Source/Packaging.cpp b/heimdall-frontend/Source/Packaging.cpp index 9bf7d46..c4d3a51 100644 --- a/heimdall-frontend/Source/Packaging.cpp +++ b/heimdall-frontend/Source/Packaging.cpp @@ -301,7 +301,7 @@ bool Packaging::WriteTarEntry(const QString& filePath, QTemporaryFile *tarFile, // Note: We don't support base-256 encoding. Support could be added later. sprintf(tarHeader.fields.size, "%011llo", file.size()); - sprintf(tarHeader.fields.modifiedTime, "%011llo", qtFileInfo.lastModified().toTime_t()); + sprintf(tarHeader.fields.modifiedTime, "%u", qtFileInfo.lastModified().toTime_t()); // Regular File tarHeader.fields.typeFlag = '0'; -- cgit v1.1 From 55d6c9551e13b108947410d7bf50b6ba2c01b633 Mon Sep 17 00:00:00 2001 From: Benjamin Dobell Date: Sun, 5 May 2013 20:53:36 +1000 Subject: Fixed two major bugs in libpit related functionality: - Partitions were being excluded from flashing (and UI) if the block-count was zero. Instead this is now done using a new IsFlashable() method which checks if the partition name is not blank. - PitData::Pack() was packing the partition name where it should have been packing the "flash filename". This resulted in incorrect PIT files being flashed to the device. --- heimdall-frontend/Source/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'heimdall-frontend') diff --git a/heimdall-frontend/Source/mainwindow.cpp b/heimdall-frontend/Source/mainwindow.cpp index 281fd77..862dc5a 100644 --- a/heimdall-frontend/Source/mainwindow.cpp +++ b/heimdall-frontend/Source/mainwindow.cpp @@ -102,7 +102,7 @@ void MainWindow::UpdateUnusedPartitionIds(void) { const PitEntry *pitEntry = currentPitData.GetEntry(i); - if (pitEntry->GetBlockCount() > 0 && strcmp(pitEntry->GetPartitionName(), "PIT") != 0 && strcmp(pitEntry->GetPartitionName(), "PT") != 0) + if (pitEntry->IsFlashable() && strcmp(pitEntry->GetPartitionName(), "PIT") != 0 && strcmp(pitEntry->GetPartitionName(), "PT") != 0) unusedPartitionIds.append(pitEntry->GetIdentifier()); } -- cgit v1.1 From 59cc6133d532763dbb11592e15551ddf59c14773 Mon Sep 17 00:00:00 2001 From: Benjamin Dobell Date: Mon, 6 May 2013 00:01:04 +1000 Subject: Fixed bug in Heimdall Frontend where "resume" wasn't being checked when it should have been. --- heimdall-frontend/Source/mainwindow.cpp | 59 ++++++++++++++++----------------- heimdall-frontend/Source/mainwindow.h | 17 +++++----- 2 files changed, 37 insertions(+), 39 deletions(-) (limited to 'heimdall-frontend') diff --git a/heimdall-frontend/Source/mainwindow.cpp b/heimdall-frontend/Source/mainwindow.cpp index 862dc5a..6949e0c 100644 --- a/heimdall-frontend/Source/mainwindow.cpp +++ b/heimdall-frontend/Source/mainwindow.cpp @@ -87,7 +87,7 @@ void MainWindow::StartHeimdall(const QStringList& arguments) { flashLabel->setText("Failed to start Heimdall!"); - heimdallState = MainWindow::kHeimdallStateStopped; + heimdallState = HeimdallState::Stopped; UpdateInterfaceAvailability(); } } @@ -236,13 +236,13 @@ void MainWindow::UpdateLoadPackageInterfaceAvailability(void) else developerDonateButton->setEnabled(false); - loadFirmwareButton->setEnabled(heimdallState == MainWindow::kHeimdallStateStopped); + loadFirmwareButton->setEnabled(heimdallState == HeimdallState::Stopped); } } void MainWindow::UpdateFlashInterfaceAvailability(void) { - if (heimdallState == MainWindow::kHeimdallStateStopped) + if (heimdallState == HeimdallState::Stopped) { partitionNameComboBox->setEnabled(partitionsListWidget->currentRow() >= 0); @@ -279,7 +279,7 @@ void MainWindow::UpdateFlashInterfaceAvailability(void) void MainWindow::UpdateCreatePackageInterfaceAvailability(void) { - if (heimdallState == MainWindow::kHeimdallStateStopped) + if (heimdallState == HeimdallState::Stopped) { const FirmwareInfo& firmwareInfo = workingPackageData.GetFirmwareInfo(); @@ -311,7 +311,7 @@ void MainWindow::UpdateCreatePackageInterfaceAvailability(void) void MainWindow::UpdateUtilitiesInterfaceAvailability(void) { - if (heimdallState == MainWindow::kHeimdallStateStopped) + if (heimdallState == HeimdallState::Stopped) { detectDeviceButton->setEnabled(true); closePcScreenButton->setEnabled(true); @@ -354,7 +354,7 @@ void MainWindow::UpdateInterfaceAvailability(void) UpdateCreatePackageInterfaceAvailability(); UpdateUtilitiesInterfaceAvailability(); - if (heimdallState == MainWindow::kHeimdallStateStopped) + if (heimdallState == HeimdallState::Stopped) { // Enable/disable tabs @@ -405,7 +405,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { setupUi(this); - heimdallState = MainWindow::kHeimdallStateStopped; + heimdallState = HeimdallState::Stopped; lastDirectory = QDir::toNativeSeparators(QApplication::applicationDirPath()); @@ -918,7 +918,7 @@ void MainWindow::StartFlash(void) { outputPlainTextEdit->clear(); - heimdallState = MainWindow::kHeimdallStateFlashing; + heimdallState = HeimdallState::Flashing; heimdallFailed = false; const FirmwareInfo& firmwareInfo = workingPackageData.GetFirmwareInfo(); @@ -1098,7 +1098,7 @@ void MainWindow::DetectDevice(void) deviceDetectedRadioButton->setChecked(false); utilityOutputPlainTextEdit->clear(); - heimdallState = MainWindow::kHeimdallStateDetectingDevice; + heimdallState = HeimdallState::DetectingDevice; heimdallFailed = false; QStringList arguments; @@ -1116,7 +1116,7 @@ void MainWindow::ClosePcScreen(void) { utilityOutputPlainTextEdit->clear(); - heimdallState = MainWindow::kHeimdallStateClosingPcScreen; + heimdallState = HeimdallState::ClosingPcScreen; heimdallFailed = false; QStringList arguments; @@ -1153,7 +1153,7 @@ void MainWindow::DownloadPit(void) deviceDetectedRadioButton->setChecked(false); utilityOutputPlainTextEdit->clear(); - heimdallState = MainWindow::kHeimdallStateDetectingDevice; + heimdallState = HeimdallState::DownloadingPit; heimdallFailed = false; QStringList arguments; @@ -1214,7 +1214,7 @@ void MainWindow::PrintPit(void) { utilityOutputPlainTextEdit->clear(); - heimdallState = MainWindow::kHeimdallStatePrintingPit; + heimdallState = HeimdallState::PrintingPit; heimdallFailed = false; QStringList arguments; @@ -1258,7 +1258,7 @@ void MainWindow::HandleHeimdallStdout(void) output.remove(QChar('\b')); output.replace(QChar('%'), QString("%\n")); - if (heimdallState == MainWindow::kHeimdallStateFlashing) + if (heimdallState == HeimdallState::Flashing) { outputPlainTextEdit->insertPlainText(output); outputPlainTextEdit->ensureCursorVisible(); @@ -1276,24 +1276,23 @@ void MainWindow::HandleHeimdallReturned(int exitCode, QProcess::ExitStatus exitS if (exitStatus == QProcess::NormalExit && exitCode == 0) { - if (heimdallState == MainWindow::kHeimdallStateFlashing) + bool executedNoReboot = (heimdallState == HeimdallState::Flashing && loadedPackageData.GetFirmwareInfo().GetNoReboot()) + || (heimdallState == HeimdallState::PrintingPit && printPitDeviceRadioBox->isChecked()) || heimdallState == HeimdallState::DownloadingPit; + + SetResume(executedNoReboot); + + if (heimdallState == HeimdallState::Flashing) { flashLabel->setText("Flash completed successfully!"); } - else if (heimdallState == MainWindow::kHeimdallStateDetectingDevice) + else if (heimdallState == HeimdallState::DetectingDevice) { deviceDetectedRadioButton->setChecked(true); } - - bool executedNoReboot = (heimdallState == kHeimdallStateFlashing && loadedPackageData.GetFirmwareInfo().GetNoReboot()) - || (heimdallState == kHeimdallStatePrintingPit && printPitDeviceRadioBox->isChecked()) || heimdallState == kHeimdallStateDownloadingPit; - - if (executedNoReboot) - SetResume(true); } else { - if (heimdallState == MainWindow::kHeimdallStateFlashing) + if (heimdallState == HeimdallState::Flashing) { QString error = heimdallProcess.readAllStandardError(); @@ -1306,13 +1305,13 @@ void MainWindow::HandleHeimdallReturned(int exitCode, QProcess::ExitStatus exitS flashLabel->setText(error); } - else if (heimdallState == MainWindow::kHeimdallStateDetectingDevice) + else if (heimdallState == HeimdallState::DetectingDevice) { deviceDetectedRadioButton->setChecked(false); } } - heimdallState = MainWindow::kHeimdallStateStopped; + heimdallState = HeimdallState::Stopped; flashProgressBar->setEnabled(false); UpdateInterfaceAvailability(); } @@ -1321,7 +1320,7 @@ void MainWindow::HandleHeimdallError(QProcess::ProcessError error) { if (error == QProcess::FailedToStart || error == QProcess::Timedout) { - if (heimdallState == kHeimdallStateFlashing) + if (heimdallState == HeimdallState::Flashing) { flashLabel->setText("Failed to start Heimdall!"); flashProgressBar->setEnabled(false); @@ -1332,12 +1331,12 @@ void MainWindow::HandleHeimdallError(QProcess::ProcessError error) } heimdallFailed = true; - heimdallState = MainWindow::kHeimdallStateStopped; + heimdallState = HeimdallState::Stopped; UpdateInterfaceAvailability(); } else if (error == QProcess::Crashed) { - if (heimdallState == kHeimdallStateFlashing) + if (heimdallState == HeimdallState::Flashing) { flashLabel->setText("Heimdall crashed!"); flashProgressBar->setEnabled(false); @@ -1347,12 +1346,12 @@ void MainWindow::HandleHeimdallError(QProcess::ProcessError error) utilityOutputPlainTextEdit->appendPlainText("\nFRONTEND ERROR: Heimdall crashed!"); } - heimdallState = MainWindow::kHeimdallStateStopped; + heimdallState = HeimdallState::Stopped; UpdateInterfaceAvailability(); } else { - if (heimdallState == kHeimdallStateFlashing) + if (heimdallState == HeimdallState::Flashing) { flashLabel->setText("Heimdall reported an unknown error!"); flashProgressBar->setEnabled(false); @@ -1362,7 +1361,7 @@ void MainWindow::HandleHeimdallError(QProcess::ProcessError error) utilityOutputPlainTextEdit->appendPlainText("\nFRONTEND ERROR: Heimdall reported an unknown error!"); } - heimdallState = MainWindow::kHeimdallStateStopped; + heimdallState = HeimdallState::Stopped; UpdateInterfaceAvailability(); } } diff --git a/heimdall-frontend/Source/mainwindow.h b/heimdall-frontend/Source/mainwindow.h index 4abee8c..f7a67e4 100644 --- a/heimdall-frontend/Source/mainwindow.h +++ b/heimdall-frontend/Source/mainwindow.h @@ -45,15 +45,14 @@ namespace HeimdallFrontend private: - enum + enum class HeimdallState { - kHeimdallStateStopped = 0, - kHeimdallStateFlashing, - kHeimdallStateDetectingDevice, - kHeimdallStateClosingPcScreen, - kHeimdallStatePrintingPit, - kHeimdallStateDownloadingPit, - kHeimdallStateCount + Stopped = 0, + Flashing, + DetectingDevice, + ClosingPcScreen, + PrintingPit, + DownloadingPit }; enum @@ -69,7 +68,7 @@ namespace HeimdallFrontend int tabIndex; bool heimdallFailed; - int heimdallState; + HeimdallState heimdallState; QProcess heimdallProcess; PackageData loadedPackageData; -- cgit v1.1 From 4b089d808482f6e4c32250f29a3c723ef9c9d673 Mon Sep 17 00:00:00 2001 From: Benjamin Dobell Date: Mon, 13 May 2013 00:06:44 +1000 Subject: Fix OS X qmake/environment variable usage in .pro file. --- heimdall-frontend/heimdall-frontend.pro | 36 +++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 13 deletions(-) (limited to 'heimdall-frontend') diff --git a/heimdall-frontend/heimdall-frontend.pro b/heimdall-frontend/heimdall-frontend.pro index 1c3e5bc..ffd45ea 100644 --- a/heimdall-frontend/heimdall-frontend.pro +++ b/heimdall-frontend/heimdall-frontend.pro @@ -5,19 +5,29 @@ TEMPLATE = app TARGET = heimdall-frontend +isEmpty(OUTPUTDIR) { + OUTPUTDIR = $$(OUTPUTDIR) +} + macx { message("") - QT_FRAMEWORKS_DIR = $$(QT_FRAMEWORKS_DIR) + isEmpty(QT_FRAMEWORKS_DIR) { + QT_FRAMEWORKS_DIR = $$(QT_FRAMEWORKS_DIR) + } + isEmpty(QT_FRAMEWORKS_DIR) { message("QT_FRAMEWORKS_DIR not specified, using default:") - QT_FRAMEWORKS_DIR = /System/Library/Frameworks + QT_FRAMEWORKS_DIR = /Library/Frameworks } message("QT_FRAMEWORKS_DIR = $$QT_FRAMEWORKS_DIR") message("") - QMAKE_MACOSX_DEPLOYMENT_TARGET = $$(QMAKE_MACOSX_DEPLOYMENT_TARGET) + isEmpty(QMAKE_MACOSX_DEPLOYMENT_TARGET) { + QMAKE_MACOSX_DEPLOYMENT_TARGET = $$(QMAKE_MACOSX_DEPLOYMENT_TARGET) + } + isEmpty(QMAKE_MACOSX_DEPLOYMENT_TARGET) { message("QMAKE_MACOSX_DEPLOYMENT_TARGET not specified, using default:") QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.4 @@ -26,20 +36,20 @@ macx { message("QMAKE_MACOSX_DEPLOYMENT_TARGET = $$QMAKE_MACOSX_DEPLOYMENT_TARGET") message("") - QMAKE_MAC_SDK = $$(QMAKE_MAC_SDK) + isEmpty(QMAKE_MAC_SDK) { + QMAKE_MAC_SDK = $$(QMAKE_MAC_SDK) + } + isEmpty(QMAKE_MAC_SDK) { message("QMAKE_MAC_SDK not specified, using default:") - QMAKE_MAC_SDK = /Developer/SDKs/MacOSX10.4.sdk + QMAKE_MAC_SDK = /Developer/SDKs/MacOSX10.7.sdk } message("QMAKE_MAC_SDK = $$QMAKE_MAC_SDK") message("") - QMAKE_MACOSX_DEPLOYMENT_TARGET = $$MACOSX_DEPLOYMENT_TARGET - QMAKE_MAC_SDK = $$MAC_SDK - - PRIVATE_FRAMEWORKS.files = $$(QTFRAMEWORKSDIR)/QtCore.framework \ - $$(QTFRAMEWORKSDIR)//QtGui.framework $$(QTFRAMEWORKSDIR)/QtXml.framework + PRIVATE_FRAMEWORKS.files = $$QT_FRAMEWORKS_DIR/QtCore.framework \ + $$QT_FRAMEWORKS_DIR//QtGui.framework $$QT_FRAMEWORKS_DIR/QtXml.framework PRIVATE_FRAMEWORKS.path = Contents/Frameworks QMAKE_BUNDLE_DATA += PRIVATE_FRAMEWORKS @@ -49,7 +59,7 @@ macx { isEmpty(OUTPUTDIR) { DESTDIR = /Applications } else { - DESTDIR = $$(OUTPUTDIR) + DESTDIR = $$OUTPUTDIR } } else { @@ -57,7 +67,7 @@ macx { DESTDIR = ../Win32 !isEmpty(OUTPUTDIR) { - target.path = $$(OUTPUTDIR) + target.path = $$OUTPUTDIR INSTALLS += target } } else { @@ -66,7 +76,7 @@ macx { isEmpty(OUTPUTDIR) { target.path = /usr/local/bin } else { - target.path = $$(OUTPUTDIR) + target.path = $$OUTPUTDIR } INSTALLS += target -- cgit v1.1 From 07dcba54fc8cc5b7c6515305aa233e24a58adc94 Mon Sep 17 00:00:00 2001 From: Benjamin Dobell Date: Mon, 13 May 2013 00:08:30 +1000 Subject: Update copyright notices, version identifier and documentation for 1.4.0 release. --- heimdall-frontend/Source/Alerts.cpp | 2 +- heimdall-frontend/Source/Alerts.h | 2 +- heimdall-frontend/Source/FirmwareInfo.cpp | 2 +- heimdall-frontend/Source/FirmwareInfo.h | 2 +- heimdall-frontend/Source/PackageData.cpp | 2 +- heimdall-frontend/Source/PackageData.h | 2 +- heimdall-frontend/Source/Packaging.cpp | 2 +- heimdall-frontend/Source/Packaging.h | 2 +- heimdall-frontend/Source/aboutform.cpp | 2 +- heimdall-frontend/Source/aboutform.h | 2 +- heimdall-frontend/Source/main.cpp | 2 +- heimdall-frontend/Source/mainwindow.cpp | 2 +- heimdall-frontend/Source/mainwindow.h | 2 +- heimdall-frontend/aboutform.ui | 16 ++++++++-------- 14 files changed, 21 insertions(+), 21 deletions(-) (limited to 'heimdall-frontend') diff --git a/heimdall-frontend/Source/Alerts.cpp b/heimdall-frontend/Source/Alerts.cpp index f0b2caa..f3bda78 100644 --- a/heimdall-frontend/Source/Alerts.cpp +++ b/heimdall-frontend/Source/Alerts.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/Alerts.h b/heimdall-frontend/Source/Alerts.h index 7094a53..6e76239 100644 --- a/heimdall-frontend/Source/Alerts.h +++ b/heimdall-frontend/Source/Alerts.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/FirmwareInfo.cpp b/heimdall-frontend/Source/FirmwareInfo.cpp index e11a002..a32ddea 100644 --- a/heimdall-frontend/Source/FirmwareInfo.cpp +++ b/heimdall-frontend/Source/FirmwareInfo.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/FirmwareInfo.h b/heimdall-frontend/Source/FirmwareInfo.h index c9f9fbd..8f05ab4 100644 --- a/heimdall-frontend/Source/FirmwareInfo.h +++ b/heimdall-frontend/Source/FirmwareInfo.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/PackageData.cpp b/heimdall-frontend/Source/PackageData.cpp index e5ed75f..5bd78aa 100644 --- a/heimdall-frontend/Source/PackageData.cpp +++ b/heimdall-frontend/Source/PackageData.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/PackageData.h b/heimdall-frontend/Source/PackageData.h index 9e04fea..1103815 100644 --- a/heimdall-frontend/Source/PackageData.h +++ b/heimdall-frontend/Source/PackageData.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/Packaging.cpp b/heimdall-frontend/Source/Packaging.cpp index c4d3a51..dfdfe38 100644 --- a/heimdall-frontend/Source/Packaging.cpp +++ b/heimdall-frontend/Source/Packaging.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/Packaging.h b/heimdall-frontend/Source/Packaging.h index 4cead82..c8ea07a 100644 --- a/heimdall-frontend/Source/Packaging.h +++ b/heimdall-frontend/Source/Packaging.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/aboutform.cpp b/heimdall-frontend/Source/aboutform.cpp index 9bb975a..3547dcc 100644 --- a/heimdall-frontend/Source/aboutform.cpp +++ b/heimdall-frontend/Source/aboutform.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/aboutform.h b/heimdall-frontend/Source/aboutform.h index 6223e3b..3fe3ece 100644 --- a/heimdall-frontend/Source/aboutform.h +++ b/heimdall-frontend/Source/aboutform.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/main.cpp b/heimdall-frontend/Source/main.cpp index ce76059..6d49ba8 100644 --- a/heimdall-frontend/Source/main.cpp +++ b/heimdall-frontend/Source/main.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/mainwindow.cpp b/heimdall-frontend/Source/mainwindow.cpp index 6949e0c..02d7a62 100644 --- a/heimdall-frontend/Source/mainwindow.cpp +++ b/heimdall-frontend/Source/mainwindow.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/Source/mainwindow.h b/heimdall-frontend/Source/mainwindow.h index f7a67e4..6aa9519 100644 --- a/heimdall-frontend/Source/mainwindow.h +++ b/heimdall-frontend/Source/mainwindow.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna +/* Copyright (c) 2010-2013 Benjamin Dobell, Glass Echidna Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/heimdall-frontend/aboutform.ui b/heimdall-frontend/aboutform.ui index ef1b947..b7f00f3 100644 --- a/heimdall-frontend/aboutform.ui +++ b/heimdall-frontend/aboutform.ui @@ -72,7 +72,7 @@ 0 - 0 + -701 542 1140 @@ -114,11 +114,11 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Heimdall Frontend</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Version 1.4 RC3</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Copyright © 2010-2012 Benjamin Dobell, Glass Echidna</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Version 1.4.0</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Copyright © 2010-2013 Benjamin Dobell, Glass Echidna</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Heimdall (command line)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">%HEIMDALL-VERSION%Copyright © 2010-2012 Benjamin Dobell, Glass Echidna</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">%HEIMDALL-VERSION%Copyright © 2010-2013 Benjamin Dobell, Glass Echidna</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> @@ -411,10 +411,10 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:600;">Heimdall (command line) utilises libusb-1.0 for all USB communication:</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">libusb-1.0 is licensed under the </span><a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; text-decoration: underline; color:#0000ff;">Lesser General Public License v2.1.</span></a></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600;">Heimdall (command line) utilises libusbx for all USB communication:</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">libusbx is licensed under the </span><a href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Lesser General Public License v2.1.</span></a></p></body></html> Qt::RichText -- cgit v1.1 From 858a3470e926fe3fbc605a136c2adb3b7012d1e2 Mon Sep 17 00:00:00 2001 From: Benjamin Dobell Date: Tue, 14 May 2013 00:09:19 +1000 Subject: Moved LICENSE to root of the repo and deleted heimdall-frontend duplicate documentation in doc-pak. --- heimdall-frontend/doc-pak/LICENSE | 19 -- heimdall-frontend/doc-pak/README | 535 -------------------------------------- 2 files changed, 554 deletions(-) delete mode 100644 heimdall-frontend/doc-pak/LICENSE delete mode 100644 heimdall-frontend/doc-pak/README (limited to 'heimdall-frontend') diff --git a/heimdall-frontend/doc-pak/LICENSE b/heimdall-frontend/doc-pak/LICENSE deleted file mode 100644 index 680dad9..0000000 --- a/heimdall-frontend/doc-pak/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010-2012 Benjamin Dobell, Glass Echidna - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/heimdall-frontend/doc-pak/README b/heimdall-frontend/doc-pak/README deleted file mode 100644 index a181796..0000000 --- a/heimdall-frontend/doc-pak/README +++ /dev/null @@ -1,535 +0,0 @@ -Heimdall (c) 2010-2012 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 phone may also - void your warranty. Benjamin Dobell and Glass Echidna are not responsible - for the result of your actions. - - -These instructions are for Linux operating systems. - - -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 a terminal and run Heimdall Frontend by typing: - - heimdall-frontend - - 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 the - developer of the firmware (or files) and politely ask them to create a - Heimdall Firmware Package for you. In doing so, you avoid the risk of - 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 Samsung Galaxy S 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. - - 3. Open the a terminal and run Heimdall Frontend by typing: - - heimdall-frontend - - 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 the "Add" button below the - "Partitions (Files)" list-box will be 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 partions/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 Samsung Galaxy S 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. - - 4. Put your Galaxy S device into download mode and plug it in.. - - 5. Open a terminal and navigate to the directory where you extracted - the ROM/firmware files. - - 6. Type the following to list all the functionality Heimdall supports: - - heimdall help - - 7. Use the instructions to manually enter a command with all the files you - want to flash. - - Here is an example that does a full flash and repartition on a GT-I9000: - - heimdall flash --repartition --pit s1_odin_20100512.pit --factoryfs factoryfs.rfs --cache cache.rfs --dbdata dbdata.rfs --primary-boot boot.bin --secondary-boot Sbl.bin --param param.lfs --kernel zImage --modem modem.bin - - - 8. 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. - - 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 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 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. - - - - Test Firmware - 1.1 - - Android - 2.3.4 - - - Benjamin Dobell - Hedonism Bot - - http://www.glassechidna.com.au/ - http://www.glassechidna.com.au/donate/ - - - Samsung - GT-I9000 - Galaxy S - - - Samsung - GT-I9000T - Galaxy S (Telstra) - - - Samsung - GT-I9000M - Vibrant - - - Nl3276-I9000 s1_odin_20100512.pit - 0 - 0 - - - 0 - gq3276-boot.bin - - - 24 - Uh3276-cache.rfs - - - 22 - em3276-factoryfs.rfs - - - 11 - fl3276-modem.bin - - - 21 - Xd3276-param.lfs - - - 3 - if3276-Sbl.bin - - - 6 - cr3276-zImage - - - - - -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 element must be included. The 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 's element must be parsable -as an integer. The value represents the partition ID (according to the -specified PIT file) that the file should be flashed to. - -A 's and 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. - - and are the only optional elements, all other elements must -be included. - - - -Appendix B - Installing Heimdall from Source: - - 1. First make sure you have installed build-tools, pkgconfig, zlib-dev and - libusb-1.0-dev (v1.0.8 or newer). - - NOTE: Package names may not be absolutely identical to those above. - - 2. Open a terminal and navigate to the directory you downloaded, - or extracted, Heimdall to. - - 3. Enter the following commands to compile libpit: - - cd libpit - ./configure - make - cd .. - - If you have problems please consult http://www.libusb.org/ - - 4. Enter the following commands to compile libpit. - - cd libusb-1.0 - ./configure - make - cd .. - - NOTE: There is no need to run "sudo make install". - - 4. Enter the following commands to compile and install Heimdall: - - cd heimdall - ./configure - make - sudo make install - cd .. - - NOTE: As an alternative to "sudo make install" you may chose to generate - a package by typing the following: - - sudo checkinstall --pkgversion - - Where is the current Heimdall release e.g. 1.3.0 - - 5. Done - - - -Appendix C - Installing Heimdall Frontend from Source: - - 1. Compile and install Heimdall, see Appendix B. - - 2. First make sure you have installed Qt 4.7 or later, available from: - - http://qt.nokia.com/downloads/ - - 3. Open a terminal and navigate to the directory you extracted Heimdall to. - - 4. Enter the following commands to compile and install Heimdall Frontend: - - cd heimdall-frontend - qmake-qt4 heimdall-frontend.pro - make - sudo make install - - NOTE: As an alternative to "sudo make install" you may chose to generate - a package by typing the following: - - sudo checkinstall --pkgversion - - Where is the current Heimdall release e.g. 1.3.0 - - 5. Done - -- cgit v1.1 From 3d6a35972b70f9295455755802849303eb900a65 Mon Sep 17 00:00:00 2001 From: Benjamin Dobell Date: Tue, 4 Jun 2013 22:49:48 +1000 Subject: Renamed udev rules file and explictly added /usr/include to the include search path for Heimdall Frontend on UNIX systems. --- heimdall-frontend/heimdall-frontend.pro | 1 + 1 file changed, 1 insertion(+) (limited to 'heimdall-frontend') diff --git a/heimdall-frontend/heimdall-frontend.pro b/heimdall-frontend/heimdall-frontend.pro index ffd45ea..ecc6235 100644 --- a/heimdall-frontend/heimdall-frontend.pro +++ b/heimdall-frontend/heimdall-frontend.pro @@ -95,6 +95,7 @@ INCLUDEPATH += ./GeneratedFiles \ ./GeneratedFiles/Release \ ../libpit/Source \ . +unix:INCLUDEPATH += /usr/include DEPENDPATH += . MOC_DIR += ./GeneratedFiles/release OBJECTS_DIR += release -- cgit v1.1 From f47b69d037b74cf0916bbab248abcafe8a1f01a3 Mon Sep 17 00:00:00 2001 From: Benjamin Dobell Date: Sat, 8 Jun 2013 14:58:37 +1000 Subject: Modified Heimdall Frontend so it can find Heimdall CLI in /usr/local/bin on OS X. Also updated the OS X build files, as well as READMEs for all platforms. --- heimdall-frontend/Source/mainwindow.cpp | 11 +++++++++-- heimdall-frontend/heimdall-frontend.pro | 5 +++++ 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'heimdall-frontend') diff --git a/heimdall-frontend/Source/mainwindow.cpp b/heimdall-frontend/Source/mainwindow.cpp index 02d7a62..46dc381 100644 --- a/heimdall-frontend/Source/mainwindow.cpp +++ b/heimdall-frontend/Source/mainwindow.cpp @@ -52,13 +52,19 @@ void MainWindow::StartHeimdall(const QStringList& arguments) QStringList paths; - // Ensure /usr/bin is in PATH + // Ensure /usr/local/bin and /usr/bin are in PATH. for (int i = 0; i < environment.length(); i++) { if (environment[i].left(5) == "PATH=") { paths = environment[i].mid(5).split(':'); - paths.prepend("/usr/bin"); + + if (!paths.contains("/usr/local/bin")) + paths.prepend("/usr/local/bin"); + + if (!paths.contains("/usr/bin")) + paths.prepend("/usr/bin"); + break; } } @@ -71,6 +77,7 @@ void MainWindow::StartHeimdall(const QStringList& arguments) if (heimdallPath.length() > 0) { + utilityOutputPlainTextEdit->clear(); heimdallFailed = false; if (heimdallPath[heimdallPath.length() - 1] != QDir::separator()) diff --git a/heimdall-frontend/heimdall-frontend.pro b/heimdall-frontend/heimdall-frontend.pro index ecc6235..6cb5774 100644 --- a/heimdall-frontend/heimdall-frontend.pro +++ b/heimdall-frontend/heimdall-frontend.pro @@ -53,8 +53,13 @@ macx { PRIVATE_FRAMEWORKS.path = Contents/Frameworks QMAKE_BUNDLE_DATA += PRIVATE_FRAMEWORKS + LIBS += -L/usr/lib config += x86 x86_64 ppc + + QMAKE_CFLAGS_X86_64 = -m64 -mmacosx-version-min=10.5 + QMAKE_CXXFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64 + QMAKE_LFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64 isEmpty(OUTPUTDIR) { DESTDIR = /Applications -- cgit v1.1