Bluetooth analysis (see issue)
Tools used:
- Logcat traces
- HCI snoop debug traces on the phones
- Bluetooth sniffer device (TI CC1352R1 dev kit)
- Nordic nRF Connect app
The devices analyzed are:
- Google Pixel4 (Bluetooth 5.0), LineageOS 17.1, SwissCovid app bundled with microG EN libraries (v0.2.13.203915)
- Sony Z3 (Bluetooth 4.0), LineageOS 17.1, SwissCovid app bundled with microG EN libraries (v0.2.13.203915)
Every 10 minutes, aligned on a 10-minute boundary:
LE RandLE Set Extended Advertising Parametershandle 0, legacy PDUs, ADV_NONCONN_IND, interval 250-281.25 msec, channels 37,38,39, random device addressLE Set Advertising Set Random Addresshandle 0LE Set Extended Advertising Datahandle 0LE Set Extended Scan Response Datahandle 0LE Set Extended Advertising Enablehandle 0, on [10min]LE Set Extended Advertising Enablehandle 0, offLE Remove Advertising Sethandle 0
LE RandLE Set Advertising ParametersADV_NONCONN_IND, interval 250-281.25 msec, channels 37,38,39, random device addressLE Set Random AddressLE Set Advertising DataLE Set Scan Response DataLE Set Advertise Enableon [10min]LE Set Advertise Enableoff
Every 3 minutes (not aligned):
- Vendor command 0x0157 (4x)
LE Set Extended Scan Parametersactive, random device address, accept all adv (except direct not addressed here)LE Set Extended Scan EnableonLE Set Extended Scan EnableoffLE Set Extended Scan Parametersactive, random device address, accept all adv (except direct not addressed here)LE Set Extended Scan Parametersactive, random device address, accept all adv (except direct not addressed here)LE Set Extended Scan Enableon [20s]LE Set Extended Scan Enableoff
LE Set Scan Parametersactive, random device address, accept all adv (except direct not addressed here)LE Set Scan EnableonLE Set Scan EnableoffLE Set Scan Parametersactive, random device address, accept all adv (except direct not addressed here)LE Set Scan Parametersactive, random device address, accept all adv (except direct not addressed here)LE Set Scan Enableon [20s]LE Set Scan Enableoff
LE Meta -- LE Extended Advertising Report legacy, ADV_NONCONN_IND, random device address,
LE Meta -- LE Advertising Report ADV_NONCONN_IND, random device address,
Interval distribution over an RPI value (10 min):
mean: 287.21ms, median: 286,25ms
mean: 287.80ms, median: 286.26ms
Every 15 minutes (not aligned):
LE Set Random Address
LE Set Random Address
NOTE: On the Z3, this has the effect of also changing the advertising random address in the middle of a 10-minute RPI cycle, without changing the RPI. This is probably due to it having an older Bluetooth HW and using legacy commands, which do not distinguish between setting the random address for advertising and for scanning.
- The same BD address used with different advertised RPIs was never observed.
- The same RPI value advertised with two different BD addresses was observed on the Z3, as indicated in the previous note.
In other words, whenever the RPI changes, the BD address changes as well, on both devices. On the Z3 however, sometimes the BD address will change while broadcasting a given RPI.
This behaviour is expected from GAEN as well.