Samsung S9, v3.0.4 official, /e/ Recovery loop, Signal backup

Hi,

Vendor Name: Samsung
Device name: S9/SM-G960F
Device CodeName: starlte
Previous version of /e/OS: 3.0.1-s-20250609498926-official-starlte
Present version of /e/OS: 3.0.4-s-20250711508139- official-starlte
Rooted / Not rooted: not rooted
Upgrades: stricly OTA official builds since 0.19

This morning, I woke up and shortly after picked up my phone which had been in charging through the night. I found the screen unlocked, set to Recovery with 4 options: Reboot, Upgrade, Factory Reset, Advanced.
I didn’t want to loose my data so I chose Reboot. I unlocked my SIM, boot seemed to complete (I got a glimpse of the home screen) and it reverted back to Recovery almost instantly with this message “Can’t load Android system. Your data may be corrupt. If you continue to get this message, you may have to perform a factory data reset…” and 2 options this time: Try again, Factory Data Reset.
I chose “Try Again” and the system booted, I unlocked my SIM, boot seemed to complete (I got a glimpse of the home screen) and it reverted back to Recovery almost instantly with the same message.
This is my first major bug since the last update.
I have several questions:

  1. How can the system suddenly switch to Recovery?
  2. Should I post in Gitlab?
  3. As I am not the technical type, could someone please guide me through this issue so I can get my phone to work again (with minimal data loss if possible)?

Thanks in advance.

It will do this automatically if system fails to boot. To be optimistic, it is not a complete collapse as you have (part ??) working recovery, and you glimpse /e/OS starting.

Simplest things first. Might your storage be “quite full” like over 85% when you last looked. You may have some app making automatic backups … or you might have generated or acquired some large files recently … videos are a common culprit.

/e/OS does seem to require some headroom in userdata to boot.

Is high use of storage likely to be a factor, do you think ?

Thank you for getting back so quickly.
Last I checked, storage was not full but quite full as you say. I have been encountering problems with the automatic save setting in Signal App as it would attempt save but not come through and retry endlessly in the background.

I remember it happening before but surpised at the number of hits for a forum Search – Signal backup.

I don’t think I will be able to talk you through the fix … you are likely at some stage to be hit by encryption of storage, but one can imagine the general aim … “try to delete something big even if you have to do it blind”.

Understood. Having read one or two of those threads you might try to describe here how easy it would be for you to make some contact with the phone in e-Recovery mode from your PC (keywords platform tools and adb commands).

Not Samsung but … "Your data may be corrupt": /e/os booting into recovery and crashing on startup after running out of disk space. Samsung has “extra” difficulties with encryption.

Thanks. I’m going to look into your suggested links.

There’s a lot of info in the threads. Here’s what I did so far.

According to https://community.e.foundation/t/tuto-installer-adb-et-fastboot-sur-votre-pc-avec-linux/54357:
On my pc:

  • I downloaded latest version of SDK Platform-Tools for Linux (I’m running Ubuntu 24.04.2)
  • I ran “mkdir ~/android-adb-fastboot” (where ~ is “/home/user/”)
  • I ran “mv ~/TĂ©lĂ©chargements/platform-tools-latest-linux.zip ~/android-adb-fastboot”
  • I ran “unzip ~/android-adb-fastboot/platform-tools-latest-linux.zip -d ~/android-adb-fastboot”
  • I plugged my phone to my PC using USB cable

On my phone:

  • From Recovery 2-item menu, I pressed back arrow to get to Recovery 4-item menu
  • I pressed Advanced
  • I pressed Enable ADB

On my PC:

  • I ran “sudo apt install adb”
  • I ran “adb shell”

From ADB shell:

I read:

I’m still confused about which command lines to type in order to locate and delete excessively large Signal backup files.

Could you please clarify?

As per "Your data may be corrupt": /e/os booting into recovery and crashing on startup after running out of disk space

In ADB shell:

  • I ran “mkdir -p /mnt/userdata”
  • I ran “mount /dev/block/bootdevice/by-name/userdata /mnt/userdata/”

Output:

Should “by-name” be something else?

I have been doing a bit of “exploring” on my Motorola so it is likely not the same as yours and maybe different from your guide!

