Showing results for 
Search instead for 
Did you mean: 

VL53L1 Ranging instability in strong ambient light

Associate II


I'm trying to use multiple VL53L1X sensors to detect objects. I successfully interfaced them with a Raspberry Pi 4B, and tried to tune a bunch of parameters to get good detection.

When the sensors point to an object, within the sensor range (0.4 - 4.0 m), the detection is quite accurate, with small fluctuations in the detection (2 - 4 cm). However, I'm facing a problem when operating in strong ambient light environments, and especially when the sensor is pointing to the infinite (i.e the object is farther than 4.0 m). The detection here is really unstable, and vary a lot (sometimes 1m difference between two ranges). That makes it really hard to exploit.

I tried different distance modes, especially the short distance mode, which should be the less sensible to the ambient light, according to the documentation. However, I can still observe instabilities. Then I tried to set a different Timing Budget value, and set it to 20 ms, 33 ms, 100 ms, without observing any noticeable change.

I am wondering if adding a cover glass, like this one: would help, as it seems that software tuning doesn't have any significant impact... or maybe I'm missing something.

If you have any suggestion, that would really help!

Many thanks,



did you see the limited range in strong light in the datasheet ? attached

maybe your project budget is too tight for an upgrade,

but I would suggest that you look at the intel realsense products.

82635DSD455 (indoors and outdoors) 9M range

and look at the LiDar too, (indoor only) L515

the DS435 and DS415 are cheaper but the range is less to far less

Associate II

Hi, and thanks for your answer @Community member​!

Yes, I know that the range is limited in strong light. But I don't want to detect anything farther than 1-2 m, maybe this was unclear in my initial question. When I said pointing to the infinite, I would rather say that not aiming to detect any object, just ranging to the infinite. The range should be stable, and at the maximum value, ie something around 3-4 m, am I right? The final objective is to develop an algorithm that detects an obstacle, so let's say if there is something detected at 1m, the robot should stop. The problem is that when there's nothing detected (pointing to the infinite) the range is so unstable it can says there is something at 1m, causing the robot to stop, for nothing...

I tried another solution: I tilted the sensor to make it see the ground, at 1.5m. The ground is some grey concrete. The sensor can detect it, but the problem is the same: the range is really unstable.

It really seems that the range stability depends on the material it reflects on: if I try the same experiment, pointing to the ground at around 1.5m, and there is a white wall close from it, at around 2m, here the ground is well detected at 1.5m and the output range is stable.

Thanks for the suggestion about the Realsenses, but the aim is really to qualify the possibility to use the ST sensors 😉


ST Employee


The cover-glass won't help. Adding some convergent lens will certainly help but it will modify the optical characteristic of the sensor and also the laser class 1 will no more be guaranteed.

In outdoor under high ambient sun light the device can range maximum ~30 cm.  The short ranging mode is better than the long mode under ambient but will not make a miracle.  Julien

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.

Hi Julien,

Thanks for your comments! Indeed I did change the ranging mode from long to short, as you suggested, and detection seem more accurate.

By the way, I did a simple test by reading the RangeStatus info each time a data is received, and it kind of solved my problem. In fact, each time the problem occurs (false detection and oscillations), the range status is "Signal_Fail". So what I did is check whether or not the range status is "Ok" ("Range_valid") before publishing the range message; however it is dismissed. I forgot this aspect from the API...

And now, the detection is correct, and I don't have this issue anymore.

Cheers. Thibaud

Hi Thibaud

I'm having a similar problem ranging in daylight with a raspberry pi. What language and module did you use?