Jump to content

Samsung Galaxy Tab 2 7.0 (samsung-espresso7): Difference between revisions

From postmarketOS Wiki
Nieldv (talk | contribs)
Halamix2 (talk | contribs)
mNo edit summary
 
(138 intermediate revisions by 19 users not shown)
Line 2: Line 2:
| manufacturer = Samsung
| manufacturer = Samsung
| name = Galaxy Tab 2 7.0
| name = Galaxy Tab 2 7.0
| codename = samsung-espresso3g
| codename = samsung-espresso7
| image = File:Tab2_7.0.jpg
| image = File:Tab2_7.0.jpg
| imagecaption = Samsung Galaxy Tab 2 7.0
| imagecaption = Samsung Galaxy Tab 2 7.0
Line 9: Line 9:
| originalsoftware = Android
| originalsoftware = Android
| chipset = TI OMAP 4430
| chipset = TI OMAP 4430
| cpu = Dual-core 1.0 GHz
| cpu = Dual-core 1.0 GHz Cortex-A9
| gpu = PowerVR SGX540
| gpu = PowerVR SGX540
| storage = 8/16/32 GB
| storage = 8/16/32 GB
Line 15: Line 15:
| memory = 1 GB
| memory = 1 GB
| architecture = armv7
| architecture = armv7
| type = tablet
| status_usbnet = Y
| status_usbnet = Y
| status_flashing = Y
| status_flashing = Y
Line 24: Line 25:
| status_mainline = Y
| status_mainline = Y
| status_battery = Y
| status_battery = Y
| status_3d = P
| status_3d = N
| status_accel = Y
| status_accel = Y
| status_audio = N
| status_audio = N
| status_bluetooth = Y
| status_bluetooth = Y
| status_camera = N
| status_camera = N
| status_gps =
| status_gps = N
| status_mobiledata = -
| status_mobiledata = -
| status_sms = -
| status_sms = -
Line 36: Line 37:
| status = boots
| status = boots
| booting = yes
| booting = yes
| pmoskernel = 5.15.2
| pmoskernel = 6.1
| whet_dhry = 442.9
| whet_dhry = 442.9
| status_otg = N
| status_otg = N
}}
}}{{Based on SoC|Texas_Instruments_OMAP_4_(OMAP44xx)|TI OMAP 4430}}


== Contributors ==
== Contributors ==
* Mighty
* Mighty
* AAT596 (testing in espressowifi variant)
* AAT596 (testing in espressowifi variant)
* lm2 (see it's notes in the user page)


== Users owning this device ==
== Users owning this device ==
* Nielsdv (Espressowifi 8GB)
{{#cargo_query:
 
tables=DeviceOwners
== How to enter flash mode ==
|fields=CONCAT( '[[', _pageName, '|',_pageTitle,']]' )=User,Notes
Press '''Power + Volume Up''' to enter download/odin mode.
|format=ul
Press '''Power + Volume Down''' to enter recovery.
|columns=2
 
|where=Device="Samsung_Galaxy_Tab_2_7.0\"_(samsung-espresso3g)"
== What works (downstream) ==
|limit=9999
* Display
|more results text=
* Touch
|default=
* Mate
}}
* WiFi (using nmtui in terminal)
* Battery


== Hardware status (mainline) ==
== Hardware status (mainline) ==
Line 94: Line 94:
|-
|-
| Y
| Y
| GPIO keys
| Buttons
|There are 2 keys on GPIO: Volume up, Volume down.
|There are 2 keys on GPIO: Volume up, Volume down. Power button works as well.
|-
|-
| P
| P
Line 121: Line 121:
|YAS530
|YAS530
|-
|-
| N
| Y
|Proximity and Light
|Proximity and Light
|The P3100 variant has GP2A002, P3110 variant has AL3201.
|The P3100 variant has GP2A002, P3110 variant has AL3201.
Line 135: Line 135:
| N
| N
|Modem
|Modem
| Only in espresso3g (P3100 and P5100) - XMX6262
| Only in espresso3g (P3100 and P5100) - XMM6262
|-
|-
|}
|}


== Installation ==
== Status ==
 
=== Supported variants ===
* samsung-espressowifi, which is almost identically similar to samsung-espresso3g, but with the exception that it has no modem.
 
=== Display ===
OMAPDRM works fine.
 
Display seems to be running at 45Hz due to the clock speed for 60Hz not working properly.
 
=== Battery ===
Fuel gauge works fine. The charger driver is WIP, if connected to usb during boot, then only it charges.
 
=== Camera ===
OMAP4 has different subsystem (Ducati) for camera which is non free. Probably will never work on mainline.
 
