Some notes on Nitdroid on the N9

2025-09-20


The Nitdroid Forums may be gone, but the Internet Archive's Wayback Machine has you covered:

Not mentioned in the links above, but repeated here:

$ devel-su
# disclaimer-cal remove View-openmode

Run this command from MeeGo 1.2 Harmattan to remove the open mode warning. You have to do this before flashing the Nitdroid Kernel, which is an open mode kernel. As a side effect, this gives you Open Mode in Harmattan as well.

Direct download links for archival purposes:

Flashable N9 stock images (untested):

In my case, I've patched /sbin/preinit in Harmattan based on the sillyboot sources to always boot either Harmattan or always boot Nitdroid, as the N9 I'm using here doesn't have working side buttons. Which brings me to the next topic: Connecting to Nitdroid via ADB to install APKs and to rewrite /sbin/preinit to go back to booting Harmattan.

When you boot Nitdroid, USB networking should already be enabled by default (it was for me). Configure your host to have IP 192.168.2.14 with subnet mask /24. The N9 will have 192.168.2.15, and ADB should be running on port 5099 (you can figure this out yourself using nmap 192.168.2.15 -Pn -p5000-6000 on your host):

adb connect 192.168.2.15:5099

After that, you can use adb as usual to install APKs and do other adb-ish things. To edit /sbin/preinit and boot back into Harmattan, you can edit (using the limited vi included in Nitdroid) the file:

/mnt/initfs/sbin/preinit

The output of mount on a N9 booted into Nitdroid:

root@android:/ # mount
rootfs / rootfs rw 0 0
/dev/root / ext4 rw,noatime,errors=remount-ro,barrier=1,stripe=8,data=ordered 0 0
none /proc proc rw,relatime 0 0
none /sys sysfs rw,relatime 0 0
devtmpfs /dev devtmpfs rw,relatime,size=503976k,nr_inodes=125994,mode=755 0 0
/tmp/mmcblk0p3 /mnt ext4 rw,relatime,barrier=1,stripe=8,data=ordered 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/mmcblk0p2 /mnt/initfs ext4 rw,relatime,errors=remount-ro,barrier=1,stripe=8,data=ordered 0 0
proc /mnt/initfs/proc proc rw,relatime 0 0
sysfs /mnt/initfs/sys sysfs rw,relatime 0 0
tmpfs /mnt/initfs/dev tmpfs rw,nosuid,relatime,mode=755 0 0
/dev/block/vold/179:1 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/179:1 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0

After editing /sbin/preinit, reboot via ADB:

/system/bin/reboot

And if you want to power off via ADB, you can also try this (source):

adb shell am start -a android.intent.action.ACTION_REQUEST_SHUTDOWN \
    --ez KEY_CONFIRM true \
    --activity-clear-task

Sources are still available at github.com/nitdroid, but building them has not been tested.

Thomas Perl · 2025-09-20