Source Of Battery Drain: NFC Always On *Temporary + Permanent Fix* 2ND UPDATE

Running On Sailfish Version:

Our friend and fellow co-writer Simo as you probably know has been doing some great work to try and address current battery drain issues reported by some new Jolla owners.

To see the full report by Simo, you can visit the following link:

From all the battery usage raw data you guys sent in (thanks!), Simo concluded that the NFC always on status was one of the main causes of battery drain.  The main problem it seems is the NFC connection that exists between the Jolla and other half.

To alleviate this issue, one user has already decided to remove the NFC chip to see if it makes a difference, while our other co-writer Jukka, has put some tin foil on the NFC chip to limit the connection.

However, we don’t expect you to perform either of those solution as Jolla’s Chief Engineer Harri Hakulinen has been on the case and has already endorsed the following solution via twitter:

Okerampa reports a temporary stop to the battery drain issues by typing the following code into terminal:


systemctl stop tohd.service


After you are prompted for a password, you need to type the password set in the developer tools screen by adding a password in the ‘remote connection’ section.

We’ve just run this code in terminal on our Jolla and will report here if there is an improvement to battery consumption if you would prefer to wait for the results. ;-) EDIT: There definitely seems to be so far…

This is only a temporary fix and will need to be inputed each time in terminal after a reboot.  At least by running this code you could see if temporarily disabling NFC does indeed help improve your battery life.


If you would like a more permanent fix once you’ve tested the temporary solution to see if it makes a difference, you can use the following code typed into terminal (as directed by Simo – thanks!):


devel-su <- you command your terminal to enter developer superuser mode
(your password) <- note: invisible writing. Jolla confirms that you are the superuser
systemctl mask tohd.service <- you put a mask to a buggy service commanding NFC chip
systemctl stop tohd.service <- you stop the service
exit <- you leave the devel-su mode
exit <- you leave the terminal (it closes)


If you ever want to restore to original settings, you can use the following code:


devel-su <- you command your terminal to enter developer superuser mode
(your password) <- note: invisible writing. Jolla confirms that you are the developer.
systemctl unmask tohd.service <- you take the mask away, so the system can find the service again
systemctl start tohd.service <- you start the service
exit <- you leave the devel-su mode
exit <- you leave the terminal (it closes)


NB.  I have personally tested both temporary and permanent fixes and they do seem to have made a difference (after only short observation time). 

Finally, here is the official statement from Harri;

Obviously, NFC is NOT intended to be on all the time, in fact it should be on only when TOH is not attached to main unit. So there is clear bug somewhere in TOH daemon or drivers delow.

If you solve this yourself by removing NFC tag from TOH, most likely you will loose that tag forever, because the glue used on that is so strong that it is difficult to remove it without breaking it.

So if possible, wait until we can provide fix for this problem. Now the challenge is that we are supposed to be on Christmas holiday on this week, after very busy fall with long hours for everybody. So at least I would not like to push anyone to fix this in a week or so. Maybe we can do hotfix for this in January, lets see.

Agan, thank you Simo and everyone that has provided input data for this exercise. We can do this #together !




Chief Editor at JollaTides
Here to spread word about Jolla and Sailfish OS.

