OS VERSION: 5.2.0.16 (now at version 5.2.0.11 after a factory reset)
HARDWARE: Jolla Phone 2026
UI LANGUAGE: German
DESCRIPTION:
After two days of using the phone, the JP 2026 restarted itself without any input from me.
Since then, it’s been stuck in a reboot loop. I only briefly see the Jolla logo, then it restarts.
As far as I can remember, the Sailfish OS logo should appear afterward, but it doesn’t get that far during startup.
Before this, I restarted the phone several times without any problems. The last change was an update to version 5.2.0.16 yesterday morning, July 31st.
I haven’t made any modifications to the system, installed a patch manager, or anything like that.
What I’ve already tried:
* Restarting several times
* Removing the battery, reinserting it after about 20 minutes, and starting the phone
* Starting recovery mode and running a file system check (no errors)
* Starting recovery mode and resetting to factory state (Recovery looks fine, but it wasn’t the solution.)
I’ve collected log files, and a kernel crash is recorded in the pstore. Here are the collected files.
journal.targz (894.9 KB)
console-ramoops-0.targz (295.4 KB)
Unfortunately, the JP 2026 is still stuck in a boot loop.
Any suggestions what i can do?
4 Likes
Try this:
Not sure it will help, but (while in recovery), enable persistent logging for systemd:
#### Assuming the root is mounted as /mnt/root
mkdir -p /mnt/root/etc/systemd/journald.conf.d/
printf '[Journal]\nStorage=persistent\n' > /mnt/root/etc/systemd/journald.conf.d/persist-logs.conf
reboot, wait until the problem appears, then reboot into recovery again.
Journal files should now be available at /mnt/root/var/log/journal, and you can read them using journalctl --directory=SOME_PATH or journalctl …
And look in the log whether we can see what fails exactly.
As journalctl does not seem to be available in recovery, you’ll have to copy the journal files to a Linux computer with systemd to read them.
7 Likes
thank’s for the hint, i will try it.
i have managed to get persistent logging from systemd and i had a look at it, but i did not find out what causes the boot error.
it would be very kind if you could have a look at it, maybe you can guide me in the right direction
i attached the logfiles as tar.gz at this post.
journal.targz (467.6 KB)
Everything points to a hardware failure, youth defects. I guess you should request a replacement (or repair).
First if all, send that file (or link) to Jolla zendesk, maybe they can glance something from it. If it indeed points to hardware issues.
Meanwhile, I see that ohmd fails to start. That’s quite critical I guess:
nemo@PGJolla26-I:~/Downloads/journal $ journalctl --directory=. -ax _TRANSPORT=journal -e -u ohmd
~
~
~
-- Logs begin at Fri 2026-07-03 17:53:56 CEST, end at Fri 2026-07-03 17:54:00 CEST. --
Jul 03 17:53:59 localhost systemd[1]: Starting ohm daemon for resource policy management...
-- Subject: Unit ohmd.service has begun start-up
-- Defined-By: systemd
-- Support: https://forum.sailfishos.org/
--
-- Unit ohmd.service has begun starting up.
Jul 03 17:53:59 localhost systemd[1446]: ohmd.service: Failed to set up mount namespacing: No such file or directory
Jul 03 17:53:59 localhost systemd[1446]: ohmd.service: Failed at step NAMESPACE spawning /usr/sbin/ohmd: No such file or directory
-- Subject: Process /usr/sbin/ohmd could not be executed
-- Defined-By: systemd
-- Support: https://forum.sailfishos.org/
--
-- The process /usr/sbin/ohmd could not be executed and failed.
--
-- The error number returned by this process is 2.
Jul 03 17:53:59 localhost systemd[1]: ohmd.service: Main process exited, code=exited, status=226/NAMESPACE
Jul 03 17:53:59 localhost systemd[1]: ohmd.service: Failed with result 'exit-code'.
Jul 03 17:53:59 localhost systemd[1]: Failed to start ohm daemon for resource policy management.
-- Subject: Unit ohmd.service has failed
-- Defined-By: systemd
-- Support: https://forum.sailfishos.org/
--
-- Unit ohmd.service has failed.
--
-- The result is RESULT.
Can you go into recovery mode again, and see if the ohmd binary exists?
/usr/sbin/ohmd
on the system partition.
If you know how to use the chroot command, you could try to chroot into the system partition and do:
ldd /usr/sbin/ohmd
rpm -q ohmd
amd post the output.
7 Likes
I have the suspicion that your update didn’t finish properly.
Could you send the following files (also from the system partition)
7 Likes
First of all, thank you so much for taking the time to help me!
here is the output of the commands
markus@markus-linux:~$ ssh root@10.42.66.66
root@10.42.66.66’s password:
recovery:~ # mkdir /mnt/root
recovery:~ # mount /dev/mapper/sailfish-root /mnt/root
recovery:~ # mount /dev/mapper/sailfish-home /mnt/root/home
/ # ls -l /usr/sbin/ohmd
-rwxr-xr-x 1 root root 69064 Jun 4 2026 /usr/sbin/ohmd
/ # ldd /usr/sbin/ohmd
linux-vdso.so.1 (0x0000007f9cfac000)
/usr/lib64/libtls-padding.so (0x0000007f9cf40000)
libohmplugin.so.2 => /usr/lib64/libohmplugin.so.2 (0x0000007f9cf10000)
libdbus-glib-1.so.2 => /usr/lib64/libdbus-glib-1.so.2 (0x0000007f9cec0000)
libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x0000007f9ce30000)
libdbus-1.so.3 => /usr/lib64/libdbus-1.so.3 (0x0000007f9cdb0000)
libgmodule-2.0.so.0 => /usr/lib64/libgmodule-2.0.so.0 (0x0000007f9cd80000)
libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x0000007f9cc00000)
libsimple-trace.so.0 => /usr/lib64/libsimple-trace.so.0 (0x0000007f9cbd0000)
libc.so.6 => /lib64/libc.so.6 (0x0000007f9ca00000)
/lib/ld-linux-aarch64.so.1 (0x0000007f9cf70000)
libgio-2.0.so.0 => /usr/lib64/libgio-2.0.so.0 (0x0000007f9c7f0000)
libffi.so.8 => /usr/lib64/libffi.so.8 (0x0000007f9c7b0000)
libsystemd.so.0 => /usr/lib64/libsystemd.so.0 (0x0000007f9c6f0000)
libpcre2-8.so.0 => /usr/lib64/libpcre2-8.so.0 (0x0000007f9c630000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000007f9c5f0000)
libz.so.1 => /usr/lib64/libz.so.1 (0x0000007f9c5b0000)
libselinux.so.1 => /usr/lib64/libselinux.so.1 (0x0000007f9c560000)
liblzma.so.5 => /usr/lib64/liblzma.so.5 (0x0000007f9c510000)
libcap.so.2 => /usr/lib64/libcap.so.2 (0x0000007f9c4e0000)
libmount.so.1 => /usr/lib64/libmount.so.1 (0x0000007f9c450000)
libgcrypt.so.20 => /usr/lib64/libgcrypt.so.20 (0x0000007f9c350000)
libblkid.so.1 => /usr/lib64/libblkid.so.1 (0x0000007f9c2d0000)
libgpg-error.so.0 => /usr/lib64/libgpg-error.so.0 (0x0000007f9c280000)
/ # rpm -q ohmd
package ohmd is not installed
/ # cat /var/log/zypp/history
2026-07-03 14:30:04|radd |adaptation-common-jp2601-5.2.0.11|https://releases-internal.jollamobile.com/releases/5.2.0.11/jolla-hw/adaptation-common/aarch64/|
2026-07-03 14:30:05|radd |adaptation0-jp2601-5.2.0.11|https://releases-internal.jollamobile.com/releases/5.2.0.11/jolla-hw/adaptation-jolla-jp2601/aarch64/|
2026-07-03 14:30:06|radd |apps-5.2.0.11|https://releases-internal.jollamobile.com/jolla-apps/5.2.0.11/aarch64/|
2026-07-03 14:30:07|radd |hotfixes-5.2.0.11|https://releases-internal.jollamobile.com/releases/5.2.0.11/hotfixes/aarch64/|
2026-07-03 14:30:08|radd |jolla-5.2.0.11|https://releases-internal.jollamobile.com/releases/5.2.0.11/jolla/aarch64/|
2026-07-03 14:30:09|radd |features_5.2.0.11_xt9_aarch64|https://releases-internal.jollamobile.com/features/5.2.0.11/xt9/aarch64/|
2026-07-03 14:30:10|radd |features_5.2.0.11_sailfish-eas_aarch64|https://releases-internal.jollamobile.com/features/5.2.0.11/sailfish-eas/aarch64/|
2026-07-03 14:30:11|radd |features_5.2.0.11_appsupport_aarch64|https://releases-internal.jollamobile.com/features/5.2.0.11/appsupport/aarch64/|
2026-07-03 14:30:12|radd |features_5.2.0.11_customers_jolla_aarch64|https://releases-internal.jollamobile.com/features/5.2.0.11/customers/jolla/aarch64/|
2026-07-03 14:34:51|rremove|features_5.2.0.11_appsupport_aarch64|
2026-07-03 14:34:51|rremove|features_5.2.0.11_customers_jolla_aarch64|
2026-07-03 14:34:51|rremove|features_5.2.0.11_sailfish-eas_aarch64|
2026-07-03 14:34:51|rremove|features_5.2.0.11_xt9_aarch64|
Yea but I meant the ohmd binary on the non-recovery root.
I.e. /mnt/root/usr/sbin/ohmd
I’m not sure this will work, but try
mount -o bind /dev /mnt/root/dev
mount -o bind /dev/pts /mnt root/dev/pts
mount -o bind /dev/shm /mnt/root/dev/shm
mount -o bind /proc /mnt/root/proc
mount -o bind /run /mnt/root/run
chroot /mnt/root /bin/sh
after mounting and before the ldd and rpm stuff.
Then your session should be “within” the system root and you can issue commands normally..
Pretty sure you will find that ohmd does not exist on the system root.
4 Likes
ok, i understand what you mean.
i started a recovery session and executed the following commands.
recovery:\~ # mount /dev/mapper/sailfish-root /mnt/root
recovery:\~ # mount /dev/mapper/sailfish-home /mnt/root/home
recovery:\~ # ls -l /mnt/root/usr/sbin/ohmd
-rwxr-xr-x 1 root root 69064 Jun 4 2026 /mnt/root/usr/sbin/ohmd
recovery:\~ # mount -o bind /dev /mnt/root/dev
recovery:\~ # mount -o bind /dev/pts /mnt/root/dev/pts
recovery:\~ # mount -o bind /dev/shm /mnt/root/dev/shm
mount: mounting /dev/shm on /mnt/root/dev/shm failed: No such file or directory
recovery:\~ # mount -o bind /proc /mnt/root/proc
recovery:\~ # mount -o bind /run /mnt/root/run
after that
recovery:\~ # chroot /mnt/root /bin/sh
/ #
/ # /usr/sbin/ohmd
/ # ls -l /usr/sbin/ohmd
-rwxr-xr-x 1 root root 69064 Jun 4 2026 /usr/sbin/ohmd
/ #
/ # ldd /usr/sbin/ohmd
linux-vdso.so.1 (0x0000007fb2edc000)
/usr/lib64/libtls-padding.so (0x0000007fb2e70000)
libohmplugin.so.2 => /usr/lib64/libohmplugin.so.2 (0x0000007fb2e40000)
libdbus-glib-1.so.2 => /usr/lib64/libdbus-glib-1.so.2 (0x0000007fb2df0000)
libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x0000007fb2d60000)
libdbus-1.so.3 => /usr/lib64/libdbus-1.so.3 (0x0000007fb2ce0000)
libgmodule-2.0.so.0 => /usr/lib64/libgmodule-2.0.so.0 (0x0000007fb2cb0000)
libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x0000007fb2b30000)
libsimple-trace.so.0 => /usr/lib64/libsimple-trace.so.0 (0x0000007fb2b00000)
libc.so.6 => /lib64/libc.so.6 (0x0000007fb2930000)
/lib/ld-linux-aarch64.so.1 (0x0000007fb2ea0000)
libgio-2.0.so.0 => /usr/lib64/libgio-2.0.so.0 (0x0000007fb2720000)
libffi.so.8 => /usr/lib64/libffi.so.8 (0x0000007fb26e0000)
libsystemd.so.0 => /usr/lib64/libsystemd.so.0 (0x0000007fb2620000)
libpcre2-8.so.0 => /usr/lib64/libpcre2-8.so.0 (0x0000007fb2560000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000007fb2520000)
libz.so.1 => /usr/lib64/libz.so.1 (0x0000007fb24e0000)
libselinux.so.1 => /usr/lib64/libselinux.so.1 (0x0000007fb2490000)
liblzma.so.5 => /usr/lib64/liblzma.so.5 (0x0000007fb2440000)
libcap.so.2 => /usr/lib64/libcap.so.2 (0x0000007fb2410000)
libmount.so.1 => /usr/lib64/libmount.so.1 (0x0000007fb2380000)
libgcrypt.so.20 => /usr/lib64/libgcrypt.so.20 (0x0000007fb2280000)
libblkid.so.1 => /usr/lib64/libblkid.so.1 (0x0000007fb2200000)
libgpg-error.so.0 => /usr/lib64/libgpg-error.so.0 (0x0000007fb21b0000)
/ # rpm -q ohmd
package ohmd is not installed
seems that the ohmd package is missing.
is it possible to install this package as chroot or in recovery session and how can i do that?
If all the packages didn’t install correctly during the update, the packages might be still in the /home/.pk-zypp-dist-upgrade-cache/ and should be installable with rpm (or zypper if you have it installed).
4 Likes
my fault, the package containing ohmd is called ohm.
But as the binary is there, there must be something else missing.
Maybe this here can help?
Thank you for this!!! It was the last step I needed to recover my Xperia X after a failed update to 3.4.0.24.
After showing the update failed message, the screen would flash white 3-4 times and then stay black on each reboot.
I think the cause of the problem was related to not enough free disk space on the root volume, combined with file system deleted inode references.
What worked for me was to run a file system check in recovery mode and then resize the logical volumes, increasing th…
Of course this is outdated regarding links and versions.
In general routing internet to the recovery shell and using pkcon (better: zypper, try to fetch manually)
Thanks for the suggestion.
the directory home is nearly empty, i think because of the factory reset what i have done at the beginning @ recovery mode
as chroot:
/ # ls -l /home/
total 20
drwx------ 4 appsuppo appsuppo 4096 Jul 3 14:35 appsupport-root
drwx------ 2 root root 16384 Jul 3 14:30 lost+found
/ # ls -l /home/.
../ ./ .zypp-cache/
/ # ls -l /home/.zypp-cache/
total 4
drwxr-xr-x 3 root root 4096 Jul 3 14:30 solv
Then the only options are to contact Jolla through Zendesk or do what @peterleinchen suggested and route the Internet to your recovery shell, try to install zypper and then use that to fix the issues.
1 Like
Oh wait…
You already tried a factory reset from recovery shell?!!
Then I guess all our tries to help you manually get out of this are just waste of time (as we have no idea in which state the system is after the reset. (nevertheless I would even try harder and continue …)
I would try the reset once again, follow it exactly, but if it does not boot contact Jolla@Zendesk (and ping Jolla folks here as well).
Afaik the C2 we could as well not reset/flash for the first months but this was not communicated for the JP2601.
Just for shits and giggles, can you try to (again in the chroot or in the system root mount) edit /usr/lib/systemd/system/ohmd.service and comment out (#) all the sandboxing stuff:
# We need access to /run/user/X/dbus to connect to user session bus, hence
# we cannot use ProtectHome but we'll deny access to /root and /home separately
ProtectSystem=full
InaccessibleDirectories=/root /home
ReadWriteDirectories=/var/lib/ohm /run/user
ReadOnlyDirectories=/
And boot again.
It seems ohmd itself is there, but there’s those “mount namespace” errors in the logs.
If it fails again, please send another journal file.
3 Likes
I think the new JP2601 was designed from the beginning to be user reflashable, but Jolla hasn’t released any images yet.
i do this
i comment the following lines out
#ProtectSystem=full
#InaccessibleDirectories=/root /home
#ReadWriteDirectories=/var/lib/ohm /run/user
#ReadOnlyDirectories=/
the JP26 hangs in boot loop.
i attached new journal log form the last reboots
journal.targz (1.5 MB)
Jul 03 16:10:55 localhost kernel: BOOTPROF: 13835.369570:initcall: init_module [camera_wpe_isp6s] 15.674692ms
Jul 03 16:10:55 localhost systemd-modules-load[1456]: Inserted module 'camera_wpe_isp6s'
Jul 03 16:10:55 localhost systemd[1]: Started udev Kernel Device Manager.
Jul 03 16:10:55 localhost systemd-modules-load[1456]: Inserted module 'uload_ind'
Jul 03 16:10:55 localhost kernel: [CAM_MEM][cam_mem_Init] +
Jul 03 16:10:55 localhost kernel: [CAM_MEM][cam_mem_Init] g_platform_id = 0x6858
Jul 03 16:10:55 localhost kernel: camera-mem soc:cam_mem: Adding to iommu group 2
Jul 03 16:10:55 localhost kernel: [CAM_MEM][cam_mem_probe] +
Jul 03 16:10:55 localhost kernel: [CAM_MEM][cam_mem_RegCharDev] +
Jul 03 16:10:55 localhost kernel: [CAM_MEM][cam_mem_RegCharDev] -
Jul 03 16:10:55 localhost kernel: [CAM_MEM][cam_mem_probe] dma_set_mask_and_coherent(cam_mem, DMA_BIT_MASK(34))
Jul 03 16:10:55 localhost kernel: [CAM_MEM][cam_mem_probe] -
Jul 03 16:10:55 localhost kernel: [CAM_MEM][cam_mem_Init] -
Jul 03 16:10:55 localhost systemd-modules-load[1456]: Inserted module 'camera_mem'
Jul 03 16:10:55 localhost systemd-modules-load[1456]: Inserted module 'archcounter_timesync'
Jul 03 16:10:55 localhost kernel: [ISP][cam_qos_init] platform id(0x6858)
Jul 03 16:10:55 localhost kernel: [ISP][cam_qos_probe] CAM QOS probe.
Jul 03 16:10:55 localhost kernel: [ISP][ISP_probe] - E. ISP driver probe.
Jul 03 16:10:55 localhost kernel: [ISP][ISP_probe] device idx= 0.
Jul 03 16:10:55 localhost kernel: [ISP][ISP_probe] G_u4DevNodeCt=1, devnode(camisp_legacy), map_addr=0xffffffc08bfe0000
Jul 03 16:10:55 localhost kernel: Unable to handle kernel write to read-only memory at virtual address ffffff800d1d1400
Jul 03 16:10:55 localhost kernel: [ISP][ISP_probe] No IRQ!!: G_u4DevNodeCt=1, devnode(camisp_legacy), irq=0
Jul 03 16:10:55 localhost kernel: Mem abort info:
Jul 03 16:10:55 localhost kernel: [ISP][ISP_add_device_link] larb_num: 1; (1, -2)
Jul 03 16:10:55 localhost kernel: ESR = 0x000000009600004f
Jul 03 16:10:55 localhost kernel: [ISP][ISP_add_device_link] camisp_legacy gets larb_id=13
Jul 03 16:10:55 localhost kernel: EC = 0x25: DABT (current EL), IL = 32 bits
Jul 03 16:10:55 localhost kernel: [ISP][ISP_probe] - X. ISP driver probe.
Jul 03 16:10:55 localhost kernel: SET = 0, FnV = 0
Jul 03 16:10:55 localhost kernel: camera-isp 1a030000.cam1_legacy: Adding to iommu group 2
Jul 03 16:10:55 localhost kernel: EA = 0, S1PTW = 0
Jul 03 16:10:55 localhost kernel: [ISP][ISP_probe] - E. ISP driver probe.
Jul 03 16:10:55 localhost kernel: FSC = 0x0f: level 3 permission fault
Jul 03 16:10:55 localhost kernel: [ISP][ISP_probe] device idx= 7.
Jul 03 16:10:55 localhost kernel: Data abort info:
Jul 03 16:10:55 localhost kernel: [ISP][ISP_probe] G_u4DevNodeCt=2, devnode(cam1_legacy), map_addr=0xffffffc08e788000
Jul 03 16:10:55 localhost kernel: ISV = 0, ISS = 0x0000004f, ISS2 = 0x00000000
Jul 03 16:10:55 localhost kernel: [ISP][ISP_probe] G_u4DevNodeCt=2, devnode(cam1_legacy), irq=506, ISR: cam1_legacy
Jul 03 16:10:55 localhost kernel: CM = 0, WnR = 1, TnD = 0, TagAccess = 0
Jul 03 16:10:55 localhost kernel: [ISP][ISP_add_device_link] larb_num: 1; (1, -2)
Jul 03 16:10:55 localhost kernel: GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
Jul 03 16:10:55 localhost kernel: [ISP][ISP_add_device_link] cam1_legacy gets larb_id=16
Jul 03 16:10:55 localhost kernel: swapper pgtable: 4k pages, 39-bit VAs, pgdp=0000000042403000
Jul 03 16:10:55 localhost kernel: [ISP][ISP_probe] - X. ISP driver probe.
Jul 03 16:10:55 localhost kernel: [ffffff800d1d1400] pgd=180000033fedf003, p4d=180000033fedf003, pud=180000033fedf003, pmd=180000033fe88003, pte=006000004d1d1f87
Jul 03 16:10:55 localhost kernel: [ISP][ISP_probe] - E. ISP driver probe.
Jul 03 16:10:55 localhost kernel: Internal error: Oops: 000000009600004f [#1] PREEMPT SMP
-- Boot 422f6edeaab7452186b47bf6c640eaf2 --
@avhakola and @peterleinchen
maybe we find i way to bring it back… but yes, i think i will contact Jolla@Zendesk coming week.
Perhaps a image to flash the JP26 already exists, or I need to send the JP26 back to Jolla. We will see.
1 Like