Bluetooth data: how to handle these data?
I cannot understand the relation between the air and the lenght: in the second example the response is 13 char but the lenght is 11. Why?


The hex numbers may be one or two digits long.  The way the values are being printed does not enable you to discern between 1 2 3, 12 3 and 1 23. Try this:

for(int i = 0; i &lt; 255; i++)
{
  Serial.print(info.eir[i], HEX);
  Serial.print(" ");
}


(Someone already told you this.)




  How can I parse the eir to obtain all the data? For example the name of the device and the manufacturer data?


This works for the only example of the data you have given.  If I have guessed correctly how further data will follow, it'll work for them too.  (If I haven't, it won't.)  I have assumed that the name always starts in the same place, ends with a space, three bytes of stuff we don't care about, and that the data is groups of 8 bytes.  It's very likely that some of the other bytes give details of the data to follow, but with only one example and no spec, it's basically impossible to tell.

// Let's assume the sensor name always starts at element 5...
char *sensorName = &amp;(info.eir[5]);
// ...and ends on a 0x20 (space) - which is probably a risky assumption
char *end = strchr(sensorName, ' ');
if (end) 
{
    *end = '\0';
    // Sensor name is now in sensorName

    // Let's assume the data starts exactly 4 bytes after the end of the name
    uint8_t *dataItemStart = (uint8_t*)(end + 3);
    uint8_t *dataEnd = info.eir + info.eir_len - 1;
    while(dataItemStart &lt; dataEnd)
    {
        // We have a data item here, as 'dataItemStart'.
        // You can get bytes within it using, for example
        //   dataItemStart[5]
        // to get the 6th item (the 00 or 02 in your examples)

        // Each data item is 8 bytes long, so the next one starts 8 bytes later 
        dataItemStart += 8;
    }
}