Developer mode

From InkBox
Jump to navigation Jump to search
Kobo Glo with developer mode enabled; a watermark is visible at the top of the screen for security reasons

InkBox OS' developer mode is a special operating mode that developers can use to develop their own apps without needing to recompile the kernel with their own private keys embedded in it, thus greatly speeding up any development process, since it allows unsigned external programs to run on the system.

Getting started

Obtaining a developer key

Developers who want to acquire a developer key can contact the project maintainers via the various communication channels listed in Main_Page#Community.

Installing a developer key

A developer key digest is provided as the key.dgst. To install a developer key, one must enter the following commands in a GNU/Linux prompt, where mmcblk0 is replaced with the path to your microSD card's device node:

# echo -n 1 | dd of=/dev/mmcblk0 bs=256 seek=3 # Setting UID flag (NOTE: this is needed because of a bug and needs to be fixed for 2.1)
# echo -n 1 | dd of=/dev/mmcblk0 bs=256 seek=159746 # Setting developer key flag
# echo -n "$(dd if=/dev/mmcblk0 bs=256 count=1 skip=2)" | dd of=/dev/mmcblk0 bs=256 seek=159748 # Writing developer key, which is a copy of the device's UID
# dd if=/path/to/key.dgst of=/dev/mmcblk0 bs=256 seek=159750 # Writing developer key digest

Internals

A developer key is actually a complete copy of the device's UID (Universal IDentifier) stored in another 256-byte sector of the MMC.
While everyone can write to this sector (159748), the kernel's developer key script will not enable developer-specific features unless what is written at this sector matches the UID stored at sector 2 of the MMC and it is signed with the official private key of the device, thus, the one embedded in the kernel by default and the developer flag (sector 159746) is set to 1.

Signing your own developer key if you have a custom kernel and device public key

$ echo -n "<your device's UID here>" | openssl dgst -sha256 -sign /path/to/private.pem -out key.dgst