This assumption was wrong. The number is really the number of logical
units in the storage, which tends to increase over time as the storage
space is increased I suppose.
This reverts commit e916c679ed.
And in that case there now exists a fifth version of the Odin
protocol, seen on Galaxy S9 and newer.
In total we have seen these versions (as of January 2022):
* 0, on devices from around 2014 or older
* 3, on devices from around 2015
* 4, on devices from around 2016 - 2017
* 5, on devices from around 2018 or newer
The unknown string is "COM_TAR2" in all devices I have access to. The
last unknown 4 bytes might be some sort of version, in old devices it
is 0000, in Galaxy S6 0003, in Galaxy S7 and S8 0004 and in Galaxy S9
and tab S6 lite 0005.
The CPU/bootloader string looks something like:
* LSI5410 - Seen in Exynos 5420, 5433 devices (and perhaps others)
* LSI7420 - Seen in Exynos 7420, 8890, 8895 devices (and perhaps others)
* LSI7880 - Seen in a5y17lte (exynos 7880)
* LSI9610 - Seen in gta4xl (exynos 9611)
* LSI9810 - Seen in star2lte (exynos 9810)
* Mx - Seen in Galaxy S3 (device codename is m0/m3)
* MSM8916 - Seen in MSM8916 devices
* MSM8960 - Seen in jflte (and probably in others, jflte has a APQ8064AB CPU)
We should only need to define it for old versions of MSVC. On linux
it seems that defining nullptr does not really have any downsides, but
on android we get some obscure compiler errors due to how nullptr is
defined. Fix nullptr check and thereby make heimdall compile on
android.
Error message looked something like:
[ 6%] Building CXX object libpit/CMakeFiles/pit.dir/source/libpit.cpp.o
In file included from /data/data/com.termux/files/home/Heimdall/libpit/source/libpit.cpp:22:
In file included from /data/data/com.termux/files/home/Heimdall/libpit/source/libpit.h:38:
In file included from /data/data/com.termux/files/usr/include/c++/v1/string:504:
In file included from /data/data/com.termux/files/usr/include/c++/v1/string_view:175:
In file included from /data/data/com.termux/files/usr/include/c++/v1/__string:57:
In file included from /data/data/com.termux/files/usr/include/c++/v1/algorithm:643:
/data/data/com.termux/files/usr/include/c++/v1/memory:2268:9: error: cannot initialize a member subobject of type 'libpit::PitEntry **' with an rvalue of type 'int'
: __value_(_VSTD::forward<_Up>(__u))
^ ~~~~~~~~~~~~~~~~~~~~~~~~
/data/data/com.termux/files/usr/include/c++/v1/memory:2353:9: note: in instantiation of function template specialization 'std::__compressed_pair_elem<libpit::PitEntry **, 0, false>::__compressed_pair_elem<int, void>' requested here
: _Base1(std::forward<_U1>(__t1)), _Base2(std::forward<_U2>(__t2)) {}
^
/data/data/com.termux/files/usr/include/c++/v1/vector:436:7: note: in instantiation of function template specialization 'std::__compressed_pair<libpit::PitEntry **, std::allocator<libpit::PitEntry *>>::__compressed_pair<int, std::__default_init_tag>' requested here
__end_cap_(nullptr, __default_init_tag())
^
/data/data/com.termux/files/usr/include/c++/v1/vector:495:5: note: in instantiation of member function 'std::__vector_base<libpit::PitEntry *, std::allocator<libpit::PitEntry *>>::__vector_base' requested here
vector() _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value)
^
/data/data/com.termux/files/home/projects/Heimdall/libpit/source/libpit.cpp:65:10: note: in instantiation of member function 'std::vector<libpit::PitEntry *>::vector' requested here
PitData::PitData()
^
- 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.
- 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.
- Massive refactoring.
- Support for Qualcomm based devices.
- Print PIT from file.
- Use partition names as arguments e.g. --HIDDEN, --KERNEL, --MOVINAND etc.
- Heimdall Frontend UI improvements.
- And much more...
- Fixed Heimdall command line support for PIT files without a reference to themselves.
- Added tool tips to Heimdall Frontend.
- Added heimdall 'info' and 'download-pit' actions.
- Made 'detect' action return 0 if a device is detected, 1 otherwise.