Jump to content

Samsung Galaxy Tab A 8.0 2015 (samsung-gt58): Difference between revisions

From postmarketOS Wiki
Rua (talk | contribs)
Knuxify (talk | contribs)
m gitlab.com -> gitlab.postmarketos.org (bot edit)
 
(40 intermediate revisions by 14 users not shown)
Line 1: Line 1:
{{Infobox device
{{Infobox device
| manufacturer = Samsung
| manufacturer = Samsung
| name = Galaxy Tab A 8.0 LTE (SM-T355Y)
| name = Galaxy Tab A 8.0 (2015)
| codename = samsung-gt58lte
| codename = samsung-gt58
| image = File:samsung-gt58lte.jpg
| image = File:samsung-gt58lte.jpg
| imagecaption = Samsung Galaxy Tab A 8.0 LTE (SM-T355Y)
| imagecaption = Samsung Galaxy Tab A 8.0 LTE (SM-T355Y)
| releaseyear = 2015
| releaseyear = 2015
| originalsoftware = Android 7.1.1 with Linux Kernel version 3.10.49
| category = community
| chipset = Qualcomm MSM8916 Snapdragon 410
| originalsoftware = Android
| originalversion = 7.1.1 (Linux 3.10.49)
| pmoskernel = Mainline
| chipset = Qualcomm Snapdragon 410 (MSM8916)
| cpu = Quad-core 1.2 GHz Cortex-A53
| cpu = Quad-core 1.2 GHz Cortex-A53
| gpu = Qualcomm Adreno 306
| gpu = Qualcomm Adreno 306
| storage = 16 GB
| storage = 16 GB
| display = 1024x768 (WXGA) PLS
| genericdevice=Generic MSM8916 (qcom-msm8916)
| optionalgenericdevice = yes
| display = 768x1024 (XGA) PLS
| memory = 2 GB
| memory = 2 GB
| architecture = aarch64
| architecture = aarch64
| type = tablet
| status_usbnet = Y
| status_usbnet = Y
| status_flashing = Y
| status_flashing = Y
Line 22: Line 28:
| status_fde = Y
| status_fde = Y
| status_mainline = Y
| status_mainline = Y
| status_battery = N
| status_battery = P
| status_3d = P
| status_3d = Y
| status_accel = Y
| status_accel = Y
| status_hall = Y
| status_barometer = -
| status_keyboard = -
| status_usba = -
| status_audio = Y
| status_audio = Y
| status_bluetooth = Y
| status_bluetooth = Y
Line 36: Line 46:
| whet_dhry = 921
| whet_dhry = 921
| status_otg = N
| status_otg = N
| pmoskernel =
| status_nfc = -
| status_irtx = -
}}{{Based on SoC|Qualcomm_Snapdragon_410/412_(MSM8916)|Snapdragon 410}}
}}{{Based on SoC|Qualcomm_Snapdragon_410/412_(MSM8916)|Snapdragon 410}}
'''Samsung Galaxy Tab A (2015)''' is a series of devices based on [[Qualcomm_Snapdragon_410/412_(MSM8916)|Qualcomm Snapdragon 410]] SoC which has great mainline Linux support.
This page should generally apply to any 8.0 inch variant of the device (WiFi, LTE, with and without the pen support). Note that those variants may have different amount of RAM. For 9.7 inch variants see [[Samsung_Galaxy_Tab_A_9.7_2015_(samsung-gt510)|Samsung Galaxy Tab A 9.7]].
== Variant differences ==
The device has multiple variants, the main differences in the features are shown in the table below:
{| class="wikitable"
|-
! style=min-width:8em | Feature !! style=min-width:8em | WIFI !! style=min-width:8em | LTE !! Notes
|-
! GPS
| style="text-align:center;" |Partial || class="feature feature-yes" | Works || WiFi: cli [[#GPS investigation gt58wifi (SM-T350)|investigation]] WIP.
|-
! Mobile data
| class="feature feature-unavailable" | Unavailable || class="feature feature-yes" | Works ||
|-
! SMS
| class="feature feature-unavailable" | Unavailable || class="feature feature-yes" | Works ||
|-
! Calls
| class="feature feature-unavailable" | Unavailable || class="feature feature-yes" | Works ||
|}
Note: The WiFi variant gt58wifi chipset is [[Qualcomm_Snapdragon_410/412_(MSM8916)|APQ8016]].


== Contributors ==
== Contributors ==
* Hello-world-321
* Hello-world-321
== Maintainer(s) ==
* TravMurav


== Users owning this device ==
== Users owning this device ==
Line 50: Line 89:


'''lk2nd Fastboot:'''
'''lk2nd Fastboot:'''
Boot up the device after installation
When turned off hold Power + Volume Down


== Installation ==
== Installation ==
# Install [https://github.com/msm8916-mainline/lk2nd#readme lk2nd] (alternative bootloader that provides a standard fastboot interface)
{{lk2nd|samsung=true|target=msm8916}}
# Follow [[Qualcomm_Snapdragon_410/412_(MSM8916)#Installation]].
 
== Audio ==
{{warning samsung-a2015}}
 
== Known Bugs and Workarounds ==
* '''Multi-touch doesn't work'''
This is a known issue: The touch controller sends the events in a different format that the driver can decode. Fix is WIP.
 
* '''How to charge device ?'''
Charger driver is not present at this time. Turn off your device and plug it in. The device will boot and get charged. You can check if the device charges by reading the value from <code>/sys/class/power_supply/max170xx_battery/current_now</code>
 
Battery percentage
<code>/sys/class/power_supply/max170xx_battery/capacity</code>
 
* '''Display Artifacts during brightness adjustment'''
Turn display off (lock device using power button) and turn on again to remove artifacts until next brightness change. Auto brightness should be turned off due display bug.
 
* '''Automatically switch to headset and turn off speakers when headset plugged in or cannot switch to speakers during phone calls'''
Select headset from settings after plugging in headset (Known issue)


== Mainline Kernel Status ==
== Mainline Kernel Status ==
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: auto;">
Table of components in the device
<div class="mw-collapsible-content">
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 75: Line 135:
| Light Sensor || Capella Micro CM3323 (Same as gt510wifi) || Yes || Yes
| Light Sensor || Capella Micro CM3323 (Same as gt510wifi) || Yes || Yes
|-
|-
| Display || Samsung S6D7AA0 LSL080AL03 || No || Working in kernel fork
| Display || Samsung S6D7AA0 LSL080AL03 || Yes || Working in kernel fork
|-
|-
| Backlight IC || Texas Instruments lp8556 || Not strictly needed || Brightness is set through DSI, PWM signal goes to lp8556
| Backlight IC || Texas Instruments lp8556 || Not strictly needed || Brightness is set through DSI, PWM signal goes to lp8556
Line 100: Line 160:
|}
|}
Running some diagnostics programs on Android will likely point out some more info about sensors and any other specifications.
Running some diagnostics programs on Android will likely point out some more info about sensors and any other specifications.
 