Leave a Reply

    • Under ‘developer mode’ in settings menu, hit ‘remote connection’ and ‘generate’ to generate password.

      You can either use the generated password or specify your own password. ;-)

    • UPDATE: I have tested the ‘unmask’ route for the past few weeks to permanently disable NFC and it appears to work great even after reboot.

      I have updated the above post for the permanent fix accordingly for anyone who wants to try the permanent fix. ;-)

  1. It should be possible to use systemctl disable tohd.service to make the change persistent between reboots.
    Activating it again is a simple matter of running systemctl enable tohd.service :)

    • @Znurre

      That’s great thanks very much for the information – so like this:

      systemctl disable tohd.service

      Does that look right ? :-)

      EDIT: Seems to be working fine… ;-)

  2. Thanks a lot. That’s the main reason I loved my N900 and I’m going to love this Jolla handset I’ve just received at home (few minutes ago): the comunnity.

  3. Just to update, this is working for me so far as mentioned by Znurre:

    systemctl disable tohd.service

    Obviously this will disable OH features (but you can easily restore them=see above post) until Jolla can provide a hotfix which may not come until January now as the good sailors deserve a much needed break!!

    Thanks to Znurre for a great pre-Christmas fix and all of you guys and wishing all a very festive season greetings from me and the rest of the team! :-D

  4. And to anyone not sure about this fix, don’t worry you won’t be missing much out by disabling the OH services.

    Ambience can still be accessed/made favourite within the gallery and also by side swipes from the home screen. ;-)

    If you need to send something via NFC (rather than bluetooth), you may need to re-enable the services as described above.

    Jolla should include in the settings an NFC on/off option for future update.

  5. This is just wonderful :) There is a problem spotted with #Jolla. No worries – the temporary fix arrives practically in a second and the developer team is as well informed. Just think, how long it took with WP to get a fix for battery draining issue..

    This is opensource as it’s best. I’m very impressed! Please continue this amazing work :)

  6. Just tested it – works fine. Battery holds a lot longer now. Guess that will be fixed within one of the next updates – why would you want to keep NFC always on?

  7. HUGE difference since stopping this service.
    Only a 15% reduction in the past 9 hours, consisting of a little mobile data, cam used to take several photos (w/o flash) & couple of minutes of video plus few minutes of 3g voice calls. Now that’s what I’m talking about it! =)

    Apart from a software option to disable/enable NFC (which IMHO really should have been there from the start) there ideally needs to be some kind of hardware based sensor to detect when Other Half is being clicked in place. e.g. To briefly enable NFC (if disabled by user) and then disable again.

  8. How do you check specific service. whether it is running or not? Last night i think i tried
    all commands, but didnt get any proper responce like “stopped”. During the night i lost all power. About 30% :)

    • took out the nfc tag and left the phone on overnight: 98% power left, the night before it was 72%
      But the phone shouldn’t be shipped with an obvious fault!

      • It is not a fault, Karl. It is simply a bug in the software that controls the NFC chip, a bug that has been identified and thus is about to be fixed. But I envy you because you already have your jolla phones. Mine will be delivered in three or four weeks and by then this bug will be gone. The community is most important factor for me when considering a new phone, and there is no better one than this, imho.

  9. To check if TOHD is running or not, just type (terminal, developer mode, you know):

    systemctl | grep tohd

    tohd.service loaded active running The Other Half Daemon (TOHD)

    tohd.service loaded failed failed The Other Half Daemon (TOHD)

  10. By some weird reason I can stop the service but cannot disable it.
    “systemctl disable tohd.service” – could there be some syntax error?

    • @artisn
      Mine too, the command “disable” comand does nothing when the effect is checked with “grep” command.

      But if I use the “stop” command, checking with “grep” reports failed, which means NFC is now off, but will come on again next time I

      • Disabling a service usually means that it will not be started at power up. You need to stop the service to get immediate results.

        • The problem is, if i disable it, it comes back loaded & active after reboot.
          No matter i stop>disable it or enable>stop>disable. It’s always active after reboot.

          • What command do you use to disable the other half daemon?

            systemctl mask tohd.service

            seems to be the right way to disable the tOH service, according to the article at simo ruoho’s site (linked above).

              • The opposite is indeed to unmask the service, yes.

                I want to have a real linux phone to work and play with myself. Patience… patience… It is being processed.

  11. OK, let’s try this one: enable and start The Other Half Daemon:

    systemctl enable tohd.service
    systemctl start tohd.service

    (Your Jolla may reboot now, so you’re gonna lost your SSH connection and suffer that ugly ‘Snow White’ ambience)

    systemctl | grep tohd
    (Should be loaded, active and running… and eating battery)

    systemctl stop tohd.service
    systemctl disable tohd.service
    (After that, it should be loaded, failed and failed)

  12. Thanks a lot, this worked like charm:). Don’t always have to lug around the charger and portable USB battery bank anymore.

  13. Guys, I set a password on remote connection but when I open the terminal and type “devel-su” – the system asks me for my password and I’m unable to type something. Does anyone have a solution? Anyway, I tried the tinfoil trick and it is working. Much better battery life now. But as I want to use dev mode, I still have to resolve the problem. Thanks for any help and merry xmas guys!

    • On linux systems (including sailfish) the password does not show when typing it in on a terminal. There isn’t even balls or stars showing the amount of characters. But continue typing blindly and then hit enter. That should do the trick. It is harder for foes to figure out your password with this simple security measure.

      • Thanks mate! I already did it this way. After writing my password, what should happen on the screen? Is there any conformation or something like that? Because I wrote the command to stop tohd but no calculations or conformations came on the screen. That was irritating. Thanks for your help!

  14. Sen jälkeen kun pysäytin tuon tohd servicen alkoi ilmetä kaikenlaisia muita bugeja. Kamera jumitteli, ja selain jumitteli. Yleisesti kaikki ohjelmat jumitteli tai kaatuivat. Lopuksi kamera ei käynnistynyt enää ollenkaan. Boottasin puhelimen, ja kaikki palautui ennälleen. Niin myös akun purkautuminen

  15. You must tap ENTER (below the zero key). Then the “prompt” will change its last character:

    $ for normal users
    # for admin (“root”)

    You can always check it by typing the “Who am I?” command:
    bash-3.2# whoami

    But systemctl is an admin command. If you try to run it being a normal user, terminal will shout “Access Denied”.

    So take that silence as a confirmation :-)

  16. Any idea how the phone is supposed to detect when The Other Half is on or off without having NFC turned on? The phone itself seems to have a number of pins in the back but my TOH at least has no corresponding connectors, just the NFC sticker as far as I can tell. What am I missing?

    • With the OH service off there is no way for the phone to know if you change the Other Half because it is identified by the NFC sticker. The battery drain problem occurs because there is a bug in the Other Half service (tOHd) that controls the chip responsible for detecting that sticker. Disabling the dæmon (which is the linux word for service) is simply a crude but quick fix for the battery drain problem. …a temporary one because the bug in tOHd is probably getting fixed very soon.

    • But with foil only, service running and make write/read operation with NFC chip. With service stopped, NFC is still in lowpower mode. :)

  17. Pingback: Jolla sai tänään ison käyttöjärjestelmäpäivityksen (Maadajävri) | Rakas sijoituspäiväkirjani

  18. Something about these commands:

    * stop / start – just stop / start the service (daemon) without changing the configuration. Temporary – after reboot starts if is allowed or by something required.

    * disable / enable – current status of the service is not touched. Sets the state after a reboot. But if someone requires it, a service is started even if is disabled.

    * mask / unmask – same as disable / enable, but if mask the service is never running, even if it required by something => error message about a launch failure is reported in this case.

  19. Awesome battery usage now. I charged battery to full at the morning 24.12., and after that I stopped tohd.service. Now, more than 5 days later, I still have 20% remaining. Of course I don’t have networking always on.

  20. How does it make any sense that NFC should only be active when TOH is not attached?
    So when i would want to NFC Push a image for instance to another phone I would have to tear of TOH? I somehow don’t see this as a long term reliable way :D
    Firstly it will get probably very loose after 100 or so cycles, secondly what the hell?

  21. NFC on TOH phone isn’t supposed to be used for anything other than other half detection IIUC. The antenna doesn’t reach far enough for it to be useful in normal near field situations like picture swapping and phone wallet.

  22. Pingback: Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise | BriPay News Aggregator

  23. Pingback: Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise | Make Money InMake Money In

  24. Pingback: Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise – Forbes | Home Gadget Deals

  25. Pingback: Jolla Review: Some Rough Edges, But This Linux Smartphone Shows PromiseSOVIDERS TECH | SOVIDERS TECH

  26. Hi,

    I confirm that disabling the toh daemon results in a dramatic increase in battery life time, as well as in the overall temperature of the device. Be it in use, or in standby.

    – 30% loss of battery in 8h in standby -> 4 % with toh stopped and masked
    – Battery empty in 8h In normal use -> Now still running with 70% of battery left after 8h.

    Just don’t forget to reboot the terminal after stopping and masking tohd.

    Jolla absolutely has to release a non-geek fix for that, else they will continue to get undeserved bad reviews for battery life time!

  27. Hi everybody,

    I have just received the second other half and in order to see something happen you need to reactivate the toh daemon – I know it’s obvious but I kind of forgot about this fix for the battery drain :-)