Repository navigation
Hardware Variants
Each GA36-MB unit has a different board revision number printed on it. So far we've only seen v1.0, v1.1 and v1.2. There does not appear to be any physical difference between boards with different numbers on it.
I have discovered, through intrepid engineering and an incredible response from the community, that the numbers don't actually mean anything at all.
The script.bin files inside the stock SD card explicitly define the hardware on the board. If two units have the same script.bin, then they are, for all intents and purposes, the exact same hardware. I have found that the board revision numbers have no correlation at all to the contents of script.bin files. Two v1.1 units can have different script.bin files. Two v1.2 units may even have different SoCs. A v1.1 and a v1.2 may have the exact same script.bin file. There's just no correlation at all that I've been able to discern.
The result is that a firmware that runs on one revision may not work on another. A v1.2 dump will only work on a subset of v1.2s, and may also work on some v1.0s and v1.1s.
[side note: This also means that the stock firmware backups on the handhelds wiki are is not an exhaustive list, and there are sd card backups out there that still need to be collected and uploaded somewhere.]
Instead, I think it makes more sense to identify hardware by the contents of the script.bin. The goodluckOS Firmware Builder does this by extracting the script.bin from a firmware image and hashing it. This gives us a reliable, deterministic way to identify hardware variants.
Many users have sent me their script.bin files and I've used that data to create a list of known variants:
| Name | SoC | script.bin hash |
|---|---|---|
| GA36-MB A33 Rhododendron | A33 | 4bdfa6b7deacf59d821063accdd5bf7789c70d240dc695fffa3e16f2e83dba6c |
| GA36-MB A33 Gecko | A33 | f6b72e9705f528c42ca5bef7ee39fddfd9ddc5369d365c17324ca6d9f8770898 |
| GA36-MB A23 Esisla | A23 | ad0b836c8b3cc6dd2b3b0d8c1817e2fdfe9ed48998a3bed758a73603f05f96e1 |
| GA36-MB A23 Underscore | A23 | 755aae75f7df87348a1427b94532e6a1ef758e3071fb5bf52f10a7f7032318e4 |
| GA36-MB A23 Xeno | A23 | 39a74a42c3d4f9d0599bf5f0db136a7f53bb6a072aa117eaae14e0f27872c798 |
(The names are completely arbitrary, except for Esisla, which is named after u/esisla who has been a great help with this project and first identified that variant.)
I'll update this page with links to the decompiled .fex files for each variant soon.
The major differences between the variants are: The SoC, the DRAM timings, and regulator voltages. All of these have to be correct for the device to safely boot. Regulator voltages are a little more forgiving, so a script.bin with DCDC3 set to 3.3V may still work on a device whose DCDC3 expects 3v, but it makes me a little queasy. Magic smoke, iykyk.