Accelerometer calibration works on Unity Remote, but not on device after build..

Here is the code I am using, to determine initial position of the phone in space y,x and then get new position, calculate the difference and move the object x,y based on this information.

While using a remote I can hold my phone on 45 degree angle and it will use it as a starting point with this code, so 0 degrees will be full forward 90 back.

After building it and using it on a phone its fails to initialize for unknown reason and using 0 for neutral -45 for forward +45 for backward, not sure if I am missing something or its a bug.

Any thoughts/input/suggestions are appreciated, thank you for taking the time to reply.

function Start()
    dirInit.y = Input.acceleration.y;
    dirInit.x = Input.acceleration.x;
function Update ()
    dir.y = Input.acceleration.y;
    dir.x = Input.acceleration.x;
    transform.Translate (dir * speed * Time.deltaTime,Space.World);
    clampedPosition = transform.position;
    clampedPosition.y = Mathf.Clamp( clampedPosition.y, -6, 2.0);
    clampedPosition.x = Mathf.Clamp( clampedPosition.x, -9.3, 9.3);
    transform.position = clampedPosition;

The issue is on device the accelerometer is not registered until after onStart for some reason.

    -> registered unity classes
-> registered mono modules
-> applicationDidFinishLaunching()

End Load File completely

-> applicationDidBecomeActive()

awake begin
awake end

start begin 
start end

-> force accelerometer registration


The only way to get around this that I have found is by doing it like this:

var hasInt : boolean = false;
        function Update(){
         dirInit.y = Input.acceleration.y;
         dirInit.x = Input.acceleration.x;
         hasInt = true;
    //continue code