=== 3D GPU Acceleration ===
3D acceleration works fine with out-of-tree code and blobs. As a result, these are kept outside of pmaports, in the [https://gitlab.com/pvrports/ PVRports repository] on Gitlab.
 
If you use it, please do not report issues related to PowerVR on the postmarketOS issue tracker. Open/report the issue in the pvrports issue tracker instead. If discussing it on Matrix/IRC, we recommend using the offtopic room(s).
 
SGX540 blobs also seem to be missing some EGL configs, so UIs like plasma-mobile do not work.
Video decoding does not work as it is done by Ducati subsystem.
 
=== Phosh ===
This is no more needed, as you can unlock it with scale as 1, kept for future reference.
 
By default phosh has a scaling 1, this makes us unable to unlock the screen. So we need to set it to 0.75 (https://wiki.postmarketos.org/wiki/Phosh#Manual_Scaling) by adding
 
<pre>
[output:LVDS-1]
 
scale = 0.75
</pre>
in /usr/share/phosh/phoc.ini. <br/>
You can revert it back to 1 to get better performance.<br/>
wlr-randr can also be used.
 
== Known issues ==
=== WiFi not working after reboot ===
workaround : always boot the device to TWRP first, then from there, reboot to system.
 
See {{issue|1211|pmaports}}
 
Fixes with patch in kernel: https://github.com/hansemro/kc1-linux/blob/v5.16.x/patches/0006-Add-clk32kg-to-twl6030.patch
 
=== Graphic desktop not launching ===
For Phosh (and maybe other wayland desktops?): create a <code>.sh</code> file in <code>/etc/tinydm.d/env-wayland.d/</code> and add the following text <code>export MESA_LOADER_DRIVER_OVERRIDE=pvr</code>. See {{MR|2790|pmaports}}
 
=== shutdown ===
always shutdown the device from the Linux interface,
otherwise (buttons or TWRP) it will immediatly reboot to system.
 
if you want to charge the device during it stays off, plug it before shutdown from the Linux interface, because plugging the USB charger make the device booting.
 
=== Never let the battery fall down to 0% ===
because of the partialy functional charging feature
 
otherwise even plugged to an USB power supply, the device will enter in an endless bootloop.
and you will have to open the device, disconnect the motherboard from the charge module to wait some times, letting the battery charging in peace
 
== Non-free unofficial GPU support ==
 
As said in the Status section, GPU support can be enabled by copying additional PostmarketOS pmaports in your work directory, called pvrports.
 
pvrports are basically non-free PowerVR blobs and quirks with Phosh and Plasma Mobile, and not specific for this device.
This means that any device that has a PowerVR SGX Series 5 GPU could be enabled by adding this repository.
 
* [https://gitlab.com/pvrports/pvrports See here]
 
 
== Installation (first edition) ==
 
 
follow the general pmbootstrap instructions to build your own.
 
Prerequisites: TWRP installed on the Tab, see the LineageOS wiki for instructions: [https://wiki.lineageos.org/devices/espressowifi/install espressowifi], use the espresso3g TWRP image if you have the espresso3g tablet.
Prerequisites: TWRP installed on the Tab, see the LineageOS wiki for instructions: [https://wiki.lineageos.org/devices/espressowifi/install espressowifi], use the espresso3g TWRP image if you have the espresso3g tablet.


Make sure to backup your data and store this somewhere safe if you care about the stock OS and/or your files!
Make sure to backup your data and store this somewhere safe if you care about the stock OS and/or your files!


Run pmbootstrap init and configure your installation, if you want to use Phosh/Sway, see [[#wlroots]] first.
Run pmbootstrap init and configure your installation.
Flashing the image to the device is in 2 parts; the rootfs and the kernel.  
Flashing the image to the device is in 2 parts; the rootfs and the kernel. If this installation process does not go well for you, please try the alternative installation instead.
=== rootfs ===
====== rootfs ======
There are 2 ways to go about installing the rootfs, depending on where you want to install it to.  
There are 2 ways to go about installing the rootfs, depending on where you want to install it to.  
* For an sdcard use: <code>pmbootstrap install --sdcard=/dev/sdX</code>
* For an sdcard use:  
<code>pmbootstrap install --sdcard=/dev/sdX</code>
 
Make sure to specify the mountpoint of the sdcard plugged into your computer.
Make sure to specify the mountpoint of the sdcard plugged into your computer.
* For installing on the internal filesystem use:
 
* For installing on the internal filesystem use TWRP
<code>
<code>
pmbootstrap install --android-recovery-zip
pmbootstrap install --android-recovery-zip
   
   
pmbootstrap flasher --method=adb sideload
pmbootstrap flasher --method=adb sideload
</code>  
</code>
 
By default this will install on the (fairly limited) 1GB /system partition.
 
To specify a different partition (for example the 8/16 GB /data partition), add <code>--recovery-install-partition=data</code> to the first line.
 
* For installing on the internal /data partition use:
 
<code>
pmbootstrap install --android-recovery-zip --recovery-install-partition=data
</code>
 


By default this will install on the (fairly limited) 1GB /system partition. To specify a different partion (for example the 8/16 GB data partion), add <code>--recovery-install-partition=data</code> to the first line.
When asked, boot your device into TWRP, wipe cache and your partion. Then go into advanced and start sideload mode, wait for this to finish.
When asked, boot your device into TWRP, wipe cache and your partion. Then go into advanced and start sideload mode, wait for this to finish.
=== kernel ===
 
====== kernel ======
After the rootfs is installed, insert the SDcard (if you used this) and boot the device into download mode. run
After the rootfs is installed, insert the SDcard (if you used this) and boot the device into download mode. run
<code> pmbootstrap flasher flash_kernel</code>
<code> pmbootstrap flasher flash_kernel</code>
This will flash the kernel to the device and reboot it. If you land in TWRP, just go to reboot and click system. It might complain about missing an OS, but do not worry! You should see some tuxes and be dropped in the OS!
This will flash the kernel to the device and reboot it. If you land in TWRP, just go to reboot and click system. It might complain about missing an OS, but do not worry! You should see some tuxes and be dropped in the OS!
=== wlroots ===
<hr/>
When building with pmbootstrap and using an ui that requires wlroots (that is Phosh/Sway) you will need to build a patched version of wlroots from here https://gitlab.com/antoni.aloytorrens/p-wlroots/-/tree/master/apkbuild
=== Alternative install ===
In your PC, type these commands to generate and export the flashable installation (defaults flashing to /system partition), please see [[Installation from recovery mode]] for more details:<br/>
<code>
pmbootstrap install --android-recovery-zip
 
pmbootstrap export
 
adb push /tmp/postmarketOS-export/*.zip /sdcard/
</code>
 
<hr/>
 
== How to enter flash mode ==
* '''Recovery mode:''' Power on the device by holding {{button|Volume Up}} and {{button|Power}}
* '''Download mode:''' Power on the device by holding {{button|Volume Down}} and {{button|Power}}
** If you are unable to enter download mode, try putting rubber bands around {{button|Volume Down}} and {{button|Power}} and leaving the tablet on the charger until it boots into download mode
 
== the 6 ways to build pmos for samsung-espresso7 and flash it to the device (tested by [[User:Piero-e]]) ==
 
 
=== Preparation ===
 
==== you will need to [https://wiki.postmarketos.org/wiki/Pmbootstrap#Installation install pmbootstrap] on your Linux Computer ====
 
* From package manager
Use the package manager of your distribution to install pmbootstrap:
 
<syntaxhighlight lang="shell-session">
Alpine Linux, postmarketOS:
# apk add pmbootstrap
Arch Linux:
# pacman -S pmbootstrap
Debian:
# apt install pmbootstrap
Fedora:
# dnf install pmbootstrap
Void Linux:
# xbps-install -S pmbootstrap
Gentoo:
# emerge -va app-eselect/eselect-repository
# eselect repository enable guru
# emaint -r guru sync
# emerge -va dev-util/pmbootstrap
Nix/NixOS
# nix run nixpkgs#pmbootstrap
</syntaxhighlight>
 
{{note|Fixed release distributions, i.e. Debian, may freeze pmbootstrap version. Consider installing it from git if you want the latest features and bug fixes. }}
 
 
* From git
Follow this section if your Linux distribution doesn't have pmbootstrap packaged, or its version of pmbootstrap is too old, or you would like to change the code. Run the following to clone and install pmbootstrap from git.
 
<syntaxhighlight lang="shell-session">
$ git clone https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git
$ cd pmbootstrap
$ mkdir -p ~/.local/bin
$ ln -s "$PWD/pmbootstrap.py" ~/.local/bin/pmbootstrap
$ pmbootstrap --version
2.2.1
</syntaxhighlight>
 
If you get <code>ModuleNotFoundError: No module named 'tomllib'</code>, then you are running python 3 <= 3.10 and need to install the python3 library tomli with your linux distribution's package manager. The package is probably called <code>python3-tomli</code>.
 
If this returns something like <code>pmbootstrap: command not found</code> instead of a version number, ensure that <code>~/.local/bin</code> is in your <code>PATH</code>. For example by adding the following to your <code>~/.profile</code> (zsh: <code>~/.zprofile</code>) followed by <code>source ~/.profile</code> to update your environment
<syntaxhighlight lang="shell">
PATH="$HOME/.local/bin:$PATH"
</syntaxhighlight>
 
If you ran the <code>source</code> command with the file you modified it should work. Otherwise, try a new terminal window.
 
==== then open a new terminal, or restart your session or restart your computer... ====
 
and run :
<syntaxhighlight lang="shell-session">
$ pmbootstrap --version
it must return something like
1.52.1
</syntaxhighlight>
 
Follow the [[pmbootstrap]] article to build your own image
 
 
==== you may need to : ====
 
* Install <code>adb</code> on your host Linux distribution (usually in an <code>android-tools-adb</code> package that you can install with your distribution's package manager),
* Install <code>heimdall</code> on your host Linux distribution (usually in a  <code>heimdall-flash</code> package that you can install with your distribution's package manager), or install odin if using windows
 
in a way to
* install TWRP on the device (you can download [https://androidfilehost.com/?w=files&flid=48848&sort_by=date&sort_dir=DESC Galaxy Tab 2 common TWRP] by Android-Andi)
 
 
==== each days before building ====
 
Run
<syntaxhighlight lang="shell-session">
$ pmbootstrap pull
$ pmbootstrap status
</syntaxhighlight>
.
 
=== 1. The pure pmbootstrap classic way (partial) ===
 
.
this will create
 
"/home/username/.local/var/pmbootstrap/chroot_native/home/pmos/rootfs/samsung-espresso10.img"
 
and
 
"/home/username/.local/var/pmbootstrap/chroot_rootfs_samsung-espresso10/boot/boot.img"
 
then push it to the device
 
==== generate some partitions images for the device (works)  ====
 
run :
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install
</syntaxhighlight>
 
''' if you want to enable Full Disk Encryption '''
 
add the " --fde" suffix to the command :
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install --fde
</syntaxhighlight>
 
==== flash pmos.img to the /system partition (broken ?) ====
 
{{note| broken : heimdall ERROR: FACTORYFS partition is too small for given file. Use --skip-size-check to flash anyways.}}
{{note| Comment : adding --skip-size-check dont work }}
 
This action wraps various flash programs (e.g. fastboot and heimdall) with a common syntax, and automatically fills out the paths to the files previously generated during <code>pmbootstrap install</code>.
 
Boot your phone into the downloading mode (also called Odin mode), typically by holding the special button combination
 
{{Button|Power}} + {{Button|Volume Down}} while booting up then {{Button|Volume Up}}
 
and run :
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap flasher flash_rootfs
</syntaxhighlight>
 
By default, this will target the /FACTORYFS partition of your Galaxy Tab 2.
 
'''Beware that this will overwrite the existing installation and data on your phone!'''
 
'''or'''
 
==== if you prefer, flash pmos.img to the /data partition instead (broken ?) ====
{{note| broken : heimdall ERROR: Uploading DATAFS at 1% Failed to confirm end of file transfer sequence!}}
 
because the default partition (typically "/system", here /FACTORYFS) is became too small for the generated image, it is possible to flash to another partition. Just be sure to erase any previous installations of postmarketOS in other partitions, because the init script will start with the first one that it encounters. (To delete a previous version simply install the known working OS, e.g. Android, on it, or wipe or format the partitions using TWRP if installed). And if you really know what you are doing, you might consider using <code>dd</code> command). Using multiple partitions with LVM is planned ({{issue|60|pmbootstrap|postmarketOS}}).
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap flasher flash_rootfs --partition DATAFS
</syntaxhighlight>
 
this will target the /DATAFS partition of your Galaxy Tab 2.
 
'''Beware that this will overwrite the existing installation and data on your phone!'''
 
==== flash the boot.img to the /boot partition ====
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap flasher flash_kernel
</syntaxhighlight>
 
reboot the device and enjoy...
 
.
 
=== 2. The alternative Heimdall method (partial) ===
.
==== generate some partitions images for the device (works)  ====
 
run :
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install
</syntaxhighlight>
 
''' if you want to enable Full Disk Encryption '''
 
add the " --fde" suffix to the command :
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install --fde
</syntaxhighlight>
 
==== flash pmos.img to the /system partition (broken ?) ====
{{note| broken : heimdall ERROR: Uploading FACTORYFS at 1% Failed to confirm end of file transfer sequence!}}
 
$ heimdall flash --FACTORYFS samsung-espresso10.img
 
'''or'''
 
==== flash pmos.img to the /data partition (broken ?) ====
{{note| broken : heimdall ERROR: Uploading DATAFS at 1% Failed to confirm end of file transfer sequence!}}
 
$ heimdall flash --DATAFS samsung-espresso10.img
 
==== flash the boot.img to the /boot partition (works) ====
 
$ heimdall flash --KERNEL boot.img
 
.
 
=== 3. The alternative Odin method (not documented) ===
.
==== generate some partitions images for the device (works)  ====
 
run :
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install
</syntaxhighlight>
 
''' if you want to enable Full Disk Encryption '''
 
add the " --fde" suffix to the command :
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install --fde
</syntaxhighlight>
 
==== create some .TAR files from the generated partitions images ====
 
==== flash a pmos.tar to the AP section (not tested) ====
 
==== flash a boot.tar to the AP section (not tested) ====
 
or better
 
==== create a .TAR files including the generated partitions images ====
 
==== flash the pmos.tar to the AP section (not tested) ====
 
.
 
=== 4. The alternative "dd" method (not documented) (should work) ===
 
.
==== generate some partitions images for the device (works)  ====
 
run :
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install
</syntaxhighlight>
 
''' if you want to enable Full Disk Encryption '''
 
add the " --fde" suffix to the command :
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install --fde
</syntaxhighlight>
 
 
==== flash the pmos.img to the device (not tested) ====
* to the /system partition (not tested)
or
* to the /userdata partition (not tested)
 
==== flash the boot.img to the /boot partition (not tested) ====
 
.
 
=== 5. The recommanded TWRP method (works) ===
 
this will create
 
"/home/user/.local/var/pmbootstrap/chroot_buildroot_armv7/var/lib/postmarketos-android-recovery-installer/pmos-samsung-espresso10.zip"
 
 
==== generate a recovery flashable .ZIP targeting /system partition (works) ====
 
 
Note that the /system-partition is likely too small (1,4 GB), which will -for example- prevent the lightdm-windowmanager from starting up. The recovery-zip should be built to target the data partition!
 
 
according to [https://wiki.postmarketos.org/wiki/Installation_from_recovery_mode Installation from recovery mode] page.
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install --android-recovery-zip
</syntaxhighlight>
 
By default, this will target the /FACTORYFS partition of your Galaxy Tab 2.
 
'''If your want Full Disk Encryption add the <code>--fde</code> argument.'''
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install --android-recovery-zip --fde
</syntaxhighlight>
 
'''or'''
 
==== generate a recovery flashable .ZIP targeting /data partition (works) ====
 
 
Note that the /system-partition is likely too small (1,4 GB), which will -for example- prevent the lightdm-windowmanager from starting up. The recovery-zip should be built to target the data partition!
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install --android-recovery-zip --recovery-install-partition=data
</syntaxhighlight>
 
this will target the /DATAFS partition of your Galaxy Tab 2.
 
 
==== sideload the pmos.zip using pmbootstrap + TWRP (broken ?) ====
{{note| broken : (native) % adb -P 5038 wait-for-usb-sideload}}
 
 
This allows pushing the zip file on the fly directly from your computer.
* Boot the device into TWRP mode
* Unmount the partitions (Click on "Mount", then unselect all checkboxes)
* Click on "Advanced / ADB Sideload", then "Swipe to start sideload"
* Connect your phone to your PC
* Start the sideloading process from your PC:
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap flasher --method=adb sideload
</syntaxhighlight>
 
reboot and enjoy
 
'''or'''
 
==== sideload the pmos.zip using ADB + TWRP (works) ====
 
This allows pushing the zip file on the fly directly from your computer. 
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap export
[07:48:04] NOTE: To export the rootfs image, run 'pmbootstrap install' first (without the 'sdcard' parameter).
[07:48:07] Export symlinks to: /tmp/postmarketOS-export
[07:48:07]  * initramfs-samsung-espresso10 (Initramfs)
[07:48:07]  * boot.img-samsung-espresso10 (TWRP flashable boot.img file, contains initramfs and kernel)
[07:48:07]  * vmlinuz-samsung-espresso10 (Linux kernel)
[07:48:07]  * pmos-samsung-espresso10.zip (Android recovery flashable zip)
[07:48:07] NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
[07:48:07] Done
</syntaxhighlight>
 
* Boot device into TWRP mode
* Unmount the partitions (Click on "Mount, then unselect all checkboxes)
* Click on "Advanced / ADB Sideload", then "Swipe to start sideload"
* Connect your phone to your PC
* Start the sideloading process from your PC:
 
 
run the following commands. The special <code>cd</code> is necessary, because <code>adb</code> can't resolve the symlink on its own. :
 
<syntaxhighlight lang="shell-session">
$ cd $(dirname $(readlink /tmp/postmarketOS-export/pmos-samsung-espresso10.zip))
$ adb sideload pmos-samsung-espresso10.zip
loading: 'pmos-samsung-espresso10.zip'...
connecting...
Total xfer: 1.08x
</syntaxhighlight>
 
reboot and enjoy...
 
'''or'''
 
==== installing the pmos.zip using TWRP via a SDcard (works) ====
 
Instead of sideloading, you can run
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap export
[07:48:04] NOTE: To export the rootfs image, run 'pmbootstrap install' first (without the 'sdcard' parameter).
[07:48:07] Export symlinks to: /tmp/postmarketOS-export
[07:48:07]  * initramfs-samsung-espresso10 (Initramfs)
[07:48:07]  * boot.img-samsung-espresso10 (TWRP flashable boot.img file, contains initramfs and kernel)
[07:48:07]  * vmlinuz-samsung-espresso10 (Linux kernel)
[07:48:07]  * pmos-samsung-espresso10.zip (Android recovery flashable zip)
[07:48:07] NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
[07:48:07] Done
</syntaxhighlight>
 
copy the <code>pmos-samsung-esspresso10.zip</code> file to a SDcard.
Insert it into your phone,
 
* Boot the device into TWRP mode
* Unmount the partitions (Click on "Mount, then unselect all checkboxes)
* select "Install" Then navigate to the zip file and flash it.
 
reboot and enjoy...
 
=== 6. The recommanded running from the /external_sd method (works) ===
 
insert a MicroSDcard into your computer and find its name by running
 
$ lsblk
 
make sure it is the right one as you will overwrite everything on it. Use a path without partition number at the end,
 
such as /dev/mmcblk0, or /dev/sdd
 
.
==== generate pmos directly on a MicroSDcard (works) ====
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install --sdcard=/dev/name-of-your-SDcard
</syntaxhighlight>
 
''' if you want to enable Full Disk Encryption '''
 
add the " --fde" suffix to the command :
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install --sdcard=/dev/name-of-your-SDcard --fde
</syntaxhighlight>
 
==== flash the boot.img to the /boot partition using pmbootstrap (warning ?) ====
 
{{note| WARNING: config-postmarketos-omap.armv7: CONFIG_USB_FUNCTIONFS should *not* be set (usb_gadgets): https://wiki.postmarketos.org/wiki/kconfig#CONFIG_USB_FUNCTIONFS}}
 
insert the MicroSDcard into the device and boot into downloading mode
 
(also called Odin mode), by holding the special button combination
 
{{Button|Power}} + {{Button|Volume Down}} while booting up then {{Button|Volume Up}}
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap flasher flash_kernel
</syntaxhighlight>


Copy the apkbuild directory from the repo into your pmaports dir and rename it to p-wlroots. Then add "p-wlroots" as an extra packages during pmbootstrap init.
now reboot and enjoy...


== STATUS ==
'''or'''
==== flash the boot.img to the /boot partition using Heimdall (works) ====


== Supported variants ==
insert the MicroSDcard into the device and boot into downloading mode
* samsung-espressowifi, which is almost identically similar to samsung-espresso3g, but with the exception that it has no modem.
 
(also called Odin mode), by holding the special button combination
 
{{Button|Power}} + {{Button|Volume Down}} while booting up then {{Button|Volume Up}}
 
$ heimdall flash --KERNEL boot.img
 
reboot the device and enjoy...
 
'''or'''
==== flash the boot.img to the /boot partition using TWRP (works) ====
 
insert the MicroSDcard into your device, and boot it in recovery mode by holding the special button combination
 
{{Button|Power}} + {{Button|Volume Up}} while booting up, then release {{Button|Power}} when you sée thé Samsung logo for the second time.
 
using the mount feature, unselect all /partitions except "MicroSDcard",
 
using the install feature, switch to "install image" rather than "install ZIP"
 
navigate to the "/external_sd/boot.img", and flash it to the /boot partition
 
reboot system and enjoy...
 
== How to use Community pre-built image AND "dualboot" androidOS / postmarketOS ([https://wiki.postmarketos.org/wiki/User:Piero-e Piero-e] 's contribution) ==
 
 
 
{{note| install instructions for Phosh and XFCE4 images}}
 
 
==== works if running postmarketOS from a SD card ====
 
as explained in [https://wiki.postmarketos.org/wiki/Installation#SD_card Installation - Flashing - From SD Card ]
Our device can boot SD card, USB stick or other external storage.
 
==== 1. preparation in a way to easily switch between Android_OS and PostmarketOS ====
 
from your actual Android_OS install file (AP_Stock_Samsung_Firmware.tar.md5 or Custom_Android_Based_OS.zip), extract the boot.img and copy it to your TWRP folder in internal storage (/sdcard/TWRP)
 
==== Download the pmOS pre-built image on your computer ====
 
from the [https://postmarketos.org/download/ download] page
 
==== insert a MicroSDcard into your Computer ====
 
and find its name by running
 
$ lsblk
 
make sure it is the right one as you will overwrite everything on it. Use a path without partition number at the end,
 
such as /dev/mmcblk0, or /dev/sdd
 
==== decompress the downloaded file and write it to your MicroSDcard : ====
 
$ xz --decompress --stdout path-to-pmos-samsung-espresso7.img.xz | sudo dd of=/dev/name-of-your-SDcard bs=4M status=progress
 
Wait until the command completes and eject the SD card.
 
==== 2. Install Postmarket on your device ====
 
insert the MicroSDcard into your device, and boot it into TWRP
 
using the mount feature, unselect all /partitions except "MicroSDcard",
 
using the install feature, switch to "install image" rather than "install ZIP"
 
navigate to the "/external_sd/boot.img", and flash it to the /boot partition
 
==== reboot system ====
 
The rootfs image will boot right into postmarketOS. You are done with installing postmarketOS, congratulations! default login is "user" and password is "147147"
 
==== 3. to restore your Android_OS  ====
 
boot the device into TWRP mode,


== Display ==
and simply using the install feature, switch to "install image" rather than "install ZIP"
OMAPDRM works fine.


Display seems to be running at 30Hz due to the clock speed for 60Hz not working properly.
navigate to the previously stored "/sdcard/TWRP/boot.img", and flash it to the /boot partition


Brightness needs a correct PWM clock value. For now, it flickers at low brightness.
==== 4. to restore your PostmarketOS  ====


== Touchscreen ==
boot the device into TWRP mode,
Touchscreen is MMS136 and it works fine. Already in upstream.


== Bluetooth ==
and simply using the install feature, switch to "install image" rather than "install ZIP"
Bluetooth works. You can enable and manage it with bluez and bluetoothctl.


== Battery ==
navigate to the "/external_sd/boot.img", and flash it to the /boot partition
Fuel gauge works fine. The charger driver is WIP, if connected to usb during boot, then only it charges.


== Camera ==
OMAP4 has different subsystem (Ducati) for camera which is non free. Probably will never work on mainline.


== 3D GPU Acceleration ==
== See also ==
3D acceleration works fine. SGX540 blobs also seem to be missing some EGL configs, so UIs like plasma-mobile do not work, gnome-software crashes etc. It crashes sometimes like when opening firefox.
Video decoding does not work as it is done by Ducati subsystem.


== Phosh ==
Galaxy Flasher Linux GUI
By default phosh has a scaling 1, this makes us unable to unlock the screen. So we need to set it to 0.75 (https://wiki.postmarketos.org/wiki/Phosh#Manual_Scaling) by adding


<pre>
[output:LVDS-1]


scale = 0.75
https://galaxy-flasher-docs.readthedocs.io/en/latest/index.html
</pre>
in /usr/share/phosh/phoc.ini. <br/>
You can revert it back to 1 to get better performance.<br/>
wlr-randr can also be used.


== Known issues ==
== ==
=== WiFi not working after reboot ===
See https://gitlab.com/postmarketOS/pmaports/-/issues/1211
=== Graphic desktop not launching ===
create a <code>.sh</code> file in <code>/etc/tinydm.d/env-wayland.d/</code> and add the following text <code>export MESA_LOADER_DRIVER_OVERRIDE=pvr</code>


== See also ==
== See also ==
* {{Device package|samsung-espresso3g}}
PostmarketOS
* {{Kernel package|samsung-espresso3g}}
* [[Samsung_Galaxy_Tab_2_10.1_(3G_and_Wifi)_(samsung-espresso10)]]
* {{Device package|samsung-espresso3g|community}}
* {{Kernel package|postmarketos-omap|community}}


Mainline WIP kernel:
Mainline WIP kernel:
* [https://github.com/MightyM17/linux_openpvrsgx Linux_openpvrsgx]
* [https://github.com/MightyM17/linux_openpvrsgx Linux_openpvrsgx]
Pvrports (additional non-free pmaports):
* [https://gitlab.com/pvrports/pvrports Pvrports for non-free GPU support]


== Screenshots ==
== Screenshots ==
Line 227: Line 824:
File:mainline-phosh-espressowifi.png|thumb|left|Phosh (5.12 kernel, espressowifi) on Samsung Galaxy Tab 2 7.0
File:mainline-phosh-espressowifi.png|thumb|left|Phosh (5.12 kernel, espressowifi) on Samsung Galaxy Tab 2 7.0
</gallery>
</gallery>
== Videos ==
* Showcasing Plasma Mobile: https://youtu.be/7DCXtpDmrPQ
* Showcasing Phosh: https://youtu.be/uG7LSFHO_Vg

Latest revision as of 11:30, 1 February 2025

Samsung Galaxy Tab 2 7.0
Samsung Galaxy Tab 2 7.0
Samsung Galaxy Tab 2 7.0
Manufacturer Samsung
Name Galaxy Tab 2 7.0
Codename samsung-espresso7
Released 2012
Type tablet
Hardware
Chipset TI OMAP 4430
CPU Dual-core 1.0 GHz Cortex-A9
GPU PowerVR SGX540
Display 7.0 inches, 137.9 cm2 (~58.2% screen-to-body ratio) 600 x 1024 pixels, 16:9 ratio (~170 ppi density)
Storage 8/16/32 GB
Memory 1 GB
Architecture armv7
Software
Original software Android
postmarketOS
Category community
Pre-built images yes
postmarketOS kernel 6.1
Unixbench Whet/Dhry score 442.9
Features
Flashing
Works
USB Networking
Works
Internal storage
No data
SD card
No data
Battery
Works
Screen
Works
Touchscreen
Works
Multimedia
3D Acceleration
Broken
Audio
Broken
Camera
Broken
Camera Flash
No data
Connectivity
WiFi
Works
Bluetooth
Works
GPS
Broken
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
No data
Haptics
No data
Barometer
No data

Contributors

  • Mighty
  • AAT596 (testing in espressowifi variant)
  • lm2 (see it's notes in the user page)

Users owning this device

Hardware status (mainline)

Status Hardware Info
Y Panel Samsung LTN070NL01 LCD panel
Y Touchscreen MMS136
Y SD cards MicroSD card.
Y Internal memory
N GPS
Y WiFi Uses BCM4330B1.
Y Bluetooth Uses BCM4330B1.
Y Buttons There are 2 keys on GPIO: Volume up, Volume down. Power button works as well.
P Charger SMB136 WIP by mighty17
Y Fuel Gauge MAX17042
Y PMIC TWL6032
N Sound Sound codec is WM1811.
Y Accelerometer BMA254
Y Magnetometer YAS530
Y Proximity and Light The P3100 variant has GP2A002, P3110 variant has AL3201.
N Cameras Front - SR030PC50 Back - S5K5CCGX (OMAP4 devices have Ducati firmware for cameras)
P GPU PowerVR SGX 540 needs out-of-tree kernel module, patched mesa, and some proprietary blobs
N Modem Only in espresso3g (P3100 and P5100) - XMM6262

Status

Supported variants

  • samsung-espressowifi, which is almost identically similar to samsung-espresso3g, but with the exception that it has no modem.

Display

OMAPDRM works fine.

Display seems to be running at 45Hz due to the clock speed for 60Hz not working properly.

Battery

Fuel gauge works fine. The charger driver is WIP, if connected to usb during boot, then only it charges.

Camera

OMAP4 has different subsystem (Ducati) for camera which is non free. Probably will never work on mainline.

3D GPU Acceleration

3D acceleration works fine with out-of-tree code and blobs. As a result, these are kept outside of pmaports, in the PVRports repository on Gitlab.

If you use it, please do not report issues related to PowerVR on the postmarketOS issue tracker. Open/report the issue in the pvrports issue tracker instead. If discussing it on Matrix/IRC, we recommend using the offtopic room(s).

SGX540 blobs also seem to be missing some EGL configs, so UIs like plasma-mobile do not work. Video decoding does not work as it is done by Ducati subsystem.

Phosh

This is no more needed, as you can unlock it with scale as 1, kept for future reference.

By default phosh has a scaling 1, this makes us unable to unlock the screen. So we need to set it to 0.75 (https://wiki.postmarketos.org/wiki/Phosh#Manual_Scaling) by adding

[output:LVDS-1]

scale = 0.75

in /usr/share/phosh/phoc.ini.
You can revert it back to 1 to get better performance.
wlr-randr can also be used.

Known issues

WiFi not working after reboot

workaround : always boot the device to TWRP first, then from there, reboot to system.

See pmaports#1211

Fixes with patch in kernel: https://github.com/hansemro/kc1-linux/blob/v5.16.x/patches/0006-Add-clk32kg-to-twl6030.patch

Graphic desktop not launching

For Phosh (and maybe other wayland desktops?): create a .sh file in /etc/tinydm.d/env-wayland.d/ and add the following text export MESA_LOADER_DRIVER_OVERRIDE=pvr. See pmaports!2790

shutdown

always shutdown the device from the Linux interface, otherwise (buttons or TWRP) it will immediatly reboot to system.

if you want to charge the device during it stays off, plug it before shutdown from the Linux interface, because plugging the USB charger make the device booting.

Never let the battery fall down to 0%

because of the partialy functional charging feature

otherwise even plugged to an USB power supply, the device will enter in an endless bootloop. and you will have to open the device, disconnect the motherboard from the charge module to wait some times, letting the battery charging in peace

Non-free unofficial GPU support

As said in the Status section, GPU support can be enabled by copying additional PostmarketOS pmaports in your work directory, called pvrports.

pvrports are basically non-free PowerVR blobs and quirks with Phosh and Plasma Mobile, and not specific for this device. This means that any device that has a PowerVR SGX Series 5 GPU could be enabled by adding this repository.


Installation (first edition)

follow the general pmbootstrap instructions to build your own.

Prerequisites: TWRP installed on the Tab, see the LineageOS wiki for instructions: espressowifi, use the espresso3g TWRP image if you have the espresso3g tablet.

Make sure to backup your data and store this somewhere safe if you care about the stock OS and/or your files!

Run pmbootstrap init and configure your installation. Flashing the image to the device is in 2 parts; the rootfs and the kernel. If this installation process does not go well for you, please try the alternative installation instead.

rootfs

There are 2 ways to go about installing the rootfs, depending on where you want to install it to.

  • For an sdcard use:

pmbootstrap install --sdcard=/dev/sdX

Make sure to specify the mountpoint of the sdcard plugged into your computer.

  • For installing on the internal filesystem use TWRP

pmbootstrap install --android-recovery-zip

pmbootstrap flasher --method=adb sideload

By default this will install on the (fairly limited) 1GB /system partition.

To specify a different partition (for example the 8/16 GB /data partition), add --recovery-install-partition=data to the first line.

  • For installing on the internal /data partition use:

pmbootstrap install --android-recovery-zip --recovery-install-partition=data


When asked, boot your device into TWRP, wipe cache and your partion. Then go into advanced and start sideload mode, wait for this to finish.

kernel

After the rootfs is installed, insert the SDcard (if you used this) and boot the device into download mode. run pmbootstrap flasher flash_kernel This will flash the kernel to the device and reboot it. If you land in TWRP, just go to reboot and click system. It might complain about missing an OS, but do not worry! You should see some tuxes and be dropped in the OS!


Alternative install

In your PC, type these commands to generate and export the flashable installation (defaults flashing to /system partition), please see Installation from recovery mode for more details:
pmbootstrap install --android-recovery-zip

pmbootstrap export

adb push /tmp/postmarketOS-export/*.zip /sdcard/


How to enter flash mode

  • Recovery mode: Power on the device by holding Volume Up and Power
  • Download mode: Power on the device by holding Volume Down and Power
    • If you are unable to enter download mode, try putting rubber bands around Volume Down and Power and leaving the tablet on the charger until it boots into download mode

the 6 ways to build pmos for samsung-espresso7 and flash it to the device (tested by User:Piero-e)

Preparation

you will need to install pmbootstrap on your Linux Computer

  • From package manager

Use the package manager of your distribution to install pmbootstrap:

Alpine Linux, postmarketOS:
# apk add pmbootstrap
Arch Linux:
# pacman -S pmbootstrap
Debian:
# apt install pmbootstrap
Fedora:
# dnf install pmbootstrap
Void Linux:
# xbps-install -S pmbootstrap
Gentoo:
# emerge -va app-eselect/eselect-repository
# eselect repository enable guru
# emaint -r guru sync
# emerge -va dev-util/pmbootstrap
Nix/NixOS
# nix run nixpkgs#pmbootstrap
Note Fixed release distributions, i.e. Debian, may freeze pmbootstrap version. Consider installing it from git if you want the latest features and bug fixes.


  • From git

Follow this section if your Linux distribution doesn't have pmbootstrap packaged, or its version of pmbootstrap is too old, or you would like to change the code. Run the following to clone and install pmbootstrap from git.

$ git clone https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git
$ cd pmbootstrap
$ mkdir -p ~/.local/bin
$ ln -s "$PWD/pmbootstrap.py" ~/.local/bin/pmbootstrap
$ pmbootstrap --version
2.2.1

If you get ModuleNotFoundError: No module named 'tomllib', then you are running python 3 <= 3.10 and need to install the python3 library tomli with your linux distribution's package manager. The package is probably called python3-tomli.

If this returns something like pmbootstrap: command not found instead of a version number, ensure that ~/.local/bin is in your PATH. For example by adding the following to your ~/.profile (zsh: ~/.zprofile) followed by source ~/.profile to update your environment

PATH="$HOME/.local/bin:$PATH"

If you ran the source command with the file you modified it should work. Otherwise, try a new terminal window.

then open a new terminal, or restart your session or restart your computer...

and run :

$ pmbootstrap --version
it must return something like
1.52.1

Follow the pmbootstrap article to build your own image


you may need to :

  • Install adb on your host Linux distribution (usually in an android-tools-adb package that you can install with your distribution's package manager),
  • Install heimdall on your host Linux distribution (usually in a heimdall-flash package that you can install with your distribution's package manager), or install odin if using windows

in a way to


each days before building

Run

$ pmbootstrap pull
$ pmbootstrap status

.

1. The pure pmbootstrap classic way (partial)

. this will create

"/home/username/.local/var/pmbootstrap/chroot_native/home/pmos/rootfs/samsung-espresso10.img"

and

"/home/username/.local/var/pmbootstrap/chroot_rootfs_samsung-espresso10/boot/boot.img"

then push it to the device

generate some partitions images for the device (works)

run :

$ pmbootstrap init
$ pmbootstrap install

if you want to enable Full Disk Encryption

add the " --fde" suffix to the command :

$ pmbootstrap init
$ pmbootstrap install --fde

flash pmos.img to the /system partition (broken ?)

Note broken : heimdall ERROR: FACTORYFS partition is too small for given file. Use --skip-size-check to flash anyways.
Note Comment : adding --skip-size-check dont work

This action wraps various flash programs (e.g. fastboot and heimdall) with a common syntax, and automatically fills out the paths to the files previously generated during pmbootstrap install.

Boot your phone into the downloading mode (also called Odin mode), typically by holding the special button combination

Power + Volume Down while booting up then Volume Up

and run :

$ pmbootstrap flasher flash_rootfs

By default, this will target the /FACTORYFS partition of your Galaxy Tab 2.

Beware that this will overwrite the existing installation and data on your phone!

or

if you prefer, flash pmos.img to the /data partition instead (broken ?)

Note broken : heimdall ERROR: Uploading DATAFS at 1% Failed to confirm end of file transfer sequence!

because the default partition (typically "/system", here /FACTORYFS) is became too small for the generated image, it is possible to flash to another partition. Just be sure to erase any previous installations of postmarketOS in other partitions, because the init script will start with the first one that it encounters. (To delete a previous version simply install the known working OS, e.g. Android, on it, or wipe or format the partitions using TWRP if installed). And if you really know what you are doing, you might consider using dd command). Using multiple partitions with LVM is planned (pmbootstrap#60).

$ pmbootstrap flasher flash_rootfs --partition DATAFS

this will target the /DATAFS partition of your Galaxy Tab 2.

Beware that this will overwrite the existing installation and data on your phone!

flash the boot.img to the /boot partition

$ pmbootstrap flasher flash_kernel

reboot the device and enjoy...

.

2. The alternative Heimdall method (partial)

.

generate some partitions images for the device (works)

run :

$ pmbootstrap init
$ pmbootstrap install

if you want to enable Full Disk Encryption

add the " --fde" suffix to the command :

$ pmbootstrap init
$ pmbootstrap install --fde

flash pmos.img to the /system partition (broken ?)

Note broken : heimdall ERROR: Uploading FACTORYFS at 1% Failed to confirm end of file transfer sequence!

$ heimdall flash --FACTORYFS samsung-espresso10.img

or

flash pmos.img to the /data partition (broken ?)

Note broken : heimdall ERROR: Uploading DATAFS at 1% Failed to confirm end of file transfer sequence!

$ heimdall flash --DATAFS samsung-espresso10.img

flash the boot.img to the /boot partition (works)

$ heimdall flash --KERNEL boot.img

.

3. The alternative Odin method (not documented)

.

generate some partitions images for the device (works)

run :

$ pmbootstrap init
$ pmbootstrap install

if you want to enable Full Disk Encryption

add the " --fde" suffix to the command :

$ pmbootstrap init
$ pmbootstrap install --fde

create some .TAR files from the generated partitions images

flash a pmos.tar to the AP section (not tested)

flash a boot.tar to the AP section (not tested)

or better

create a .TAR files including the generated partitions images

flash the pmos.tar to the AP section (not tested)

.

4. The alternative "dd" method (not documented) (should work)

.

generate some partitions images for the device (works)

run :

$ pmbootstrap init
$ pmbootstrap install

if you want to enable Full Disk Encryption

add the " --fde" suffix to the command :

$ pmbootstrap init
$ pmbootstrap install --fde


flash the pmos.img to the device (not tested)

  • to the /system partition (not tested)

or

  • to the /userdata partition (not tested)

flash the boot.img to the /boot partition (not tested)

.

5. The recommanded TWRP method (works)

this will create

"/home/user/.local/var/pmbootstrap/chroot_buildroot_armv7/var/lib/postmarketos-android-recovery-installer/pmos-samsung-espresso10.zip"


generate a recovery flashable .ZIP targeting /system partition (works)

Note that the /system-partition is likely too small (1,4 GB), which will -for example- prevent the lightdm-windowmanager from starting up. The recovery-zip should be built to target the data partition!


according to Installation from recovery mode page.

$ pmbootstrap init
$ pmbootstrap install --android-recovery-zip

By default, this will target the /FACTORYFS partition of your Galaxy Tab 2.

If your want Full Disk Encryption add the --fde argument.

$ pmbootstrap init
$ pmbootstrap install --android-recovery-zip --fde

or

generate a recovery flashable .ZIP targeting /data partition (works)

Note that the /system-partition is likely too small (1,4 GB), which will -for example- prevent the lightdm-windowmanager from starting up. The recovery-zip should be built to target the data partition!

$ pmbootstrap init
$ pmbootstrap install --android-recovery-zip --recovery-install-partition=data

this will target the /DATAFS partition of your Galaxy Tab 2.


sideload the pmos.zip using pmbootstrap + TWRP (broken ?)

Note broken : (native) % adb -P 5038 wait-for-usb-sideload


This allows pushing the zip file on the fly directly from your computer.

  • Boot the device into TWRP mode
  • Unmount the partitions (Click on "Mount", then unselect all checkboxes)
  • Click on "Advanced / ADB Sideload", then "Swipe to start sideload"
  • Connect your phone to your PC
  • Start the sideloading process from your PC:
$ pmbootstrap flasher --method=adb sideload

reboot and enjoy

or

sideload the pmos.zip using ADB + TWRP (works)

This allows pushing the zip file on the fly directly from your computer.

$ pmbootstrap export
[07:48:04] NOTE: To export the rootfs image, run 'pmbootstrap install' first (without the 'sdcard' parameter).
[07:48:07] Export symlinks to: /tmp/postmarketOS-export
[07:48:07]  * initramfs-samsung-espresso10 (Initramfs)
[07:48:07]  * boot.img-samsung-espresso10 (TWRP flashable boot.img file, contains initramfs and kernel)
[07:48:07]  * vmlinuz-samsung-espresso10 (Linux kernel)
[07:48:07]  * pmos-samsung-espresso10.zip (Android recovery flashable zip)
[07:48:07] NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
[07:48:07] Done
  • Boot device into TWRP mode
  • Unmount the partitions (Click on "Mount, then unselect all checkboxes)
  • Click on "Advanced / ADB Sideload", then "Swipe to start sideload"
  • Connect your phone to your PC
  • Start the sideloading process from your PC:


run the following commands. The special cd is necessary, because adb can't resolve the symlink on its own. :

$ cd $(dirname $(readlink /tmp/postmarketOS-export/pmos-samsung-espresso10.zip))
$ adb sideload pmos-samsung-espresso10.zip
loading: 'pmos-samsung-espresso10.zip'...
connecting...
Total xfer: 1.08x

reboot and enjoy...

or

installing the pmos.zip using TWRP via a SDcard (works)

Instead of sideloading, you can run

$ pmbootstrap export
[07:48:04] NOTE: To export the rootfs image, run 'pmbootstrap install' first (without the 'sdcard' parameter).
[07:48:07] Export symlinks to: /tmp/postmarketOS-export
[07:48:07]  * initramfs-samsung-espresso10 (Initramfs)
[07:48:07]  * boot.img-samsung-espresso10 (TWRP flashable boot.img file, contains initramfs and kernel)
[07:48:07]  * vmlinuz-samsung-espresso10 (Linux kernel)
[07:48:07]  * pmos-samsung-espresso10.zip (Android recovery flashable zip)
[07:48:07] NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
[07:48:07] Done

copy the pmos-samsung-esspresso10.zip file to a SDcard. Insert it into your phone,

  • Boot the device into TWRP mode
  • Unmount the partitions (Click on "Mount, then unselect all checkboxes)
  • select "Install" Then navigate to the zip file and flash it.

reboot and enjoy...

6. The recommanded running from the /external_sd method (works)

insert a MicroSDcard into your computer and find its name by running

$ lsblk

make sure it is the right one as you will overwrite everything on it. Use a path without partition number at the end,

such as /dev/mmcblk0, or /dev/sdd

.

generate pmos directly on a MicroSDcard (works)

$ pmbootstrap init
$ pmbootstrap install --sdcard=/dev/name-of-your-SDcard

if you want to enable Full Disk Encryption

add the " --fde" suffix to the command :

$ pmbootstrap init
$ pmbootstrap install --sdcard=/dev/name-of-your-SDcard --fde

flash the boot.img to the /boot partition using pmbootstrap (warning ?)

Note WARNING: config-postmarketos-omap.armv7: CONFIG_USB_FUNCTIONFS should *not* be set (usb_gadgets): https://wiki.postmarketos.org/wiki/kconfig#CONFIG_USB_FUNCTIONFS

insert the MicroSDcard into the device and boot into downloading mode

(also called Odin mode), by holding the special button combination

Power + Volume Down while booting up then Volume Up

$ pmbootstrap flasher flash_kernel

now reboot and enjoy...

or

flash the boot.img to the /boot partition using Heimdall (works)

insert the MicroSDcard into the device and boot into downloading mode

(also called Odin mode), by holding the special button combination

Power + Volume Down while booting up then Volume Up

$ heimdall flash --KERNEL boot.img

reboot the device and enjoy...

or

flash the boot.img to the /boot partition using TWRP (works)

insert the MicroSDcard into your device, and boot it in recovery mode by holding the special button combination

Power + Volume Up while booting up, then release Power when you sée thé Samsung logo for the second time.

using the mount feature, unselect all /partitions except "MicroSDcard",

using the install feature, switch to "install image" rather than "install ZIP"

navigate to the "/external_sd/boot.img", and flash it to the /boot partition

reboot system and enjoy...

How to use Community pre-built image AND "dualboot" androidOS / postmarketOS (Piero-e 's contribution)

Note install instructions for Phosh and XFCE4 images


works if running postmarketOS from a SD card

as explained in Installation - Flashing - From SD Card Our device can boot SD card, USB stick or other external storage.

1. preparation in a way to easily switch between Android_OS and PostmarketOS

from your actual Android_OS install file (AP_Stock_Samsung_Firmware.tar.md5 or Custom_Android_Based_OS.zip), extract the boot.img and copy it to your TWRP folder in internal storage (/sdcard/TWRP)

Download the pmOS pre-built image on your computer

from the download page

insert a MicroSDcard into your Computer

and find its name by running

$ lsblk

make sure it is the right one as you will overwrite everything on it. Use a path without partition number at the end,

such as /dev/mmcblk0, or /dev/sdd

decompress the downloaded file and write it to your MicroSDcard :

$ xz --decompress --stdout path-to-pmos-samsung-espresso7.img.xz | sudo dd of=/dev/name-of-your-SDcard bs=4M status=progress

Wait until the command completes and eject the SD card.

2. Install Postmarket on your device

insert the MicroSDcard into your device, and boot it into TWRP

using the mount feature, unselect all /partitions except "MicroSDcard",

using the install feature, switch to "install image" rather than "install ZIP"

navigate to the "/external_sd/boot.img", and flash it to the /boot partition

reboot system

The rootfs image will boot right into postmarketOS. You are done with installing postmarketOS, congratulations! default login is "user" and password is "147147"

3. to restore your Android_OS

boot the device into TWRP mode,

and simply using the install feature, switch to "install image" rather than "install ZIP"

navigate to the previously stored "/sdcard/TWRP/boot.img", and flash it to the /boot partition

4. to restore your PostmarketOS

boot the device into TWRP mode,

and simply using the install feature, switch to "install image" rather than "install ZIP"

navigate to the "/external_sd/boot.img", and flash it to the /boot partition


See also

Galaxy Flasher Linux GUI


https://galaxy-flasher-docs.readthedocs.io/en/latest/index.html

See also

PostmarketOS

Mainline WIP kernel:

Pvrports (additional non-free pmaports):

Screenshots

Videos