코딩게시판

ESPHome용 IRK 캡처를 활용 휴대폰 블루투스 재실감지 만들기

작성자 정보

  • 최고관리자 작성
  • 192.♡.0.1 아이피
  • 작성일

컨텐츠 정보


  • 링크

  • 첨부


  • 본문

    ESPHome용 IRK 캡처를 활용  휴대폰 블루투스 재실감지 만들기



    3232235521_1787490170.0306.png


    e81238bfcbd52b843583ffe0485ea975

    3232235521_1787490200.6283.png

    3232235521_1787490141.4006.png

    3232235521_1787490152.0819.png


    ESPHome용 IRK 캡처 설치후 안드로이드 휴대폰 등록 방법

    ESP32-S3 IRK Capture 및 Home Assistant Private BLE Device 구성 방법

    1. 구성 목적

    irk-capture를 설치한 ESP32-S3를 이용하여 스마트폰의 IRK(Identity Resolving Key) 를 획득하고, 이를 Home Assistant의 Private BLE Device에 등록하는 구성입니다.

    스마트폰은 개인정보 보호를 위해 BLE MAC 주소를 주기적으로 변경합니다.

    IRK를 등록하면 Home Assistant는 MAC 주소가 변경되더라도 동일한 스마트폰으로 계속 식별할 수 있습니다.

    전체 흐름은 다음과 같습니다.

    스마트폰
       │
       │ Bluetooth 페어링
       ▼
    ESP32-S3 IRK Capture
       │
       │ IRK 획득
       ▼
    Home Assistant
    Private BLE Device
       │
       │ BLE Random MAC 해석
       ▼
    ESPHome Bluetooth Proxy
       │
       ▼
    스마트폰 재실 / 위치 추적
    

    2. 휴대폰 연결 및 IRK 획득

    2.1 ESP32-S3 준비

    ESP32-S3에 다음 프로젝트를 설치합니다.

    Derek Seaman irk-capture

    https://github.com/DerekSeaman/irk-capture

    ESP32-S3가 Home Assistant의 ESPHome 장치로 정상 등록되어 있어야 합니다.


    2.2 Android 휴대폰용 BLE Profile 설정

    Home Assistant에서 IRK Capture ESP32-S3 장치를 엽니다.

    설정
    → 기기 및 서비스
    → ESPHome
    → IRK Capture ESP32-S3
    

    BLE Profile을 다음과 같이 설정합니다.

    BLE Profile = Keyboard
    

    Android / Samsung Galaxy에서는 Keyboard 프로필을 사용하는 것이 편리합니다.

    ESP32-S3가 Bluetooth 장치로 광고될 때 휴대폰에서는 대략 다음과 같이 나타납니다.

    Logitech K380
    

    2.3 휴대폰에서 Bluetooth 페어링

    Galaxy 기준:

    설정
    → 연결
    → Bluetooth
    

    Bluetooth 장치를 검색합니다.

    다음 장치를 선택합니다.

    Logitech K380
    

    페어링을 진행합니다.

    페어링이 성공하면 ESP32-S3가 휴대폰에서 IRK를 획득합니다.


    2.4 IRK Capture 결과 확인

    Home Assistant에서 IRK Capture 장치를 확인합니다.

    이번 구성에서 실제 획득한 값:

    Device MAC
    9C:83:06:92:84:67
    
    Effective MAC
    C8:5D:62:F0:D6:4C
    
    IRK
    e81238bfcbd52b843583ffe0485ea975
    

    Device MAC

    9C:83:06:92:84:67
    

    페어링 과정에서 확인된 상대 장치 관련 MAC 정보입니다.

    Home Assistant의 Private BLE Device 등록에는 이 값을 직접 입력하지 않습니다.

    Effective MAC

    C8:5D:62:F0:D6:4C
    

    IRK Capture ESP32가 BLE 광고에 사용하는 주소입니다.

    이 값 역시 Private BLE Device 등록용 IRK가 아닙니다.

    IRK

    e81238bfcbd52b843583ffe0485ea975
    

    가장 중요한 값입니다.

    Home Assistant Private BLE Device에 등록하는 값은 이 IRK입니다.


    3. Home Assistant 구성요소 생성

    3.1 Private BLE Device 추가

    Home Assistant에서:

    설정
    → 기기 및 서비스
    → 통합
    → 통합 추가
    

    검색:

    Private BLE Device
    

    Private BLE Device를 선택합니다.


    3.2 IRK 입력

    IRK 입력란에 다음과 같이 32자리 IRK만 입력합니다.

    e81238bfcbd52b843583ffe0485ea975
    

    다음 값들은 입력하지 않습니다.

    Device MAC
    9C:83:06:92:84:67
    
    Effective MAC
    C8:5D:62:F0:D6:4C
    

    등록 과정에서는 스마트폰의 Bluetooth를 켜 놓고 Bluetooth Proxy 범위 안에 두는 것이 중요합니다.


    3.3 장치 이름 지정

    IRK가 정상적으로 인식되면 Home Assistant에서 다음과 같은 장치를 생성합니다.

    Private BLE Device e81238
    

    원하면 알아보기 쉽게 이름을 변경할 수 있습니다.

    예:

    Galaxy Phone
    내 휴대폰 BLE
    Galaxy Private BLE
    

    휴대폰은 여러 방을 이동하는 장치이므로 고정된 영역(Area)은 지정하지 않아도 됩니다.


    4. 생성되는 구성요소 설명

    등록이 완료되면 Home Assistant에서 Private BLE Device와 관련된 장치 및 센서가 생성됩니다.

    4.1 Device Tracker

    대표적인 추적 엔티티입니다.

    속성에서 실제로 다음 정보가 확인되었습니다.

    tracking_type: connection
    in_zones:
      - zone.home
    source_type: bluetooth_le
    current_address: 4F:53:25:D1:18:98
    source: 3C:84:27:C6:8C:0A
    friendly_name: Private BLE Device e81238
    

    tracking_type

    tracking_type: connection
    

    Bluetooth 연결/감지 정보를 이용하여 장치를 추적하고 있음을 나타냅니다.

    in_zones

    in_zones:
      - zone.home
    

    현재 스마트폰이 Home Assistant의 zone.home 범위 안에서 감지되고 있음을 나타냅니다.

    source_type

    source_type: bluetooth_le
    

    현재 장치 추적 정보의 출처가 Bluetooth Low Energy임을 나타냅니다.

    current_address

    current_address: 4F:53:25:D1:18:98
    

    현재 스마트폰이 사용하고 있는 BLE Random MAC 주소입니다.

    이 주소는 시간이 지나면서 변경될 수 있습니다.

    예를 들어:

    4F:53:25:D1:18:98
            ↓
    다른 Random MAC
            ↓
    또 다른 Random MAC
    

    처럼 변경될 수 있습니다.

    하지만 Home Assistant는 등록한 IRK:

    e81238bfcbd52b843583ffe0485ea975
    

    를 이용하여 변경된 MAC 주소가 같은 스마트폰인지 확인합니다.

    이것이 Private BLE Device를 사용하는 가장 중요한 이유입니다.


    4.2 source

    현재 확인된 값:

    source: 3C:84:27:C6:8C:0A
    

    이 값은 스마트폰의 MAC 주소가 아닙니다.

    현재 스마트폰의 BLE 광고를 감지하여 Home Assistant에 전달하고 있는 Bluetooth Adapter / ESPHome Bluetooth Proxy를 나타냅니다.

    구조는 다음과 같습니다.

    Galaxy 스마트폰
    current_address:
    4F:53:25:D1:18:98
    
            │
            │ BLE 광고
            ▼
    
    ESPHome Bluetooth Proxy
    source:
    3C:84:27:C6:8C:0A
    
            │
            │ Wi-Fi / ESPHome API
            ▼
    
    Home Assistant
    
            │
            ▼
    
    Private BLE Device e81238
    

    여러 Bluetooth Proxy가 설치되어 있다면 스마트폰의 위치에 따라 source가 변경될 수 있습니다.

    예:

    서재
    source = AA:AA:AA:AA:AA:AA
    
           ↓ 휴대폰 이동
    
    거실
    source = BB:BB:BB:BB:BB:BB
    
           ↓ 휴대폰 이동
    
    안방
    source = CC:CC:CC:CC:CC:CC
    

    따라서 각 ESP32 Bluetooth Proxy의 MAC 주소와 설치 위치를 기록해 놓으면 유용합니다.


    5. Estimated Distance 센서

    실제 생성된 센서:

    sensor.private_ble_device_e81238_estimated_distance
    

    Friendly Name:

    Private BLE Device e81238 예상 거리
    

    이 센서는 일반적으로 현재 선택된 Bluetooth 수신기/Proxy와 스마트폰 사이의 BLE 기반 추정 거리를 나타내는 용도로 사용됩니다.

    즉 Home Assistant 서버와 스마트폰 사이의 거리가 아닙니다.

    스마트폰
         │
         │ ← Estimated Distance
         │
    ESP32 Bluetooth Proxy
         │
         └── Home Assistant
    

    현재 확인된 source가:

    3C:84:27:C6:8C:0A
    

    라면 해당 Bluetooth 수신기가 현재 추적 기준점입니다.


    5.1 현재 확인된 거리값

    현재 다음과 같은 값이 확인되었습니다.

    2.02743669621349e-12
    

    이것은 과학적 표기법이며 사실상:

    0.000000000002 m
    

    수준입니다.

    따라서 이것을 실제 물리적 거리로 해석하면 안 됩니다.

    BLE 예상 거리는 RSSI, 송신 출력, 주변 장애물, 안테나 방향, 스마트폰의 BLE 광고 특성 등에 크게 영향을 받습니다.

    현재 구성에서는 IRK 추적 성공 여부를 판단할 때 거리 숫자보다 다음 항목을 우선 확인하는 것이 좋습니다.

    current_address가 존재하는가?
            ↓
    YES
    
    source가 존재하는가?
            ↓
    YES
    
    source_type = bluetooth_le 인가?
            ↓
    YES
    
    in_zones = zone.home 인가?
            ↓
    YES
    

    현재 이 조건들이 확인되었으므로 Private BLE Device 추적 자체는 성공한 상태입니다.


    6. Signal Strength 센서

    다음 엔티티:

    sensor.private_ble_device_e81238_signal_strength
    

    는 현재 구성에서는 생성되지 않았습니다.

    따라서 반드시 이 이름의 RSSI 센서가 있어야 정상인 것은 아닙니다.

    현재는 device_trackersource, current_addressestimated_distance 등을 이용하여 추적 상태를 확인할 수 있습니다.


    7. 현재 성공한 구성 정리

    현재 실제 확인된 구성은 다음과 같습니다.

    [Galaxy 스마트폰]
           │
           │ Bluetooth Pairing
           ▼
    [ESP32-S3 IRK Capture]
           │
           ├─ Device MAC
           │  9C:83:06:92:84:67
           │
           ├─ Effective MAC
           │  C8:5D:62:F0:D6:4C
           │
           └─ IRK
              e81238bfcbd52b843583ffe0485ea975
                     │
                     ▼
           [Home Assistant]
                     │
                     ▼
           [Private BLE Device]
                     │
                     ├─ Random MAC 확인
                     │  4F:53:25:D1:18:98
                     │
                     ├─ zone.home 확인
                     │
                     └─ source 확인
                        3C:84:27:C6:8C:0A
                             │
                             ▼
                    Bluetooth Proxy
    

    8. 성공 여부 확인 기준

    현재 구성은 다음 항목이 모두 확인되었으므로 IRK Capture 및 Home Assistant 등록 성공으로 판단할 수 있습니다.

    확인 항목현재 상태
    ESP32-S3 IRK Capture 설치정상
    Galaxy Bluetooth 페어링정상
    IRK 획득정상
    IRK 32자리 확인정상
    Private BLE Device 등록정상
    HA 장치 생성정상
    current_address 생성정상
    BLE Random MAC 확인정상
    source_type: bluetooth_le정상
    source Bluetooth 수신기 확인정상
    zone.home 확인정상
    Estimated Distance 생성정상
    Estimated Distance 실제 거리 정확도추가 점검 필요

    9. 핵심 역할 구분

    마지막으로 세 구성요소의 역할을 구분하면 이해하기 쉽습니다.

    ESP32-S3 IRK Capture

    역할:
    스마트폰과 한 번 페어링하여
    IRK를 알아내는 장치
    

    IRK를 획득한 후에는 항상 켜 놓아야 하는 장치는 아닙니다.

    ESPHome Bluetooth Proxy

    역할:
    스마트폰이 계속 송신하는
    BLE 광고를 주변에서 수신
    

    집 안 여러 위치에 설치할 수 있습니다.

    Home Assistant Private BLE Device

    역할:
    Bluetooth Proxy가 발견한
    변경되는 Random MAC을
    IRK로 해석하여
    동일한 스마트폰인지 식별
    

    따라서 최종적으로:

    IRK Capture
    = 신분증 번호를 알아내는 역할
    
    Bluetooth Proxy
    = 스마트폰을 발견하는 역할
    
    Private BLE Device
    = 발견된 스마트폰이 누구인지
      IRK로 확인하는 역할
    

    이라고 이해하면 됩니다.

    현재 e81238bfcbd52b843583ffe0485ea975 IRK에 대한 Home Assistant Private BLE Device 등록 및 기본 추적은 성공한 상태입니다.





    < tool 설치>
    ESPHome용 IRK 캡처 
     

    이 ESPHome 패키지는 ESPHome이 설치된 ESP32를 사용하여 Apple 및 Android 블루투스 ID 확인 키(IRK)를 캡처합니다. 캡처한 IRK를 Home Assistant의 개인 BLE 장치 통합 기능과 함께 사용하면 안정적인 방 단위 재실 감지가 가능합니다. 저는 Bermuda BLE 삼각측량 통합 기능과 IRK를 활용하여 방 단위 재실 감지를 구현했습니다.

    이 ESPHome IRK 캡처 패키지는 IRK 캡처 전용으로 설계되었으며 블루투스 프록시로 사용할 수 없습니다. 사용하지 않을 때는 여분의 ESP32 장치에 이 패키지를 플래싱하여 보관하거나, ESP32에 임시로 플래싱한 후 일반 블루투스 프록시 ESPHome 설정으로 되돌리는 것이 좋습니다. IRK는 일반적으로 영구적이며 시간이 지나도 변경되지 않습니다.

    BLE IRK란 무엇이며 왜 필요한가요?
    최신 Apple 및 Android 기기는 추적을 방지하기 위해 MAC 주소를 주기적으로 무작위로 변경하는 BLE 개인 정보 보호 기능을 사용합니다 . 이로 인해 Home Assistant에서 ESPHome Bluetooth Proxy 추적에 문제가 발생합니다. 기기의 MAC 주소가 변경될 때마다 다른 기기로 인식되기 때문입니다. 이러한 MAC 주소 변경은 최대 15분마다 발생할 수 있습니다.

    IRK( Identity Resolving Key) 는 BLE 페어링 중에 교환되는 암호화 키로, 인증된 장치가 이러한 임의 MAC 주소를 원래 장치로 확인할 수 있도록 합니다. 장치의 IRK를 캡처하면 장치가 MAC 주소를 무작위로 변경하더라도 안정적으로 장치의 존재 여부를 추적할 수 있습니다.

    기기에서 IRK(임시 잠금 레코드)를 캡처하는 것은 매우 까다로울 수 있습니다. 블루투스 스택은 OS 버전과 기기 제조사에 따라 매우 다양하기 때문입니다. 일부 기기는 이 패키지와 호환되지 않거나, IRK를 성공적으로 캡처하기 위해 페어링 코드 수정이 필요할 수 있습니다. 이 패키지에는 디버깅 코드가 많이 포함되어 있어, 여러분이 선호하는 LLM(로컬 라이프 매니저)이 디버그 로그를 읽고 코드 변경을 제안해 줄 수 있도록 도와줍니다.

    ESP32는 BLE 광고에 임의의 고정 주소를 사용하며 , 이 주소는 장치가 부팅될 때마다 새로 생성됩니다. 이 주소는 광고되는 MAC 주소이자 페어링을 위한 식별 주소로 사용됩니다. "새 MAC 주소 생성" 버튼을 누르면 이 주소도 변경됩니다. 하지만 휴대폰이나 스마트워치가 이전에 ESP32와 페어링된 적이 있다면, 캐시된 연결 정보가 남아 있을 수 있습니다. 기기가 ESP32를 완전히 새로운 장치로 인식하도록 하려면 ESP32를 재시작하거나 "새 MAC 주소 생성"을 사용한 다음, 휴대폰/스마트워치에서 페어링 정보를 삭제하고 다시 페어링을 시도하십시오.

    ESPHome과 Bermuda BLE를 사용하여 각 방에 누가 있는지 추적하세요.
    Home Assistant와 Bermuda BLE 삼각측량 기술을 이용한 방 단위 재실 감지에 대한 자세한 내용은 제 게시글 " ESPHome + Bermuda BLE로 각 방에 누가 있는지 추적하기"를 참조하세요.

    이 패키지의 기능
    이 IRK 캡처 구성 요소는 ESP32를 다양한 플랫폼에서 IRK를 캡처하기 위해 여러 장치 유형을 에뮬레이션할 수 있는 BLE 주변 장치로 변환합니다. 두 가지 BLE 프로파일을 지원합니다.

    심박 센서 프로필 (Apple 기기, Android 스마트워치용): 심박수 모니터로 광고되며, Apple 기기와 많은 Android 스마트워치에서 (타사 앱을 통해) 이를 검색할 수 있습니다.
    키보드 프로필 (안드로이드폰용): "로지텍 K380" 키보드로 광고하며, 삼성 갤럭시폰의 강력한 BLE 필터링을 우회합니다.
    Apple 또는 Android 기기가 ESP32와 페어링되면 다음과 같은 현상이 발생합니다.

    ESP32는 선택된 BLE 장치 유형(심박 센서 또는 키보드)으로 자신을 나타냅니다.
    기기가 안전한 페어링 프로세스를 시작합니다.
    페어링 과정에서 장치는 ESP32와 IRK를 공유합니다.
    IRK는 Home Assistant 텍스트 센서로 포착되어 노출됩니다.
    그런 다음 이 IRK를 개인 BLE 장치 통합과 함께 사용하여 재실 여부를 추적할 수 있습니다.
    ESPHome IRK 캡처 장치

    요구 사항
    블루투스를 지원하는 ESP32 보드 (ESP32, ESP32-C3, ESP32-C6, ESP32-S3 등 모든 변형)
    ESP-IDF 프레임워크 (필수 - 이 구성 요소는 Arduino 프레임워크를 지원하지 않습니다)
    ESPHome 2026.7 이상 버전 - 2026.7.4 버전에서 테스트 완료
    Home Assistant (선택 사항이지만, 캡처된 IRK를 개인 BLE 장치 통합에 사용하려면 권장합니다.)
    ESPHome 장치 빌더 (선택 사항이지만, Home Assistant에서 ESPHome 장치를 더 쉽게 관리할 수 있도록 해줍니다.)
    설치 지침
    ESPHome Device Builder의 설치 및 사용법을 자세히 다룬 블로그 게시물을 작성했습니다. 이 게시물에서는 ESP32용 장치 프로필을 만들고 장치의 IRK를 캡처하는 방법을 보여줍니다. 다음 링크에서 확인하실 수 있습니다: How-To: Using my ESPHome Bluetooth IRK Capture Package

    설치 지침을 매우 간략하게 정리하면 다음과 같습니다.

    ESP32 보드에 맞는 새로운 ESPHome 장치를 만드세요.
    표시된 패키지를 하단의 섹션에 추가하세요.
    ESP32 장치를 연결하고 펌웨어를 플래싱하세요.
    ESPHome Device Builder는 브랜치에서 패키지와 컴포넌트를 가져 main오므로 클린 빌드를 실행하면 항상 최신 버전이 설치됩니다. 제 블로그 게시물에는 Seeed Studio XIAO S3, C3, C5 및 C6 장치 프로필 개선 사항에 대한 내용이 포함되어 있습니다.

    장치 YAML 구성

    패키지 내용은 irk-capture-device-remote.yaml 에서 확인할 수 있습니다 .

    사용 설명서
    다시 한번 말씀드리지만, 제 블로그 게시글에서 사용법을 자세히 다루고 있습니다. 하지만 아주 간단하게 요약하면 다음과 같습니다.

    Home Assistant에서 설정 > ESPHome > ESP32 IRK 캡처 장치로 이동하세요.
    적절한 BLE 프로필을 선택하세요(Apple 기기 및 Android 스마트워치의 경우 심박 센서, Android 스마트폰의 경우 키보드).
    휴대폰이나 스마트워치를 광고용 ESP32 장치 이름과 페어링하세요.
    센서의 IRK 값을 확인하면 캡처된 IRK 값이 표시됩니다.
    캡처한 IRK를 Home Assistant의 개인 BLE 장치 통합에 붙여넣으세요.
    홈 어시스턴트 엔티티
    플래싱 후 Home Assistant에 연결되면 다음과 같은 항목을 사용할 수 있습니다.

    실재 유형 설명
    BLE 광고 스위치 블루투스 연결이 끊어지지 않도록 블루투스 광고를 활성화 상태로 유지하세요(기본적으로 활성화됨).
    BLE 장치 이름 텍스트 입력 심박 센서 프로필 이름을 변경하세요(기본값: "IRK Capture"). 키보드는 "Logitech K380"으로 고정되어 있습니다.
    BLE 프로필 선택하다 BLE 광고 프로필을 선택하세요. Apple에서는 "심장 센서", Android에서는 "키보드"를 선택하세요. 프로필을 변경하면 재부팅됩니다.
    새로운 MAC 주소 생성 단추 ESP32용 새 임의 MAC 주소를 생성합니다.
    장치 MAC 주소 텍스트 센서 마지막으로 페어링된 장치의 블루투스 MAC 주소
    유효 MAC 텍스트 센서 ESP32에서 현재 광고 중인 BLE MAC 주소
    이르크 텍스트 센서 캡처된 IRK는 다음과 같은 형식입니다.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    기기 재시작 단추 ESP32를 재시작하면 모든 페어링 정보가 삭제됩니다.
    BSSID 텍스트 센서 Wi-Fi 액세스 포인트 BSSID(진단용)
    내부 온도 감지기 ESP32 내부 온도(진단)
    IP 텍스트 센서 장치 IP 주소(진단용)
    스코틀랜드 사람 텍스트 센서 ESP32 Wi-Fi MAC 주소(진단용)
    SSID 텍스트 센서 연결된 Wi-Fi 네트워크 이름(진단용)
    가동 시간 감지기 장치 가동 시간(진단)
    (부팅 이후) Wi-Fi 연결이 끊깁니다. 감지기 부팅 후 Wi-Fi 연결 끊김 횟수(진단)
    Wi-Fi RSSI 감지기 Wi-Fi 신호 강도(dBm)(진단용)

    테스트된 기기
    이 ESPHome IRK 캡처 구성 요소는 다음 환경에서 성공적으로 테스트되었습니다.

    Apple OS 26 및 27 제품군:

    아이폰 17 프로
    애플 워치 울트라 3
    아이패드 프로 M5
    안드로이드 기기:

    삼성 갤럭시 S25+
    삼성 갤럭시 워치7
    삼성 갤럭시 워치 (웨어 OS 5)
    구글 픽셀 9
    LineageOS 18.1이 설치된 탈옥된 아마존 에코 쇼 5
    문제 해결 팁
    제공된 IRK는 Home Assistant가 인식할 수 있는 BLE 장치와 일치하지 않습니다.
    이 문제는 일부 안드로이드 기기에서 가장 흔하게 발생하며, 캡처한 IRK를 개인 BLE 장치 필드에 입력할 때 나타납니다. 홈 어시스턴트가 해당 IRK와 일치하는 BLE 장치를 찾지 못하기 때문에 발생하는 현상입니다. 일부 안드로이드 기기는 BLE 비콘을 매우 ​​드물게 송신합니다. 따라서 홈 어시스턴트가 최근에 해당 BLE 장치를 감지하지 못하여 IRK를 일치시킬 수 없는 것입니다. 안타깝게도 이 문제에 대한 해결책은 기기 및 운영체제에 따라 매우 다르며, 해결이 불가능할 수도 있습니다. 사용하시는 기기를 검색하여 BLE 비콘 송신 빈도를 높일 수 있는 설정이 있는지 확인해 보시기 바랍니다.

    ESP32 장치 이름이 블루투스 설정에 나타나지 않습니다
    기기에서 블루투스를 끄세요
    ESP32의 BLE 스택을 재설정하려면 "장치 재시작" 버튼을 누르십시오.
    "BLE 광고" 스위치가 켜져 있는지 확인하십시오.
    기기의 블루투스를 다시 켜고 ESP32에 연결하세요.
    ESP32 장치가 Android에 나타나지 않으면 아래 섹션을 참조하세요.
    안드로이드폰에서 ESP32 장치 이름을 볼 수 없습니다.
    삼성 One UI 7(갤럭시 S25, S24 등)은 블루투스 설정에서 BLE 장치를 강력하게 필터링합니다. 장치를 다시 표시하려면 다음 단계를 따르세요.

    개발자 옵션 활성화 : 설정 → 휴대전화 정보 → 소프트웨어 정보 → "빌드 번호"를 7번 탭하세요
    BLE 가시성 활성화 : 설정 → 개발자 옵션 → 아래로 스크롤하여 "Bluetooth 설정에서 지원되지 않는 Bluetooth LE 장치 표시"를 활성화합니다.
    블루투스 설정으로 돌아가서 다시 검색하면 ESP32 장치가 나타날 것입니다.
    장치(예: 키보드 프로필을 사용하는 경우 "Logitech K380")를 탭하고 페어링을 탭하세요. IRK가 ESP32 로그와 Home Assistant의 ESPHome 장치 페이지에 나타나야 합니다.
    개발자 옵션 수정 후에도 안드로이드 폰이 여전히 표시되지 않습니다.
    개발자 옵션으로 문제를 해결할 수 없거나, 유사한 필터링 기능을 가진 삼성 이외의 안드로이드 기기를 사용 중인 경우, nRF Connect 앱을 사용해 보세요.

    Play Store에서 nRF Connect 앱을 설치하세요 (Nordic Semiconductor 제작).
    앱을 열고 "스캔"을 탭하세요.
    키보드 프로필을 사용하는 경우 장치 목록에서 "Logitech K380"을 찾으십시오.
    탭하여 연결하세요
    페어링 대화 상자가 나타나면 연결 프로세스를 완료할 수 있습니다.
    ESP32 로그 또는 ESPHome 장치 페이지에서 캡처된 IRK를 찾아보세요.
    GrapheneOS / 강화된 안드로이드 — "PIN 또는 암호가 잘못되었습니다" 오류
    GrapheneOS(및 일부 강화된 Android 빌드)는 HID 키보드 장치에 대해 인증된 페어링을 필수로 요구합니다 . 블루투스 키보드가 이론적으로 키 입력을 주입할 수 있기 때문에 GrapheneOS는 연결을 완료하기 전에 PIN 또는 암호 확인을 요구합니다. IRK Capture는 "Just Works" 페어링(PIN 없음)을 사용하므로 GrapheneOS는 키보드 프로필 페어링을 거부하고 휴대폰에 "잘못된 PIN 또는 암호" 메시지를 표시합니다.

    증상:

    휴대폰 페어링 중에 "PIN 또는 암호가 잘못되었습니다"라는 메시지가 표시됩니다.
    IRK는 로그 및 ESPHome 장치 페이지에 나타날 수 있지만, 이를 개인 BLE 장치 통합에 붙여넣으면 "제공된 IRK는 Home Assistant에서 인식할 수 있는 BLE 장치와 일치하지 않습니다."라는 메시지가 표시됩니다.
    ESP32의 MAC 주소를 변경하고 다시 시도했지만 연결이 실패했습니다.ENC_CHANGE status=1035
    캡처된 IRK는 GrapheneOS가 연결을 불완전한 것으로 간주하여 즉시 새로운 RPA 키 상태로 전환하거나, HA의 패시브 스캐너가 해당 장치를 감지하기 전에 페어링이 중단되었기 때문에 Home Assistant에서 사용할 수 없습니다.

    해결 방법: 심박 센서 프로필로 전환하세요.

    GrapheneOS는 심박 센서에 대해 MITM 인증 페어링을 강제하지 않으므로 Just Works 페어링이 원활하게 성공하고 캡처된 IRK가 올바르게 작동합니다.

    Home Assistant의 ESPHome 장치 페이지에서 BLE 프로필을 "심장 센서" 로 변경하세요.
    ESP32가 재부팅되고 광고를 시작할 때까지 약 30초 정도 기다리세요.
    GrapheneOS를 사용하는 스마트폰에서 블루투스 설정을 열고 심박 센서 장치와 페어링하세요.
    IRK가 캡처되어 게시됩니다. 이를 평소처럼 개인 BLE 장치 통합에 사용하십시오.
    안드로이드 워치
    많은 안드로이드 스마트워치는 BLE 장치를 강력하게 필터링하기 때문에 기본적으로 키보드나 심박 센서는 페어링 가능한 장치로 표시되지 않습니다. 하지만 "Gear Tracker II"(본 앱과는 무관함)라는 앱은 이러한 강력한 BLE 필터링을 우회하여 스마트워치를 ESP32와 페어링하고 IRK를 추출할 수 있도록 해줍니다.

    "역방향" 페어링(즉, 시계가 페어링이 필요한 장치로 인식되는 경우)이 필요한 시계는 이 패키지와 호환되지 않습니다. 이 패키지는 시계가 ESP32와 페어링되어야 하며, 그 반대의 경우는 지원하지 않습니다.

    IRK는 페어링 후 포착되지 않음
    일부 액세서리와 페어링할 때 모든 기기가 블루투스 보안을 사용하는 것은 아닙니다. 예를 들어, 일부 가민 시계는 고정된 BLE 주소를 사용하는 것으로 알려져 있으며, 따라서 IRK 값이 없습니다. ESP32 로그와 Home Assistant의 IRK 센서에는 IRK가 사용되지 않았다고 표시됩니다.

    페어링 후에는 기기의 블루투스 설정에서 BLE 장치를 연결 해제/연결 해제하세요.
    기기에서 블루투스를 끄세요
    ESPHome 장치 페이지에서 BLE 장치 이름을 수정하세요.
    기기에서 블루투스를 켜세요
    ESP32와 다시 페어링해 보세요.
    그래도 문제가 해결되지 않으면 휴대폰/스마트워치/태블릿의 전원을 껐다 켜고, ESP32의 전원도 껐다 켜고, BLE 장치 이름을 변경한 후 다시 페어링을 시도해 보세요.
    새 버전으로 업그레이드
    IRK Capture를 새 버전으로 업그레이드할 때는 모든 구성 요소 변경 사항이 완전히 컴파일되도록 항상 클린 빌드를 수행하십시오.

    ESPHome Device Builder에서 IRK Capture 장치를 엽니다.
    오른쪽 하단의 점 3개 메뉴(⋮)를 클릭하고 "빌드 파일 정리"를 선택하세요.
    정리 작업이 완료되면 "설치"를 클릭하여 재구축 및 플래싱을 진행하십시오.
    정리 단계를 건너뛰면 오래된 캐시된 오브젝트 파일이 새 구성 요소 소스에 연결되어 플래시가 성공적으로 완료된 것처럼 보이더라도 예기치 않은 동작이 발생할 수 있습니다.

    ESPHome 로그 샘플
    다음은 IRK 캡처가 성공적으로 완료된 것을 보여주는 샘플 로그입니다.

    [16:15:01.812][D][switch:065]: 'BLE Advertising': Sending state ON
    [16:15:01.814][D][irk_capture:1690]: Advertising with profile: Heart Sensor
    [16:15:01.861][D][sensor:135]: 'Wi‑Fi RSSI': Sending state -30.00000 dBm with 0 decimals of accuracy
    [16:15:16.669][I][irk_capture:866][nimble_host]: Connection established successfully
    [16:15:16.669][I][irk_capture:1832][nimble_host]: Conn start: handle=0 enc_ready=0 was_adv=1
    [16:15:16.669][I][irk_capture:1835][nimble_host]: Connected; handle=0, initiating security
    [16:15:16.669][I][irk_capture:362][nimble_host]: sec: enc=0 bonded=0 auth=0 key_size=0
    [16:15:16.669][I][irk_capture:366][nimble_host]: peer ota=4A:1B:2C:3D:4E:5F type=1
    [16:15:16.669][I][irk_capture:368][nimble_host]: peer id =A1:B2:C3:D4:E5:F6 type=0
    [16:15:16.669][D][irk_capture:372][nimble_host]: conn params: interval=24 latency=0 supervision_timeout=500
    [16:15:16.672][D][irk_capture:376][nimble_host]: role=slave our_ota=C0:FF:EE:12:34:56
    [16:15:18.724][I][irk_capture:2105]: Retrying security initiate after 2050 ms
    [16:15:18.727][D][irk_capture:2107]: Retry security initiate rc=2
    [16:15:19.117][D][irk_capture:1458][nimble_host]: Pairing complete: handle=0
    [16:15:19.121][D][irk_capture:1195][nimble_host]: Peer identity resolved using IRK
    [16:15:19.121][I][irk_capture:988][nimble_host]: ENC_CHANGE status=0 (0x00)
    [16:15:19.121][I][irk_capture:1045][nimble_host]: Encryption established; attempting immediate IRK capture
    [16:15:19.121][I][irk_capture:522][nimble_host]: Pairing completed; publishing IRK again
    [16:15:19.121][I][irk_capture:425][nimble_host]:
    [16:15:19.121][I][irk_capture:428][nimble_host]: *** IRK CAPTURED *** (REPAIR)
    [16:15:19.121][I][irk_capture:607][nimble_host]: Identity Address: A1:B2:C3:D4:E5:F6
    [16:15:19.121][I][irk_capture:608][nimble_host]: IRK: a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6
    [16:15:19.121][I][irk_capture:609][nimble_host]: Capture events this session: 2
    [16:15:19.121][I][irk_capture:610][nimble_host]: Unique devices this session: 1
    [16:15:19.121][I][irk_capture:425][nimble_host]:
    [16:15:19.211][I][irk_capture:893][nimble_host]: Disconnect reason=534 (0x216)
    [16:15:19.211][I][irk_capture:1932][nimble_host]: Disconnected
    크레딧
    ESPresense의 등록 기능을 기반으로 합니다 .

    원본 패키지: github://KyleTeal/irk-capture/irk-capture-package.yaml@main

    특허

    첨부 파일을 스킨보드에 구성 PDF보기( W:\g5\skin\board\BS4-Basic-Webzine_11q_pdf_php82\view.skin.php + view_pdf.php구성)



    관련자료

    댓글 0
    등록된 댓글이 없습니다.

    최근글


    새댓글