GUIDE - Getting the IRK for iPhone and Apple Watch without MacOS (Maybe also other devices?)

Hi Everyone,

I have seen some people in the community (including myself) struggle to get the IRK for the Private BLE integration.
In the documentation, the documented way is using Keychain on a MacOS device. But not everyone that has an iPhone has access to a MacOS device.

After searching around on the internet I found a way to get the IRK without using MacOS, but with a ESP32.

What do you need?

1. Setting up Arduino IDE
First, download and install the Arduino IDE (Download link).
After installing you want to add support for the ESP32 boards or the M5STACK boards.

ESP32

  1. Open the Arduino IDE and click the second icon down in the left hand bar.
  2. Search for “esp32” and install the one by “Espressif Systems”.
  3. The IDE is now ready for your device.

M5STACK ATOM

  1. Open the Arduino IDE and click “File” in the top left corner and click on “Preferences”.
  2. Paste the following URL in the “Additional boards managers URLs” and click OK: (https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json)
  3. Click the second icon down in the left hand bar.
  4. Search for M5STACK and click install.
  5. The IDE is now ready for your device.

2. Installing the software on the device
I found the following code online, This is not my code, i am not responsable if you run this code!

  1. Download the code from Github by pressing the green “Code” button and clicking “download Zip”
  2. Extract the contents of the zip
  3. In the Arduino IDE - Open the “esp32_get_irk” folder and open the esp32_get_irk.ino” file
  4. Connect the ESP32 (or M5STACK atom) to the computer
  5. In the top bar, click on the dropdown and select the port the device is connected to.
    You will now get a prompt to select a board type, for most people it wil be ESP32 Dev Module, otherwise search for the M5STACK Atom.
  6. Click the arrow button in the top left corner, the IDE will start compiling and uploading to your device.
    If the IDE fails, check the instructions for your device on how to upload new code.

3. Getting the IRK

  1. In the top right corner, click on the magnifying glass (on windows Tools/Serial Monitor), this will open the serial monitor.
  2. Change the baud rate to 115200
  3. Download the Bluetooth Terminal app App Store link
  4. Open the app and connect to “ESP_BLE_SECURITY”
    if you get an error try forgetting the “ESP_BLE_SECURITY” device from your phone’s Bluetooth settings
  5. In the serial monitor you will get the IRK key in several foramats:
  • IRK: ,0x1A,0x1B,0x1C,0x5E,0x87,0xD2,0x1D,0x57,0x27,0x14,0x4B,0x19,0xAD,0x58,0xCF,0x41
  • IRK, Base64 encoded for the Home Assistant Private BLE Device service: GhscXofSHVcnFEsZrVjPQQ==
  • IRK, reverse order for Home Assistant ESPrensence: 41CF58AD194B1427571DD2875E1C1B1A
  1. choose the format that fits where you need to use the IRK
  2. If you want to get the key for you Apple Watch too, restart the ESP or Atom Stack, open the serial monitor and connect through the Apple Watch app.
16 Likes

Thank you. Maybe I’m going blind but I don’t see a link in step 2 to download the zip file.

1 Like

Sorry! I fixed it!

The link just points to this post :upside_down_face: :wink:

I don’t know how that happend, but I fixed it. :sweat_smile:

That works! Thanks :+1:

I followed your instructions and it worked first time, great! In order to use this with ESPHome ESPresence, take the number you have in step 4.1 and reverse the order of each pair of numbers so that you end up with a 32 digit hex number. Using the IRK above you would get 41CF…1B1A.
You can then add that number into the Known BLE identity resolving keys field in ESPresence configuration.

1 Like

I’m struggling to find an option in the Apple Watch app to connect by Bluetooth. Could you point me in the right direction?

Just download the app on AppStore, it has a pairing Apple Watch app which will be automatically installed to your Apple Watch. Thereafter just launch the app on your Apple Watch itself - it can be found in the list of applications.

2 Likes

Did you have to add anything else to the hex number in irk field on espresence config page? My device shows not home and wonder if i’m missing something.

No, just enter the 32 digits. The integration seems to do a sanity check, so it will reject the IRK if it doesn’t see it nearby. You could try enabling debug logging for the integration, and have a look at this github issue for some help.

Hi Martin,

The app that is used on the iPhone is also installed on the Apple Watch.
You can use this app to connect.

Don’t forget to restart the ESP if you connected with your iPhone before!

1 Like

I added this to the instructions!

Awesome, I got it to finally show up in ESPresence but it seems to switch to not home after getting picked up by each room sensor. It will connect for a max of 2 or 3 minutes. Any suggestions?

I use the Private BLE integratation from HA itself. Maybe you can create a new topic on the forum.

Hi!

For whatever reason the app is not installed on my apple watch after installing on my apple phone. Any ideas what I can do??
I already uninstalled an reinstalled the app on the phone.
Did reboots of both devices.

Thanks!

Hi @james4711, in the Watch app on your iPhone, under the “General” section, there is a setting called “Install apps automaticly”. Is this enabled?

Hi!
Yes, this is enabled … the app is also not presented to be available to be installed at the very bottom of the app-list in the watch app on the iphone.

Any other ideas??

Thanks!

What is the generation of watch that you are using? I am using a Apple Watch series 3.
Maybe the app is not compatible?

I am using Apple Watch 7.