Jump to content

Samsung Galaxy Express SGH-I437 (samsung-expressatt): Difference between revisions

From postmarketOS Wiki
mNo edit summary
No edit summary
 
(35 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{Infobox device
{{Infobox device
| manufacturer = Samsung
| manufacturer = Samsung
| name =  Galaxy S III SGH-I437
| name =  Galaxy Express SGH-I437
| codename = samsung-expressatt
| codename = samsung-expressatt
| image = File:samsung-expressatt.jpg
| image = File:samsung-expressatt.jpg
| imagecaption = Samsung Galaxy SIII SGH-I437
| imagecaption = Samsung Galaxy Express SGH-I437
| releaseyear = 2012
| releaseyear = 2012
| originalsoftware = Android 4.0 (Ice Cream Sandwich), upgradable to 4.1 (Jelly Bean)
| originalsoftware = Android
| chipset = Qualcomm MSM8960 Snapdragon S4 Plus
| originalversion = 4.0
| extendedversion = 4.1
| chipset = Qualcomm Snapdragon S4 Plus (MSM8960)
| cpu = Dual-core 1.5 GHz Krait
| cpu = Dual-core 1.5 GHz Krait
| gpu = Adreno 225
| gpu = Adreno 225
| storage = 8GB
| storage = 8 GB
| display = 480x800 AMOLED
| display = 480x800 AMOLED
| memory = 1GB
| memory = 1 GB
| architecture = armv7
| architecture = armv7
| 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 = <!-- USB networking does work? then put Y here and delete this comment -->
| status_usbnet = Y<!-- USB networking does work? then put Y here and delete this comment -->
| status_flashing = Y<!-- Flashing with "pmbootstrap flasher" works? Put Y here. It works the same for everything coming below. -->
| status_flashing = Y<!-- 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 = <!-- Touch screen is working? You can also answer these questions with P for partially. -->
| status_screen = P<!-- The display is working? -->
| status_screen = <!-- The display is working? -->
| status_wifi = <!-- Wireless network works? -->
| status_wifi = <!-- Wireless network works? -->
| status_xwayland = Y<!-- 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 = Y
| status_battery = <!-- Charging the battery with charging-sdl is possible -->
| status_battery = <!-- 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) -->
Line 34: Line 37:
| 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, can be yes/no *IMPORTANT* -->
| booting = yes <!-- The device is booting at all, can be yes/no *IMPORTANT* -->
| pmoskernel = 3.4.106
| pmoskernel = 6.5_rc2


<!-- you can also use these lines if you need to:
<!-- you can also use these lines if you need to:
if the device haven't originally ran Android OS, e.g. Nokia N900
| n-android =  ✔
Version of the kernel that pmos is running
| pmoskernel =
see Unixbench page on wiki
see Unixbench page on wiki
| whet_dhry = 0.0
| whet_dhry = 0.0
Line 58: Line 57:
== Users owning this device ==
== Users owning this device ==
{{Device owners}}
{{Device owners}}
<!-- autogenerated, use {{Owns device|devicepage|notes}} on your profile page -->
<!-- use _ instead of spaces in device page name, e.g. {{Owns device|HTC_Desire_(htc-bravo)|custom notes}}-->
<!-- you may need to purge page cache to see changes (more->purge cache)-->
<!-- you can use {{My devices}} on your profile page to show table with all your devices -->


== How to enter flash mode ==
== How to install ==
Start powered off. From there, hold the volume down button, home button, and power button. Once the phone buzzes, release the power button.
Start powered off. From there, hold the {{button|Volume Down}} button, {{button|Home}} button, and {{button|Power}} button. Once the phone buzzes, release the {{button|Power}} button.


== Installation ==
There is also a way to enter Odin download mode without the 3 button combo ([https://forum.xda-developers.com/t/howto-ref-get-download-mode-without-3-button-combo-using-homemade-jig.819551/ link]). Instead of the resistor in this [https://wiki.postmarketos.org/wiki/Serial_debugging:Cable_schematics schematic] being 150k or 619k, make it around 300k (which you could easily do with two 150k or 619k resistors). Will be useful if accidentally soft bricking device.
* Unlock the bootloader if it hasn't been unlocked before. (My memory is hazy, but I think I did it a sketchy way. I downloaded KingoRoot and rooted my device. I then installed ClockWorkMod from [https://forum.xda-developers.com/i437 here] although I think TWRP by jt works fine as well. Then get a ROM to overwrite the original. Compiled a recent one [https://forum.xda-developers.com/i437/help/revive-samsung-galaxy-s3-i437-t3844764 here])
* Enter Flash Mode
* Flash pmOS using pmbootstrap flasher flash_rootfs
* Flash kernel using pmbootstrap flasher flash_kernel


== Current Known Problems ==
 
* Red Tint
Once in odin mode, flash lk2nd onto the device: https://github.com/msm8916-mainline/lk2nd;
* Power button boot loops (Seems like this had to do with pmOS itself. It's fine now, but doesn't do anything)
currently you will have to build lk2nd and have to modify the bundle.dts where the other msm8960 devices exist just so the buttons work (Changes have been - or will soon be - submitted in a PR. Once it's merged, you don't have to do anything).
* Screen on 24/7
 
* Only works on Weston
Once lk2nd is built (or downloaded once the PR has been merged), simply do:
 
heimdall flash --BOOT lk2nd-msm8960.img
 
Building and flashing pmOS:
 
 
 
faster mainline builds... envkernel.sh doesn't behave nice, so this is 3 separate commands. this basically tells us what configs we are missing in our device.config file in linux-next so that we can add it
 
pmbootstrap -y zap -a && \
cd ~/linux/ && \
source ../pmbootstrap/helpers/envkernel.sh
 
pmbootstrap checksum device-samsung-expressatt linux-next && \
pmbootstrap kconfig edit linux-next --arch armv7 && \
sudo cp ~/pmaports/cache_git/pmaports/device/testing/linux-next/config-generic-trailblazer.armv7 ~/linux/arch/arm/configs/expressatt_defconfig && \
make expressatt_defconfig && \
make -j 20 && \
pmbootstrap build --envkernel linux-next && \
deactivate
 
sudo cp ~/linux/.output/.config .config && \
make LLVM=1 ARCH=arm -j $(nproc) savedefconfig && \
sudo cp ~/linux/defconfig ~/pmaports/cache_git/pmaports/device/testing/linux-next/defconfig && \
echo "=======================================" && \
while IFS= read -r line; do grep -Fxq "$line" ~/linux/arch/arm/configs/qcom_defconfig ~/pmaports/cache_git/pmaports/device/testing/linux-next/*.config || echo "$line"; done < ~/pmaports/cache_git/pmaports/device/testing/linux-next/defconfig && \
echo "=======================================" && \
sudo rm ~/linux/.output/.config ~/linux/.config ~/linux/defconfig && \
pmbootstrap build --force device-samsung-expressatt && \
pmbootstrap initfs hook_add debug-shell && \
yes | pmbootstrap install && \
pmbootstrap export && \
cd /tmp/postmarketOS-export/ && \
fastboot flash userdata samsung-expressatt.img
 
Finally remove the battery, plug it back in and watch the UART logs! The device doesn't boot to console yet, but close to it. Seems like configs are missing so I'm working to add them back in.
 
== Mainlining blocker ==
 
main problem here is pastebin.com/qGbfFGUt
 
small rw’s are fine, but big ones hang the system: pastebin.com/Tkx7Bw0q
 
dont know how to debug the mmc here
 
== UART ==
i have UART working. some links:
 
# https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_S4_Plus_(MSM8960)#UART
# https://wiki.postmarketos.org/wiki/Serial_debugging/Cable_schematics#Raspberry_Pi
# https://gitlab.postmarketos.org/postmarketOS/pmaports/-/tree/master/device/testing/device-samsung-expressatt
# https://gitlab.postmarketos.org/postmarketOS/pmaports/-/tree/master/device/testing/linux-postmarketos-qcom-msm8960
## https://gitlab.postmarketos.org/postmarketOS/pmaports/-/blob/master/device/testing/linux-postmarketos-qcom-msm8960/config-postmarketos-qcom-msm8960.armv7#L488
# https://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts
 
== Useful Links (?) ==
* https://www.infineon.com/dgdl/Infineon-CYUSB301X_CYUSB201X_EZ-USB_FX3_SUPERSPEED_USB_CONTROLLER-DataSheet-v01_00-EN.pdf?fileId=8ac78c8c7d0d8da4017d0eca1e7442aa
* https://arxiv.org/abs/1707.05082
* https://www.infineon.com/dgdl/Infineon-CY7C65223D-32LTXI-DataSheet-v01_00-EN.pdf?fileId=8ac78c8c7d0d8da4017d0eea2d36730a
* https://www.infineon.com/dgdl/Infineon-CYUSB301X_CYUSB201X_EZ-USB_FX3_SUPERSPEED_USB_CONTROLLER-DataSheet-v21_00-EN.pdf?fileId=8ac78c8c7d0d8da4017d0eca1e7442aa
* https://www.infineon.com/dgdl/Infineon-CYUSBS236_User_Guide-UserManual-v01_00-EN.pdf?fileId=8ac78c8c7d0d8da4017d0ef8d1be0e5a


== See also ==
== See also ==
* {{MR|808|pmaports}} Initial merge request
* {{issue|340|pmaports}} Some related issue
* [https://www.gsmarena.com/samsung_galaxy_express_i437-5018.php GSMArena]
* [https://www.gsmarena.com/samsung_galaxy_express_i437-5018.php GSMArena]
* [https://gitlab.com/postmarketOS/pmaports/tree/master/device/testing/device-samsung-expressatt Device package]
* {{Device package|samsung-expressatt}}
* [https://gitlab.com/postmarketOS/pmaports/tree/master/device/linux-samsung-expressatt Kernel package]
* {{Kernel package|postmarketos-qcom-msm8960}}
* [https://wiki.postmarketos.org/wiki/MSM8960_Mainlining MSM8960 Mainlining]

Latest revision as of 17:32, 5 February 2025

Samsung Galaxy Express SGH-I437
Samsung Galaxy Express SGH-I437
Samsung Galaxy Express SGH-I437
Manufacturer Samsung
Name Galaxy Express SGH-I437
Codename samsung-expressatt
Released 2012
Type handset
Hardware
Chipset Qualcomm Snapdragon S4 Plus (MSM8960)
CPU Dual-core 1.5 GHz Krait
GPU Adreno 225
Display 480x800 AMOLED
Storage 8 GB
Memory 1 GB
Architecture armv7
Software
Original software Android
Original version 4.0
Extended version 4.1
postmarketOS
Category testing
Pre-built images no
Mainline yes
postmarketOS kernel 6.5_rc2
Features
Flashing
Works
USB Networking
Works
Internal storage
No data
SD card
No data
Battery
No data
Screen
No data
Touchscreen
No data
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

LogicalErzor

Maintainer(s)

LogicalErzor

Users owning this device


How to install

Start powered off. From there, hold the Volume Down button, Home button, and Power button. Once the phone buzzes, release the Power button.

There is also a way to enter Odin download mode without the 3 button combo (link). Instead of the resistor in this schematic being 150k or 619k, make it around 300k (which you could easily do with two 150k or 619k resistors). Will be useful if accidentally soft bricking device.


Once in odin mode, flash lk2nd onto the device: https://github.com/msm8916-mainline/lk2nd; currently you will have to build lk2nd and have to modify the bundle.dts where the other msm8960 devices exist just so the buttons work (Changes have been - or will soon be - submitted in a PR. Once it's merged, you don't have to do anything).

Once lk2nd is built (or downloaded once the PR has been merged), simply do:

heimdall flash --BOOT lk2nd-msm8960.img

Building and flashing pmOS:


faster mainline builds... envkernel.sh doesn't behave nice, so this is 3 separate commands. this basically tells us what configs we are missing in our device.config file in linux-next so that we can add it

pmbootstrap -y zap -a && \
cd ~/linux/ && \
source ../pmbootstrap/helpers/envkernel.sh
pmbootstrap checksum device-samsung-expressatt linux-next && \
pmbootstrap kconfig edit linux-next --arch armv7 && \
sudo cp ~/pmaports/cache_git/pmaports/device/testing/linux-next/config-generic-trailblazer.armv7 ~/linux/arch/arm/configs/expressatt_defconfig && \
make expressatt_defconfig && \
make -j 20 && \
pmbootstrap build --envkernel linux-next && \
deactivate
sudo cp ~/linux/.output/.config .config && \
make LLVM=1 ARCH=arm -j $(nproc) savedefconfig && \
sudo cp ~/linux/defconfig ~/pmaports/cache_git/pmaports/device/testing/linux-next/defconfig && \
echo "=======================================" && \
while IFS= read -r line; do grep -Fxq "$line" ~/linux/arch/arm/configs/qcom_defconfig ~/pmaports/cache_git/pmaports/device/testing/linux-next/*.config || echo "$line"; done < ~/pmaports/cache_git/pmaports/device/testing/linux-next/defconfig && \
echo "=======================================" && \
sudo rm ~/linux/.output/.config ~/linux/.config ~/linux/defconfig && \
pmbootstrap build --force device-samsung-expressatt && \
pmbootstrap initfs hook_add debug-shell && \
yes | pmbootstrap install && \
pmbootstrap export && \
cd /tmp/postmarketOS-export/ && \
fastboot flash userdata samsung-expressatt.img

Finally remove the battery, plug it back in and watch the UART logs! The device doesn't boot to console yet, but close to it. Seems like configs are missing so I'm working to add them back in.

Mainlining blocker

main problem here is pastebin.com/qGbfFGUt

small rw’s are fine, but big ones hang the system: pastebin.com/Tkx7Bw0q

dont know how to debug the mmc here

UART

i have UART working. some links:

  1. https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_S4_Plus_(MSM8960)#UART
  2. https://wiki.postmarketos.org/wiki/Serial_debugging/Cable_schematics#Raspberry_Pi
  3. https://gitlab.postmarketos.org/postmarketOS/pmaports/-/tree/master/device/testing/device-samsung-expressatt
  4. https://gitlab.postmarketos.org/postmarketOS/pmaports/-/tree/master/device/testing/linux-postmarketos-qcom-msm8960
    1. https://gitlab.postmarketos.org/postmarketOS/pmaports/-/blob/master/device/testing/linux-postmarketos-qcom-msm8960/config-postmarketos-qcom-msm8960.armv7#L488
  5. https://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/qcom/qcom-msm8960-samsung-expressatt.dts

Useful Links (?)

See also