I have an idea that in your position I would think whether I had something I could try to backup then sacrifice the original, trying to avoid the hassle of encryption. Of course this is a rudimentary idea and might not work.

I think the Signal backup will be hard to break encryption but I did find https://support.signal.org/hc/en-us/articles/360007059752-Backup-and-Restore-Messages#android_move … but it is not going to be like this for you !!

You might bear in mind the command

adb pull -a /storage/emulated/0/<some_known_directory>

This would give you an effective backup, and you can now explore it with your File manager (if not encrypted). Then you could consider to attempt to delete a known large file from the phone. The pulled file or folder will arrive in your working directory.

Some folders to explore from the shown root of your shell are

  • sdcard is “internal storage” try ls here, you should recognise familiar layout.
  • data look for /data/data/ and ls
  • storage try to get to /storage/emulated/0/ and ls

Get root before you start

$ adb root
restarting adbd as root
$ adb shell
ocean:/ #

Check by “explore”

Explore
$ adb shell              
2|ocean:/ # cd dev/block/bootdevice/by-name/                                   
ocean:/dev/block/bootdevice/by-name # ls

aboot_b     devcfg_b  hw           modemst1  rpm_a     userdata

ocean:/dev/block/bootdevice/by-name # 

Yes it was there on my device … I always use terminal autocomplete to explore the unknown.

I think your reported error No such file or directory also includes No such file or directory which you can get to ??

I exited adb shell and ran adb root and
image
So this is good.

I ran “adb shell” again.
When I try to change directory and use “ls” command, the output is empty
image

I noticed that my Linux file manager shows my phone, but it is not mounted. Is that normal?

I noticed that if I choose “Advanced” from the 4-item Recovery screen on my phone, I get a new set of sub-items: Enter fastboot, Rebbot to bootloader, Reboot to recovery, Mount/unmount system, View recovery logs, Power off. Is there anything to do there?

Can <some_known_directory> be on my PC?

Just to be sure, “ls” command from adb shell prompt gives directory structure on the phone?

Sorry to bother you with my newbie problems but I can’t manage to get a list of files in adb shell environment. I’m wondering if my device is correctly connected to my PC.

From ADB shell, I ran “devices”:
image
Does that mean that my phone is not properly connected?

I guess you have what you have. Have you tried to explore the phone with File manager before it “broke”? File manager automount would require some stuff – I have bookmarked [SOLVED] Thunar is not recognizing my android device. / Newbie Corner / Arch Linux Forums but that is old now, so try Thunar - ArchWiki. This page has a list of things I recognise as current. Maybe you have a different File manager and / or can search further.

If you can get your File manager to work that would clearly be easier, but we have to assume your phone might not welcome intrusions ??


“Explore” means you keep at it till you find something, perhaps /storage/emulated/0/ would be more productive.

/data/data/ is probably the least likely to be accessible.

I thought it pretty cool that you listed / straight off.

Correct :white_check_mark:

Probably. You run adb devices from your PC prompt to establish you have a device to open a shell with. You know you have a good connection as soon as you open a shell, and list anything and especially a root shell.

My “explore” technique is really “is there anyone there?” Loosely speaking if you got all negatives the Samsung encryption won and you would have to do some much more technical stuff.


adb pull -a /storage/emulated/0/<some_known_directory>

adb, Android Debug Bridge is talking to the phone, pull is a “copy” sort of command. So you have to be able to see a file or directory on the phone then you are going to pull it to your PC. This suggestion was an idea of “what you might do” if you found some of your stuff accessible.

Demo
user@laptop:~$ adb devices
List of devices attached
XYZ23456VBNM	device

user@laptop:~$ adb root
adbd is already running as root
user@laptop:~$ adb shell
ocean:/ # cd storage/emulated/0/                                               

ocean:/storage/emulated/0 # ls
AuroraStore  FitoTrack          Music          Recordings
Alarms      DCIM................Notifications  Ringtones
Android     Documents    MagicEarth         Pictures 
Audiobooks  Download     Movies             Podcasts

ocean:/storage/emulated/0 # cd DCIM/                                           

ocean:/storage/emulated/0/DCIM # ls
Camera  Camera_2021-10  Camera_2024-5  FJCamera  OpenCamera
ocean:/storage/emulated/0/DCIM # exit


