You don't need to calibrate a light sensor in this case (even if your using the graphics software). If you put the motors to move unlimited amount in a condition, it will stop if the condition is removed (or the other way), and that what i understood from the sentence "So really the problem ... sensor does turn on". What i understood is that you didnt use the light sensor values in the program ( you just put "light sensor" and then move, i think ) so first of all , you need to know exactly what is your target. if it is to stop at the black line: move unlimited until intensity is darker than 30 (for example)
and this may help you. I suppose you're using graphics software (NXT-G) so i'll say what blocks u should put if u want to do what i just said: a loop which stops with a light sensor (intensity lower than 30), and in the loop a motor block (unlimited, forward, motors (A,b,c)). I dont know what to write if you're using codes program such as NXC, im still learning it.
Hope i helped you
B2O productions are the best for the best.