[BLU R1 HD Guides, News, & Discussion] linuxsociety:
Fair enough, I have a diff applied here:

$ diff -uN0 lineage.init.project.rc stock.init.project.rc
--- lineage.init.project.rc	2017-04-21 21:10:34.569610971 -0500
+++ stock.init.project.rc	2017-04-21 21:11:49.373610258 -0500
@@ -65,0 +66,2 @@
+ chmod 0660 /dev/IMX258_CAM_CAL_DRV
+ chown system camera /dev/IMX258_CAM_CAL_DRV
@@ -104,14 +106 @@
-
-# for gesture
- chown system system /sys/devices/mx_tsp/gesture_control
- chown system system /sys/devices/mx_tsp/gesture_data
-
-# for notification light
- chown system system /sys/devices/mx_leds/leds_mode
-
-#FLYME_EDIT:zhouyueguo@SHELL.PowerSavingMode.Feature Permissions add for
-power saving mode {@
-#Permissions for power saving mode
- chown system system /sys/power/power_mode
- chmod 0660 /sys/power/power_mode
-#@}
+ chmod 0666 /dev/sensors_state
@@ -123,2 +112,33 @@
-# Encrypt phone function
- setprop vold.post_fs_data_done 1
+
+ chmod 0666 /dev/exm0
+
+on init
+ # Refer to http://source.android.com/devices/tech/storage/index.html
+ # It said, "Starting in Android 4.4, multiple external storage
+devices are surfaced to developers through
+ # Context.getExternalFilesDirs(),
+Context.getExternalCacheDirs(), and Context.getObbDirs().
+ # External storage devices surfaced through these APIs
+must be a semi-permanent part of the device (such as an SD card slot in
+a battery compartment).
+ # Developers expect data stored in these locations to be
+available over long periods of time."
+ # Therefore, if the target doesn't support sd hot-plugging (Ex: the
+SD card slot in a battery compartment), we need to export
+SECONDARY_STORAGE in 'boot' section
+ #
+ # export SECONDARY_STORAGE /storage/sdcard1
+
+service fuse_usbotg /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d
+/mnt/media_rw/usbotg /storage/usbotg
+ class late_start
+ disabled
+
+
+#service fingerprintd /system/bin/fingerprintd
+# class late_start
+# user system
+#service gx_fpd /system/bin/gx_fpd
+# class late_start
+# user root
+# group root system
@@ -173,0 +194,13 @@
+
+#
+# vtservice
+#
+service vtservice /system/bin/vtservice
+ class main
+ socket soc_vt_tcv dgram 660 radio system
+ socket soc_vt_stk dgram 660 radio system
+ socket soc_vt_svc dgram 660 radio system
+ user system
+ group system camera graphics inet net_admin net_raw media
+sdcard_rw radio sdcard_r media_rw
+ ioprio rt 4

Can you see the difference in that patch of the lineage vs stock? The two lines you mentioned are of the most importance, the other lines didn't come out exactly right due to some word wrapping or something going on in the "code" box used on xda. Needless to say those IMX permissions need set, we also need to verify proper permissions are set in the other init files for other camera nodes and files.

I've created a diff patch of the entire differences of the contexts of the ramdisk, and they are in no way the same. The diff patch contains 5,000+ lines so there are quite a few files differet. Im almost certain that the camera issue resides in these differences. I'm just wondering where the 14.1/lineage ramdisk mods have came from and why. The why part of that is where commits on github really come in handy. Anyway here is the file of the entire differences (minus any binary files that differ, when the binaries differ the patch specifies it)

https://gist.github.com/godmachine81/3e5bffa14b4b06d41d5db470961d54ea

Search the gist for the term 'camera' and you'll see some interesting results especially the + (stock) lines.

This command:

$ grep -i camera /tmp/lineage-vs-stock.diff |wc -l
27

shows there are 27 lines containing the term camera (ignoring case sensitivity) from the entire stock vs lineage ramdisk contents all of which are DIFFERENCES (thats ommitting the common occurances)