Jump to content

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

From postmarketOS Wiki
See also: link to https://gitlab.com/postmarketOS/pmaports/merge_requests/179
WilliamO7 (talk | contribs)
Reflect the fact that the device is now merged and display environments now work, as well as add some to-do points
Line 15: Line 15:
| architecture = aarch64
| architecture = aarch64
<!-- 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 = <!-- 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 = <!-- 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 33:
| 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* -->
}}
}}


Line 51: Line 51:


== 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.


<syntaxhighlight lang="shell-session">
<syntaxhighlight lang="shell-session">
Line 60: Line 60:


== What is tested and works ==
== What is tested and works ==
* The kernel (with prebuilt dtb)
* The kernel with in-tree built exynos DTBH based image
* 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
* All display environments with software rendering (yes, even plasma mobile works, albeit slowly and with rubbish dpi scaling)


== 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. There is one included in the kernel source we have, which should make the dtb automatically. In future, for other exynos devices (S8 and up come to mind) we should package this as a common tool and treat it in a way similar to qcdt.
There is one included in the kernel source we have, which should make the dtb automatically,
but it always fails with <code>error: failed to read dtb ''; Segmentation fault</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
* Wi-Fi
* (If possible) 3D acceleration using the binary Mali userspace drivers from ARM, under Halium
* Mainlining (should probably help the android community too)


== See also ==
== See also ==

Revision as of 20:19, 14 February 2019

Samsung Galaxy S7 edge
Samsung Galaxy S7 Edge
Samsung Galaxy S7 Edge
Manufacturer Samsung
Name Galaxy S7 edge
Codename samsung-hero2lte
Released 2016
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 32GB (upgradeable via microSD)
Memory 4GB
Architecture aarch64
Software
Original software Android 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
No data
Bluetooth
No data
GPS
No data
NFC
No data
Modem
Calls
No data
SMS
No data
Mobile data
No data
Miscellaneous
FDE
No data
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

  • WilliamO7

Maintainer(s)

  • WilliamO7

How to enter flash mode

When the device is fully powered off, hold Power, Volume Down and Home 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 --no-fde --android-recovery-zip
$ pmbootstrap flasher --method=adb sideload

What is tested and works

  • The kernel with in-tree built exynos DTBH based image
  • USB Networking (you might have to set its MAC address beforehand though)
  • SSH
  • All display environments with software rendering (yes, even plasma mobile works, albeit slowly and with rubbish dpi scaling)

Quirks

  • Exynos (at least modern exynos) has a different dt.img format to Qualcomm devices, requiring a special dtbtool to go along with it. There is one included in the kernel source we have, which should make the dtb automatically. In future, for other exynos devices (S8 and up come to mind) we should package this as a common tool and treat it in a way similar to qcdt.
  • 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
  • Wi-Fi
  • (If possible) 3D acceleration using the binary Mali userspace drivers from ARM, under Halium
  • Mainlining (should probably help the android community too)

See also