mirror of
https://github.com/kavishdevar/librepods.git
synced 2026-02-01 15:49:10 +00:00
commit before letting the llm edit the code
This commit is contained in:
@@ -15,7 +15,9 @@
|
||||
android:name="android.permission.BLUETOOTH_ADMIN"
|
||||
tools:ignore="ProtectedPermissions" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"
|
||||
android:usesPermissionFlags="neverForLocation"
|
||||
tools:ignore="UnusedAttribute" />
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||
|
||||
@@ -74,10 +74,10 @@ class CustomDevice : ComponentActivity() {
|
||||
HiddenApiBypass.addHiddenApiExemptions("Landroid/bluetooth/BluetoothSocket;")
|
||||
val manager = getSystemService(BLUETOOTH_SERVICE) as BluetoothManager
|
||||
// val device: BluetoothDevice = manager.adapter.getRemoteDevice("EC:D6:F4:3D:89:B8")
|
||||
val device: BluetoothDevice = manager.adapter.getRemoteDevice("DE:F4:C6:A3:CD:7A")
|
||||
val device: BluetoothDevice = manager.adapter.getRemoteDevice("E7:48:92:3B:7D:A5")
|
||||
// val socket = device.createInsecureL2capChannel(31)
|
||||
|
||||
val batteryLevel = remember { mutableStateOf("") }
|
||||
// val batteryLevel = remember { mutableStateOf("") }
|
||||
// socket.outputStream.write(byteArrayOf(0x12,0x3B,0x00,0x02, 0x00))
|
||||
// socket.outputStream.write(byteArrayOf(0x12, 0x3A, 0x00, 0x01, 0x00, 0x08,0x01))
|
||||
|
||||
@@ -140,11 +140,10 @@ class CustomDevice : ComponentActivity() {
|
||||
}
|
||||
|
||||
Button(onClick = {
|
||||
// val characteristicUuid = "4f860002-943b-49ef-bed4-2f730304427a"
|
||||
// val value = byteArrayOf(0x01, 0x00, 0x02)
|
||||
|
||||
// sendWriteRequest(gatt, characteristicUuid, value)
|
||||
|
||||
val characteristicUuid = "94110001-6D9B-4225-A4F1-6A4A7F01B0DE"
|
||||
val value = byteArrayOf(0x01, 0x00, 0x00, 0x00, 0x00 ,0x00 ,0x01)
|
||||
sendWriteRequest(gatt, characteristicUuid, value)
|
||||
|
||||
}) {
|
||||
Text("batteryLevel.value")
|
||||
}
|
||||
|
||||
@@ -62,6 +62,7 @@ import me.kavishdevar.aln.screens.RenameScreen
|
||||
import me.kavishdevar.aln.services.AirPodsService
|
||||
import me.kavishdevar.aln.ui.theme.ALNTheme
|
||||
import me.kavishdevar.aln.utils.AirPodsNotifications
|
||||
import me.kavishdevar.aln.utils.CrossDevice
|
||||
|
||||
lateinit var serviceConnection: ServiceConnection
|
||||
lateinit var connectionStatusReceiver: BroadcastReceiver
|
||||
@@ -119,13 +120,14 @@ class MainActivity : ComponentActivity() {
|
||||
@Composable
|
||||
fun Main() {
|
||||
val isConnected = remember { mutableStateOf(false) }
|
||||
val isRemotelyConnected = remember { mutableStateOf(false) }
|
||||
val permissionState = rememberMultiplePermissionsState(
|
||||
permissions = listOf(
|
||||
"android.permission.BLUETOOTH_CONNECT",
|
||||
"android.permission.BLUETOOTH_SCAN",
|
||||
"android.permission.POST_NOTIFICATIONS"
|
||||
)
|
||||
)
|
||||
|
||||
val airPodsService = remember { mutableStateOf<AirPodsService?>(null) }
|
||||
if (permissionState.allPermissionsGranted) {
|
||||
val context = LocalContext.current
|
||||
@@ -139,6 +141,7 @@ fun Main() {
|
||||
}
|
||||
else if (intent.action == AirPodsNotifications.AIRPODS_DISCONNECTED) {
|
||||
Log.d("MainActivity", "AirPods Disconnected intent received")
|
||||
isRemotelyConnected.value = CrossDevice.isAvailable
|
||||
isConnected.value = false
|
||||
}
|
||||
}
|
||||
@@ -172,7 +175,8 @@ fun Main() {
|
||||
dev = airPodsService.value?.device,
|
||||
service = airPodsService.value!!,
|
||||
navController = navController,
|
||||
isConnected = isConnected.value
|
||||
isConnected = isConnected.value,
|
||||
isRemotelyConnected = isRemotelyConnected.value
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -208,7 +212,7 @@ fun Main() {
|
||||
|
||||
context.bindService(Intent(context, AirPodsService::class.java), serviceConnection, Context.BIND_AUTO_CREATE)
|
||||
|
||||
if (airPodsService.value?.isConnected == true) {
|
||||
if (airPodsService.value?.isConnectedLocally == true) {
|
||||
isConnected.value = true
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -91,7 +91,7 @@ import me.kavishdevar.aln.utils.AirPodsNotifications
|
||||
@SuppressLint("MissingPermission")
|
||||
@Composable
|
||||
fun AirPodsSettingsScreen(dev: BluetoothDevice?, service: AirPodsService,
|
||||
navController: NavController, isConnected: Boolean) {
|
||||
navController: NavController, isConnected: Boolean, isRemotelyConnected: Boolean) {
|
||||
val sharedPreferences = LocalContext.current.getSharedPreferences("settings", MODE_PRIVATE)
|
||||
var device by remember { mutableStateOf(dev) }
|
||||
var deviceName by remember {
|
||||
@@ -187,7 +187,7 @@ fun AirPodsSettingsScreen(dev: BluetoothDevice?, service: AirPodsService,
|
||||
)
|
||||
}
|
||||
) { paddingValues ->
|
||||
if (isConnected == true) {
|
||||
if (isConnected == true || isRemotelyConnected == true) {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.haze(hazeState)
|
||||
@@ -308,7 +308,7 @@ fun AirPodsSettingsScreenPreview() {
|
||||
ALNTheme (
|
||||
darkTheme = true
|
||||
) {
|
||||
AirPodsSettingsScreen(dev = null, service = AirPodsService(), navController = rememberNavController(), isConnected = true)
|
||||
AirPodsSettingsScreen(dev = null, service = AirPodsService(), navController = rememberNavController(), isConnected = true, isRemotelyConnected = false)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -48,7 +48,7 @@ class AirPodsQSService: TileService() {
|
||||
qsTile.state = Tile.STATE_UNAVAILABLE
|
||||
qsTile.updateTile()
|
||||
}
|
||||
if (ServiceManager.getService()?.isConnected == true) {
|
||||
if (ServiceManager.getService()?.isConnectedLocally == true) {
|
||||
qsTile.state = Tile.STATE_ACTIVE
|
||||
qsTile.updateTile()
|
||||
}
|
||||
@@ -89,7 +89,7 @@ class AirPodsQSService: TileService() {
|
||||
IntentFilter(AirPodsNotifications.Companion.ANC_DATA)
|
||||
)
|
||||
}
|
||||
qsTile.state = if (ServiceManager.getService()?.isConnected == true) Tile.STATE_ACTIVE else Tile.STATE_UNAVAILABLE
|
||||
qsTile.state = if (ServiceManager.getService()?.isConnectedLocally == true) Tile.STATE_ACTIVE else Tile.STATE_UNAVAILABLE
|
||||
val ancIndex = ServiceManager.getService()?.getANC()
|
||||
currentModeIndex = if (ancIndex != null) { if (ancIndex == 2) 0 else if (ancIndex == 3) 1 else if (ancIndex == 4) 2 else 2 } else 0
|
||||
updateTile()
|
||||
|
||||
@@ -24,10 +24,15 @@ import android.app.NotificationChannel
|
||||
import android.app.NotificationManager
|
||||
import android.app.Service
|
||||
import android.appwidget.AppWidgetManager
|
||||
import android.bluetooth.BluetoothAdapter
|
||||
import android.bluetooth.BluetoothDevice
|
||||
import android.bluetooth.BluetoothManager
|
||||
import android.bluetooth.BluetoothProfile
|
||||
import android.bluetooth.BluetoothSocket
|
||||
import android.bluetooth.le.ScanCallback
|
||||
import android.bluetooth.le.ScanFilter
|
||||
import android.bluetooth.le.ScanResult
|
||||
import android.bluetooth.le.ScanSettings
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.ComponentName
|
||||
import android.content.Context
|
||||
@@ -46,7 +51,10 @@ import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.core.app.NotificationCompat
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.channels.awaitClose
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.callbackFlow
|
||||
import kotlinx.coroutines.launch
|
||||
import me.kavishdevar.aln.BatteryWidget
|
||||
import me.kavishdevar.aln.MainActivity
|
||||
@@ -55,11 +63,13 @@ import me.kavishdevar.aln.utils.AirPodsNotifications
|
||||
import me.kavishdevar.aln.utils.Battery
|
||||
import me.kavishdevar.aln.utils.BatteryComponent
|
||||
import me.kavishdevar.aln.utils.BatteryStatus
|
||||
import me.kavishdevar.aln.utils.CrossDevice
|
||||
import me.kavishdevar.aln.utils.Enums
|
||||
import me.kavishdevar.aln.utils.LongPressPackets
|
||||
import me.kavishdevar.aln.utils.MediaController
|
||||
import me.kavishdevar.aln.utils.Window
|
||||
import org.lsposed.hiddenapibypass.HiddenApiBypass
|
||||
import java.io.OutputStream
|
||||
|
||||
object ServiceManager {
|
||||
private var service: AirPodsService? = null
|
||||
@@ -88,6 +98,7 @@ object ServiceManager {
|
||||
|
||||
//@Suppress("unused")
|
||||
class AirPodsService: Service() {
|
||||
private var macAddress = ""
|
||||
inner class LocalBinder : Binder() {
|
||||
fun getService(): AirPodsService = this@AirPodsService
|
||||
}
|
||||
@@ -107,6 +118,30 @@ class AirPodsService: Service() {
|
||||
popupShown = true
|
||||
}
|
||||
|
||||
private fun handleMessage(message: String, outputStream: OutputStream) {
|
||||
when (message) {
|
||||
"PAUSE_MEDIA" -> MediaController.sendPause()
|
||||
"PLAY_MEDIA" -> MediaController.sendPlay()
|
||||
"CONNECT_AIRPODS" -> connectToAirPods()
|
||||
"DISCONNECT_AIRPODS" -> disconnectFromAirPods()
|
||||
else -> {
|
||||
forwardPacket(message, outputStream)
|
||||
}
|
||||
}
|
||||
}
|
||||
private fun forwardPacket(packet: String, outputStream: OutputStream) {
|
||||
outputStream.write(packet.toByteArray())
|
||||
}
|
||||
|
||||
private fun connectToAirPods() {
|
||||
Log.d("AirPodsQuickSwitchService", "Should connect to AirPods now.")
|
||||
}
|
||||
|
||||
private fun disconnectFromAirPods() {
|
||||
Log.d("AirPodsQuickSwitchService", "Should disconnect from AirPods now.")
|
||||
}
|
||||
|
||||
|
||||
@Suppress("ClassName")
|
||||
private object bluetoothReceiver: BroadcastReceiver() {
|
||||
@SuppressLint("MissingPermission")
|
||||
@@ -123,7 +158,7 @@ class AirPodsService: Service() {
|
||||
if (bluetoothDevice != null && action != null && !action.isEmpty()) {
|
||||
Log.d("AirPodsService", "Received bluetooth connection broadcast")
|
||||
if (BluetoothDevice.ACTION_ACL_CONNECTED == action) {
|
||||
if (ServiceManager.getService()?.isConnected == true) {
|
||||
if (ServiceManager.getService()?.isConnectedLocally == true) {
|
||||
ServiceManager.getService()?.manuallyCheckForAudioSource()
|
||||
return
|
||||
}
|
||||
@@ -139,11 +174,47 @@ class AirPodsService: Service() {
|
||||
}
|
||||
}
|
||||
|
||||
var isConnected = false
|
||||
var isConnectedLocally = false
|
||||
var device: BluetoothDevice? = null
|
||||
|
||||
private lateinit var earReceiver: BroadcastReceiver
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
fun scanForAirPods(bluetoothAdapter: BluetoothAdapter): Flow<List<ScanResult>> = callbackFlow {
|
||||
val bluetoothLeScanner = bluetoothAdapter.bluetoothLeScanner
|
||||
?: throw IllegalStateException("Bluetooth adapter unavailable")
|
||||
|
||||
val scanCallback = object : ScanCallback() {
|
||||
override fun onScanResult(callbackType: Int, result: ScanResult) {
|
||||
if (result.device != null) {
|
||||
trySend(listOf(result))
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBatchScanResults(results: List<ScanResult>) {
|
||||
trySend(results)
|
||||
}
|
||||
|
||||
override fun onScanFailed(errorCode: Int) {
|
||||
close(Exception("Scan failed with error: $errorCode"))
|
||||
}
|
||||
}
|
||||
|
||||
val scanSettings = ScanSettings.Builder()
|
||||
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
|
||||
.build()
|
||||
|
||||
val scanFilters = listOf<ScanFilter>(
|
||||
ScanFilter.Builder()
|
||||
.setManufacturerData(0x004C, byteArrayOf())
|
||||
.build()
|
||||
)
|
||||
|
||||
bluetoothLeScanner.startScan(scanFilters, scanSettings, scanCallback)
|
||||
awaitClose { bluetoothLeScanner.stopScan(scanCallback) }
|
||||
}
|
||||
|
||||
|
||||
fun startForegroundNotification() {
|
||||
val notificationChannel = NotificationChannel(
|
||||
"background_service_status",
|
||||
@@ -261,6 +332,11 @@ class AirPodsService: Service() {
|
||||
Log.d("AirPodsService", "Service started")
|
||||
ServiceManager.setService(this)
|
||||
startForegroundNotification()
|
||||
|
||||
Log.d("AirPodsService", "Initializing CrossDevice")
|
||||
CrossDevice.init(this)
|
||||
Log.d("AirPodsService", "CrossDevice initialized")
|
||||
|
||||
val serviceIntentFilter = IntentFilter().apply {
|
||||
addAction("android.bluetooth.device.action.ACL_CONNECTED")
|
||||
addAction("android.bluetooth.device.action.ACL_DISCONNECTED")
|
||||
@@ -294,14 +370,19 @@ class AirPodsService: Service() {
|
||||
this@AirPodsService.getSharedPreferences("settings", MODE_PRIVATE).edit()
|
||||
.putString("name", name).apply()
|
||||
}
|
||||
Log.d("AirPodsService", "$name connected")
|
||||
showPopup(this@AirPodsService, name.toString())
|
||||
connectToSocket(device!!)
|
||||
updateNotificationContent(true, name.toString(), batteryNotification.getBattery())
|
||||
Log.d("AirPodsQuickSwitchServices", CrossDevice.isAvailable.toString())
|
||||
if (!CrossDevice.isAvailable) {
|
||||
Log.d("AirPodsService", "$name connected")
|
||||
showPopup(this@AirPodsService, name.toString())
|
||||
connectToSocket(device!!)
|
||||
isConnectedLocally = true
|
||||
macAddress = device!!.address
|
||||
updateNotificationContent(true, name.toString(), batteryNotification.getBattery())
|
||||
}
|
||||
}
|
||||
else if (intent?.action == AirPodsNotifications.Companion.AIRPODS_DISCONNECTED) {
|
||||
device = null
|
||||
isConnected = false
|
||||
isConnectedLocally = false
|
||||
popupShown = false
|
||||
updateNotificationContent(false)
|
||||
}
|
||||
@@ -319,6 +400,28 @@ class AirPodsService: Service() {
|
||||
}
|
||||
|
||||
val bluetoothAdapter = getSystemService(BluetoothManager::class.java).adapter
|
||||
if (bluetoothAdapter.isEnabled) {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
var lastData = byteArrayOf()
|
||||
scanForAirPods(bluetoothAdapter).collect { scanResults ->
|
||||
scanResults.forEach { scanResult ->
|
||||
val device = scanResult.device
|
||||
device.fetchUuidsWithSdp()
|
||||
val manufacturerData = scanResult.scanRecord?.manufacturerSpecificData?.get(0x004C)
|
||||
if (manufacturerData != null && manufacturerData != lastData) {
|
||||
lastData = manufacturerData
|
||||
val formattedHex = manufacturerData.joinToString(" ") { "%02X".format(it) }
|
||||
val rssi = scanResult.rssi
|
||||
Log.d(
|
||||
"AirPodsBLEService",
|
||||
"Received broadcast of size ${manufacturerData.size} from ${device.address} | $rssi | $formattedHex"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bluetoothAdapter.bondedDevices.forEach { device ->
|
||||
device.fetchUuidsWithSdp()
|
||||
if (device.uuids != null)
|
||||
@@ -331,7 +434,9 @@ class AirPodsService: Service() {
|
||||
if (profile == BluetoothProfile.A2DP) {
|
||||
val connectedDevices = proxy.connectedDevices
|
||||
if (connectedDevices.isNotEmpty()) {
|
||||
connectToSocket(device)
|
||||
if (!CrossDevice.isAvailable) {
|
||||
connectToSocket(device)
|
||||
}
|
||||
this@AirPodsService.sendBroadcast(
|
||||
Intent(AirPodsNotifications.Companion.AIRPODS_CONNECTED)
|
||||
)
|
||||
@@ -365,7 +470,7 @@ class AirPodsService: Service() {
|
||||
HiddenApiBypass.addHiddenApiExemptions("Landroid/bluetooth/BluetoothSocket;")
|
||||
val uuid: ParcelUuid = ParcelUuid.fromString("74ec2172-0bad-4d01-8f77-997b2be0722a")
|
||||
|
||||
if (isConnected != true) {
|
||||
if (isConnectedLocally != true) {
|
||||
try {
|
||||
socket = HiddenApiBypass.newInstance(
|
||||
BluetoothSocket::class.java,
|
||||
@@ -401,7 +506,7 @@ class AirPodsService: Service() {
|
||||
try {
|
||||
socket.connect()
|
||||
this@AirPodsService.device = device
|
||||
isConnected = true
|
||||
isConnectedLocally = true
|
||||
socket.let { it ->
|
||||
// sometimes doesn't work ;-;
|
||||
// i though i move it to the coroutine
|
||||
@@ -437,7 +542,6 @@ class AirPodsService: Service() {
|
||||
Intent(AirPodsNotifications.Companion.AIRPODS_CONNECTED)
|
||||
.putExtra("device", device)
|
||||
)
|
||||
|
||||
while (socket.isConnected == true) {
|
||||
socket.let {
|
||||
val audioManager =
|
||||
@@ -453,6 +557,7 @@ class AirPodsService: Service() {
|
||||
})
|
||||
val bytes = buffer.copyOfRange(0, bytesRead)
|
||||
val formattedHex = bytes.joinToString(" ") { "%02X".format(it) }
|
||||
CrossDevice.sendReceivedPacket(bytes)
|
||||
Log.d("AirPods Data", "Data received: $formattedHex")
|
||||
} else if (bytesRead == -1) {
|
||||
Log.d("AirPods Service", "Socket closed (bytesRead = -1)")
|
||||
@@ -565,15 +670,11 @@ class AirPodsService: Service() {
|
||||
if (inEar == true) {
|
||||
if (!justEnabledA2dp) {
|
||||
justEnabledA2dp = false
|
||||
// if (audioManager.activePlaybackConfigurations.any { it.audioDeviceInfo?.address == device.address }) {
|
||||
MediaController.sendPlay()
|
||||
MediaController.iPausedTheMedia = false
|
||||
// }
|
||||
}
|
||||
} else {
|
||||
// if (audioManager.activePlaybackConfigurations.any { it.audioDeviceInfo?.address == device.address }) {
|
||||
MediaController.sendPause()
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -593,12 +694,16 @@ class AirPodsService: Service() {
|
||||
)
|
||||
}
|
||||
} else if (ancNotification.isANCData(data)) {
|
||||
CrossDevice.sendRemotePacket(data)
|
||||
CrossDevice.ancBytes = data
|
||||
ancNotification.setStatus(data)
|
||||
sendBroadcast(Intent(AirPodsNotifications.Companion.ANC_DATA).apply {
|
||||
putExtra("data", ancNotification.status)
|
||||
})
|
||||
Log.d("AirPods Parser", "ANC: ${ancNotification.status}")
|
||||
} else if (batteryNotification.isBatteryData(data)) {
|
||||
CrossDevice.sendRemotePacket(data)
|
||||
CrossDevice.batteryBytes = data
|
||||
batteryNotification.setBattery(data)
|
||||
sendBroadcast(Intent(AirPodsNotifications.Companion.BATTERY_DATA).apply {
|
||||
putParcelableArrayListExtra(
|
||||
@@ -651,7 +756,7 @@ class AirPodsService: Service() {
|
||||
}
|
||||
}
|
||||
Log.d("AirPods Service", "Socket closed")
|
||||
isConnected = false
|
||||
isConnectedLocally = false
|
||||
socket.close()
|
||||
sendBroadcast(Intent(AirPodsNotifications.Companion.AIRPODS_DISCONNECTED))
|
||||
}
|
||||
@@ -663,59 +768,91 @@ class AirPodsService: Service() {
|
||||
}
|
||||
}
|
||||
|
||||
fun disconnect() {
|
||||
socket.close()
|
||||
val bluetoothAdapter = getSystemService(BluetoothManager::class.java).adapter
|
||||
bluetoothAdapter.getProfileProxy(this, object : BluetoothProfile.ServiceListener {
|
||||
override fun onServiceConnected(profile: Int, proxy: BluetoothProfile) {
|
||||
if (profile == BluetoothProfile.A2DP) {
|
||||
val connectedDevices = proxy.connectedDevices
|
||||
if (connectedDevices.isNotEmpty()) {
|
||||
MediaController.sendPause()
|
||||
}
|
||||
}
|
||||
bluetoothAdapter.closeProfileProxy(profile, proxy)
|
||||
}
|
||||
|
||||
override fun onServiceDisconnected(profile: Int) {}
|
||||
}, BluetoothProfile.A2DP)
|
||||
HiddenApiBypass.invoke(BluetoothDevice::class.java, device, "disconnect")
|
||||
isConnectedLocally = false
|
||||
}
|
||||
|
||||
fun sendPacket(packet: String) {
|
||||
val fromHex = packet.split(" ").map { it.toInt(16).toByte() }
|
||||
if (!isConnectedLocally && CrossDevice.isAvailable) {
|
||||
CrossDevice.sendRemotePacket(fromHex.toByteArray())
|
||||
return
|
||||
}
|
||||
socket.outputStream?.write(fromHex.toByteArray())
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
fun sendPacket(packet: ByteArray) {
|
||||
if (!isConnectedLocally && CrossDevice.isAvailable) {
|
||||
CrossDevice.sendRemotePacket(packet)
|
||||
return
|
||||
}
|
||||
socket.outputStream?.write(packet)
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
fun setANCMode(mode: Int) {
|
||||
Log.d("AirPodsService", "setANCMode: $mode")
|
||||
when (mode) {
|
||||
1 -> {
|
||||
socket.outputStream?.write(Enums.NOISE_CANCELLATION_OFF.value)
|
||||
sendPacket(Enums.NOISE_CANCELLATION_OFF.value)
|
||||
}
|
||||
2 -> {
|
||||
socket.outputStream?.write(Enums.NOISE_CANCELLATION_ON.value)
|
||||
sendPacket(Enums.NOISE_CANCELLATION_ON.value)
|
||||
}
|
||||
3 -> {
|
||||
socket.outputStream?.write(Enums.NOISE_CANCELLATION_TRANSPARENCY.value)
|
||||
sendPacket(Enums.NOISE_CANCELLATION_TRANSPARENCY.value)
|
||||
}
|
||||
4 -> {
|
||||
socket.outputStream?.write(Enums.NOISE_CANCELLATION_ADAPTIVE.value)
|
||||
sendPacket(Enums.NOISE_CANCELLATION_ADAPTIVE.value)
|
||||
}
|
||||
}
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
fun setCAEnabled(enabled: Boolean) {
|
||||
socket.outputStream?.write(if (enabled) Enums.SET_CONVERSATION_AWARENESS_ON.value else Enums.SET_CONVERSATION_AWARENESS_OFF.value)
|
||||
sendPacket(if (enabled) Enums.SET_CONVERSATION_AWARENESS_ON.value else Enums.SET_CONVERSATION_AWARENESS_OFF.value)
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
fun setOffListeningMode(enabled: Boolean) {
|
||||
socket.outputStream?.write(byteArrayOf(0x04, 0x00 ,0x04, 0x00, 0x09, 0x00, 0x34, if (enabled) 0x01 else 0x02, 0x00, 0x00, 0x00))
|
||||
sendPacket(byteArrayOf(0x04, 0x00 ,0x04, 0x00, 0x09, 0x00, 0x34, if (enabled) 0x01 else 0x02, 0x00, 0x00, 0x00))
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
fun setAdaptiveStrength(strength: Int) {
|
||||
val bytes = byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x2E, strength.toByte(), 0x00, 0x00, 0x00)
|
||||
socket.outputStream?.write(bytes)
|
||||
sendPacket(bytes)
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
fun setPressSpeed(speed: Int) {
|
||||
// 0x00 = default, 0x01 = slower, 0x02 = slowest
|
||||
val bytes = byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x17, speed.toByte(), 0x00, 0x00, 0x00)
|
||||
socket.outputStream?.write(bytes)
|
||||
sendPacket(bytes)
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
fun setPressAndHoldDuration(speed: Int) {
|
||||
// 0 - default, 1 - slower, 2 - slowest
|
||||
val bytes = byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x18, speed.toByte(), 0x00, 0x00, 0x00)
|
||||
socket.outputStream?.write(bytes)
|
||||
sendPacket(bytes)
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
@@ -723,25 +860,25 @@ class AirPodsService: Service() {
|
||||
// 0 - default, 1 - longer, 2 - longest
|
||||
val bytes = byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x23, speed.toByte(), 0x00, 0x00, 0x00)
|
||||
Log.d("AirPodsService", "Setting volume swipe speed to $speed by packet ${bytes.joinToString(" ") { "%02X".format(it) }}")
|
||||
socket.outputStream?.write(bytes)
|
||||
sendPacket(bytes)
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
fun setNoiseCancellationWithOnePod(enabled: Boolean) {
|
||||
val bytes = byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1B, if (enabled) 0x01 else 0x02, 0x00, 0x00, 0x00)
|
||||
socket.outputStream?.write(bytes)
|
||||
sendPacket(bytes)
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
fun setVolumeControl(enabled: Boolean) {
|
||||
val bytes = byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x25, if (enabled) 0x01 else 0x02, 0x00, 0x00, 0x00)
|
||||
socket.outputStream?.write(bytes)
|
||||
sendPacket(bytes)
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
fun setToneVolume(volume: Int) {
|
||||
val bytes = byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x09, 0x00, 0x1F, volume.toByte(), 0x50, 0x00, 0x00)
|
||||
socket.outputStream?.write(bytes)
|
||||
sendPacket(bytes)
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
@@ -754,7 +891,7 @@ class AirPodsService: Service() {
|
||||
|
||||
fun setCaseChargingSounds(enabled: Boolean) {
|
||||
val bytes = byteArrayOf(0x12, 0x3a, 0x00, 0x01, 0x00, 0x08, if (enabled) 0x00 else 0x01)
|
||||
socket.outputStream?.write(bytes)
|
||||
sendPacket(bytes)
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
@@ -763,16 +900,21 @@ class AirPodsService: Service() {
|
||||
}
|
||||
|
||||
fun getBattery(): List<Battery> {
|
||||
if (!isConnectedLocally && CrossDevice.isAvailable) {
|
||||
batteryNotification.setBattery(CrossDevice.batteryBytes)
|
||||
}
|
||||
return batteryNotification.getBattery()
|
||||
}
|
||||
|
||||
fun getANC(): Int {
|
||||
if (!isConnectedLocally && CrossDevice.isAvailable) {
|
||||
ancNotification.setStatus(CrossDevice.ancBytes)
|
||||
}
|
||||
return ancNotification.status
|
||||
}
|
||||
|
||||
fun disconnectAudio(context: Context, device: BluetoothDevice?) {
|
||||
val bluetoothAdapter = context.getSystemService(BluetoothManager::class.java).adapter
|
||||
|
||||
bluetoothAdapter?.getProfileProxy(context, object : BluetoothProfile.ServiceListener {
|
||||
override fun onServiceConnected(profile: Int, proxy: BluetoothProfile) {
|
||||
if (profile == BluetoothProfile.A2DP) {
|
||||
@@ -850,7 +992,7 @@ class AirPodsService: Service() {
|
||||
val nameBytes = name.toByteArray()
|
||||
val bytes = byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x01,
|
||||
nameBytes.size.toByte(), 0x00) + nameBytes
|
||||
socket.outputStream?.write(bytes)
|
||||
sendPacket(bytes)
|
||||
socket.outputStream?.flush()
|
||||
val hex = bytes.joinToString(" ") { "%02X".format(it) }
|
||||
updateNotificationContent(true, name, batteryNotification.getBattery())
|
||||
@@ -860,18 +1002,18 @@ class AirPodsService: Service() {
|
||||
fun setPVEnabled(enabled: Boolean) {
|
||||
var hex = "04 00 04 00 09 00 26 ${if (enabled) "01" else "02"} 00 00 00"
|
||||
var bytes = hex.split(" ").map { it.toInt(16).toByte() }.toByteArray()
|
||||
socket.outputStream?.write(bytes)
|
||||
sendPacket(bytes)
|
||||
socket.outputStream?.flush()
|
||||
hex = "04 00 04 00 17 00 00 00 10 00 12 00 08 E${if (enabled) "6" else "5"} 05 10 02 42 0B 08 50 10 02 1A 05 02 ${if (enabled) "32" else "00"} 00 00 00"
|
||||
bytes = hex.split(" ").map { it.toInt(16).toByte() }.toByteArray()
|
||||
socket.outputStream?.write(bytes)
|
||||
sendPacket(bytes)
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
|
||||
fun setLoudSoundReduction(enabled: Boolean) {
|
||||
val hex = "52 1B 00 0${if (enabled) "1" else "0"}"
|
||||
val bytes = hex.split(" ").map { it.toInt(16).toByte() }.toByteArray()
|
||||
socket.outputStream?.write(bytes)
|
||||
sendPacket(bytes)
|
||||
socket.outputStream?.flush()
|
||||
}
|
||||
fun findChangedIndex(oldArray: BooleanArray, newArray: BooleanArray): Int {
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
package me.kavishdevar.aln.utils
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.bluetooth.BluetoothAdapter
|
||||
import android.bluetooth.BluetoothManager
|
||||
import android.bluetooth.BluetoothServerSocket
|
||||
import android.bluetooth.BluetoothSocket
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import me.kavishdevar.aln.services.ServiceManager
|
||||
import java.io.IOException
|
||||
import java.util.UUID
|
||||
|
||||
enum class CrossDevicePackets(val packet: ByteArray) {
|
||||
AIRPODS_CONNECTED(byteArrayOf(0x00, 0x01, 0x00, 0x01)),
|
||||
AIRPODS_DISCONNECTED(byteArrayOf(0x00, 0x01, 0x00, 0x00)),
|
||||
REQUEST_DISCONNECT(byteArrayOf(0x00, 0x02, 0x00, 0x00)),
|
||||
REQUEST_BATTERY_BYTES(byteArrayOf(0x00, 0x02, 0x00, 0x01)),
|
||||
REQUEST_ANC_BYTES(byteArrayOf(0x00, 0x02, 0x00, 0x02)),
|
||||
AIRPODS_DATA_HEADER(byteArrayOf(0x00, 0x04, 0x00, 0x01)),
|
||||
}
|
||||
|
||||
object CrossDevice {
|
||||
private val uuid = UUID.fromString("1abbb9a4-10e4-4000-a75c-8953c5471342")
|
||||
private var serverSocket: BluetoothServerSocket? = null
|
||||
private var clientSocket: BluetoothSocket? = null
|
||||
private lateinit var bluetoothAdapter: BluetoothAdapter
|
||||
var isAvailable: Boolean = false // set to true when airpods are connected to another device
|
||||
var batteryBytes: ByteArray = byteArrayOf()
|
||||
var ancBytes: ByteArray = byteArrayOf()
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
fun init(context: Context) {
|
||||
Log.d("AirPodsQuickSwitchService", "Initializing CrossDevice")
|
||||
this.bluetoothAdapter = context.getSystemService(BluetoothManager::class.java).adapter
|
||||
startServer()
|
||||
}
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
fun startServer() {
|
||||
serverSocket = bluetoothAdapter.listenUsingRfcommWithServiceRecord("AirPodsSwitch", uuid)
|
||||
Log.d("AirPodsQuickSwitchService", "Server started")
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
while (serverSocket != null) {
|
||||
try {
|
||||
val socket = serverSocket!!.accept()
|
||||
handleClientConnection(socket)
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun setAirPodsConnected(connected: Boolean) {
|
||||
if (connected) {
|
||||
isAvailable = true
|
||||
clientSocket?.outputStream?.write(CrossDevicePackets.AIRPODS_CONNECTED.packet)
|
||||
} else {
|
||||
clientSocket?.outputStream?.write(CrossDevicePackets.AIRPODS_DISCONNECTED.packet)
|
||||
}
|
||||
}
|
||||
|
||||
fun sendReceivedPacket(packet: ByteArray) {
|
||||
Log.d("AirPodsQuickSwitchService", "Sending packet to remote device")
|
||||
clientSocket?.outputStream?.write(CrossDevicePackets.AIRPODS_DATA_HEADER.packet + packet)
|
||||
}
|
||||
|
||||
private fun handleClientConnection(socket: BluetoothSocket) {
|
||||
clientSocket = socket
|
||||
val inputStream = socket.inputStream
|
||||
val buffer = ByteArray(1024)
|
||||
var bytes: Int
|
||||
setAirPodsConnected(ServiceManager.getService()?.isConnectedLocally == true)
|
||||
while (true) {
|
||||
bytes = inputStream.read(buffer)
|
||||
val packet = buffer.copyOf(bytes)
|
||||
if (bytes == -1) {
|
||||
break
|
||||
} else if (packet.contentEquals(CrossDevicePackets.REQUEST_DISCONNECT.packet)) {
|
||||
ServiceManager.getService()?.disconnect()
|
||||
} else if (packet.contentEquals(CrossDevicePackets.AIRPODS_CONNECTED.packet)) {
|
||||
isAvailable = true
|
||||
} else if (packet.contentEquals(CrossDevicePackets.AIRPODS_DISCONNECTED.packet)) {
|
||||
isAvailable = false
|
||||
} else if (packet.contentEquals(CrossDevicePackets.REQUEST_BATTERY_BYTES.packet)) {
|
||||
Log.d("AirPodsQuickSwitchService", "Received battery request, battery data: ${batteryBytes.joinToString("") { "%02x".format(it) }}")
|
||||
sendRemotePacket(batteryBytes)
|
||||
} else if (packet.contentEquals(CrossDevicePackets.REQUEST_ANC_BYTES.packet)) {
|
||||
Log.d("AirPodsQuickSwitchService", "Received ANC request")
|
||||
sendRemotePacket(ancBytes)
|
||||
}
|
||||
else {
|
||||
if (ServiceManager.getService()?.isConnectedLocally == true) {
|
||||
val packetInHex = packet.joinToString("") { "%02x".format(it) }
|
||||
ServiceManager.getService()?.sendPacket(packetInHex)
|
||||
} else if (ServiceManager.getService()?.batteryNotification?.isBatteryData(packet) == true) {
|
||||
batteryBytes = packet
|
||||
ServiceManager.getService()?.batteryNotification?.setBattery(packet)
|
||||
ServiceManager.getService()?.updateBatteryWidget()
|
||||
} else if (ServiceManager.getService()?.ancNotification?.isANCData(packet) == true) {
|
||||
ServiceManager.getService()?.ancNotification?.setStatus(packet)
|
||||
ancBytes = packet
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun sendRemotePacket(byteArray: ByteArray) {
|
||||
if (clientSocket == null) {
|
||||
Log.d("AirPodsQuickSwitchService", "Client socket is null")
|
||||
}
|
||||
clientSocket?.outputStream?.write(byteArray)
|
||||
clientSocket?.outputStream?.flush()
|
||||
Log.d("AirPodsQuickSwitchService", "Sent packet to remote device")
|
||||
}
|
||||
}
|
||||
74
linux/crossdevice.py
Normal file
74
linux/crossdevice.py
Normal file
@@ -0,0 +1,74 @@
|
||||
import bluetooth
|
||||
import time
|
||||
import threading
|
||||
|
||||
# Bluetooth MAC address of the target device
|
||||
TARGET_MAC = "22:22:F5:BB:1C:A0" # Replace with the actual MAC address
|
||||
UUID = "1abbb9a4-10e4-4000-a75c-8953c5471342"
|
||||
|
||||
# Define packets
|
||||
PACKETS = {
|
||||
"AIRPODS_CONNECTED": b"\x00\x01\x00\x01",
|
||||
"AIRPODS_DISCONNECTED": b"\x00\x01\x00\x00",
|
||||
"REQUEST_BATTERY_BYTES": b"\x00\x02\x00\x01",
|
||||
"REQUEST_ANC_BYTES": b"\x00\x02\x00\x02",
|
||||
"REQUEST_DISCONNECT": b"\x00\x02\x00\x00"
|
||||
}
|
||||
|
||||
def send_packet(sock, packet_name):
|
||||
if packet_name in PACKETS:
|
||||
packet = PACKETS[packet_name]
|
||||
sock.send(packet)
|
||||
print(f"Sent packet: {packet_name}")
|
||||
else:
|
||||
print(f"Packet {packet_name} not defined.")
|
||||
|
||||
def listen_for_packets(sock):
|
||||
try:
|
||||
while True:
|
||||
data = sock.recv(1024)
|
||||
if data:
|
||||
print(f"Received packet: {data}")
|
||||
except Exception as e:
|
||||
print(f"Error receiving data: {e}")
|
||||
|
||||
def main():
|
||||
# Discover services to find the channel using the UUID
|
||||
services = bluetooth.find_service(address=TARGET_MAC, uuid=UUID)
|
||||
if len(services) == 0:
|
||||
print(f"Could not find services for UUID {UUID}")
|
||||
return
|
||||
|
||||
# Use the first service found
|
||||
service = services[0]
|
||||
port = service["port"]
|
||||
name = service["name"]
|
||||
host = service["host"]
|
||||
|
||||
print(f"Connecting to \"{name}\" on {host}, port {port}")
|
||||
|
||||
# Create a Bluetooth socket
|
||||
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
|
||||
sock.connect((host, port))
|
||||
print(f"Connected to {TARGET_MAC} on port {port}")
|
||||
|
||||
# Start listening for packets in a background thread
|
||||
listener_thread = threading.Thread(target=listen_for_packets, args=(sock,))
|
||||
listener_thread.daemon = True
|
||||
listener_thread.start()
|
||||
|
||||
try:
|
||||
while True:
|
||||
packet_name = input("Enter packet name to send (or 'exit' to quit): ")
|
||||
if packet_name.lower() == "exit":
|
||||
break
|
||||
send_packet(sock, packet_name)
|
||||
time.sleep(1)
|
||||
except Exception as e:
|
||||
print(f"Error: {e}")
|
||||
finally:
|
||||
sock.close()
|
||||
print("Connection closed.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -24,6 +24,11 @@
|
||||
#include <QFile>
|
||||
#include <QTextStream>
|
||||
#include <QStandardPaths>
|
||||
#include <QBluetoothServer>
|
||||
#include <QBluetoothSocket>
|
||||
#include <QBluetoothDeviceDiscoveryAgent>
|
||||
#include <QBluetoothLocalDevice>
|
||||
#include <QBluetoothUuid>
|
||||
|
||||
Q_LOGGING_CATEGORY(airpodsApp, "airpodsApp")
|
||||
|
||||
@@ -266,8 +271,7 @@ public slots:
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
|
||||
private slots:
|
||||
private slots:
|
||||
void onTrayIconActivated(QSystemTrayIcon::ActivationReason reason) {
|
||||
if (reason == QSystemTrayIcon::Trigger) {
|
||||
LOG_INFO("Tray icon activated");
|
||||
@@ -550,4 +554,5 @@ int main(int argc, char *argv[]) {
|
||||
return app.exec();
|
||||
}
|
||||
|
||||
|
||||
#include "main.moc"
|
||||
|
||||
313
log.txt
Normal file
313
log.txt
Normal file
@@ -0,0 +1,313 @@
|
||||
--------- beginning of main
|
||||
01-18 01:36:57.299 13709 13774 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -54 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:36:57.299 13709 13784 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -54 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:36:57.331 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:57.331 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:57.608 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -67 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:57.608 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -67 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:57.761 13709 13774 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -62 | 12 02 00 03
|
||||
01-18 01:36:57.761 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -62 | 12 02 00 03
|
||||
01-18 01:36:57.882 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:57.882 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:58.158 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:58.158 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:58.391 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -98 | 12 02 00 03
|
||||
01-18 01:36:58.391 13709 13774 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -98 | 12 02 00 03
|
||||
01-18 01:36:58.428 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -64 | 12 02 00 02
|
||||
01-18 01:36:58.428 13709 13774 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -64 | 12 02 00 02
|
||||
01-18 01:36:58.437 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:58.438 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:58.720 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:58.720 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:58.992 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:58.992 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:59.271 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:59.271 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:59.301 13709 13774 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -53 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:36:59.301 13709 13778 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -53 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:36:59.551 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:59.552 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:59.763 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -60 | 12 02 00 03
|
||||
01-18 01:36:59.764 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -60 | 12 02 00 03
|
||||
01-18 01:36:59.829 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:36:59.829 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:00.112 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:00.112 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:00.378 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:00.379 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:00.395 13709 13774 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -89 | 12 02 00 03
|
||||
01-18 01:37:00.396 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -89 | 12 02 00 03
|
||||
01-18 01:37:00.653 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:00.654 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:01.311 13709 13784 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -52 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:01.311 13709 13774 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -52 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:01.744 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:01.744 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:01.762 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -60 | 12 02 00 03
|
||||
01-18 01:37:01.762 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -60 | 12 02 00 03
|
||||
01-18 01:37:02.018 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:02.018 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:02.290 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:02.290 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:02.440 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:02.440 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:02.560 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:02.560 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:02.833 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:02.833 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:03.105 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:03.105 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:03.409 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:03.409 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:03.661 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:03.662 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:03.769 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -62 | 12 02 00 03
|
||||
01-18 01:37:03.769 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -62 | 12 02 00 03
|
||||
01-18 01:37:03.941 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:03.941 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:04.433 13709 13774 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -88 | 12 02 00 03
|
||||
01-18 01:37:04.433 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -88 | 12 02 00 03
|
||||
01-18 01:37:04.447 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:04.448 13709 13774 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:04.758 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:04.758 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:05.039 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:05.039 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:05.299 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:05.299 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:05.319 13709 13776 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -50 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:05.320 13709 13774 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -50 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:05.572 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:05.573 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:05.763 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -61 | 12 02 00 03
|
||||
01-18 01:37:05.763 13709 13774 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -61 | 12 02 00 03
|
||||
01-18 01:37:05.853 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:05.853 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:06.121 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:06.121 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:06.404 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:06.405 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:06.434 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -89 | 12 02 00 03
|
||||
01-18 01:37:06.434 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -89 | 12 02 00 03
|
||||
01-18 01:37:06.446 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:06.447 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:06.676 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:06.676 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:06.949 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:06.949 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:07.224 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:07.225 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:07.771 13709 13774 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -58 | 12 02 00 03
|
||||
01-18 01:37:07.772 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -58 | 12 02 00 03
|
||||
01-18 01:37:07.777 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:07.777 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:08.057 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:08.057 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:08.333 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:08.334 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:08.442 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -89 | 12 02 00 03
|
||||
01-18 01:37:08.444 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -89 | 12 02 00 03
|
||||
01-18 01:37:08.450 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -64 | 12 02 00 02
|
||||
01-18 01:37:08.451 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -64 | 12 02 00 02
|
||||
01-18 01:37:08.612 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:08.612 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:08.886 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:08.887 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:09.161 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:09.161 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:09.322 13709 13774 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -53 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:09.323 13709 13784 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -53 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:09.767 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -60 | 12 02 00 03
|
||||
01-18 01:37:09.767 13709 13774 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -60 | 12 02 00 03
|
||||
01-18 01:37:09.985 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:09.985 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:10.260 13709 13774 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:10.260 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:10.450 13709 13774 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -88 | 12 02 00 03
|
||||
01-18 01:37:10.450 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -88 | 12 02 00 03
|
||||
01-18 01:37:10.455 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:10.455 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:11.093 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:11.093 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:11.330 13709 13778 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -53 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:11.330 13709 13784 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -53 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:11.369 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:11.369 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:11.644 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:11.644 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:11.769 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -61 | 12 02 00 03
|
||||
01-18 01:37:11.769 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -61 | 12 02 00 03
|
||||
01-18 01:37:11.912 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:11.913 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:12.195 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:12.195 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:12.456 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -64 | 12 02 00 02
|
||||
01-18 01:37:12.457 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -64 | 12 02 00 02
|
||||
01-18 01:37:12.482 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:12.483 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:13.777 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -59 | 12 02 00 03
|
||||
01-18 01:37:13.777 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -59 | 12 02 00 03
|
||||
01-18 01:37:14.399 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:14.399 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:14.460 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -87 | 12 02 00 03
|
||||
01-18 01:37:14.461 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -87 | 12 02 00 03
|
||||
01-18 01:37:14.462 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:14.462 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:14.678 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:14.678 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:14.949 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:14.949 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:15.493 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -62 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:15.493 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -62 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:15.772 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:15.772 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:16.463 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -88 | 12 02 00 03
|
||||
01-18 01:37:16.464 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -88 | 12 02 00 03
|
||||
01-18 01:37:16.470 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:16.470 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:16.878 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:16.878 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:17.155 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:17.155 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:17.427 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -62 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:17.427 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -62 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:17.700 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:17.700 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:17.775 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -61 | 12 02 00 03
|
||||
01-18 01:37:17.775 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -61 | 12 02 00 03
|
||||
01-18 01:37:18.250 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:18.251 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:18.473 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -94 | 12 02 00 03
|
||||
01-18 01:37:18.473 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -94 | 12 02 00 03
|
||||
01-18 01:37:18.480 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:18.481 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:18.517 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:18.517 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:18.790 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:18.790 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:19.065 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:19.065 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:20.165 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:20.166 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:20.447 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:20.448 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:20.473 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -97 | 12 02 00 03
|
||||
01-18 01:37:20.473 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -97 | 12 02 00 03
|
||||
01-18 01:37:20.477 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:20.478 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:20.726 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:20.726 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:21.283 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:21.283 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:21.353 13709 13778 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -54 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:21.353 13709 13776 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -54 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:21.781 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -58 | 12 02 00 03
|
||||
01-18 01:37:21.781 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -58 | 12 02 00 03
|
||||
01-18 01:37:22.103 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:22.103 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:22.376 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:22.376 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:22.483 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -89 | 12 02 00 03
|
||||
01-18 01:37:22.484 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -89 | 12 02 00 03
|
||||
01-18 01:37:22.486 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -64 | 12 02 00 02
|
||||
01-18 01:37:22.486 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -64 | 12 02 00 02
|
||||
01-18 01:37:22.656 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:22.656 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:23.209 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -65 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:23.210 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -65 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:23.363 13709 13776 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -54 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:23.363 13709 13784 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -54 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:23.483 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:23.483 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:23.759 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:23.759 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:23.783 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -59 | 12 02 00 03
|
||||
01-18 01:37:23.783 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -59 | 12 02 00 03
|
||||
01-18 01:37:24.038 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:24.038 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:24.324 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:24.324 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:24.486 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -65 | 12 02 00 02
|
||||
01-18 01:37:24.486 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -65 | 12 02 00 02
|
||||
01-18 01:37:24.861 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:24.862 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:25.365 13709 13784 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -52 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:25.366 13709 13778 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -52 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:25.411 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:25.412 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:25.783 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -62 | 12 02 00 03
|
||||
01-18 01:37:25.783 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -62 | 12 02 00 03
|
||||
01-18 01:37:26.782 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:26.782 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:27.053 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:27.054 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:27.328 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:27.328 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:27.376 13709 13784 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -52 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:27.376 13709 13776 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -52 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:27.803 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -62 | 12 02 00 03
|
||||
01-18 01:37:27.804 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -62 | 12 02 00 03
|
||||
01-18 01:37:27.887 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:27.890 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:28.147 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:28.147 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:28.435 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:28.436 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:28.498 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -88 | 12 02 00 03
|
||||
01-18 01:37:28.498 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -88 | 12 02 00 03
|
||||
01-18 01:37:28.508 13709 13778 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:28.508 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:28.697 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:28.697 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:28.967 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:28.967 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:29.382 13709 13776 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -52 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:29.383 13709 13784 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -52 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:29.793 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -59 | 12 02 00 03
|
||||
01-18 01:37:29.793 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -59 | 12 02 00 03
|
||||
01-18 01:37:30.070 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -62 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:30.070 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -62 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:30.514 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:30.514 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:30.527 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -96 | 12 02 00 03
|
||||
01-18 01:37:30.527 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -96 | 12 02 00 03
|
||||
01-18 01:37:30.621 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:30.621 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:30.899 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:30.899 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:31.162 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -62 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:31.162 13709 13778 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -62 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:31.389 13709 13778 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -51 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:31.390 13709 13784 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -51 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:31.442 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:31.442 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:31.787 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -64 | 12 02 00 03
|
||||
01-18 01:37:31.787 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -64 | 12 02 00 03
|
||||
01-18 01:37:31.991 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -65 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:31.991 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -65 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:32.269 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:32.269 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:33.392 13709 13784 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -51 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:33.393 13709 13777 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -51 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:33.642 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:33.642 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:33.791 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -64 | 12 02 00 03
|
||||
01-18 01:37:33.791 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -64 | 12 02 00 03
|
||||
01-18 01:37:33.915 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:33.916 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -64 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:34.189 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:34.189 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:34.470 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:34.470 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:34.525 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:34.525 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from DF:B6:BA:2A:BE:07 | -63 | 12 02 00 02
|
||||
01-18 01:37:34.539 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -90 | 12 02 00 03
|
||||
01-18 01:37:34.539 13709 13784 D AirPodsBLEService: Received broadcast of size 4 from D7:1A:73:FA:66:AC | -90 | 12 02 00 03
|
||||
01-18 01:37:34.752 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:34.753 13709 13784 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:35.296 13709 13777 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:35.296 13709 13776 D AirPodsBLEService: Received broadcast of size 25 from 6E:74:A9:28:8F:7D | -63 | 10 06 1E 1E C5 8A 58 7B 01 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
|
||||
01-18 01:37:35.400 13709 13776 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -53 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:35.400 13709 13777 D AirPodsBLEService: Received broadcast of size 23 from E1:2E:99:8C:E2:A5 | -53 | 12 02 E0 01 07 11 06 95 1D 5C 38 BB EA 94 B9 17 2A 68 D6 94 3E D7 03
|
||||
01-18 01:37:35.800 13709 13776 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -63 | 12 02 00 03
|
||||
01-18 01:37:35.801 13709 13777 D AirPodsBLEService: Received broadcast of size 4 from 38:FC:FE:68:19:DC | -63 | 12 02 00 03
|
||||
33
root-module-manual/META-INF/com/google/android/update-binary
Normal file
33
root-module-manual/META-INF/com/google/android/update-binary
Normal file
@@ -0,0 +1,33 @@
|
||||
#!/sbin/sh
|
||||
|
||||
#################
|
||||
# Initialization
|
||||
#################
|
||||
|
||||
umask 022
|
||||
|
||||
# echo before loading util_functions
|
||||
ui_print() { echo "$1"; }
|
||||
|
||||
require_new_magisk() {
|
||||
ui_print "*******************************"
|
||||
ui_print " Please install Magisk v20.4+! "
|
||||
ui_print "*******************************"
|
||||
exit 1
|
||||
}
|
||||
|
||||
#########################
|
||||
# Load util_functions.sh
|
||||
#########################
|
||||
|
||||
OUTFD=$2
|
||||
ZIPFILE=$3
|
||||
|
||||
mount /data 2>/dev/null
|
||||
|
||||
[ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk
|
||||
. /data/adb/magisk/util_functions.sh
|
||||
[ $MAGISK_VER_CODE -lt 20400 ] && require_new_magisk
|
||||
|
||||
install_module
|
||||
exit 0
|
||||
@@ -0,0 +1 @@
|
||||
#MAGISK
|
||||
BIN
root-module-manual/btl2capfix.zip
Normal file
BIN
root-module-manual/btl2capfix.zip
Normal file
Binary file not shown.
6
root-module-manual/module.prop
Normal file
6
root-module-manual/module.prop
Normal file
@@ -0,0 +1,6 @@
|
||||
id=btl2capfix
|
||||
name=Bluetooth L2CAP workaround for AirPods
|
||||
version=v1
|
||||
versionCode=1
|
||||
author=kavishdevar
|
||||
description=Fixes the Bluetooth L2CAP connection issue with AirPods
|
||||
15
wak.toml
Normal file
15
wak.toml
Normal file
@@ -0,0 +1,15 @@
|
||||
# https://github.com/iamawatermelo/wakapi-anyide v0.6.8
|
||||
|
||||
[meta]
|
||||
version = 1
|
||||
watchers = ['files']
|
||||
|
||||
[files]
|
||||
include = ["*"] # files to include in tracking
|
||||
exclude = [] # files to exclude in tracking
|
||||
exclude_files = [".gitignore"] # files whose contents will be used to exclude other files from tracking
|
||||
exclude_binary_files = true # whether to ignore binary files
|
||||
# language_mapping = {".kicad_sch" = "Kicad Schematic"} # custom language mapping
|
||||
|
||||
[project]
|
||||
name = "AirPodsLikeNormal" # your project name
|
||||
Reference in New Issue
Block a user