Source Of Battery Drain: NFC Always On *Temporary + Permanent Fix* 2ND UPDATE
Running On Sailfish Version: 1.0.2.5
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: http://reviewjolla.blogspot.ro/2013/12/jolla-battery-life-power-consumption.html
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:
Deactivation of TOH via command line (devel-su; systemctl stop tohd.service) seems to stop the bat. drain for me ! #jolla thx @simoruoho
— okerampa (@okerampa) December 23, 2013
Okerampa reports a temporary stop to the battery drain issues by typing the following code into terminal:
______________________________________________________________________________________________________________
devel-su
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 !
Latest posts by JollaTides (see all)
- #Jolla Tablet Campaign: Last Chance To Order + Juicy Perks - December 8, 2014
- #TOHKBD: Go, Go, Funky Configurator! - November 28, 2014
- #Jolla Tablet: Campaign Adds Bulk Retailer Option And Stretch Goals! - November 27, 2014


please,where do you get the password from???
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. ;-)
Great news! I presume Jolla will have a new tohd.service out promptly to fix this though for me I’m managing to last through most of the day just as I did with my N9 so it’s not a big issue.
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. ;-)
awesome. Just one question.
When stopping togs.service is any sort of confirmation output supposed to appear?
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:
devel-su
systemctl disable tohd.service
Does that look right ? :-)
EDIT: Seems to be working fine… ;-)
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.
Definitely, that is one of the best unlike things on Jolla, the device itself is extraordinary :-)
Just to update, this is working for me so far as mentioned by Znurre:
devel-su
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
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.
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 :)
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?
Thanks for the info! Stopping the tohd service seems to drop standby current draw from around 130-150mA to 10-60mA. Those interested in measuring the power draw can check out: https://github.com/jusic/energiador
Great info Jussi thanks for that – I’ll mention it at our community port. :-)
Great, thanks!
That is a very useful drop in current consumption. I need to make up a battery cable so that I can put an ammeter in a series circuit to measure the current.
Richard
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.
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.
systemctl –all or systemctl list-units does’t work on Sailfish OS? What version of systemd Sailfish OS is using?
Both of those systemctl commands work in Jolla terminal.
thanks all!
anyway should be useful a section for manage NFC from settings app like in N9!
To check if TOHD is running or not, just type (terminal, developer mode, you know):
systemctl | grep tohd
Running:
tohd.service loaded active running The Other Half Daemon (TOHD)
Stopped:
tohd.service loaded failed failed The Other Half Daemon (TOHD)
command does not work or show anything,how can I use it?
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 reboot.now
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).
Thanks a lot for pointing the right way! Sorry to be annoying, what’s the opposite command? unmask?
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.
About 4 times better energy consumption. Now the phone twice better as it was before. Nice Christmas gift.
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)
Check:
systemctl | grep tohd
(Should be loaded, active and running… and eating battery)
Now:
systemctl stop tohd.service
systemctl disable tohd.service
(After that, it should be loaded, failed and failed)
Thanks a lot, this worked like charm:). Don’t always have to lug around the charger and portable USB battery bank anymore.
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!
A linux terminal changes very little when you become root (administrator), but the normal $ prompt usually turns into a # instead. I am only guessing here as I haven’t received my phone yet.
Yep. Works like a normal linux terminal. Sailfish uses Nemo’s fingerterm app.
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
@Harry Santala: Does your phone behave that way every time you try stopping the other half daemon?
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
root
bash-3.2#
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 :-)
I wrote a reply to you but missed the place. It’s below this one.
66 hrs since last battery charging – still over 20% left. Just stopped tohd.service. This is just great :)
80% after roughly 1d with wi-fi constantly on. Great fix from community! Thanks!
Hey just incase anyone of you’ll hasn’t read this yet!
http://www.gsmarena.com/jolla_jolla-review-1025p2.php
P.S. Was gonna buy the Jolla but decided to wait till their next refined product. Happy on my Xperia SP for now. Cheers mates! :D
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.
Stick a piece of 3-layered aluminum foil on the NFC tag of the other half and problem solved. When a fix is implemented via an update, you simply remove the foil. Solution for ‘normal users’ who do not use developer mode.
But with foil only, service running and make write/read operation with NFC chip. With service stopped, NFC is still in lowpower mode. :)
Pingback: Jolla sai tänään ison käyttöjärjestelmäpäivityksen 1.0.2.5 (Maadajävri) | Rakas sijoituspäiväkirjani
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.
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.
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?
Perhaps that’s why most of other phones with NFC functionality have option in settings to turn it on/off
The ability to turn off NFC will improve security in those situation where you do not wish your phone to be detected by responding to NFC signals.
Richard
Thanks for theese comands, my battery result is now much better,. I
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.
Pingback: Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise | BriPay News Aggregator
Pingback: Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise | Make Money InMake Money In
Pingback: Jolla Review: Some Rough Edges, But This Linux Smartphone Shows Promise – Forbes | Home Gadget Deals
Pingback: Jolla Review: Some Rough Edges, But This Linux Smartphone Shows PromiseSOVIDERS TECH | SOVIDERS TECH
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!
Oh, yes, I forgot:
Don’t use systemctl disable, but systemctl mask.
Else the tohd will come back on.
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 :-)
Ditto! The poppy red looks really nice!! :-)
I’m pleasantly surprised by the poppy red OH. It’s really more orange than red ;-)
I only wish that changing the half would do more than just download ambiences.
BTW: the snow white is my favorite.