Jump to content

Samsung Galaxy S7 Edge (samsung-hero2lte): Difference between revisions

From postmarketOS Wiki
WilliamO7 (talk | contribs)
No edit summary
m rollbackEdits.php mass rollback
Tag: Rollback
 
(24 intermediate revisions by 14 users not shown)
Line 1: Line 1:
{{Infobox device
{{Infobox device
| manufacturer = Samsung
| manufacturer = Samsung
| name = Galaxy S7 edge
| name = Galaxy S7 edge
| codename = samsung-hero2lte
| codename = samsung-hero2lte
| image = File:samsung-hero2lte.jpg
| image = File:samsung-hero2lte.jpg
| imagecaption = Samsung Galaxy S7 Edge
| imagecaption = Samsung Galaxy S7 Edge
| releaseyear = 2016
| releaseyear = 2016
| originalsoftware = Android 6.0 on Linux 3.18.14
| originalsoftware = Android
| originalversion =  6.0 on Linux 3.18.14
| chipset = Samsung Exynos 8890 Octa
| chipset = Samsung Exynos 8890 Octa
| cpu = Exynos M1 (4x @ 2.3GHz) and ARM Cortex-A53 (4x @ 1.6GHz)  
| cpu = Exynos M1 (4x @ 2.3GHz) and ARM Cortex-A53 (4x @ 1.6GHz)  
| gpu = ARM Mali T880 MP12
| gpu = ARM Mali-T880 MP12
| storage = 32GB (upgradeable via microSD)
| storage = 32 GB (upgradeable via microSD)
| display = 1440x2560 AMOLED
| display = 1440x2560 AMOLED
| memory = 4GB
| memory = 4 GB
| architecture = aarch64
| architecture = aarch64
| type = handset
<!-- the following status_* questions should be answered with Y - yes, P - partial, N - no, or left blank (for untested or unknown) -->
<!-- the following status_* questions should be answered with Y - yes, P - partial, N - no, or left blank (for untested or unknown) -->
| status_usbnet = Y <!-- USB networking does work? then put Y here and delete this comment -->
| status_usbnet = Y  
| status_flashing = P <!-- Flashing with "pmbootstrap flasher" works? Put Y here. It works the same for everything coming below. -->
| status_flashing = P <!-- Flashing with "pmbootstrap flasher" works? Put Y here. It works the same for everything coming below. -->
| status_touch = Y <!-- Touch screen is working? You can also answer these questions with P for partially. -->
| status_touch = Y <!-- Touch screen is working? You can also answer these questions with P for partially. -->
| status_screen = N <!-- The display is working? -->
| status_screen = Y <!-- The display is working? -->
| status_wifi = <!-- Wireless network works? -->
| status_wifi = Y <!-- Wireless network works? -->
| status_xwayland = <!-- Showing X11 applications in a Wayland compositor (Weston, KWin, ...) works? -->
| status_xwayland = <!-- Showing X11 applications in a Wayland compositor (Weston, KWin, ...) works? -->
| status_fde = <!-- When installing with full disk encryption, can you type in the password with the on screen keyboard? -->
| status_fde = N <!-- When installing with full disk encryption, can you type in the password with the on screen keyboard? -->
| status_mainline = <!-- Instead of a Linux kernel fork, it is possible to run mainline. -->
| status_mainline = <!-- Instead of a Linux kernel fork, it is possible to run mainline. -->
| status_battery = <!-- Charging the battery with charging-sdl is possible -->
| status_battery = Y <!-- Charging the battery with charging-sdl is possible -->
| status_3d = <!-- Hardware accelerated 3D graphics (e.g. with freedreno) -->
| status_3d = <!-- Hardware accelerated 3D graphics (e.g. with freedreno) -->
| status_accel = <!-- The sensor that measures proper acceleration works -->
| status_accel = <!-- The sensor that measures proper acceleration works -->
Line 33: Line 35:
| status_sms = <!-- Sending and receiving short messages works as intended. -->
| status_sms = <!-- Sending and receiving short messages works as intended. -->
| status_calls = <!-- Talking to other people over the cellular network. -->
| status_calls = <!-- Talking to other people over the cellular network. -->
| booting = yes <!-- The device is booting at all *IMPORTANT* -->
| booting = Y <!-- The device is booting at all *IMPORTANT* -->
}}
}}


