Testing HomeKit add-on on OpenHAB 2

Hello, everyone!

I am testing now HomeKit add-on (Initial contribution of HomeKit add-on #657) and cannot make it work. I am using HomeKit Accessory Simulator on one computer and OpenHAB 2 on another one. They are both connected to the same network. The idea is to create virtual light bulb on accessory simulator and turn it on and off from OpenHAB.

I configured lightbulb in OpenHAB as follows:

.items

Switch BiowaveBulb “BiowaveBulb” [ “homekit:Lightbulb” ]

.rules

rule “Set BiowaveBulbSwitch value”
when
Item BiowaveBulb changed
then
postUpdate(BiowaveBulb, BiowaveBulb.state)
var String BiowaveBulbStr= "BiowaveBulb changed to " + BiowaveBulb.state.toString
logInfo( "BiowaveBulb ", BiowaveBulbStr )
end

.sitemap

Frame label="HomeKit" {
    Switch item=BiowaveBulb label="BiowaveBulb"
}

homekit.cfg

port=9124
pin=626-58-687
networkInterface=192.168.1.123

192.168.1.123 - ip address of computer with running HomeKit Accessory Simulator. Configuration of simulator is in the attached screenshot.

I’ve tried to connect to NewBridge from Elgato Eve on my iPhone and it works properly.

I would be very thankfull for any suggestions how to make it work.

Thanks,
Oleg

1 Like

@oleg-panichev - the HomeKit add-on is meant to expose your openHAB items over the HomeKit protocol. It doesn’t let you bind existing HomeKit devices into openHAB.

The networkInterface should be the IP of the host running openHAB, not another machine’s.

Thank you for your answer. Sorry for misunderstanding the description of add-on. Do you plan to implement HomeKit binding?

Anyway, I’ve tried to add accessory in Elgato Eve. It succesfully finds openHAB accessory, but can not pair with it. Pairing proccess is just skipping and application turns back to the screen with list of accessories available for pairing.

No, sorry, I don’t have any plans to implement it as a binding. That sounds like a good way to get on the wrong side of Apple’s legal team :slightly_smiling:

Assuming the server logs don’t show any errors, you can sometimes get valuable information from the iOS logs. You can use Xcode to view them.

Alternatively, if it’s failing late in the pairing process (after you’ve entered your pin), it’s usually a validation error. You can get the full accessory output by doing the following:

  1. In the osgi console, enter the command: smarthome homekit allowUnauthenticated true
  2. Download http://host:9124/accessories

If you send me the output, I can take a look.

I’m testing the HomeKit add-on as well, I got very excited when I saw it in the services.
Now as a quick setup, I only get my Hue Bulbs showing up, this makes sense as they’re the only things I have that are HomeKit compatible.

But my hope for this was it would show all items you had independent of what type of device they were (i.e. zwave). Was this incorrect reasoning?

Edit: think I’ve jumped the gun, Hue Bulbs must be showing because the hue bridge is broadcasting to HomeKit itself. My bad.

After testing @chris Z-Wave 2.0 add-on i’m now very happy about testing @beowulfe HomeKit implementation. You guys make me very happy with things you make possible with OH2. Thanks a lot for your work - the result is awesome :slightly_smiling:

At the end of last year i thought combining of openHAB, Z-Wave and HomeKit was a dream, but still now most of them is working fine - at this early beta-stadium :slightly_smiling:

1 Like

@christianjwaite - you’ve got the right idea. I’m now controlling most of my openHAB items through HomeKit. There’s some setup you need to do first - HomeKit thinks of services in terms of “Thermostats, Lightbulbs, Garage Doors, etc”, whereas openHAB thinks of Items like Numbers, Dimmers, Strings, etc. You have to map one onto the other.

Check out the documentation here - https://github.com/openhab/openhab2-addons/blob/master/addons/io/org.openhab.io.homekit/README.md

Thanks Andy,
So how would you add the prefix in OH2. It seems that it creates items for you. I’ve tried deleting all the ones it’s created before and creating my own, but that makes loads of problems with the ‘things’.

So I’m just going with the flow now and letting it do what it wants to do. But then how can I access the item file to add the HomeKit identifying string?

Are you using a version before the latest beta? I believe the items are not created for you anymore - you can only link the channels from discovered things to manually defined items. At least, that’s the way @Kai explained it to me.

When I was playing with the pre-beta version, I think I remember being able to add tags via the API, but not through the UI.

That’s correct. Just as with openHAB 1, you should maintain all items yourself in an *.items file. To expose some items there, simply add the [ "homekit:xxx" ] to them - that’s all you need to do.

Thanks, updated and now it’s only creating a group per thing. I much prefer being able to create my own items.

HomeKit now working perfectly, tested a few different apps. Very nice! Thanks for all your effort!!!

Hi Kai,
how do I expose my homematic temperature sensor? Tried with item definition like this, but doesn’t work:

Number Temp_Ist “Ist [%.1f °C]” (Alles) {homematic=“address=MEQ0xxxxxxx, channel=1, parameter=TEMPERATURE”} [ “homekit:currentTemperature” ]

If I activate trace and try http://host:9124/accessories, I get only:

2016-02-27 21:49:05.184 [INFO ] [lfe.hap.impl.connections.HttpSession] - Unrecognized request for /accessories
2016-02-27 21:49:05.187 [INFO ] [ap.impl.http.HomekitClientConnection] - 404 /accessories

Thanks
Markus

currentTemperature is a characteristic of a thermostat accessory. You can’t define it by itself.

Try homekit:TemperatureSensor like the example here: https://github.com/openhab/openhab2-addons/blob/master/addons/io/org.openhab.io.homekit/README.md

Hi Andy,
I changed it to TemperatureSensor but makes no difference. I get the same error message in trace when browsing to port 9124. And in iOS apps like MyHome or Elgato Eve I can see openHAB, but cannot add it - I get only communication error and there are no logs in the openhab tracefile. So the identify-procedure doesn’t seem to work.Any idea what I can try to identify the problem?
Regards
Markus

Did you enable unauthenticated access before trying to retrieve /accessories? The console command to do so is listed earlier in this thread.

Problem with port 9124 was solved after disabling ipv6. Now I get a JSON response from /accessories, but adding openHAB still does not work in the iOS apps and I do not see any trace entries from these. I have activated traces in console:
openhab> homekit allowUnauthenticated true
Enabled unauthenticated homekit access
openhab> log:set TRACE com.beowulfe.hap
openhab>

You can try checking the console logs on iOS, or post your /accessories result here and I’ll take a look.

Hi beowulfe,

I am having some issues making Homekit work with OH2. I am using latest build from cloudbees and latest available homekit version.

I am able to see OpenHAB with IOS app such as Insteon but when I try to add them and the pin is requested, it finally fails.

Below, is the full trace:

03:14:15.608 [TRACE] [pl.http.impl.NettyHomekitHttpService] - READ UnpooledUnsafeDirectByteBuf(ridx: 0, widx: 94, cap: 512) [/192.168.2.29:53791]:
00000000 50 4F 53 54 20 2F 70 61 69 72 2D 73 65 74 75 70 POST /pair-setup
00000010 20 48 54 54 50 2F 31 2E 31 0D 0A 43 6F 6E 74 65 HTTP/1.1…Conte
00000020 6E 74 2D 4C 65 6E 67 74 68 3A 20 36 0D 0A 43 6F nt-Length: 6…Co
00000030 6E 74 65 6E 74 2D 54 79 70 65 3A 20 61 70 70 6C ntent-Type: appl
00000040 69 63 61 74 69 6F 6E 2F 70 61 69 72 69 6E 67 2B ication/pairing+
00000050 74 6C 76 38 0D 0A 0D 0A 00 01 00 06 01 01 tlv8…

03:14:15.657 [INFO ] [ulfe.hap.impl.pairing.PairingManager] - Starting pair for openHAB
03:14:23.360 [INFO ] [ap.impl.http.HomekitClientConnection] - 200 /pair-setup
03:14:23.374 [TRACE] [pl.http.impl.NettyHomekitHttpService] - WRITE UnpooledUnsafeDirectByteBuf(ridx: 0, widx: 513, cap: 1024) [/192.168.2.29:53791]:
00000000 48 54 54 50 2F 31 2E 31 20 32 30 30 20 4F 4B 0D HTTP/1.1 200 OK.
00000010 0A 43 6F 6E 74 65 6E 74 2D 74 79 70 65 3A 20 61 .Content-type: a
00000020 70 70 6C 69 63 61 74 69 6F 6E 2F 70 61 69 72 69 pplication/pairi
00000030 6E 67 2B 74 6C 76 38 0D 0A 43 6F 6E 74 65 6E 74 ng+tlv8…Content
00000040 2D 4C 65 6E 67 74 68 3A 20 34 30 39 0D 0A 43 6F -Length: 409…Co
00000050 6E 6E 65 63 74 69 6F 6E 3A 20 6B 65 65 70 2D 61 nnection: keep-a
00000060 6C 69 76 65 0D 0A 0D 0A 06 01 02 02 10 D6 03 1D live…
00000070 DF 2D 09 EF 2D 6B 42 EB 4F 18 B9 AA F3 03 FF 3F .-…-kB.O…?
00000080 AE CD 91 85 95 05 D5 61 04 6C 63 56 9A C4 DB 76 …a.lcV…v
00000090 84 02 6F E6 1B 34 CC 07 C6 55 1F 68 51 60 40 50 …o…4…U.hQ@P 000000A0 3A 80 7F 53 BC 43 09 A8 6D D5 75 7E FB C7 E9 52 :..S.C..m.u~...R 000000B0 21 7F 2F 9C 76 5E E3 AF 6F 11 97 18 DF 5C 97 8D !./.v^..o....\.. 000000C0 03 8B A3 73 2F F9 2F 6B DE BF 62 A9 20 39 94 12 ...s/./k..b. 9.. 000000D0 19 EA E8 8B 73 61 A6 13 0F 8F 60 BE 7A 87 DD A0 ....sa.....z…
000000E0 69 28 2A ED F9 DD 8C 93 99 3F 59 D6 79 CE 46 72 i(…?Y.y.Fr
000000F0 9E 05 2F 90 C1 55 F4 27 8E D8 79 DD C3 2C F5 7E …/…U.’…y…,.~
00000100 C7 F9 6A FB FB 7F E1 FF C1 E0 3B 84 AC 37 A6 E5 …j…;…7…
00000110 E3 64 0F E7 1C A7 81 82 63 AB 1A 8B 5B 62 B8 B6 .d…c…[b…
00000120 1C 7A 63 CE 83 52 F0 8E E5 83 AF BC AA 50 5C 6B .zc…R…P\k
00000130 BC 67 3F 09 64 49 4D 17 23 EA F6 37 88 72 83 54 .g?.dIM.#…7.r.T
00000140 A9 38 E1 3E DC 6C FA D4 0D 7C F3 B9 90 4A A1 28 .8.>.l…|…J.(
00000150 0A A7 1A E8 BD DC 4B 5A D2 63 AA 19 DE CF 05 DA …KZ.c…
00000160 F9 21 0E 0F 16 BE D7 A9 21 D0 B4 14 C9 50 0E A7 .!..!..P…
00000170 01 F4 4C 84 60 D4 BD DB F0 23 D7 A8 BA 73 03 81 …L.`…#…s…
00000180 0F 2A E2 19 C7 32 61 2D B9 29 82 F4 68 86 68 85 .
…2a-.)…h.h.
00000190 9C CF E5 2E D9 E2 1B 8C 8A C1 2B D2 16 ED B0 23 …+…#
000001A0 02 D0 DC 89 DB 4E DA 10 18 C3 14 B9 3B 52 1E 6A …N…;R.j
000001B0 B0 D0 E1 D9 F2 99 82 BD 66 FB 33 17 1C 72 D0 73 …f.3…r.s
000001C0 90 D8 D8 F9 EA 56 D3 C0 66 79 68 8C 4B 1E E7 93 …V…fyh.K…
000001D0 E6 2F 02 AE 87 27 F6 61 AE 17 D9 F8 2F 01 7F D1 ./…’.a…/…
000001E0 E2 1C 6C CC C1 8D 05 D8 C5 EE B5 47 AF 68 89 7B …l…G.h.{
000001F0 A4 BE B1 C6 DC F0 D3 AC E9 A6 C3 1A 65 C4 FB A9 …e…
00000200 83 .

03:14:42.853 [TRACE] [pl.http.impl.NettyHomekitHttpService] - READ UnpooledUnsafeDirectByteBuf(ridx: 0, widx: 512, cap: 512) [/192.168.2.29:53791]:
00000000 50 4F 53 54 20 2F 70 61 69 72 2D 73 65 74 75 70 POST /pair-setup
00000010 20 48 54 54 50 2F 31 2E 31 0D 0A 43 6F 6E 74 65 HTTP/1.1…Conte
00000020 6E 74 2D 4C 65 6E 67 74 68 3A 20 34 35 37 0D 0A nt-Length: 457…
00000030 43 6F 6E 74 65 6E 74 2D 54 79 70 65 3A 20 61 70 Content-Type: ap
00000040 70 6C 69 63 61 74 69 6F 6E 2F 70 61 69 72 69 6E plication/pairin
00000050 67 2B 74 6C 76 38 0D 0A 0D 0A 06 01 03 03 FF 73 g+tlv8…s
00000060 40 53 A6 38 D5 27 E2 AF 58 0B 27 C5 5A 5E CB 3A @S.8.’…X.’.Z^.:
00000070 11 32 69 0A 5D DA 1D A1 D7 28 0C A7 F8 B7 0D 25 .2i.]…(…%
00000080 A9 13 5D E0 F3 ED 05 3C DC B5 1D 7B 9F CA CF 69 …]…<…{…i
00000090 74 18 C1 93 24 40 86 DA E6 FB 96 9E 22 78 85 63 t…$@…"x.c
000000A0 5F B4 A9 C1 8E 10 31 97 78 D5 76 9F EB 6D 23 E0 …1.x.v…m#.
000000B0 8F 6F D6 43 C7 B7 B7 C8 79 47 FE EB 50 6E 54 6F .o.C…yG…PnTo
000000C0 50 E5 E7 F7 B4 85 0D 64 3B 96 B6 AD 10 89 7A FD P…d;…z.
000000D0 15 9E 63 32 16 F3 8E BB 1B 26 92 E1 D2 8F 12 53 …c2…&…S
000000E0 B0 1E 00 5F 23 E9 D5 FD 27 BC 8E 0F C8 FF 95 34 …
#…’…4
000000F0 DA 2C 20 56 84 CF D6 C6 FD B9 18 BE 02 BF 53 A6 ., V…S.
00000100 0F E4 3E AA AF 93 DB E5 5C 48 C0 38 E6 62 93 11 …>…\H.8.b…
00000110 AC 4E CA 4D B0 0D A9 D1 7D 17 18 11 D1 C7 AF 6B .N.M…}…k
00000120 F3 89 E2 42 5C B0 4A C9 8D DC 80 C2 BE 9C A6 AA …B.J…
00000130 F4 A2 BF 91 36 FA 08 51 43 B5 F3 73 CD FD 02 A5 …6…QC…s…
00000140 12 9C 51 F2 D1 70 9C D8 A0 41 79 EA 56 A1 73 F6 …Q…p…Ay.V.s.
00000150 A4 6C F7 D2 47 EC 85 25 E6 54 9D 9D 50 69 03 81 .l…G…%.T…Pi…
00000160 8A 21 44 6C FC 39 B5 40 52 98 10 19 6F 02 8B 51 .!Dl.9.@R…o…Q
00000170 1E 92 2A CE 66 DC 02 65 C5 C5 E1 16 50 D4 B0 07 ….f…e…P…
00000180 FA 9E 29 60 2B 50 95 98 F4 B2 A9 76 4C 35 7D D6 …)`+P…vL5}.
00000190 64 F8 DF 9E 1F 3F C7 63 1F 04 18 6A 7C CD C9 E5 d…?.c…j|…
000001A0 87 2A D0 F9 45 EA 20 69 71 71 CC AB 63 FA 15 E0 .
…E. iqq…c…
000001B0 E4 2A C4 76 8C BF D7 7C D1 37 55 90 73 1B 32 C1 .*.v…|.7U.s.2.
000001C0 37 83 32 56 79 9E 49 6C FD 96 62 1F 22 41 69 01 7.2Vy.Il…b."Ai.
000001D0 C5 77 FD 3B D4 82 96 BE 64 0F EB B7 83 7C 6C 59 .w.;…d…|lY
000001E0 F6 04 40 90 38 35 D4 C6 20 2A 5C D9 20 70 8C 26 …@.85… *. p.&
000001F0 65 2F EB A0 80 6A C8 48 DC D2 7A E0 12 5B C1 26 e/…j.H…z…[.&

03:14:42.863 [TRACE] [pl.http.impl.NettyHomekitHttpService] - READ UnpooledUnsafeDirectByteBuf(ridx: 0, widx: 35, cap: 512) [/192.168.2.29:53791]:
00000000 31 36 E7 7D A1 52 89 EB 95 C9 CD AD CE 03 29 D3 16.}.R…).
00000010 C3 95 A6 99 87 BD CE 51 2B 94 FC BC 9F F5 73 A4 …Q+…s.
00000020 62 32 9D b2.

03:14:42.867 [DEBUG] [ulfe.hap.impl.pairing.PairingManager] - Entering second stage of pair for openHAB
03:14:50.546 [INFO ] [ap.impl.http.HomekitClientConnection] - 200 /pair-setup
03:14:50.552 [TRACE] [pl.http.impl.NettyHomekitHttpService] - WRITE UnpooledUnsafeDirectByteBuf(ridx: 0, widx: 172, cap: 256) [/192.168.2.29:53791]:
00000000 48 54 54 50 2F 31 2E 31 20 32 30 30 20 4F 4B 0D HTTP/1.1 200 OK.
00000010 0A 43 6F 6E 74 65 6E 74 2D 74 79 70 65 3A 20 61 .Content-type: a
00000020 70 70 6C 69 63 61 74 69 6F 6E 2F 70 61 69 72 69 pplication/pairi
00000030 6E 67 2B 74 6C 76 38 0D 0A 43 6F 6E 74 65 6E 74 ng+tlv8…Content
00000040 2D 4C 65 6E 67 74 68 3A 20 36 39 0D 0A 43 6F 6E -Length: 69…Con
00000050 6E 65 63 74 69 6F 6E 3A 20 6B 65 65 70 2D 61 6C nection: keep-al
00000060 69 76 65 0D 0A 0D 0A 06 01 04 04 40 6B 87 5F A5 ive…@k._.
00000070 A6 58 30 8E 9F 98 A0 88 3D 15 61 85 21 73 00 9E .X0…=.a.!s…
00000080 C4 7D 79 74 79 AE 72 27 20 CC 33 D3 9B DF 19 D0 .}yty.r’ .3…
00000090 09 84 A8 CD 34 F6 D4 E7 F2 2B 0C D1 79 B7 7E 59 …4…+…y.~Y
000000A0 D7 B2 3A 8F DD D3 DC 12 66 D7 75 13 …:…f.u.

03:14:50.569 [TRACE] [pl.http.impl.NettyHomekitHttpService] - READ UnpooledUnsafeDirectByteBuf(ridx: 0, widx: 249, cap: 8192) [/192.168.2.29:53791]:
00000000 50 4F 53 54 20 2F 70 61 69 72 2D 73 65 74 75 70 POST /pair-setup
00000010 20 48 54 54 50 2F 31 2E 31 0D 0A 43 6F 6E 74 65 HTTP/1.1…Conte
00000020 6E 74 2D 4C 65 6E 67 74 68 3A 20 31 35 39 0D 0A nt-Length: 159…
00000030 43 6F 6E 74 65 6E 74 2D 54 79 70 65 3A 20 61 70 Content-Type: ap
00000040 70 6C 69 63 61 74 69 6F 6E 2F 70 61 69 72 69 6E plication/pairin
00000050 67 2B 74 6C 76 38 0D 0A 0D 0A 05 9A 78 51 5C 6C g+tlv8…xQ\l
00000060 0B 03 47 6B 96 F7 A9 2F D2 20 CF 26 CC A7 E2 F4 …Gk…/. .&…
00000070 DC AD 0D 87 2A 75 8C 01 D6 81 4C 16 B8 FB 85 87 …*u…L…
00000080 49 E3 65 A4 14 F8 74 12 AA 2C EA 23 24 2E 76 5A I.e…t…,.#$.vZ
00000090 22 18 C1 03 55 7B 17 B9 CE C3 D2 31 FC A8 51 02 "…U{…1…Q.
000000A0 85 02 21 AB B7 70 0F B7 51 8C 9D D5 C5 50 93 E5 …!..p…Q…P…
000000B0 43 2B 1C 6C F9 9A 8B 6F 36 8B 14 5D AA 71 BC 04 C+.l…o6…].q…
000000C0 37 9D 99 29 C3 0B D9 E6 41 13 FE FA 15 A7 35 7C 7…)…A…5|
000000D0 C9 88 2B E6 E3 3B F7 3B 45 62 2E 9C 5C D9 64 57 …+…;.;Eb…dW
000000E0 5B 7B EF 80 33 C4 CF AB 43 9E 05 59 F5 45 9A 62 [{…3…C…Y.E.b
000000F0 88 66 C4 B6 07 DB 06 01 05 .f…

03:14:50.573 [DEBUG] [ulfe.hap.impl.pairing.PairingManager] - Entering third stage of pair for openHAB
03:14:51.253 [INFO ] [ap.impl.jmdns.JmdnsHomekitAdvertiser] - Re-creating service due to change in discoverability to false
03:14:53.261 [INFO ] [ap.impl.jmdns.JmdnsHomekitAdvertiser] - Registering _hap._tcp.local. on port 9124
03:14:56.066 [INFO ] [ap.impl.http.HomekitClientConnection] - 200 /pair-setup
03:14:56.069 [INFO ] [.hap.impl.http.impl.AccessoryHandler] - Terminated homekit connection from /192.168.2.29:53791
03:14:56.071 [TRACE] [pl.http.impl.NettyHomekitHttpService] - WRITE UnpooledUnsafeDirectByteBuf(ridx: 0, widx: 244, cap: 256) [/192.168.2.29:53791]:
00000000 48 54 54 50 2F 31 2E 31 20 32 30 30 20 4F 4B 0D HTTP/1.1 200 OK.
00000010 0A 43 6F 6E 74 65 6E 74 2D 74 79 70 65 3A 20 61 .Content-type: a
00000020 70 70 6C 69 63 61 74 69 6F 6E 2F 70 61 69 72 69 pplication/pairi
00000030 6E 67 2B 74 6C 76 38 0D 0A 43 6F 6E 74 65 6E 74 ng+tlv8…Content
00000040 2D 4C 65 6E 67 74 68 3A 20 31 34 30 0D 0A 43 6F -Length: 140…Co
00000050 6E 6E 65 63 74 69 6F 6E 3A 20 6B 65 65 70 2D 61 nnection: keep-a
00000060 6C 69 76 65 0D 0A 0D 0A 06 01 06 05 87 7B 7E A1 live…{~.
00000070 30 2E C4 51 36 DA AA B8 07 68 A3 78 A3 62 81 41 0…Q6…h.x.b.A
00000080 11 23 07 A4 37 47 0C 85 2A 7E EF 78 A7 B4 8E 7B .#…7G…*~.x…{
00000090 06 4C 2E 83 4D 00 4C D5 9D 70 B9 58 4A BF 08 B8 .L…M.L…p.XJ…
000000A0 39 CB 04 66 D8 99 DC 64 C7 79 89 80 40 61 6B 81 9…f…d.y…@ak.
000000B0 51 0E 58 50 F9 74 B4 64 BD 41 49 5B D6 B5 D1 FA Q.XP.t.d.AI[…
000000C0 F9 29 CF F8 48 64 A1 F3 7C A3 53 4C DA D9 C2 44 .)…Hd…|.SL…D
000000D0 72 F2 93 8A A6 F9 5E D0 52 60 D2 38 2B B5 09 3C r…^.R`.8+…<
000000E0 56 BE 9B B5 12 72 21 C5 BC 9A 79 60 60 B1 5E 7D V…r!..y``.^}
000000F0 2C 84 FD 5D ,…]

In thw IOS app, the error says something like if the device (homekit) has disconnect, and the pairing never gets through completely.

Can you give me a gint in how to solve this?
thanks, regards.
Gonzalo

That’s a successful pair from the server’s end. I don’t think I’ve ever seen it fail at this particular point before. The client hasn’t retrieved the list of accessories yet (unless your log is cut-off), which is usually where things fail.

I think you’ll need to check the iOS console logs. If you have a mac, you can view them in Xcode: Window -> Devices -> Select your iOS device that’s connected via USB. You should see the log streaming in the bottom pane. Look for any output during the pairing process.

If you don’t have a mac, there’s tools out there that claim to be able to view the logs, but I haven’t tried any.

How do you disable ipv6? I know I saw it on a post earlier today, but not I can’t find it for the life of me

EDIT: figured that out, it’s ‘export _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"’