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.

  6. If you are ok with running non-free software, you could use an app called Tasker (paid). It is possible to run tasks on device boot.

  7. Hi Alex,

    Thanks for sharing. I think its the way to start opensshd on boot of CM13.
    I have tried to clone your git repo, but without success.

    Is it possible that you will share the apk with me ?

    Thanks in advance.

  8. Hi Alex,

    Now, I have cloned your git project and it does like it should. Now the sshd starts on boot. ๐Ÿ™‚

  9. Excellent, good to hear that it works for you… now let’s see whether the current code will run with CM14, too…

  10. Thank you for the app, it works great ๐Ÿ™‚
    I’m using it on a CM-14.1 build from today.

    I just bumped the SDK and build tools versions and it compiled fine.

  11. Nice – haven’t upgraded my phone yet, but good to know that I wont have to worry about sshd when I finally install CM14.1. Thanks!

  12. Hi,

    I compiled apk, no issues here but then userinit.d does not seem to work. I launched the app, taped the button, it gave me ls /data/local/userinit.d….and that is it. I went there with Root explorer, there was no userinit.d so I created it, put my script inside, rebooted and nothing.

    What did I do wrong?

  13. Hey John, are the executable mode bits set for your script? If you haven’t done yet try adding them (as root) with ‘chmod a+x yourfile’. You can test running ‘su -c /data/local/userinit.d/yourfile’ from the terminal or via adb – if that works it should work via RunUserInit, too.

  14. Do I have to put a single bash script in the userinit.d folder which executes other scripts or do I have to put all my scripts in the userinit.d folder?

  15. Unfortunately the wiki describing this has vanished together with CyanogenMod: Originally the start-ssh script was located in /system/bin and all you had to do was to copy it to /data/local/userinit.d/99sshd and make it executable (it’s still there on my phone running LineageOS). Some modifications to the sshd configuration files was also required. A quick search yields this gist to run on your host connected to the phone via ADB, from a quick review it seems to generate all the necessary files:

  16. Hi Alex, I managed to compile your app with android studio (it just wouldn’t from the command line), but having installed your app on my droid, I’m not getting UI. Could you send me the apk, so I could compare it with mine.
    Thanks ๐Ÿ˜‰

  17. Hello Alex, I have installed the linage OS in an S5, I will not compile the application, I can request that you send me the apk, thanks for sharing

  18. Hi Alex,
    I tried to find the apk in fdroid but I think it is not there yet.
    Can you send the apk to my email address please?
    Thanks in advance

Leave a Reply

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