</div></div>
== Capability with Samsung Galaxy Tab A 8.0 Wi-Fi (2015) (samsung-gt58wifi) ==
Currently the image built with mainline (not mainline-modem) kernel can work on a Samsung Galaxy Tab A 8.0 Wi-Fi (2015) (samsung-gt58wifi), but because on samsung devices "secure boot" is usually enabled and '''wcnss''' (Wi-Fi and Bluetooth) and '''venus''' (video accelerator?) firmware files are signed, these firmware files for samsung-gt58lte (installable via package firmware-samsung-gt58lte-wcnss and firmware-samsung-gt58lte-venus) or other devices with MSM8x16 SoC cannot be loaded on samsung-gt58wifi, so these two components do not work initially, but the usable firmware files can be extracted from the '''apnhlos''' partition for android.
 
In order to prevent wcnss firmware being overwritten by package upgrade, before copying usable firmware from apnhlos partition, one could backup /lib/firmware/postmarketos/wlan/ for calibration data, uninstall package device-samsung-gt58lte-nonfree-firmware (depending on linux-firmware-qcom, firmware-samsung-gt58lte-wcnss and firmware-samsung-gt58lte-venus) and install linux-firmware-qcom only, (after setting up [[USB Internet]], or copying wcnss firmware files to enable Wi-Fi temporarily for further operations) and restore saved calibration data after Wi-Fi firmware files being copied.
 
(This method can prevent wcnss firmware files being overwritten by package firmware-samsung-gt58lte-wcnss, but cannot prevent venus firmware files being overwritten by package linux-firmware-qcom.)
 
<syntaxhighlight>
# mount -o ro /dev/disk/by-partlabel/apnhlos /mnt
# tar -czvf /run/wlan.tgz -C /lib/firmware/postmarketos/ wlan
# apk del device-samsung-gt58lte-nonfree-firmware
# apk add linux-firmware-qcom
# cp /mnt/image/wcnss.* /lib/firmware/postmarketos/
# cp /mnt/image/venus.* /lib/firmware/qcom/venus-1.8/
# tar -xzvf /run/wlan.tgz -C /lib/firmware/postmarketos/
</syntaxhighlight>
 
After reboot, wcnss and venus can work.


