[G3 Q&A, Help & Troubleshooting] jazzl:
Allright, this took me a while but I got it all sorted out!

A brief overview of what I´ve been through:

I found out that I needed a 64-bit Ubuntu, hence got the latest 16.04 and set it up in a VMWare. I tried my best to build my kernel using NDK, but constantly ran into issues with missing files and a whole lot more. I then decided to target cyanogenmod, who has a guide which in detail explains what to do.

The Cyanogen method uses SDK instead of NDK, and requires you to have a branch of Android on your phone already installed, similar to the one you´re building for.

Again I had various issues untill I tried with the 12.1 snapshot (Lollipop), and finally I could build my Rom. I enabled all cifs options under File Systems/Network File systems in the menuconfig, and all with regards to NFS client, except for NFS v4 which also created some problems. You´ll need to have insertion of modules enabled as well from menuconfig.

After that I was able to have mount manager (an old app that you need to google for, market does not have it anymore) do the job. You´ll need to look for dns_resolver.ko and cifs.ko in your android environment under Ubuntu, and put these files on for instance your sdcard on your phone, where you´ll tell Mount Manager that they´re located. They need to be loaded in the same order as they´re mentioned above.

Your mounts are going to show up as files and not folders, if you don´t do the following from a terminal under android:

$ setenforce permissive

NFS I´ve not yet been succesful with, not least because my firewall blocks NFS regardless of whether if I open the right ports, allow all traffic on the hanewin (NFS mounting system) exe files and so on. So at the moment I start looking into getting the job done with NFS, I also need to get another firewall.

Anyway, on this particular Android build, I got a terrible connection speed, but after googling this for a day or two, the fix for me was to change the channel of my 5ghz wifi to 48 on the router. Then it went from 10 mbit to 120 mbit speed!

Still samba(cifs) is slow, which is not what you want with UHD high kbps rate clips, so I´m researching what can be tweaked here.

Anyway, cifs is working, and I thought I´d share this with you so others can learn from it. There´s alot of trial and error I´ve been doing, and if I can save others from having the headaches I had, I´ll be happy :)

PS: My phone is rooted, but we´re not even at the stage where I´ll be trying it at my phone yet.

PS: Mounting via shell is possible, but I couldn´t get this to work till I installed busybox. Also, for password protected shares, you´ll need to add the unc path.

Example:

busybox mount -o unc=\\\\192.168.178.11\\Movies,user=username,pass=password -t cifs none /storage/sdcard1/cifs/Movies

Doing this in Mount Manager is easy. Do what you would do anyway with setting the remote and local dirs, and add an option with "custom" where for the option name you type "unc" and the value will be "\\\\192.168.178.11\\Movies"

PPS: I figured that you get alot of glitches for VR videos (2880x1440) when using cifs, and I´m on a wifi with 160 Mbps here. I finally made it into getting NFS to work, and that works!

Here´s how:

Make sure you´ve turned root permissions on for adb and apps on the phone and adb into your phone, then:

su

setenforce permissive

insmod sunrpc.ko

insmod lockd.ko

insmod nfs_acl.ko

insmod nfs.ko

For the insmods, you need to point to where they are stored on your phone, obviously.

Now you can (example)

busybox mount -t nfs 192.168.178.11:/VR /storage/sdcard1/mnt/VR -o nfsvers=3,noatime,hard,nolock,rsize=65536,wsize=65536,udp,intr,async,ro

You´ll now have access to VR through /storage/sdcard1/mnt/VR!!

I tried this on both the 5ghz 160 (-200, depending on how close I am to the router) and on a powerline wifi giving me around 35 Mbit speed.

The last one did not work well, so you really need alot of speed.

One thing I struggled with was that I had stuttering after 4-5 minutes getting worse and worse. I found out that in developer options you can switch on awesomeplayer instead of the default one, which solves that problem.

I also found out that D855 (LG G3) is not a 2560x1440 (as it says in the specs) but 3200 x 1600 phone - under the screen settings, you can set the DPI to 640 and it works fine. Yes, this is really true - find a dpi calculator and check it out! I may be mistaken of course, let me know in that case. This gives you almost 39 % more pixel density, so alot more realism!

Have fun, and remember that all the things that are easy to google, setting up ubuntu, finding cyanogenmod stuff, compiling etc is not mentioned here because this is not where you´ll hit your head against the wall. The things I´ve described are those where you really need to be spending time, as the information is rare and device specific since not that many people are dying to connect to an nfs server from android, and even less want to stream UHD clips to the phone :)

Btw, I´m using the app VRTV since it can be setup to be used with a cheap game pad that I got from aliexpress for EUR 8, so that you don´t need to take off your headset for anything - you can just fast forward, skip to next clip, adjust volume, recalibrate etc. from the game pad.

For headset I´m using one with the highest FOV outthere. It´s the Bobovr Z4, that´s very comfy to wear and even has builtin headphones. I got it for around 25 EUR, also on aliexpress.

If I did not already mention it, I use hanewin under win 10 for nfs server.

One very last thing: Your screen is going to dim after a few minutes, especially when inside a VR headset. This is due to LG´s very ungenerous threshold for when the phone is considered hot, and they´ve decided that the screen should be dimmed to keep it from going too hot. I tried various things.. an app called Lux, another one called Stay Awake, an app solely ment for getting rid of this behavour, and looked for ways to get inside of LG´s own hidden menu where you can get rid of the throttling.

None of it worked - the last two options related to that I´m not using a stockrom here.

Well, I´m happy to use cyanogenmod because the phone is much cooler with that, but since the phone´s so picky with what´s considered hot, it´s still a problem.

I found out that you can edit thermanager.xml in system/etc where you wanna set all values for backlight to 255. Make it look like this:

<control name="backlight">

<mitigation level="off"><value resource="backlight">255</value></mitigation>

<mitigation level="1"><value resource="backlight">255</value></mitigation>

<mitigation level="2"><value resource="backlight">255</value></mitigation>

<mitigation level="3"><value resource="backlight">255</value></mitigation>

<mitigation level="4"><value resource="backlight">255</value></mitigation>

<mitigation level="5"><value resource="backlight">255</value></mitigation>

<mitigation level="6"><value resource="backlight">255</value></mitigation>

<mitigation level="7"><value resource="backlight">255</value></mitigation>

<mitigation level="8"><value resource="backlight">255</value></mitigation>

<mitigation level="9"><value resource="backlight">255</value></mitigation>

And then reboot. I did a test for 20 mins playing a 180/SBS/2880x1440 video, and brightness is still where it should be - at the max!

In my temp monitor, the system temp is 47 C, so that´s fine. Back when I´d be using Marshmellow stock rom, the phone would shut down itself after 15 mins of doing the above at about 57 C.

Now, I cannot guarantee that this, or anything else suggested in this post will not damage your phone. If you want to be 100 % sure of no damages caused by any of this, simply don´t do any of it. IF you do it, it´s your own responsibility. None of this was tested for 3 months on 100000 phones, so I really can´t tell.

G3 is a great choice for a VR experience, since you can get it for EUR 270 - cheaper than any other phone with that resolution. I got mine for EUR 100 second hand, so as an alternative to GearVR, this is a very cheap way of achieving the same.