User init.d for CM12.1

For some reason the support for init.d and thereby userinit.d has been removed from CyanogenMod starting with CM12. Unfortunately it is not easy to re-activate the functionality, even more so if you want the change to survive future CM updates.

So I decided to create a trivial app that will simply execute run-parts on the /data/local/userinit.d directory when the phone completes booting to get the good old userinit.d back. To clone the git repository run:

git clone

Find more details on the repository contents here.

After installation you will have to start RunUserinit once and hit the button.  When asked whether RunUserinit should be allowed to use root privileges accept that and make the setting permanent. Finally sshd will run automatically again, whenever my phone requires a reboot…


  1. Exactly what I was looking for since CM removed init.d support. Any possibility you can provide the apk?

  2. I haven’t really investigated whether there is something to consider when building ‘release’ apks, but I’ll send you the last debug apk I built – it works nicely on my phone running the latest CM13 builds.

  3. Any chance I could get my hands on that apk as well, I’ve been looking for this for a log time!.


  4. Thank you very much! Using your app is the ONLY way I could figure out to start the SSH server on Cyanogenmod, since /data/local/ and even /system/bin/sysinit are not run anymore on CM13.

    For anyone else trying this solution: you can build the source code into an APK with the following command: ./gradlew assembledebug

  5. Hey JJ, same for me; good to know it works for you, too! And thanks a lot for adding the build instructions, I should update the post to include this information.

Leave a Reply

Your email address will not be published. Required fields are marked *