Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BSEC Timing problem

    BSEC Timing problem

    Established Member


    Why does it take the BSEC 5 minutes (exactly) to start to produce valid IAQ signals, and is there a way to speed that up?

    Here's what output_ready produces every time:


    output_ready [284.354675]: timestamp_NS=284354687000, bsec_status=0, iaq=25.00, iaq_accuracy=0
    output_ready [287.576751]: timestamp_NS=287576750000, bsec_status=0, iaq=25.00, iaq_accuracy=0
    output_ready [290.797851]: timestamp_NS=290797843000, bsec_status=0, iaq=25.00, iaq_accuracy=0
    output_ready [294.019897]: timestamp_NS=294019906000, bsec_status=0, iaq=25.00, iaq_accuracy=0
    output_ready [297.241973]: timestamp_NS=297241968000, bsec_status=0, iaq=25.00, iaq_accuracy=0
    output_ready [300.463073]: timestamp_NS=300463062000, bsec_status=0, iaq=25.00, iaq_accuracy=1
    output_ready [303.685119]: timestamp_NS=303685125000, bsec_status=0, iaq=21.78, iaq_accuracy=1
    output_ready [306.907196]: timestamp_NS=306907187000, bsec_status=0, iaq=23.73, iaq_accuracy=1
    output_ready [310.129241]: timestamp_NS=310129250000, bsec_status=0, iaq=23.23, iaq_accuracy=1
    output_ready [313.351318]: timestamp_NS=313351312000, bsec_status=0, iaq=25.88, iaq_accuracy=1


    The sample rate is BSEC_SAMPLE_RATE_LP.



    void output_ready(int64_t timestamp_ns, float iaq, uint8_t iaq_accuracy, float temperature, float humidity, float pressure, float raw_temperature, float raw_humidity, float raw_gas, bsec_library_return_t bsec_status, float static_iaq, float co2_equivalent, float breath_voc_equivalent)
    	float timestamp_sec = timestamp_ns / 1000000000.0;
    	printf("output_ready [%1.6f]: timestamp_NS=%lld, bsec_status=%d, iaq=%1.2f, iaq_accuracy=%d\n", timestamp_sec, timestamp_ns, bsec_status, iaq, iaq_accuracy);


    5 REPLIES 5

    BME680 is a chemical sensor that operates at 300+ degrees celsius. When the sensor is powered on, it takes some time for an equilibrium to be reached with the surrounding air.

    Data is filtered gradually for the first 5 minutes between the value in the saved state (or 25, if there is no save state) and the current reading.

    Data can still be used during this run-in period, relative changes will still affect the output signal.


    Established Member

    Thanks o_o.

    With such an important piece of information as a 5 to 25 minute delay in the IAQ, I wonder why this isn't documented in the BSEC Integration Guide nor anywhere else I've read. Hmmm....

    A more important question is: The data changes you are speaking about is not the IAQ data, right? Because that doesn't change for 5 (or 25) minutes. Are you speaking about the raw values that DO seem to change right after startup? The direct hardware sensor registers, not software data coming out of the BSEC?

    I assume there is no way to have the BSEC start outputting the IAQ right away after a power up, right?

    Thanks for the info!

    Hi Kevyk,

    I believe that you misread my previous post. The IAQ is 25 if there is no save state, (not 25 minutes).

    Since 25 IAQ is the lower bound already, this explains why you see a constant value. However even during this run-in period, the IAQ output can still be used. Try placing a dry-erase marker or use hand sanitizer close to the sensor and you will still see an IAQ increase. In normal use, IAQ will vary from 25 to 250 each day.

    The integration guide does document the BSEC_OUTPUT_RUN_IN_STATUS output which can be used to discriminated the data from the BSEC library.

    "I assume there is no way to have the BSEC start outputting the IAQ right away after a power up, right?"
    As explained above, this run-in effect is the result of the metal oxide sensor technology itself. The same is true for other similar gas sensors, such as exhaust gas sensors in internal combustion engine which need to be heated before the data can be used.
    There is still however a data output (albeit with limited sensitivity) that can still be used to detect rapid changes in the VOCs.


    Established Member

    Ah, OK. Things are slowly coming into focus for me. Thanks!

    After the run-in period, when I breath on the sensor the IAQ will jump to 500. You mentioned that the IAQ reading can still change even during the run-in period however when I breath on it during the run in period I don't see any change in the IAQ (stays at 25) until after the 5 minutes - then it tracks my breath accordingly. I tried hand sanitizer too and same result during the run-in period - no change at all. However the raw_gas value does change dramatically when breathing on it even during the run-in. So could it be that there is indeed no movement in the IAQ during run-in? Does it need to be enabled during run-in? Or maybe I'm missing something.

    Thanks again!