user@laptop:~$ mkdir TEMP
user@laptop:~$ cd TEMP

user@laptop:~/TEMP$ adb pull -a /storage/emulated/0/DCIM/FJCamera
/storage/emulated/0/DCIM/FJCamera/: 9 ... 29.6 MB/s (136420428 bytes in 4.400s)

user@laptop:~/TEMP$ ls
FJCamera
user@laptop:~/TEMP$ cd FJCamera/
user@laptop:~/TEMP/FJCamera$ ls
FJIMG_20220126_085628.jpg  FJVID_20220418_130822.mp4  IMG_20220322_191056.jpg
FJVID_20220418_130625.mp4  FJVID_20220418_130921.mp4  Readme.md
FJVID_20220418_130739.mp4  FJVID_20220418_131236.mp4  SpiralYew2022-03-22.jpg
user@laptop:~/TEMP/FJCamera$ 

The pull having been successful then I certainly can use my File manager on the PC to see what is there.

1 Like

Thank you for the very explicit examples.

I’ve tried moving poking around using “cd” and “ls” and “ls -l”.

I cant’ seem get past /storage:
image
(I wonder what the “2” just before the prompt means)

I was unsuccessful in getting to userdata.

starlte:/ # cd /dev/block/by-name
starlte:/dev/block/by-name # ls
BOOT   BOTA1  CACHE  CP_DEBUG  DTB   EFS     KEYSTORAGE  NAD_REFER  OMR    PERSISTENT  RECOVERY  SYSTEM    USERDATA  sda  sdc  sde
BOTA0  BOTA2  CPEFS  DQMDBG    DTBO  HIDDEN  MISC        ODM        PARAM  RADIO       STEADY    UP_PARAM  VENDOR    sdb  sdd
starlte:/dev/block/by-name # cd userdata
/system/bin/sh: cd: /dev/block/by-name/userdata: No such file or directory
2|starlte:/dev/block/by-name # 

starlte:/dev/block/by-name # ls -l
total 0
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 BOOT -> /dev/block/sda10
lrwxrwxrwx 1 root root 15 2025-08-10 11:31 BOTA0 -> /dev/block/sda1
lrwxrwxrwx 1 root root 15 2025-08-10 11:31 BOTA1 -> /dev/block/sda2
lrwxrwxrwx 1 root root 15 2025-08-10 11:31 BOTA2 -> /dev/block/sda7
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 CACHE -> /dev/block/sda21
lrwxrwxrwx 1 root root 15 2025-08-10 11:31 CPEFS -> /dev/block/sdd1
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 CP_DEBUG -> /dev/block/sda24
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 DQMDBG -> /dev/block/sda17
lrwxrwxrwx 1 root root 15 2025-08-10 11:31 DTB -> /dev/block/sda8
lrwxrwxrwx 1 root root 15 2025-08-10 11:31 DTBO -> /dev/block/sda9
lrwxrwxrwx 1 root root 15 2025-08-10 11:31 EFS -> /dev/block/sda3
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 HIDDEN -> /dev/block/sda22
lrwxrwxrwx 1 root root 15 2025-08-10 11:31 KEYSTORAGE -> /dev/block/sda6
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 MISC -> /dev/block/sda15
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 NAD_REFER -> /dev/block/sda13
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 ODM -> /dev/block/sda20
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 OMR -> /dev/block/sda23
lrwxrwxrwx 1 root root 15 2025-08-10 11:31 PARAM -> /dev/block/sda4
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 PERSISTENT -> /dev/block/sda14
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 RADIO -> /dev/block/sda12
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 RECOVERY -> /dev/block/sda11
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 STEADY -> /dev/block/sda16
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 SYSTEM -> /dev/block/sda18
lrwxrwxrwx 1 root root 15 2025-08-10 11:31 UP_PARAM -> /dev/block/sda5
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 USERDATA -> /dev/block/sda25
lrwxrwxrwx 1 root root 16 2025-08-10 11:31 VENDOR -> /dev/block/sda19
lrwxrwxrwx 1 root root 14 2025-08-10 11:31 sda -> /dev/block/sda
lrwxrwxrwx 1 root root 14 2025-08-10 11:31 sdb -> /dev/block/sdb
lrwxrwxrwx 1 root root 14 2025-08-10 11:31 sdc -> /dev/block/sdc
lrwxrwxrwx 1 root root 14 2025-08-10 11:31 sdd -> /dev/block/sdd
lrwxrwxrwx 1 root root 14 2025-08-10 11:31 sde -> /dev/block/sde
starlte:/dev/block/by-name # 

