Samsung Galaxy SIII LTE (samsung-i9305)
- 1 Contributors
- 2 Basic info
- 3 Users owning this device
- 4 How to enter flash mode
- 5 Installation
- 6 Installing with downstream kernel
- 7 WiFi
- 8 Mainline Kernel
- 9 See also
So far, what works for samsung-i9305 (Galaxy SIII LTE version) also works for the samsung-i9300 (Galaxy SIII 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 SIII models should be confused with the North American SIII models, which require OS builds.)
Code name is MIDAS. Search for midas-mainline to find more info.
Users owning this device
- Arthurlutz (Notes: /e/ 0.11 (android 7 pie))
- Cick0 (Notes: GT-i9300)
- DALEK 77 (Notes: i9300)
- EnderNightLord (Notes: i9300 1gb ram)
- Illen (Notes: is a GT-i9300. Battery is broken, works on charger. Runs mainline U-Boot/Linux.)
- KuroeHanako (Notes: SHV-E210S, Pebble Blue)
- Mossroy (Notes: sometimes used : It can not be flashed easily. Seems to have a hardware issue with current consumption, even with a new battery)
- Neilvandyke (Notes: has GT-i9300)
- Newbyte (Notes: i9300, revived from the dead with a new battery)
- Ungeskriptet (Notes: GT-i9300, Pebble Blue)
How to enter flash mode
- Hold power + Home + volume down
- When prompted, release all buttons and press volume up
Set phone to ODIN mode
1. Turn off phone 2. Connect USB cable 3. Hold VOLUME_DOWN + HOME + POWER until you get Warning!! screen 4. Push VOLUME_UP to continue to ODIN mode screen
# Ready the build pmbootstrap init # (weston or xfce4 should do) # Install rootfs to Micro SD Card pmbootstrap install --sdcard=/dev/mmcblk0/1/2/3 # (will depend on where your Micro SD Card is mounted) # Put the i9305 / i9300 into odin mode with the steps above and flash the kernel (to boot from the Micro SD Card) pmbootstrap flasher flash_kernel # (in odin mode) # and it should reboot automatically
Installing with downstream kernel
#FIRST PMBOOTSTRAP INSTALL mkdir ~/code cd ~/code git clone https://gitlab.com/postmarketOS/pmbootstrap.git #CONFIG PMBOOTSTRAP alias pmbootstrap=~/code/pmbootstrap/pmbootstrap.py pmbootstrap init #work path default #samsung #i9305 #n #wathever #weston #n #none #y #samsung-i9305 #y #FOR DEBUGGING (NOT REQUIRED) pmbootstrap initfs hook_add debug-shell #Check log with 'tail -f ~/.local/var/pmbootstrap/log.txt' #CREATE RECOVERY ZIP (for flashing with TWRP) pmbootstrap install --android-recovery-zip #COPY ON SDCARD cp ~/.local/var/pmbootstrap/chroot_buildroot_armhf/var/lib/postmarketos-android-recovery-installer/pmos-samsung-i9305.zip /media/computer/sdcard/ #Insert sdcard in phone #Reboot on recovery with up+home+power #Install from zip #Reboot #IF BOOT STANDBY (DEBUG) #Connect with USB cable telnet 172.16.42.1 pmos_continue_boot
To get the WiFi working, you'll need to modify the wpa_supplicant configuration. If this is not done, wpa_supplicant starts with -ip2p0 which is not supported on our device.
$ echo 'wpa_supplicant_args="-Dwext"' | sudo tee /etc/conf.d/wpa_supplicant
You can use either NetworkManager or networking and wpa_supplicant. NetworkManager is recommend in most cases as it handles reconnection.
Ensure the networkmanger service is running
$ sudo rc-status | grep 'networkmanager'
if it not visible, try to start the service:
$ sudo rc-service networkmanager start
Search for available WiFi networks and connect to network
$ sudo nmcli device wifi list ifname wlan0 $ sudo nmcli --ask dev wifi connect SSID
Reboot and you should be connected.
Networking and wpa_supplicant
You will need to manually configure the interfaces by creating
$ sudo vi /etc/network/interfaces
auto lo iface lo inet loopback auto wlan0 iface wlan0 inet dhcp
Save changes and add networking to start with system
$ sudo rc-update add networking
Add WiFi network information
$ wpa_passphrase YOUR_SSID YOUR_PASSPHRASE | sudo tee /etc/wpa_supplicant/wpa_supplicant.conf
$ sudo rc-service wpa_supplicant restart $ sudo rc-service networking start
WiFi on mainline
To get WiFi working on the mainline kernel install
nvram_net.txt like this:
# cp /lib/firmware/postmarketos/nvram_net.txt /lib/firmware/brcm/brcmfmac4334-sdio.txt
Afterwards reboot the device and connect to a WiFi network with NetworkManager or wpa_supplicant.
I will preface this with the following reiteration of the warning at the top: The mainline kernel for this device has been reported to cause hardware failure. Reported failures include screen/panel damage and the device only turning on if a charger is plugged in (and also this). Be careful when using the mainline kernel with this device, and don't use it unless you can risk effectively bricking your i9300/i9305.
The pmports repo for this device's linux-postmarketos-exynos4 mainline kernel is here.
@pmOS_devices announcement from Nov 11, 2020: https://twitter.com/pmOS_devices/status/1326525105162293249
Upstream dts: exynos4412-i9305.dts
Upstream kernel support matrix: Midas on Mainline.
Note that a patch is required to make it work with the stock samsung bootloader and this is included in the pmports mainline repo above.
forkbomb from LineageOS got mainline u-boot running on this device and wrote about it in this blog post: 
Replicant has this device booting with mainline Linux and almost mainline U-Boot with only the need for a few patches on top and would like to collaborate with us 
The Qualcomm Gobi MDM9615 Modem seems to have mainline kernel support as well: 
The Replicant project is 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
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.
Replicant currently supports this device in 6.0 and is doing a lot of research in order to get it running with a mainline kernel with a mainline bootloader for Replicant 11. More bootloader research is here.
xboot might be a completely free bootloader option. Looks to have zero proprietary blobs.
Install with mainline kernel (WIP, not functional yet)
Note: Is now "linux-postmarketos-exynos4" .
#Export image files in ~/.local/var/pmbootstrap/chroot_rootfs_samsung-i9305/boot/ pmbootstrap export #5,3M -rw-r--r-- 1 root root 5,3M déc. 22 20:31 boot.img-samsung-i9305 (initramfs + vmlinuz) #1,3M -rw-r--r-- 1 root root 1,3M déc. 22 20:31 initramfs-samsung-i9305 #6,1M -rw-r--r-- 1 root root 6,1M déc. 22 20:31 initramfs-samsung-i9305-extra #4,1M -rw-r--r-- 1 root root 4,1M nov. 5 17:30 vmlinuz-samsung-i9305 #Get linux-next cd ~/code # Case 1 : first checkout git clone https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git linux cd linux/ git fetch origin git reset --hard origin/master # Case 2 : update cd linux/ git checkout master git pull #Prepare compile with i9305 defconfig in ~/code/linux/arch/arm/configs source ~/code/pmbootstrap/helpers/envkernel.sh make exynos_defconfig #DTS : Note that ~/code/linux/arch/arm/boot/dts/exynos4412-i9305.dts already exists and should work #Makefile in ~/code/linux/arch/arm/boot/dts/ already contains this DTS #Kernel compilation make -j5 #Prepare shell <code> pmbootstrap chroot -- apk add abootimg android-tools mkbootimg dtbtool findutils export DEVICE="$(pmbootstrap config device)" export WORK="$(pmbootstrap config work)" export TEMP="$WORK/chroot_native/tmp/mainline/" mkdir -p "$TEMP" #Patch boot image cd ~/code/linux/.output/arch/arm/boot cat zImage dts/exynos4412-i9305.dtb > "$TEMP"/zImage-dtb cp "/tmp/postmarketOS-export/boot.img-$DEVICE" "$TEMP/boot.img" pmbootstrap chroot abootimg -u /tmp/mainline/boot.img -k /tmp/mainline/zImage-dtb -c bootsize=8955904 exit #Flash with Heimdall - WARNING - NOT FUNCTIONNAL YET # enter download mode with down+home+power # Connect usb # click 'up' heimdall detect heimdall flash --BOOT ~/.local/var/pmbootstrap/chroot_native/tmp/mainline/boot.img