Jump to content

Samsung Galaxy S III (samsung-m0)

From postmarketOS Wiki
Samsung Galaxy S III
Samsung Galaxy S III
Samsung Galaxy S III
Manufacturer Samsung
Name Galaxy S III
Codename samsung-m0
Released 2012
Type handset
Hardware
Chipset Samsung Exynos 4412 Quad
CPU Quad-core 1.4 GHz Cortex-A9
GPU Mali 400 MP4
Display 720x1280 Super AMOLED
Storage 16/32/64 GB
Memory 1 GB (GT-i9300 & SHW-M440S)
Architecture armv7
Software
Original software
The software and version the device was shipped with.
Android 4.1.1
Extended version
The most recent supported version from the manufacturer.
Android
FOSS bootloader partial
postmarketOS
Category community
Pre-built images
Whether pre-built images are available from the postmarketOS Installation page.
no
Mainline
Instead of a Linux kernel fork, it is possible to run (Close to) Mainline.
yes
Unixbench score
Unixbench Whetstone/Dhrystone score. See Unixbench.
0.0
Device package device-samsung-m0
Kernel package linux-postmarketos-exynos4
Features
Flashing
Whether it is possible to flash the device with pmbootstrap flasher.
Works
USB Networking
After connecting the device with USB to your PC, you can connect to it via telnet (initramfs) or SSH (booted system).
Partial
Internal storage
eMMC, SD cards, UFS...
Works
SD card
Also includes other external storage cards.
Works
Battery
Whether charging and battery level reporting work.
Works
Screen
Whether the display works; ideally with sleep mode and brightness control.
Works
Touchscreen
Works
Multimedia
3D Acceleration
Works
Audio
Audio playback, microphone, headset and buttons.
Partial
Camera
Partial
Connectivity
WiFi
Works
Bluetooth
Partial
GPS
Broken
NFC
Near Field Communication
Broken
Modem
Calls
Broken
SMS
Broken
Mobile data
Broken
Miscellaneous
FDE
Full disk encryption and unlocking with unl0kr.
Works
USB OTG
USB On-The-Go or USB-C Role switching.
Works
HDMI/DP
Video and audio output with HDMI or DisplayPort.
Partial
Sensors
Accelerometer
Handles automatic screen rotation in many interfaces.
Works
Ambient Light
Measures the light level; used for automatic screen dimming in many interfaces.
Works
U-Boot
Primary Bootloader
Whether it is possible to replace stock bootloader with U-Boot.
Broken
Secondary Bootloader
Whether it is possible to chainload U-Boot from stock bootloader.
Untested
Mainline
Whether latest upstream versions of U-Boot are not broken and it is possible to use them.
Untested
Internal Storage
Whether it is possible to boot from internal storage (e.g. eMMC or UFS).
Untested
SD card
Whether it is possible to boot from SD card.
Untested
USB Host
Whether it is possible to boot from a USB storage or connect a keyboard.
Untested
USB Peripheral
Whether it is possible to use device as a peripheral in U-Boot, e.g. for fastboot mode.
Untested
Display
Untested
Buttons
Whether it is possible to navigate in boot menu or grub with volume and power buttons.
Untested


Contributors

Maintainer(s)

Basic Info

So far, what works for Samsung Galaxy S III LTE (samsung-m3) also works for the samsung-m0 (Galaxy S III international GSM version without LTE, Also known as Galaxy S III 3G SHW-M440S in South Korea) and samsung-shv-e210s (a Korean variant). (None of these S III models should be confused with the North American S III models, which require OS builds.)

Code name is MIDAS. Search for midas-mainline to find more info.

Users owning this device


Model variants

Galaxy S III "Midas"

  • GT-I9300 (Global?, 3G) - Works.
  • More. Needs ivestgation.

This device port (samsung-m0).

Galaxy S III (LTE) "Midas?"

  • GT-I9305 (Global?, 4G) - Currently seperate.

See Samsung Galaxy S III LTE (samsung-m3).

Also see #Similar devices for more details.

Firmware

Alternative bootloaders

Bootloader installation

The bootloader on this device is not protected by Secure Boot. It can be replaced after disabling EMMC write protection for mmcblk0boot0. Note that mmcblk0boot1 appears to be unused for this device.

Boot modes

Recovery (using Samsung bootloader) - hold Home+Volume Up+Power, or (with USB debugging enabled) - execute $ adb reboot recovery on a connected USB host

DFU (Odin/Download) mode - hold Home+Volume Down+Power, or (with USB debugging enabled) - execute $ adb reboot download on a connected USB host

Installation

Step 1: Flash the system

Option 1: Flash the system to an SD card

Start by flashing a pre-built postmarketOS rootfs image onto an SD card, as described in the installation article.

Option 2: Flash the system to the phone's internal storage

Note Note: If this runs into errors, please use option 1.

Prepare img2simg