I’m stuck, unable to get to the important files and much less “pull” something. I still managed to get to one file:

starlte:/tmp # ls
recovery.log
starlte:/tmp # ls -l
total 24
-rw-rw-rw- 1 root root 21615 2025-08-10 16:06 recovery.log
starlte:/tmp # 

This probably means that without “OEM unlock”, “USB Debugging” or “MTP” set on the phone, I won’t get a chance to have access to those directories and their files.

I am to do a "Factory reset " at this point? :scream:

One more try, it is understandable not to cd into emulated – you must go straight to


/storage/emulated/0/

as written !!

You changed case of USERDATA, I see to userdata but you cannot cd into it.

The technique is to mount it.

Now we now know that it is USERDATA.

1 Like
starlte:/ # cd /storage/emulated/0/
/system/bin/sh: cd: /storage/emulated/0: No such file or directory
2|starlte:/ #
starlte:/ # /storage/emulated/0/
/system/bin/sh: /storage/emulated/0/: inaccessible or not found
127|starlte:/ # 

2|starlte:/ # mount /dev/block/by-name/USERDATA /mnt/userdata/            
mount: /dev/block/by-name/USERDATA: need -t
1|starlte:/ # 

What is “-t”? Do I type it at the very end of the command line?

From mount -h
Options:
-t, --types limit the set of filesystem types

Edit this suggestion will be incorrect

mount -t /dev/block/by-name/USERDATA /mnt/userdata/

Post #17 below.

127|starlte:/ # mount -t /dev/block/by-name/USERDATA /mnt/userdata/
mount: '/mnt/userdata/' not in fstab
1|starlte:/ # 

What does this mean please?

Well it is true that not in fstab, so my guess is that -t is not a useful option in this case.

But you are making progress :sunny:

Perhaps there are relevant suggestions in the thread you started from.

Edit

The use of the -t option is different from what appeared in my post. From

mount -h
Options:
 -t, --types <list>      limit the set of filesystem types

If one were to use the -t option it seems one would need to provide another argument <list> cannot help … but -t on its own is wrong.

To reveal mount points, i used:

starlte:/ # mount | grep /mnt                                                                                                                                                           
tmpfs on /mnt type tmpfs (rw,seclabel,nosuid,nodev,noexec,relatime,size=1847536k,nr_inodes=461884,mode=755,gid=1000)
tmpfs on /mnt/installer type tmpfs (rw,seclabel,nosuid,nodev,noexec,relatime,size=1847536k,nr_inodes=461884,mode=755,gid=1000)
tmpfs on /mnt/androidwritable type tmpfs (rw,seclabel,nosuid,nodev,noexec,relatime,size=1847536k,nr_inodes=461884,mode=755,gid=1000)
/dev/block/sda18 on /mnt/system type ext4 (ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr,acl)
starlte:/ # 

But I previously created “userdata” directory in /mnt ( and recently “USERDATA” directory, just to try both, in case of case sensitivity):

starlte:/mnt # ls
USERDATA  androidwritable  installer  product  shell  staging  system  user  userdata  vendor

I went through several other threads and I don’t understand why it worked out in another case. We saw that the path to userdata was slightly different and that the name of the directory was case sensitive. Some suggest editing fstab, but that’s a bit scary to me.

I just thought of something else. Would it be possible to reboot in Safe Mode (as per [HOWTO] Reboot into Safe Mode). From there, unable Developer Options (OEM unlock and USB debugging), have a good look at ~/Signal/Backups and delete backup files? Would it affect user data?

Please can you show the output, from your regular PC terminal prompt, of

adb version
anonymous@anonymous:~$ adb version
Android Debug Bridge version 1.0.41
Version 34.0.4-debian
Installed as /usr/lib/android-sdk/platform-tools/adb
Running on Linux 6.14.0-27-generic (x86_64)