== Contributors ==
== Contributors ==
* WilliamO7
* Ramjam2008


== Maintainer(s) ==
== Maintainer(s) ==
Line 45: Line 47:
* WilliamO7
* WilliamO7


== How to enter flash mode ==
== Users owning this device ==
When the device is fully powered off, hold Power, Volume Down and Home for a few seconds.
{{Device owners}}


A (turquoise) download mode warning screen should appear, press Volume Up to confirm.  
== How to enter Download/Odin mode ==
When the device is fully powered off, hold Power, Home and Volume Down for a few seconds.
 
A (turquoise) download mode warning screen should appear, press Volume Up to confirm.


== Installation ==
== Installation ==
It is recommended to sideload an android recovery zip through twrp for the easiest process, since heimdall freaks out about the subpartitions in SYSTEM
It is recommended to sideload an android recovery zip through TWRP for the easiest process, since heimdall freaks out about the subpartitions in SYSTEM and won't move past ~7%.
and won't move past ~7%.
You can use <code>pmbootstrap flasher flash_kernel</code> and then use netcat or similar to flash SYSTEM, but this is a longer and more redundant method.
<code>
pmbootstrap install --no-fde --android-recovery-zip
 
pmbootstrap flasher --method=adb sideload
</code>


<syntaxhighlight lang="shell-session">
$ pmbootstrap install --android-recovery-zip
$ pmbootstrap flasher --method=adb sideload
</syntaxhighlight>


== What is tested and works ==
== What is tested and works ==
* The kernel (with prebuilt dtb)
* The kernel
* USB Networking (you might have to set its ip address beforehand though)
* USB Networking (you might have to set its MAC address beforehand though)
* Booting into the main OS (past initramfs), and therefore SSH.
* SSH
* Telnet in the initramfs
* Wi-fi
* Almost all display environments with software rendering (yes, even plasma mobile works, albeit slowly and with rubbish dpi scaling)
* As an aside, wayland based environments currently crash after a few minutes due to an unknown issue.