Start by downloading and building simg2img, make sure that it's runnable from somewhere, you can just copy the generated binaries, (only 'img2simg' is needed), in /usr/bin and make them executable with chmod.

Prepare needed images - Option 1: Use a pre-built image

Download a pre-built postmarketOS rootfs image (GNOME mobile recommended, others ran into errors for me, more testing required), and extract it with any xz-supporting archive software, make sure to NOT extract the .img itself, only the .xz.

Prepare needed images - Option 2: Use a image you built yourself with pmbootstrap

Follow the instructions at this Wiki page till "Flashing", since you won't flash the image yet, instead do

pmbootstrap export

and copy your rootfs image (usually named samsung-m0.img) from the output directory to a working directory.

Convert the image into Android sparse format

The next step is to convert the rootfs image into an Android sparse image.

This is needed so we can flash the image in download mode.

To do this, we will use img2simg. Run this in the directory where you downloaded/saved the rootfs image:

img2simg path-to-rootfs.img pmos-sparse.img

The command might take some time to be executed, but once done, you will have an Android sparse image of postmarketOS ("pmos-sparse.img").

Flash the image

The next step is to flash that image with Heimdall. Note: you might need to repeat these steps if Android overwrites the USERDATA partition. Anyways, to flash the image, we need to enter ODIN mode as described in Enter ODIN mode, and run this command:

heimdall flash --USERDATA pmos-sparse.img

Step 2: Enter ODIN mode

To enter ODIN mode, follow these steps:

 1. Turn off phone
 3. Hold Volume Down + Home + Power until you get Warning!! screen
 2. Connect USB cable
 4. Push Volume up to continue to ODIN mode screen

Step 3: Flash the kernel via ODIN mode

Now, use Heimdall to flash the image with -boot at the end to your boot partition. Make sure that you extract it before flashing it (the downloaded file is a compressed .tar.xz archive).

Flash it with this command:

heimdall flash --BOOT <Decompressed image filename> --verbose

Note that it's important to write BOOT in all capitalised letters, as otherwise you will get an error about the partition not being found in the PIT.

After that's done, your device should now automatically reboot into postmarketOS!

Audio

Partial. Only PulseAudio is working in v25.06. Audio mostly works. Automatic device switching is unreliable when using it. PipeWire is working on the edge channel. Also see Systemd/audio for more details on PulseAudio.

Audio input devices

  • Back Internal Microphone - Partial. The pitch seems too high.
  • Front Internal Microphone - Broken.
  • Headset Input - Works.

Audio output devices

  • Built-in speaker - Works.
  • Earpiece speaker - Broken.
  • Headphones output - Broken.

Bluetooth Audio

Works. Needs more research.

DSP

Partial? Unknown? Needs more research.

Display

Display variants

  • Needs more research.

Common aftermarket displays have not been verified to work, using the packaged driver. This cannot be guaranteed for all replacement parts that appear to work.

Brightness

Works.

Warning WARNING: Beware "burn in" when using an (AM)OLED display on high brightness! Permanent discoloration can occur after consistent long use. Especially on some low quality OLEDs.

Home button

Partial. The key is displayed as "0x10" in gnome-settings and cannot be mapped to a shortcut. It does wake the device.

Touch keys

Works. See Tm2-touchkey for instructions.

Touchscreen

Works. Unknown?

Battery

This device uses removable 2100 mAh Li-Ion batteries. Large aftermarket batteries (with a custom back cover) are made by Samsung, and third parties.

With mainline, battery reporting works as of pmaports!2423, and charging works as of pmaports!2546. Charging allegedly randomly stops, but should that happen you can just unplug and re-plug the cable. Charging is also very slow and the device will probably lose power if you use it while charging.

Battery reporting and charging via postmarketOS does not work on the downstream kernel - the device gets stuck on whatever percentage it was on boot (although it does charge in recovery mode)

Warning WARNING: Be careful with degraded batteries. They may cause issues. Some UIs will not power the device off automatically on low charge!

Battery variants

  • EB-L1G6LLU (I9300, 2.1 Ah, NFC) - 2012, 2014. More dates?
  • EB-L1G6ULU (I9300, 3 Ah, NFC) - Large cover. No manufacture date printed on label.
  • Possibly more.

BMS

Unknown. Designed for 3.8V Li-Ion cells. Range is unknown?. Charge limit is unknown? It is modular and should stay accurate when switching batteries. Needs more research.

Charger

Works. Unknown? Supports 5V 2A? charging. May not stop charging, unlike Android kernels!

Fuelguage

Works. Unknown? All battery packs should display an accurate charge level, it is read from the #BMS. Needs more research.

Camera

Currently unsupported. You are welcome to try it!

Note The camera subsystem requires a lot of work. Needs more investigation.

Flash LED

Works. Unknown? Needs more research.

Image sensors

Needs more research.