== Patch to enable otg ==
== Patch to enable otg ==
Line 125: Line 167:
After applying this patch the driver will not work for max77843. There are unhandled interrupts which will be disabled by linux.
After applying this patch the driver will not work for max77843. There are unhandled interrupts which will be disabled by linux.


<div class="toccolours mw-collapsible mw-collapsed" style="overflow: auto;">
Patch
<div class="mw-collapsible-content">
<syntaxhighlight lang="diff">
<syntaxhighlight lang="diff">
diff --git a/arch/arm64/boot/dts/qcom/msm8916-samsung-gt5-common.dtsi b/arch/arm64/boot/dts/qcom/msm8916-samsung-gt5-common.dtsi
diff --git a/arch/arm64/boot/dts/qcom/msm8916-samsung-gt5-common.dtsi b/arch/arm64/boot/dts/qcom/msm8916-samsung-gt5-common.dtsi
Line 429: Line 474:
  #define MAX77843_MUIC_STATUS2_CHGTYP_MASK (0x7 << MAX77843_MUIC_STATUS2_CHGTYP_SHIFT)
  #define MAX77843_MUIC_STATUS2_CHGTYP_MASK (0x7 << MAX77843_MUIC_STATUS2_CHGTYP_SHIFT)
</syntaxhighlight>
</syntaxhighlight>
</div></div>


Reference datasheets (similar devices)
Reference datasheets (similar devices)
MFD : https://www.infinite-electronic.kr/datasheet/94-MAX14616AEWA.pdf
* MFD : https://www.infinite-electronic.kr/datasheet/94-MAX14616AEWA.pd
Charger : https://datasheets.maximintegrated.com/en/ds/MAX77860.pdf
* Charger : https://datasheets.maximintegrated.com/en/ds/MAX77860.pdf
Others :  
* Others :  
1. https://datasheets.maximintegrated.com/en/ds/MAX77818.pdf
*# https://datasheets.maximintegrated.com/en/ds/MAX77818.pdf
2. https://datasheets.maximintegrated.com/en/ds/MAX77829.pdf
*# https://datasheets.maximintegrated.com/en/ds/MAX77829.pdf


== Hardware / sensor status and details ==
Output from <code>hwtest</code> on SM-T350, pmos V23.12.
Note that hwtest expects accelerometer units to be ''g'', whereas the data appear to be ''m/s<sup>2</sup>''.


== Known Bugs and Workarounds ==
<div class="toccolours mw-collapsible mw-collapsed" style="width:640px; overflow:auto;">
* '''How to charge device ?'''
hwtest
Currently the charging circuit does not work. Turn off your device and plug it in. The device will boot and get charged.
<div class="mw-collapsible-content">
{| class="wikitable feature-colors"
! style="text-align:left;"| Category
! style="text-align:left;"| Model
! style="text-align:left;"| Path
! style="text-align:left;"| Status
! style="text-align:left;"| Value
|-
|framebuffer
|msmdrmfb
|/sys/class/graphics/fb0
| class="feature-yes"| Working
|U:768x1024p-0
|-
|drm
|
|/sys/class/drm/card0-DSI-1
| class="feature-yes"| Working
|768x1024
|-
|accelerometer
|lis2hh12
|/sys/bus/iio/devices/iio:device2
| class="feature-yes"| Working
|5.22, 0.57, -8.17 g
|-
|vibrator
|gpio-vibrator
|/dev/input/event5
| class="feature-yes"| Working
|
|-
|input
|pm8941_pwrkey
|/dev/input/event0
| class="feature-yes"| Working
|
|-
|input
|pm8941_resin
|/dev/input/event1
| class="feature-yes"| Working
|
|-
|input
|GPIO Buttons
|/dev/input/event2
| class="feature-yes"| Working
|
|-
|input
|GPIO Hall Effect Sensor
|/dev/input/event3
| class="feature-yes"| Working
|
|-
|input
|Zinitix Capacitive TouchScreen
|/dev/input/event4
| class="feature-yes"| Working
|
|-
|input
|samsung-a2015 Headset Jack
|/dev/input/event6
| class="feature-yes"| Working
|
|}
</div>
</div>
 