== Quirks ==
== Quirks ==
* Exynos (at least modern exynos) has a different dt.img format to Qualcomm devices, requiring a special dtbtool to go along with it.  
* Exynos (at least modern exynos) has a different dt.img format to Qualcomm devices, requiring a special dtbtool to go along with it. It has been packaged as exynos-dtbtool ({{MR|527|pmaports}}) and is being used to generate the device tree blob.
There is one included in the kernel source we have, which should make the dtb automatically,
but it always fails with the error <code>dtb.img: Failed to open ' '</code>.
However, we should be able to extract this from e.g. [https://github.com/LineageOS/android_hardware_samsung/tree/lineage-16.0/dtbhtool LineageOS], package it and make
some modifications to pmbootstrap to handle these.
* The display stays on the splashscreen, and does not change at all.
I did get some interesting messages spammed in kmsg, referring to the DECON display controller on the S7: <code>decon_pan_display: decon0 state(0), UNBLANK missed</code>. Don't know much about this though, apart from the fact that it has some [https://www.anandtech.com/show/9330/exynos-7420-deep-dive/3 quite unique architecture]. Using msm-fb-refresher didn't help.
* Camera drivers (Samsung FIMC-IS2) (and accompanying flash LED drivers, controlled by a Samsung PMIC) needed to be disabled in the kernel to prevent boot loops.
* Camera drivers (Samsung FIMC-IS2) (and accompanying flash LED drivers, controlled by a Samsung PMIC) needed to be disabled in the kernel to prevent boot loops.
== To get working ==
* FDE with osk-sdl - Tested and interface works, but crashes and bootloops attempting any decryption
* Halium support
* Mainlining (should probably help the android community too)


== See also ==
== See also ==
[https://github.com/ivanmeler/android_kernel_samsung_herolte herolte kernel fork]
* {{MR|179|pmaports}} initial MR
 
* {{MR|631|pmaports}} second MR (new kernel + wifi)
[https://wiki.lineageos.org/devices/hero2lte/ LineageOS device page]
* {{MR|3709|pmaports}} third MR (new repo + wifi fix)
<!--
* [https://github.com/8890q/android_kernel_samsung_universal8890 8890/8895 kernel fork]
Link to related gitlab issues or merge requests like the following (replace CHANGEME with the ID, e.g. 1234):
* [https://wiki.lineageos.org/devices/hero2lte/ LineageOS device page]
* {{MR|CHANGEME}} Initial merge request
* {{issue|CHANGEME}} Some related issue
You can also add normal web links:
* [https://redmine.replicant.us/projects/replicant/wiki/GalaxyS2I9100 Replicant wiki page]
-->

Latest revision as of 14:26, 23 April 2023

Samsung Galaxy S7 edge
Samsung Galaxy S7 Edge
Samsung Galaxy S7 Edge
Manufacturer Samsung
Name Galaxy S7 edge
Codename samsung-hero2lte
Released 2016
Type handset
Hardware
Chipset Samsung Exynos 8890 Octa
CPU Exynos M1 (4x @ 2.3GHz) and ARM Cortex-A53 (4x @ 1.6GHz)
GPU ARM Mali-T880 MP12
Display 1440x2560 AMOLED
Storage 32 GB (upgradeable via microSD)
Memory 4 GB
Architecture aarch64
Software
Original software Android
Original version 6.0 on Linux 3.18.14
postmarketOS
Category testing
Pre-built images no
Features
Flashing
Partial
USB Networking
Works
Internal storage
No data
SD card
No data
Battery
Works
Screen
Works
Touchscreen
Works
Multimedia
3D Acceleration
No data
Audio
No data
Camera
No data
Camera Flash
No data
Connectivity
WiFi
Works
Bluetooth
No data
GPS
No data
NFC
No data
Modem
Calls
No data
SMS
No data
Mobile data
No data
Miscellaneous
FDE
Broken
USB OTG
No data
HDMI/DP
No data
Sensors
Accelerometer
No data
Magnetometer
No data
Ambient Light
No data
Proximity
No data
Hall Effect
No data
Haptics
No data
Barometer
No data


Contributors

  • Ramjam2008

Maintainer(s)

  • WilliamO7

Users owning this device


How to enter Download/Odin mode

When the device is fully powered off, hold Power, Home and Volume Down for a few seconds.

A (turquoise) download mode warning screen should appear, press Volume Up to confirm.

Installation

It is recommended to sideload an android recovery zip through TWRP for the easiest process, since heimdall freaks out about the subpartitions in SYSTEM and won't move past ~7%. You can use pmbootstrap flasher flash_kernel and then use netcat or similar to flash SYSTEM, but this is a longer and more redundant method.

$ pmbootstrap install --android-recovery-zip
$ pmbootstrap flasher --method=adb sideload

What is tested and works

  • The kernel
  • USB Networking (you might have to set its MAC address beforehand though)
  • SSH
  • Telnet in the initramfs
  • Wi-fi
  • Almost all display environments with software rendering (yes, even plasma mobile works, albeit slowly and with rubbish dpi scaling)
  • As an aside, wayland based environments currently crash after a few minutes due to an unknown issue.

Quirks

  • Exynos (at least modern exynos) has a different dt.img format to Qualcomm devices, requiring a special dtbtool to go along with it. It has been packaged as exynos-dtbtool (pmaports!527) and is being used to generate the device tree blob.
  • Camera drivers (Samsung FIMC-IS2) (and accompanying flash LED drivers, controlled by a Samsung PMIC) needed to be disabled in the kernel to prevent boot loops.

To get working

  • FDE with osk-sdl - Tested and interface works, but crashes and bootloops attempting any decryption
  • Halium support
  • Mainlining (should probably help the android community too)

See also