Samsung Galaxy S III (samsung-m0)
|
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 |
|
| Kernel package |
|
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
|
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
|
| This device is based on the Exynos 4412. See the SoC page for common tips, guides and troubleshooting steps |
Contributors
- Thiagaopluplus
- tyxieblub
- Newbyte
- Grimler
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
- AmateurPenguin (Notes: Marble white and pebble blue, 1 dead 1 living, cover is torn up,1 original battery)
- Arthurlutz (Notes: /e/ 0.11 (android 7 pie) (FIXME: m0 or m3))
- Bastindo (Notes: 2x black, 2x blue)
- ByteXD23! (Notes: Has battery, Not responsive, perhaps dead EMMC?)
- ByteXD23! (Notes: No battery, Not responsive, perhaps dead EMMC?)
- Cick0
- DALEK 77 (Notes: 16GB, Pebble Blue)
- Demodé
- Dolphinana (Notes: pmOS with non-free wifi firmware)
- Eldyj (Notes: I9300, Chinese battery, running PMOS edge with gnome-mobile, no issues so far)
- Eloy
- EnderNightLord (Notes: 1 GB RAM)
- ExtensionDriver (Notes: m0, white, worn battery cover)
- GeraltvonNVIDIA (Notes: Running phosh (community))
- Grimler
- Illen (Notes: Battery is broken, works on charger. Runs mainline U-Boot/Linux.)
- Jack Kekzoz
- Jan64X
- LanaX64
- Lunaoverflow (Notes: Bricked)
- Lxpanel (Notes: battery broken)
- Madhaxbro (Notes: GT-I9300, runs pmOS edge + TWRP. Ready for testing. Large battery, around 3Ah. Classic design. Works well as a portable audio player. Plasma can fill up memory and slow the UI to a crawl if you push it.)
- Malo1301 (Notes: Broken glass and damaged power button. GT-i9300 model. Currently running postmarketOS.)
- Missy
- Neilvandyke
- Nergzd723 (Notes: Power button broken, otherwise in perfect condition :D)
- Newbyte
- Nieldv
- Prowindows62 (Notes: Dualboot with postmarketOS and stock Android 4.3)
- R0rt1z2 (Notes: Bricked with u-boot, needs UART)
- Rebel1725
- Roboe (Notes: (borrowed) GT-I9300 16GB; unreliable USB; running pmOS stable)
- Roboe (Notes: (borrowed) GT-I9300_TIZEN (Tizen RD-PQ); HW rev. 0xC (M0_REAL_REV1.1_2nd_120413); PIT Version 08; running Tizen 2.2.0 with U-Boot 2011.03 (Jul 16 2013))
- Russanandres (Notes: Cyanogenmod 13)
- Sputnik1973 (Notes: Broken screen and bad battery.)
- Sputnik1973 (Notes: Mint condition, no issues (with the original dock that came with it.))
- Thenightterrorx (Notes: haven't tried flashing yet)
- Thiagaoplusplus
- TryzenAlpensky (Notes: Pebble Blue - 16GB)
- UltrasonicMadness (Notes: GT-I9300)
- Ungeskriptet (Notes: 2x White and 1x Pebble Blue, all GT-i9300. One with U-Boot :D)
- User0 (Notes: running postmarketOS)
- Vincele (Notes: PMOS, problem see (1))
- Vipaol (Notes: pmos)
- Vipaol (Notes: stock)
- Vladuwka12 (Notes: Running stock)
- WonderfulShrineMaidenOfParadise
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
- forkbomb got mainline u-boot running on this device and wrote about it in this blog post: https://blog.forkwhiletrue.me/posts/an-almost-fully-libre-galaxy-s3/
- xboot might be a completely free bootloader option. Looks to have zero proprietary blobs.
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 ++, or (with USB debugging enabled) - execute $ adb reboot recovery on a connected USB host
DFU (Odin/Download) mode - hold ++, 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: 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: 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: 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!
| The camera subsystem requires a lot of work. Needs more investigation. |
Flash LED
Works. Unknown? Needs more research.
Image sensors
Needs more research.
| 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

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: 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
- Latest official TWRP build Recommended.
- TWRP with eMMC boot partitions patch For flashing bootloaders. Be careful!
Firmware builds
- Latest official firmware builds on SamFW (Ads!) Downloads from official Samsung update servers. Has CloudFlare bot protection. (May not work!)
Firmware tools
- Latest version of samloader Tool for downloading firmware from official Samsung update servers. Written in python. Consider packaging it.
Packages
android-tools Used for Fastboot, ADB, sparse images (simg), and more. From SDK.
heimdall Tool for dealing with Samsung's Odin protocol. Used to install firmware.
exynos-dtbtool Tool for digesting Samsung's custom Exynos Device Tree (dtb) format.
postmarketos-base-ui-audio-pulseaudio Recommended way to set up #Audio.
postmarketos-base-ui-audio-pipewire This can cause trouble. Use the former instead!
pulseaudio Required if you want Audio.
pipewire Lists only a dummy output.
Device support
device-samsung-m0 Deviceinfo.
linux-postmarketos-exynos4 Mainline kernel fork. Well supported. DT.
Links
Source code
Instructions
Wiki pages
Development
- pmaports!2556 Rename from i9300 to m0