Note Note: Sensors from S III VE variants could work, or be the same. Needs investigation. And testing.

ISP

Currently unsupported.

Modem

Currently unsupported. There was some work done to enable the modem on the i9300 variant of this device. It can be found here: https://github.com/fourkbomb/linux/tree/modem. Note that even if you apply this, you would likely need userspace patches as well for calls and mobile data to be usable.

Wired connectivity

  • Micro USB 2.0 - Partial. Data is likely to work. Power is missing.
  • Headset (AUX, 3.5 mm) - Works.
  • Video out (MHL, 11-pin) - Currently broken?

Video out

Samsung Galaxy S III providing video out to a TV through an original Samsung dock (model name: EDD-S20EWE).

Video out should work as long as you use an 11pin MHL cable or dock (safest option would be an original Samsung dock/adapter from the time period, Samsung's EDD-S20EWE is known to work).

In 2022-09, all hdmi related nodes were disabled (pmaports!3395) as the kernel driver reports the wrong state, and this led to the Phosh stack not starting up. A WIP to fix issue can be found at gitlab.com/exynos4-mainline/linux/-/tree/m0-mhl-fixes.

Wireless connectivity

Bluetooth

Works. Has no known? issues. Also see #Bluetooth Audio.

GPS

Broken. See Broadcom BCM4751 GPS.

NFC

Broken? neard is not packaged in armv7 at the moment. Needs a supported battery. See NFC for instructions. Also see #Battery variants.

WiFi

  • 2.4 GHz - Works.
  • 5 GHz - Works.
  • AP (WAP/hotspot) mode - Untested?
Note Note: AP mode does not work with gnome-settings. Needs testing.

WiFi troubleshooting

As of pmaports!2556, WiFi should "just work" (on mainline).

If WiFi networks show up but you can't connect to them, you can try using the nvram for samsung-m3/i9305. This is a hack and not necessarily endorsed, but at least one user has reported that their samsung-m0/i9300 needs this for WiFi to work. We would like to handle this better, but currently we don't have any way of doing this.

To switch to the nvram meant for samsung-m3, run this command:

$ cd /lib/firmware/brcm
$ sudo mv brcmfmac4334-sdio.samsung,i9300.txt brcmfmac4334-sdio.samsung,i9300.txt.bak
$ sudo ln -sf brcmfmac4334-sdio.samsung,i9305.txt brcmfmac4334-sdio.samsung,i9300.txt

If it still refuses to connect, you might want to try replacing the contents of /lib/firmware/bcrm/brcmfmac4334-sdio.samsung,i9300.txt with the nvram from LineageOS. Apparently this is necessary on some British i9300 models.

Related issue: pmaports#1571

Miscellaneous mainline kernel information

The kernel package for this device in postmarketOS is linux-postmarketos-exynos4. The patches can be found in the exynos4-mainline/linux repository on GitLab.

A large part of the mainlining process was done by forkbomb; see Midas on Mainline.

The Replicant project also provides good mainline support for the Galaxy S III; they have expressed intent to collaborate with us. Their support matrix can be found on their wiki. Relevant links:

Upstream DTS: exynos4412-i9305.dts

Modem support

Replicant supports the modem on mainline Linux, and they're working on getting the i9300 modem working with a mainline kernel in a way that pmOS can also utilize: https://redmine.replicant.us/issues/1954 https://git.replicant.us/contrib/GNUtoo/kernel_replicant_linux/log/?h=replicant-11-i9300-modem

The Qualcomm Gobi MDM9615 Modem seems to have mainline kernel support as well: https://redmine.replicant.us/projects/replicant/wiki/GalaxyS3I9305#Hardware-table

LTE modem support with the mainline kernel on Replicant is being done here: https://redmine.replicant.us/issues/2206 The Note II discussed here has the same or very similar modem as the i9305.

Warnings and considerations

Power

It used to be that the battery percentage wasn't properly monitored and would get stuck at a set percentage at boot. While this was the case, the phone would not shut down when battery levels went too low, which could make the phone behave strangely on significantly worn batteries (in the ballpark of 50% wear). There are theories that this may have caused hardware failure for one user, but this is not proven. Battery level reporting has since been fixed, but it has not been extensively tested for reliability, so we recommend that you try to not let your phone's battery percentage fall too low. It should shut down on its own before anything adverse can happen, however.

See pmaports#1115 for more information.

eMMC firmware bugs

Replicant has a good article about this: https://redmine.replicant.us/projects/replicant/wiki/EMMCFirmwareBugs

Heimdall does not consider partition sizes when flashing

See Heimdall#494

Useful software

Bootloader builds

Recovery builds

Firmware builds

Firmware tools

  • Latest version of samloader Tool for downloading firmware from official Samsung update servers. Written in python. Consider packaging it.

Packages

Device support

Links

Source code

Instructions

Wiki pages

Development