== GPS investigation gt58wifi (SM-T350) ==
For overview, see [[Qualcomm_Snapdragon_410/412_(MSM8916)|Snapdragon 410/412#Modem]]
 
Test setup: pre-built image, v24.06, soc-qcom-msm8916-rproc-all, phosh/mmcli.
 
Location service is enumerated,
 
$ qrtr-lookup 16
  Service Version Instance Node  Port
      16      2        0    0    14 Location service (~ PDS v2)
Due to "no modem", replace device <code>/dev/modem</code> with uri <code>qrtr://0</code> (undocumented, or worse).


* '''Display Artifacts during brightness adjustment'''
Location features are get/set-able,
Turn display off (lock device using power button) and turn on again to remove artifacts until next brightness change. Auto brightness should be turned off due display bug.
# qmicli -V
qmicli 1.34.0
# qmicli -d qrtr://0 --loc-get-nmea-types
Successfully retrieved NMEA types: gga, rmc, gsv, gsa, vtg, pqxfi, pstis
# qmicli -d qrtr://0 --loc-get-engine-lock
Successfully retrieved engine lock: none
But, almost any hack may work, since the api is apparently autogenerated, not designed,
# qmicli -d qrtr://-0:anything-here! --loc-get-operation-mode
Successfully retrieved operation mode: standalone
# qmicli -d qrtr://-1 --loc-get-operation-mode
error: node with id 4294967295 not found in QRTR bus
Ignorant end-user attempts at matching [[Qualcomm_Snapdragon_410/412_(MSM8916)#GNSS_(GPS)|Snapdragon 410/412#GNSS_(GPS)]] fail
# qmicli -d qrtr://0  --loc-start --client-no-release-cid
[qrtr://0] Successfully started location tracking (session id 0)
[qrtr://0] Client ID not released:
        Service: 'loc'
            CID: '1'
# qmicli -d qrtr://0  --loc-follow-nmea --client-cid=1
error: operation failed: Unknown client 1 for service loc


* '''Display does not work or Display flickers'''
"Downstream gpsd-pds" works. See [[Arrow_DragonBoard_410c_(arrow-db410c)#Location_service_(PDS)|arrow-db410c#Location_service_(PDS)]].
You may have the BOE variant of the panel. Verify it in lk2nd.
 
If you're interested in bringing up the modem/gps on APQ variants of the device, feel free to reach out to travmurav via pmOS [[Matrix_and_IRC]] channels.


* '''Automatically switch to headset and turn off speakers when headset plugged in or cannot switch to speakers during phone calls'''
== See also ==
Select headset from settings after plugging in headset (Known issue)
* {{Device package|samsung-gt58|community}}
* [https://gitlab.postmarketos.org/postmarketOS/pmaports/-/tree/master/main/linux-postmarketos-qcom-msm8916 msm8916 mainline kernel package]
* [[Samsung_Galaxy_Tab_A_9.7_2015_(samsung-gt510)]]
* [https://github.com/msm8916-mainline/linux Mainline kernel tree for msm8916 devices]

Latest revision as of 14:00, 4 November 2024

Note This page is about the dedicated port of this device. There is also an optional generic port available for this device - see Generic MSM8916 (qcom-msm8916).
Samsung Galaxy Tab A 8.0 (2015)
Samsung Galaxy Tab A 8.0 LTE (SM-T355Y)
Samsung Galaxy Tab A 8.0 LTE (SM-T355Y)
Manufacturer Samsung
Name Galaxy Tab A 8.0 (2015)
Codename samsung-gt58
Released 2015
Type tablet
Hardware
Chipset Qualcomm Snapdragon 410 (MSM8916)
CPU Quad-core 1.2 GHz Cortex-A53
GPU Qualcomm Adreno 306
Display 768x1024 (XGA) PLS
Storage 16 GB
Memory 2 GB
Architecture aarch64
Software
Original software Android
Original version 7.1.1 (Linux 3.10.49)
postmarketOS
Category community
Pre-built images yes
postmarketOS kernel Mainline
Unixbench Whet/Dhry score 921
Optional Generic Port Generic MSM8916 (qcom-msm8916)
Features
Flashing
Works
USB Networking
Works
Internal storage
No data
SD card
No data
Battery
Partial
Screen
Works
Touchscreen
Works
Multimedia
3D Acceleration
Works
Audio
Works
Camera
No data
Camera Flash
No data
Connectivity
WiFi
Works
Bluetooth
Works
GPS
Works
Modem
Calls
Works
SMS
Works
Mobile data
Works
Miscellaneous
FDE
Works
USB OTG
Broken
HDMI/DP
No data
Sensors
Accelerometer
Works
Magnetometer
No data
Ambient Light
No data
Proximity
No data
Hall Effect
Works
Haptics
No data

Samsung Galaxy Tab A (2015) is a series of devices based on Qualcomm Snapdragon 410 SoC which has great mainline Linux support.

This page should generally apply to any 8.0 inch variant of the device (WiFi, LTE, with and without the pen support). Note that those variants may have different amount of RAM. For 9.7 inch variants see Samsung Galaxy Tab A 9.7.

Variant differences

The device has multiple variants, the main differences in the features are shown in the table below:

Feature WIFI LTE Notes
GPS Partial Works WiFi: cli investigation WIP.
Mobile data Unavailable Works
SMS Unavailable Works
Calls Unavailable Works

Note: The WiFi variant gt58wifi chipset is APQ8016.

Contributors

  • Hello-world-321

Maintainer(s)

  • TravMurav

Users owning this device


How to enter flash mode

Download mode: When turned off hold Power + Volume Up + Home

lk2nd Fastboot: When turned off hold Power + Volume Down

Installation

lk2nd is a secondary bootloader that provides a standard fastboot interface, which can be used to boot postmarketOS without Android boot flashed or pmbootstrap flasher flash_kernel.

  1. Download lk2nd-msm8916.img from Releases page on Github.
  2. Boot your phone to bootloader (Odin/Download) mode by holding Volume Down and Home while powering up.
  3. Follow lk2nd instructions to install lk2nd. Basically flash it to the boot partition (heimdall flash --BOOT lk2nd-msm8916.img)
  4. Follow Qualcomm_Snapdragon_410/412_(MSM8916)#Installation to install postmarketOS.
Note Note: Enter lk2nd fastboot mode by pressing only Volume Down + Power (without Home). Pressing Home additionally will bring you to the Samsung Download mode.

Audio

Warning WARNING: The speakers are rather loud on 100% volume and may produce distorted sound that may damage your speakers after long use. Please make sure to use reasonable volumes - your ears and your speaker will thank you!

Known Bugs and Workarounds

  • Multi-touch doesn't work

This is a known issue: The touch controller sends the events in a different format that the driver can decode. Fix is WIP.

  • How to charge device ?

Charger driver is not present at this time. Turn off your device and plug it in. The device will boot and get charged. You can check if the device charges by reading the value from /sys/class/power_supply/max170xx_battery/current_now

Battery percentage /sys/class/power_supply/max170xx_battery/capacity

  • Display Artifacts during brightness adjustment

Turn display off (lock device using power button) and turn on again to remove artifacts until next brightness change. Auto brightness should be turned off due display bug.

  • Automatically switch to headset and turn off speakers when headset plugged in or cannot switch to speakers during phone calls

Select headset from settings after plugging in headset (Known issue)

Mainline Kernel Status

Table of components in the device

Patch to enable otg

The following patch modifies max77843 extcon driver for max77849 and adds support in device tree

After applying this patch the driver will not work for max77843. There are unhandled interrupts which will be disabled by linux.

Patch

Reference datasheets (similar devices)

Hardware / sensor status and details

Output from hwtest on SM-T350, pmos V23.12. Note that hwtest expects accelerometer units to be g, whereas the data appear to be m/s2.

hwtest

GPS investigation gt58wifi (SM-T350)

For overview, see Snapdragon 410/412#Modem

Test setup: pre-built image, v24.06, soc-qcom-msm8916-rproc-all, phosh/mmcli.

Location service is enumerated,

$ qrtr-lookup 16
 Service Version Instance Node  Port
      16       2        0    0    14 Location service (~ PDS v2)

Due to "no modem", replace device /dev/modem with uri qrtr://0 (undocumented, or worse).

Location features are get/set-able,

# qmicli -V
qmicli 1.34.0
# qmicli -d qrtr://0 --loc-get-nmea-types
Successfully retrieved NMEA types: gga, rmc, gsv, gsa, vtg, pqxfi, pstis
# qmicli -d qrtr://0 --loc-get-engine-lock
Successfully retrieved engine lock: none

But, almost any hack may work, since the api is apparently autogenerated, not designed,

# qmicli -d qrtr://-0:anything-here! --loc-get-operation-mode
Successfully retrieved operation mode: standalone
# qmicli -d qrtr://-1 --loc-get-operation-mode
error: node with id 4294967295 not found in QRTR bus

Ignorant end-user attempts at matching Snapdragon 410/412#GNSS_(GPS) fail

# qmicli -d qrtr://0  --loc-start --client-no-release-cid
[qrtr://0] Successfully started location tracking (session id 0)
[qrtr://0] Client ID not released:
       Service: 'loc'
           CID: '1'
# qmicli -d qrtr://0  --loc-follow-nmea --client-cid=1
error: operation failed: Unknown client 1 for service loc

"Downstream gpsd-pds" works. See arrow-db410c#Location_service_(PDS).

If you're interested in bringing up the modem/gps on APQ variants of the device, feel free to reach out to travmurav via pmOS Matrix_and_IRC channels.

See also