Getting password on Roomba j7+

Hello.  I just got myself a Roomba j7+ and am having trouble fetching the username/password from it using the methods listed here.  I'm also seeing the same thing on the dorita980 project, so I suspect this is more about the j7+ needing some new mojo vs. the older models, but that's purely a guess.
Here's the behavior I'm seeing when trying to fetch the username/password:
[jdiegmueller@nv-dc2-rproxy1 roomba]# ./getpassword.py -R <IP_ADDRESS>
2021-09-14 13:15:16 INFO [Roomba.Password] Using Password version 2.0a
2021-09-14 13:15:16 INFO [Roomba.Password] reading/writing info from config file ./config.ini
2021-09-14 13:15:16 INFO [Roomba.Password] waiting on port: 5678 for data
2021-09-14 13:15:17 INFO [Roomba.Password] Robot at IP: <IP_ADDRESS> Data: {
  "ver": "4",
  "hostname": "iRobot-15DF6D60B10A4BA48A53015E91E330D2",
  "robotname": "Roomba",
  "robotid": "15DF6D60B10A4BA48A53015E91E330D2",
  "ip": "<IP_ADDRESS>",
  "mac": "50:14:79:B1:DF:0C",
  "sw": "sapphire+1.0.17+Firmware-Production+52",
  "sku": "j755020",
  "nc": 0,
  "proto": "mqtt",
  "cap": {
    "binFullDetect": 2,
    "dockComm": 1,
    "edge": 0,
    "maps": 3,
    "pmaps": 5,
    "tLine": 2,
    "area": 1,
    "eco": 1,
    "multiPass": 2,
    "pose": 1,
    "team": 1,
    "pp": 0,
    "lang": 2,
    "5ghz": 1,
    "prov": 3,
    "sched": 1,
    "svcConf": 1,
    "ota": 2,
    "log": 2,
    "langOta": 0,
    "expectingUserConf": 1
  },
  "cloudConnState": 14
}
2021-09-14 13:15:27 INFO [Roomba.Password] 0 robot(s) already defined in file./config.ini, found 1 robot(s) on network
2021-09-14 13:15:27 INFO [Roomba.Password] To add/update Your robot details,make sure your robot (Roomba) at IP <IP_ADDRESS> is on the Home Base and powered on (green lights on). Then press and hold the HOME button on your robot until it plays a series of tones (about 2 seconds). Release the button and your robot will flash WIFI light.
Press <Enter> to continue...
s<Enter> to skip configuring this robot:
2021-09-14 13:15:38 INFO [Roomba.Password] Roomba (Roomba) IP address is: <IP_ADDRESS>
2021-09-14 13:15:42 DEBUG [Roomba.Password] Connection Successful
2021-09-14 13:15:42 DEBUG [Roomba.Password] Waiting for data
2021-09-14 13:15:52 ERROR [Roomba.Password] Connection Timeout Error (for <IP_ADDRESS>): The read operation timed out
2021-09-14 13:15:52 ERROR [Roomba.Password] Unable to get password from roomba
2021-09-14 13:15:52 ERROR [Roomba.Password] Error getting password for robot Roomba at ip<IP_ADDRESS>, received 7 bytes. Follow the instructions and try again.

What happens when you press and hold the home button as instructed?
Sent from my iPad
Nick Waterton P.Eng.

From: Jason A. Diegmueller @.>
Sent: Tuesday, September 14, 2021 1:16:41 PM
To: NickWaterton/Roomba980-Python @.>
Cc: Subscribed @.***>
Subject: [NickWaterton/Roomba980-Python] Getting password on Roomba j7+ (#95)
Hello. I just got myself a Roomba j7+ and am having trouble fetching the username/password from it using the methods listed here. I'm also seeing the same thing on the dorita980 project, so I suspect this is more about the j7+ needing some new mojo vs. the older models, but that's purely a guess.
Here's the behavior I'm seeing when trying to fetch the username/password:
@.*** roomba]# ./getpassword.py -R <IP_ADDRESS>
2021-09-14 13:15:16 INFO [Roomba.Password] Using Password version 2.0a
2021-09-14 13:15:16 INFO [Roomba.Password] reading/writing info from config file ./config.ini
2021-09-14 13:15:16 INFO [Roomba.Password] waiting on port: 5678 for data
2021-09-14 13:15:17 INFO [Roomba.Password] Robot at IP: <IP_ADDRESS> Data: {
"ver": "4",
"hostname": "iRobot-15DF6D60B10A4BA48A53015E91E330D2",
"robotname": "Roomba",
"robotid": "15DF6D60B10A4BA48A53015E91E330D2",
"ip": "<IP_ADDRESS>",
"mac": "50:14:79:B1:DF:0C",
"sw": "sapphire+1.0.17+Firmware-Production+52",
"sku": "j755020",
"nc": 0,
"proto": "mqtt",
"cap": {
"binFullDetect": 2,
"dockComm": 1,
"edge": 0,
"maps": 3,
"pmaps": 5,
"tLine": 2,
"area": 1,
"eco": 1,
"multiPass": 2,
"pose": 1,
"team": 1,
"pp": 0,
"lang": 2,
"5ghz": 1,
"prov": 3,
"sched": 1,
"svcConf": 1,
"ota": 2,
"log": 2,
"langOta": 0,
"expectingUserConf": 1
},
"cloudConnState": 14
}
2021-09-14 13:15:27 INFO [Roomba.Password] 0 robot(s) already defined in file./config.ini, found 1 robot(s) on network
2021-09-14 13:15:27 INFO [Roomba.Password] To add/update Your robot details,make sure your robot (Roomba) at IP <IP_ADDRESS> is on the Home Base and powered on (green lights on). Then press and hold the HOME button on your robot until it plays a series of tones (about 2 seconds). Release the button and your robot will flash WIFI light.
Press  to continue...
s to skip configuring this robot:
2021-09-14 13:15:38 INFO [Roomba.Password] Roomba (Roomba) IP address is: <IP_ADDRESS>
2021-09-14 13:15:42 DEBUG [Roomba.Password] Connection Successful
2021-09-14 13:15:42 DEBUG [Roomba.Password] Waiting for data
2021-09-14 13:15:52 ERROR [Roomba.Password] Connection Timeout Error (for <IP_ADDRESS>): The read operation timed out
2021-09-14 13:15:52 ERROR [Roomba.Password] Unable to get password from roomba
2021-09-14 13:15:52 ERROR [Roomba.Password] Error getting password for robot Roomba at ip<IP_ADDRESS>, received 7 bytes. Follow the instructions and try again.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FNickWaterton%2FRoomba980-Python%2Fissues%2F95&data=04|01||2bf1e8afba3b4311fe1208d977a36c3c|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637672366039818082|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=Zi57%2F3BkW6cDk%2B4zUegZLIwcmTa1f6Z8mkT9u%2BaknCQ%3D&reserved=0, or unsubscribehttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FACYJIZZQPRDYUL26WPICONLUB57PTANCNFSM5EAT5S2Q&data=04|01||2bf1e8afba3b4311fe1208d977a36c3c|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637672366039828035|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=pwZup3RssRxrOKTMea3hP9bzcer3YzRVzJFprGRrp7w%3D&reserved=0.
Triage notifications on the go with GitHub Mobile for iOShttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.apple.com%2Fapp%2Fapple-store%2Fid1477376905%3Fct%3Dnotification-email%26mt%3D8%26pt%3D524675&data=04|01||2bf1e8afba3b4311fe1208d977a36c3c|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637672366039837988|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=xI6nZbb%2FzfbpLnlGpP1GZ43hq4ZJfNEWzJlYfmwklmw%3D&reserved=0 or Androidhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.github.android%26referrer%3Dutm_campaign%253Dnotification-email%2526utm_medium%253Demail%2526utm_source%253Dgithub&data=04|01||2bf1e8afba3b4311fe1208d977a36c3c|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637672366039837988|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=5tAxHm4rWnAPcrcMX9FyEWb0%2Ftwo3T8LpWFgwqndErg%3D&reserved=0.

What happens when you press and hold the home button as instructed?

The white circle "fills up" with blue for ~2 seconds, then plays a happy little chime.  Once that happens, I hit enter and get the output you see above.

Can you try force closing the app before trying to retrieve the password?
The Roomba MQTT server typically only allows one MQTT connection at a time. If the app is connected, the password retrieval (which uses the MQTT server) may not be able to get the password.
The other possibility is that iRobot has changed the TLS version, in which case we may need to experiment with the SSL settings.
Sent from my iPad
Nick Waterton P.Eng.

From: Jason A. Diegmueller @.>
Sent: Tuesday, September 14, 2021 3:10:09 PM
To: NickWaterton/Roomba980-Python @.>
Cc: Nick Waterton @.>; Comment @.>
Subject: Re: [NickWaterton/Roomba980-Python] Getting password on Roomba j7+ (#95)
What happens when you press and hold the home button as instructed?
The white circle "fills up" with blue for ~2 seconds, then plays a happy little chime. Once that happens, I hit enter and get the output you see above.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FNickWaterton%2FRoomba980-Python%2Fissues%2F95%23issuecomment-919439120&data=04|01||927e6ed121c840b3d23708d977b34547|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637672434103350162|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=uu12rsW%2FKKG2Y6cjhcYAc1qyyryKJZAEFprtRezwNZk%3D&reserved=0, or unsubscribehttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FACYJIZ7BD22EACWYJZUT3J3UB6MZBANCNFSM5EAT5S2Q&data=04|01||927e6ed121c840b3d23708d977b34547|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637672434103360114|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=WIVaMAlampLB%2FTsMjwyNy8vn8Bm6h%2BS29wBH4Svtlg8%3D&reserved=0.
Triage notifications on the go with GitHub Mobile for iOShttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.apple.com%2Fapp%2Fapple-store%2Fid1477376905%3Fct%3Dnotification-email%26mt%3D8%26pt%3D524675&data=04|01||927e6ed121c840b3d23708d977b34547|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637672434103360114|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=%2BWpTPB81lfBskU9WZpvNPGi6ORd2BKp8LYF6fPZFqkk%3D&reserved=0 or Androidhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.github.android%26referrer%3Dutm_campaign%253Dnotification-email%2526utm_medium%253Demail%2526utm_source%253Dgithub&data=04|01||927e6ed121c840b3d23708d977b34547|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637672434103370075|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=%2F0S7%2BySP0MMVqRF0MlQc8mXuCtYNC6W%2BM3uhZUhRxIU%3D&reserved=0.

Appreciate you trying to help out on this.
Yeah, same deal even with phone shutdown, so it doesn't appear to be competing MQTT clients.  I grabbed a packet capture off of <IP_ADDRESS>, which is the Rocky Linux box I spun up on the same subnet as the j7+.  The j7+ itself is <IP_ADDRESS>.
Github won't let me directly attach the pcap, so I'm zipping it and attaching it.  Let me know if there's anything else I can do to be helpful.
roomba-j7+.zip

Taking Roomba980-Python out of the equation, I am trying to connect directly using openssl with the iRobot intermediate & root chain passed as CA.  It seems "unsupported certificate purpose" is what's biting me, although I can't sort out why.  Also tried with MQTT Explorer on Windows in TLS mode, I get the same "unsupported certificate purpose".
I'm not smart enough to sort this out, but hopefully this is useful:
[jdiegmueller@nv-dc2-centos1 ~]$ openssl11 s_client -CAfile chain.cer -showcerts -state -msg -connect <IP_ADDRESS>:8883
CONNECTED(00000003)
SSL_connect:before SSL initialization
>>> ??? [length 0005]
    16 03 01 01 20
>>> TLS 1.3, Handshake [length 0120], ClientHello
    01 00 01 1c 03 03 4c 68 14 a3 fa c8 c3 df fa 3d
    39 20 5f a2 35 70 c8 9f 5f b1 18 35 b2 3f eb e2
    49 d4 a5 fd 70 35 20 2f 3a 81 53 a3 0c bb 10 b0
    2c 6a cf 8a 6e 9e 07 41 5b 2c ed b5 88 f8 c9 e9
    16 89 1b 69 24 34 fa 00 3e 13 02 13 03 13 01 c0
    2c c0 30 00 9f cc a9 cc a8 cc aa c0 2b c0 2f 00
    9e c0 24 c0 28 00 6b c0 23 c0 27 00 67 c0 0a c0
    14 00 39 c0 09 c0 13 00 33 00 9d 00 9c 00 3d 00
    3c 00 35 00 2f 00 ff 01 00 00 95 00 0b 00 04 03
    00 01 02 00 0a 00 0c 00 0a 00 1d 00 17 00 1e 00
    19 00 18 00 23 00 00 00 16 00 00 00 17 00 00 00
    0d 00 30 00 2e 04 03 05 03 06 03 08 07 08 08 08
    09 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 06
    01 03 03 02 03 03 01 02 01 03 02 02 02 04 02 05
    02 06 02 00 2b 00 09 08 03 04 03 03 03 02 03 01
    00 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 20
    1a af 39 f3 67 bb 2b eb cb 11 2b a5 4e 2e 13 44
    99 44 86 c6 e1 bd 89 25 77 52 02 93 07 64 af 3a
SSL_connect:SSLv3/TLS write client hello
<<< ??? [length 0005]
    16 03 03 00 7a
SSL_connect:SSLv3/TLS write client hello
<<< TLS 1.3, Handshake [length 007a], ServerHello
    02 00 00 76 03 03 11 58 b4 f1 5e bb 4e a0 29 ef
    57 c0 52 e2 dc 0e ca 6b e2 e9 03 5f 68 df b1 19
    d1 84 53 2e e3 88 20 2f 3a 81 53 a3 0c bb 10 b0
    2c 6a cf 8a 6e 9e 07 41 5b 2c ed b5 88 f8 c9 e9
    16 89 1b 69 24 34 fa 13 02 00 00 2e 00 2b 00 02
    03 04 00 33 00 24 00 1d 00 20 99 bc f7 43 c8 11
    d7 6e d0 ff 54 d8 0b b3 90 23 eb 57 ac ef e2 78
    b9 38 29 a5 9a 2e a9 2c 9a 05
<<< ??? [length 0005]
    14 03 03 00 01
<<< ??? [length 0005]
    17 03 03 00 17
<<< TLS 1.3 [length 0001]
    16
SSL_connect:SSLv3/TLS read server hello
<<< TLS 1.3, Handshake [length 0006], EncryptedExtensions
    08 00 00 02 00 00
Can't use SSL_get_servername
<<< ??? [length 0005]
    17 03 03 09 d6
<<< TLS 1.3 [length 0001]
    16
SSL_connect:TLSv1.3 read encrypted extensions
<<< TLS 1.3, Handshake [length 09c5], Certificate
    0b 00 09 c1 00 00 09 bd 00 04 f8 30 82 04 f4 30
    82 02 dc a0 03 02 01 02 02 12 7f 02 60 6d df 15
    0a b1 a4 4b 8a 53 01 5e 91 e3 30 d2 30 0d 06 09
    2a 86 48 86 f7 0d 01 01 0b 05 00 30 81 85 31 0b
    30 09 06 03 55 04 06 13 02 55 53 31 16 30 14 06
    03 55 04 08 13 0d 4d 61 73 73 61 63 68 75 73 65
    74 74 73 31 0f 30 0d 06 03 55 04 07 13 06 42 65
    66 6f 72 64 31 1b 30 19 06 03 55 04 0a 13 12 69
    52 6f 62 6f 74 20 43 6f 72 70 6f 72 61 74 69 6f
    6e 31 0c 30 0a 06 03 55 04 0b 13 03 48 42 55 31
    22 30 20 06 03 55 04 03 13 19 52 6f 62 6f 74 20
    49 6e 74 65 72 6d 65 64 69 61 74 65 20 43 41 20
    41 30 31 30 1e 17 0d 32 31 30 35 31 39 32 32 30
    39 30 39 5a 17 0d 33 31 30 35 32 30 32 32 30 39
    30 39 5a 30 81 9b 31 0b 30 09 06 03 55 04 06 13
    02 55 53 31 16 30 14 06 03 55 04 08 13 0d 4d 61
    73 73 61 63 68 75 73 65 74 74 73 31 10 30 0e 06
    03 55 04 07 13 07 42 65 64 66 6f 72 64 31 1b 30
    19 06 03 55 04 0a 13 12 69 52 6f 62 6f 74 20 43
    6f 72 70 6f 72 61 74 69 6f 6e 31 13 30 11 06 03
    55 04 0b 13 0a 50 72 6f 64 75 63 74 69 6f 6e 31
    30 30 2e 06 03 55 04 03 13 27 69 52 6f 62 6f 74
    2d 31 35 44 46 36 44 36 30 42 31 30 41 34 42 41
    34 38 41 35 33 30 31 35 45 39 31 45 33 33 30 44
    32 30 82 01 22 30 0d 06 09 2a 86 48 86 f7 0d 01
    01 01 05 00 03 82 01 0f 00 30 82 01 0a 02 82 01
    01 00 da c3 85 67 79 ba 14 c1 13 9a b4 14 6f ad
    bf 98 ec d3 5e b1 b7 01 19 81 31 fa c4 07 73 74
    2c 5f 13 7c 5c d7 a6 72 d8 43 70 10 95 56 40 73
    3f 15 f7 a5 94 94 2b 8b 2f db ea bb b5 7d b6 c6
    d2 c5 d3 20 0f 74 f1 1e 3f 2f e7 8e 21 d8 f6 f6
    76 5e 39 5f 3a 3b 9c a8 78 91 ea f1 9a 01 df 4b
    c9 5e 7c 65 71 40 65 28 7f 95 3d b6 ae f5 f0 b8
    66 6a aa 6e 7d e5 53 78 73 dc 22 c1 d7 fd d1 01
    40 31 79 d9 d8 b6 b0 db d8 c3 3c 6d c5 03 ee 61
    93 cf 9d 62 d2 0b d0 aa ed 99 3e 20 78 cd 5b 88
    da c3 94 5b 17 37 ed 05 24 9f 6c b2 df 4a 10 b7
    8b 00 9f 6c ba ec 8b a9 2e c7 48 0d ef 2d da 1f
    9e ee 34 7e ee 81 bb e6 f1 39 32 39 9d e3 e3 cf
    72 03 cc 5b e8 f1 a2 f7 c2 8d cb 8a 31 2e a4 a8
    54 dd 0c de e0 97 c1 5c 24 80 fd 06 29 03 d9 b5
    44 5b 37 70 98 8d 54 5f 4c 34 22 3b d1 e2 5d 4c
    5b 11 02 03 01 00 01 a3 46 30 44 30 0b 06 03 55
    1d 0f 04 04 03 02 03 a8 30 09 06 03 55 1d 13 04
    02 30 00 30 2a 06 03 55 1d 25 04 23 30 21 06 08
    2b 06 01 05 05 07 03 01 06 08 2b 06 01 05 05 07
    03 02 06 0b 2b 06 01 04 01 83 8c 3c 02 02 04 30
    0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 03 82
    02 01 00 81 21 c0 33 8d e4 4a 7a b5 e6 a9 8b fc
    1d 77 0f 76 88 d2 7a ed f0 a8 b7 a8 e3 e0 40 d7
    58 78 44 a5 10 98 83 a7 37 c2 d5 29 ae 82 9c 27
    ab 1f 6b cd 4e 03 f9 c5 bb a3 5c 3f c7 73 4e 01
    98 18 85 bd 77 69 45 81 e3 fb a4 5c 5e 51 29 17
    9a 62 cf f0 61 d0 5f 0a 00 83 6b d0 4d 3d 86 34
    bb 2b 8d e4 fc ce 09 ab 15 2f b7 b3 5d 61 42 e4
    d8 d1 c9 2f 15 1b e8 dc 47 09 f2 0b 1c b2 75 82
    9f da 74 7f 04 cc 50 ab db 14 1e c3 72 d7 8b 0a
    c4 04 e5 e9 60 38 47 c0 dd ea c7 2b b0 02 9f 89
    a6 69 a4 2d 31 fa 6d fb 95 fb fa 79 25 71 e8 e0
    ec 0b b1 2a e0 72 9b ab 0d 43 36 60 82 d6 63 8b
    d5 96 31 81 2c 44 e0 6a 60 e0 8a 94 bb 0b af df
    ab af 00 fb c1 2b 6a 0e a7 45 27 b3 ac c3 63 a5
    88 46 a9 09 db 5b c8 e4 61 2e 4a ad cb 40 e6 b6
    25 87 c6 d8 8a 9e 12 39 5c ac df 97 14 54 61 ad
    81 8a a9 85 73 b2 7c ba 6f ad 11 08 c0 88 9c 0f
    8b 0a c7 5e a9 5a 72 d5 24 b7 31 3a 8b 01 6f e5
    64 91 a2 7d 50 8a c4 81 ad bf 7d b6 21 34 ca 0b
    61 ab 63 09 60 39 38 b6 58 28 a9 47 0b 4b 61 dc
    6c fb 1e b3 59 9f e6 15 bb 20 f4 09 e8 86 5f db
    48 d0 43 f6 bc b9 8f 3a 0f 69 20 15 50 6f 3d 63
    d7 db a2 e8 c0 73 dd fb e7 da 90 da 0f 05 f8 e0
    9f 50 69 a6 3c 05 42 9f e1 55 88 6c c4 4e f6 45
    74 1e 3c 35 65 a9 80 b5 a6 5d 3c 53 7d 4b 0c b9
    7d 5f 67 98 5e 5e 2c b9 02 ba ff 4d fa a1 a0 e2
    89 cd 0c bc 38 19 c1 b1 22 f1 c9 49 4a 89 dd 11
    c2 41 33 c0 eb ec 08 16 cd e1 ea 22 23 e4 0e 36
    55 ff e8 18 96 f9 96 4f af 9f e9 3a 2f 0c 8f 5c
    e8 28 ed 6a 9c 53 ea ec 77 50 ca a1 83 dc 4f 67
    ab 2d 4c 87 0d 10 15 9c 83 c0 a8 b8 24 02 36 6e
    e2 50 63 38 54 43 90 dc 5c 3d df 6e 98 ee a1 6c
    72 6b f4 00 00 00 04 bb 30 82 04 b7 30 82 03 9f
    a0 03 02 01 02 02 12 7f ff ad ad 33 1e 00 38 32
    4c a1 5d 3b 9a 0b 27 38 1c 30 0d 06 09 2a 86 48
    86 f7 0d 01 01 0b 05 00 30 5f 31 0b 30 09 06 03
    55 04 06 13 02 55 53 31 0b 30 09 06 03 55 04 08
    13 02 4d 41 31 10 30 0e 06 03 55 04 07 13 07 42
    65 64 66 6f 72 64 31 0f 30 0d 06 03 55 04 0a 13
    06 69 52 6f 62 6f 74 31 0c 30 0a 06 03 55 04 0b
    13 03 48 42 55 31 12 30 10 06 03 55 04 03 13 09
    52 6f 6f 6d 62 61 20 43 41 30 20 17 0d 31 38 30
    35 30 37 31 38 31 31 34 32 5a 18 0f 32 30 32 35
    31 32 33 31 30 30 30 30 30 30 5a 30 81 85 31 0b
    30 09 06 03 55 04 06 13 02 55 53 31 16 30 14 06
    03 55 04 08 13 0d 4d 61 73 73 61 63 68 75 73 65
    74 74 73 31 0f 30 0d 06 03 55 04 07 13 06 42 65
    66 6f 72 64 31 1b 30 19 06 03 55 04 0a 13 12 69
    52 6f 62 6f 74 20 43 6f 72 70 6f 72 61 74 69 6f
    6e 31 0c 30 0a 06 03 55 04 0b 13 03 48 42 55 31
    22 30 20 06 03 55 04 03 13 19 52 6f 62 6f 74 20
    49 6e 74 65 72 6d 65 64 69 61 74 65 20 43 41 20
    41 30 31 30 82 02 22 30 0d 06 09 2a 86 48 86 f7
    0d 01 01 01 05 00 03 82 02 0f 00 30 82 02 0a 02
    82 02 01 00 e4 dd ee 49 ec 5d ce 40 85 a8 a7 5e
    c9 5c 89 1c ff c2 a5 f2 e6 b5 eb 9c b8 57 cd 59
    c3 22 68 be 3b 55 07 6b 7d 81 2d 32 05 4f 36 72
    07 4e ad 9e 2d 63 9a f3 f3 10 a2 63 9c 15 47 14
    68 a5 cc 93 16 b1 b4 64 19 1c 48 44 c0 f7 3d f3
    8e a1 9e e2 0c bf 71 a9 1c 0f 36 0b e1 e9 8f 7d
    4f 6d f2 6e 79 d0 6f 6e f9 8f a5 56 47 18 93 ef
    c7 4c 3f a8 c9 b8 a9 0c 78 ce 0a 8f f9 ef bb be
    15 3f dc ee b5 0e be 5c 06 84 d3 c0 57 a3 9a 18
    46 e8 0d 43 07 fe ba c8 85 20 be 5f f3 14 df c0
    0a 43 ac 5f ad a8 6f a7 44 f3 25 d9 7d c2 c7 55
    1e 57 ba 97 fc 5b 15 62 a0 75 b4 d0 10 d4 60 71
    c8 9b 8c d7 78 c1 37 50 e3 b3 c5 f0 12 f6 e9 fc
    cd 96 35 86 b2 c8 ac ce a4 b5 ba 0a 2e 91 e0 ad
    2c ae 91 ce 5c d7 b0 4f a0 33 7a b5 a9 ca df 0e
    8d 49 47 f3 cc 9b 8a 24 0c 95 40 46 96 db 43 a2
    00 b8 2e 6a e8 b9 cd 67 0f 86 4e dd 7f 5d b0 21
    b7 0d 3e 66 ad 59 c7 6c 24 95 2c 47 81 dc 80 5f
    e0 b7 64 db 9f 9a a6 a2 a3 ff 51 b2 57 f2 b3 2d
    07 6a 5f 79 b7 28 cb cb 9f 5f 50 67 bf 1f 04 5b
    2d 45 d5 e6 97 56 a0 b2 0a 68 8f 31 2b 43 61 24
    c5 e1 ba af 48 46 5e fc 0c 7c 8e c6 cb ab 76 d1
    ef a0 88 c0 f0 8c 09 02 9e 33 b5 d4 8e 35 25 67
    fa 80 b5 24 85 34 c1 ff 5f e1 c4 95 de f1 ec fc
    9e 91 41 f4 2a 7a e8 7c ad b4 72 39 01 5e 37 d4
    50 55 40 b4 26 6c 0e e4 f9 a5 9b f2 3b 78 4b 3c
    88 53 e3 e4 4f 39 b4 12 14 c8 db 04 d5 43 4e 74
    00 89 d5 79 88 06 95 46 42 45 3f 81 a2 92 6b 73
    22 42 63 3c a1 5d 47 e1 3e 33 94 4d 7d 54 91 ad
    17 13 6c 48 36 51 24 22 6b 75 01 5d 58 d2 fb c8
    33 8d 43 3d 7f e3 1f f7 ce c1 43 62 da f9 89 5e
    a1 a6 a4 eb 3a d6 df b5 81 96 a8 bc be bb f4 ab
    e0 73 3b 89 02 03 01 00 01 a3 44 30 42 30 0e 06
    03 55 1d 0f 01 01 ff 04 04 03 02 02 04 30 12 06
    03 55 1d 13 01 01 ff 04 08 30 06 01 01 ff 02 01
    00 30 1c 06 03 55 1d 25 04 15 30 13 06 04 55 1d
    25 00 06 0b 2b 06 01 04 01 83 8c 3c 02 02 08 30
    0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 03 82
    01 01 00 97 e3 5c 2b bc dd c2 04 9c 48 78 df 36
    6e 43 34 43 22 8e da 40 c3 c8 b1 91 6a 46 c1 c1
    75 c2 a2 05 3c 32 53 57 7b 14 06 c9 c2 c8 eb 62
    bf 47 9e f1 93 8b af 75 52 54 34 ca 33 3c 4c 7c
    5a 41 76 c6 49 95 ef 59 48 80 25 27 f1 e4 ce 7a
    33 fb ff fb e2 03 c4 1d f2 31 1b dc 0c dc 3f 65
    19 dc 8f b6 17 23 76 98 37 69 7e ee a8 be b2 45
    18 60 e8 cd 48 f1 2a 96 96 32 22 da e9 39 e6 3b
    02 c1 0c 69 89 bd d1 71 49 28 f4 ac 17 d6 b7 f2
    7a 91 e8 11 f5 41 95 5e 7b 11 c9 40 49 2f e5 2c
    82 59 ba 3c 56 66 4a 71 70 3b fb 31 30 c0 67 03
    44 43 39 f0 ed 31 6d ef f3 81 6e 2d e1 c8 9a e7
    ad 51 80 dd 83 27 dc 9c cc 54 31 d6 b0 54 8a 9f
    44 2e cd 8e 5c 9b ec b2 f3 16 6a a2 5d 92 fb fb
    8b e7 0a 55 ac d0 06 c6 51 ba d6 47 ce 60 d6 2d
    e8 6f 04 1f cc f1 f4 96 e2 f7 35 13 b2 5d 53 f2
    ae 2b c5 00 00
depth=1 C = US, ST = Massachusetts, L = Beford, O = iRobot Corporation, OU = HBU, CN = Robot Intermediate CA A01
verify error:num=26:unsupported certificate purpose
verify return:1
depth=2 C = US, ST = MA, L = Bedford, O = iRobot, OU = HBU, CN = Roomba CA
verify return:1
depth=1 C = US, ST = Massachusetts, L = Beford, O = iRobot Corporation, OU = HBU, CN = Robot Intermediate CA A01
verify return:1
depth=0 C = US, ST = Massachusetts, L = Bedford, O = iRobot Corporation, OU = Production, CN = iRobot-15DF6D60B10A4BA48A53015E91E330D2
verify return:1
<<< ??? [length 0005]
    17 03 03 01 19
<<< TLS 1.3 [length 0001]
    16
SSL_connect:SSLv3/TLS read server certificate
<<< TLS 1.3, Handshake [length 0108], CertificateVerify
    0f 00 01 04 08 04 01 00 10 76 91 02 b7 07 16 5f
    7e 74 f9 4f c8 8e 76 0f ac 42 dc 04 f2 5d 48 ef
    79 c4 46 ab 36 15 c1 10 0e 76 fc 74 13 c9 49 f8
    04 fc 81 79 28 59 8e 7a 3b f2 83 56 ab d6 bb f0
    6d ce 8f 8c 48 7c 3c c7 aa 4c 7c 71 ca b0 aa 43
    43 9f ae 7c cb d4 cb e8 94 63 3b 81 5a 12 89 7c
    3b 67 20 c5 c0 2d a0 30 09 3d 40 fa dc ad a4 26
    3c a8 f1 d6 7f 8c 90 2e 3f b2 47 81 f0 d0 e5 9e
    ed 78 cf e2 b7 1d 94 60 b9 f5 55 9c f8 db b1 0b
    8f 25 41 c2 03 f6 1b 0b a9 f7 03 02 84 00 2d 48
    68 d7 e7 f4 7a 0d 36 72 e2 e7 72 c2 ff 0d 7f e3
    7b c8 67 38 63 2c c4 19 60 5a 55 35 34 31 e6 f2
    01 20 0e 28 f2 f2 e9 83 77 7f 37 53 a9 fd 7a d6
    19 0f 43 c8 49 21 24 65 9a 22 39 a6 2d 6c 7a 4d
    df b3 e7 09 2e 5f 6e 2a 03 d6 0f 40 db 07 8b 64
    2d 69 28 c1 bc c3 9d a9 ec e0 af 84 93 a9 87 0f
    fa 6d f6 31 cf 18 37 ab
<<< ??? [length 0005]
    17 03 03 00 45
<<< TLS 1.3 [length 0001]
    16
SSL_connect:TLSv1.3 read server certificate verify
<<< TLS 1.3, Handshake [length 0034], Finished
    14 00 00 30 8f 5a 13 66 2f b6 b9 1e 24 68 8d 2e
    19 29 62 16 a1 cc 0d 3f 73 eb d0 49 3e c2 6c 85
    8c 8a 00 6a ce 7c 22 9b ca ee f0 d4 e9 74 02 2e
    94 07 d6 70
SSL_connect:SSLv3/TLS read finished
>>> ??? [length 0005]
    14 03 03 00 01
>>> TLS 1.3, ChangeCipherSpec [length 0001]
    01
SSL_connect:SSLv3/TLS write change cipher spec
>>> ??? [length 0005]
    17 03 03 00 45
>>> TLS 1.3 [length 0001]
    16
>>> TLS 1.3, Handshake [length 0034], Finished
    14 00 00 30 52 5e 80 10 eb 17 cb 74 c4 4b 9a 42
    2e 99 0a d4 89 e1 6c fe 25 f5 b4 0e f8 5b a4 0a
    c0 b1 9c 9b 43 ec 1d 4d 30 46 6b 47 7a 85 d0 8e
    11 77 97 42
SSL_connect:SSLv3/TLS write finished
---
Certificate chain
 0 s:C = US, ST = Massachusetts, L = Bedford, O = iRobot Corporation, OU = Production, CN = iRobot-15DF6D60B10A4BA48A53015E91E330D2
   i:C = US, ST = Massachusetts, L = Beford, O = iRobot Corporation, OU = HBU, CN = Robot Intermediate CA A01
-----BEGIN CERTIFICATE-----
MIIE9DCCAtygAwIBAgISfwJgbd8VCrGkS4pTAV6R4zDSMA0GCSqGSIb3DQEBCwUA
MIGFMQswCQYDVQQGEwJVUzEWMBQGA1UECBMNTWFzc2FjaHVzZXR0czEPMA0GA1UE
BxMGQmVmb3JkMRswGQYDVQQKExJpUm9ib3QgQ29ycG9yYXRpb24xDDAKBgNVBAsT
A0hCVTEiMCAGA1UEAxMZUm9ib3QgSW50ZXJtZWRpYXRlIENBIEEwMTAeFw0yMTA1
MTkyMjA5MDlaFw0zMTA1MjAyMjA5MDlaMIGbMQswCQYDVQQGEwJVUzEWMBQGA1UE
CBMNTWFzc2FjaHVzZXR0czEQMA4GA1UEBxMHQmVkZm9yZDEbMBkGA1UEChMSaVJv
Ym90IENvcnBvcmF0aW9uMRMwEQYDVQQLEwpQcm9kdWN0aW9uMTAwLgYDVQQDEydp
Um9ib3QtMTVERjZENjBCMTBBNEJBNDhBNTMwMTVFOTFFMzMwRDIwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaw4VneboUwROatBRvrb+Y7NNesbcBGYEx
+sQHc3QsXxN8XNemcthDcBCVVkBzPxX3pZSUK4sv2+q7tX22xtLF0yAPdPEePy/n
jiHY9vZ2XjlfOjucqHiR6vGaAd9LyV58ZXFAZSh/lT22rvXwuGZqqm595VN4c9wi
wdf90QFAMXnZ2Law29jDPG3FA+5hk8+dYtIL0KrtmT4geM1biNrDlFsXN+0FJJ9s
st9KELeLAJ9suuyLqS7HSA3vLdofnu40fu6Bu+bxOTI5nePjz3IDzFvo8aL3wo3L
ijEupKhU3Qze4JfBXCSA/QYpA9m1RFs3cJiNVF9MNCI70eJdTFsRAgMBAAGjRjBE
MAsGA1UdDwQEAwIDqDAJBgNVHRMEAjAAMCoGA1UdJQQjMCEGCCsGAQUFBwMBBggr
BgEFBQcDAgYLKwYBBAGDjDwCAgQwDQYJKoZIhvcNAQELBQADggIBAIEhwDON5Ep6
teapi/wddw92iNJ67fCot6jj4EDXWHhEpRCYg6c3wtUproKcJ6sfa81OA/nFu6Nc
P8dzTgGYGIW9d2lFgeP7pFxeUSkXmmLP8GHQXwoAg2vQTT2GNLsrjeT8zgmrFS+3
s11hQuTY0ckvFRvo3EcJ8gscsnWCn9p0fwTMUKvbFB7DcteLCsQE5elgOEfA3erH
K7ACn4mmaaQtMfpt+5X7+nklcejg7AuxKuBym6sNQzZggtZji9WWMYEsROBqYOCK
lLsLr9+rrwD7wStqDqdFJ7Osw2OliEapCdtbyORhLkqty0DmtiWHxtiKnhI5XKzf
lxRUYa2BiqmFc7J8um+tEQjAiJwPiwrHXqlactUktzE6iwFv5WSRon1QisSBrb99
tiE0ygthq2MJYDk4tlgoqUcLS2HcbPses1mf5hW7IPQJ6IZf20jQQ/a8uY86D2kg
FVBvPWPX26LowHPd++fakNoPBfjgn1BppjwFQp/hVYhsxE72RXQePDVlqYC1pl08
U31LDLl9X2eYXl4suQK6/036oaDiic0MvDgZwbEi8clJSondEcJBM8Dr7AgWzeHq
IiPkDjZV/+gYlvmWT6+f6TovDI9c6CjtapxT6ux3UMqhg9xPZ6stTIcNEBWcg8Co
uCQCNm7iUGM4VEOQ3Fw9326Y7qFscmv0
-----END CERTIFICATE-----
 1 s:C = US, ST = Massachusetts, L = Beford, O = iRobot Corporation, OU = HBU, CN = Robot Intermediate CA A01
   i:C = US, ST = MA, L = Bedford, O = iRobot, OU = HBU, CN = Roomba CA
-----BEGIN CERTIFICATE-----
MIIEtzCCA5+gAwIBAgISf/+trTMeADgyTKFdO5oLJzgcMA0GCSqGSIb3DQEBCwUA
MF8xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNQTEQMA4GA1UEBxMHQmVkZm9yZDEP
MA0GA1UEChMGaVJvYm90MQwwCgYDVQQLEwNIQlUxEjAQBgNVBAMTCVJvb21iYSBD
QTAgFw0xODA1MDcxODExNDJaGA8yMDI1MTIzMTAwMDAwMFowgYUxCzAJBgNVBAYT
AlVTMRYwFAYDVQQIEw1NYXNzYWNodXNldHRzMQ8wDQYDVQQHEwZCZWZvcmQxGzAZ
BgNVBAoTEmlSb2JvdCBDb3Jwb3JhdGlvbjEMMAoGA1UECxMDSEJVMSIwIAYDVQQD
ExlSb2JvdCBJbnRlcm1lZGlhdGUgQ0EgQTAxMIICIjANBgkqhkiG9w0BAQEFAAOC
Ag8AMIICCgKCAgEA5N3uSexdzkCFqKdeyVyJHP/CpfLmteucuFfNWcMiaL47VQdr
fYEtMgVPNnIHTq2eLWOa8/MQomOcFUcUaKXMkxaxtGQZHEhEwPc9846hnuIMv3Gp
HA82C+Hpj31PbfJuedBvbvmPpVZHGJPvx0w/qMm4qQx4zgqP+e+7vhU/3O61Dr5c
BoTTwFejmhhG6A1DB/66yIUgvl/zFN/ACkOsX62ob6dE8yXZfcLHVR5Xupf8WxVi
oHW00BDUYHHIm4zXeME3UOOzxfAS9un8zZY1hrLIrM6ktboKLpHgrSyukc5c17BP
oDN6tanK3w6NSUfzzJuKJAyVQEaW20OiALguaui5zWcPhk7df12wIbcNPmatWcds
JJUsR4HcgF/gt2Tbn5qmoqP/UbJX8rMtB2pfebcoy8ufX1Bnvx8EWy1F1eaXVqCy
CmiPMStDYSTF4bqvSEZe/Ax8jsbLq3bR76CIwPCMCQKeM7XUjjUlZ/qAtSSFNMH/
X+HEld7x7PyekUH0KnrofK20cjkBXjfUUFVAtCZsDuT5pZvyO3hLPIhT4+RPObQS
FMjbBNVDTnQAidV5iAaVRkJFP4GikmtzIkJjPKFdR+E+M5RNfVSRrRcTbEg2USQi
a3UBXVjS+8gzjUM9f+Mf987BQ2La+Yleoaak6zrW37WBlqi8vrv0q+BzO4kCAwEA
AaNEMEIwDgYDVR0PAQH/BAQDAgIEMBIGA1UdEwEB/wQIMAYBAf8CAQAwHAYDVR0l
BBUwEwYEVR0lAAYLKwYBBAGDjDwCAggwDQYJKoZIhvcNAQELBQADggEBAJfjXCu8
3cIEnEh43zZuQzRDIo7aQMPIsZFqRsHBdcKiBTwyU1d7FAbJwsjrYr9HnvGTi691
UlQ0yjM8THxaQXbGSZXvWUiAJSfx5M56M/v/++IDxB3yMRvcDNw/ZRncj7YXI3aY
N2l+7qi+skUYYOjNSPEqlpYyItrpOeY7AsEMaYm90XFJKPSsF9a38nqR6BH1QZVe
exHJQEkv5SyCWbo8VmZKcXA7+zEwwGcDREM58O0xbe/zgW4t4cia561RgN2DJ9yc
zFQx1rBUip9ELs2OXJvssvMWaqJdkvv7i+cKVazQBsZRutZHzmDWLehvBB/M8fSW
4vc1E7JdU/KuK8U=
-----END CERTIFICATE-----
---
Server certificate
subject=C = US, ST = Massachusetts, L = Bedford, O = iRobot Corporation, OU = Production, CN = iRobot-15DF6D60B10A4BA48A53015E91E330D2

issuer=C = US, ST = Massachusetts, L = Beford, O = iRobot Corporation, OU = HBU, CN = Robot Intermediate CA A01

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3044 bytes and written 373 bytes
Verification error: unsupported certificate purpose
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 26 (unsupported certificate purpose)
---
<<< ??? [length 0005]
    17 03 03 00 ea
<<< TLS 1.3 [length 0001]
    16
SSL_connect:SSL negotiation finished successfully
SSL_connect:SSL negotiation finished successfully
<<< TLS 1.3, Handshake [length 00d9], NewSessionTicket
    04 00 00 d5 00 00 1c 20 cb 26 88 95 08 00 00 00
    00 00 00 00 00 00 c0 27 18 a1 8d 10 6b 00 f3 e0
    14 35 3e 98 72 78 5f e3 9e 10 e1 9b 40 71 63 1d
    a9 ee 56 cb e2 0f be 27 d8 1f f4 62 49 9b 21 e2
    2c a2 77 35 58 72 ba 3e 29 60 e6 1f 6f d8 c3 21
    35 b5 8b 8a c8 56 a6 0c 6d 21 25 12 0a 15 e8 51
    bd 6d 4d 62 a7 39 56 8f eb d3 6f 2b 1a 40 89 7e
    db e6 fc fa 03 03 0d 13 c0 92 1e 82 03 58 e9 21
    6a bf e4 68 3e df 5a 1e d7 f2 2e 9f 27 0c 1c 56
    22 36 7e f2 b6 35 f4 cf 4a 05 d1 cc 01 44 47 f5
    b4 df 71 7e 36 29 1d 82 e5 1b b5 2d 88 25 61 ea
    f3 5f 72 bd 78 e0 b1 69 d6 3d c4 e8 99 fc ec dd
    fb ef a1 38 f0 11 38 d6 3c ba 2e 65 4b 3a 76 86
    b7 db dd 15 cc 05 03 00 00
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: B1C9F03726261750363BAD08AF8F5F859ACA90739B9E8270740E35E6A0404524
    Session-ID-ctx:
    Resumption PSK: 0FABAED61D8508CF9B2D25485B7E5877EDDB0BD160E1BA1E0956D996BDBAF19411F447BD2427A73DC05C41C0FB77B287
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    0000 - 27 18 a1 8d 10 6b 00 f3-e0 14 35 3e 98 72 78 5f   '....k....5>.rx_
    0010 - e3 9e 10 e1 9b 40 71 63-1d a9 ee 56 cb e2 0f be<EMAIL_ADDRESS>    0020 - 27 d8 1f f4 62 49 9b 21-e2 2c a2 77 35 58 72 ba   '...bI.!.,.w5Xr.
    0030 - 3e 29 60 e6 1f 6f d8 c3-21 35 b5 8b 8a c8 56 a6   >)`..o..!5....V.
    0040 - 0c 6d 21 25 12 0a 15 e8-51 bd 6d 4d 62 a7 39 56   .m!%....Q.mMb.9V
    0050 - 8f eb d3 6f 2b 1a 40 89-7e db e6 fc fa 03 03 0d<EMAIL_ADDRESS>    0060 - 13 c0 92 1e 82 03 58 e9-21 6a bf e4 68 3e df 5a   ......X.!j..h>.Z
    0070 - 1e d7 f2 2e 9f 27 0c 1c-56 22 36 7e f2 b6 35 f4   .....'..V"6~..5.
    0080 - cf 4a 05 d1 cc 01 44 47-f5 b4 df 71 7e 36 29 1d   .J....DG...q~6).
    0090 - 82 e5 1b b5 2d 88 25 61-ea f3 5f 72 bd 78 e0 b1   ....-.%a.._r.x..
    00a0 - 69 d6 3d c4 e8 99 fc ec-dd fb ef a1 38 f0 11 38   i.=.........8..8
    00b0 - d6 3c ba 2e 65 4b 3a 76-86 b7 db dd 15 cc 05 03   .<..eK:v........

    Start Time:<PHONE_NUMBER>
    Timeout   : 7200 (sec)
    Verify return code: 26 (unsupported certificate purpose)
    Extended master secret: no
    Max Early Data: 0
---
SSL_connect:SSLv3/TLS read server session ticket
read R BLOCK
<<< ??? [length 0005]
    17 03 03 00 ea
<<< TLS 1.3 [length 0001]
    16
SSL_connect:SSL negotiation finished successfully
SSL_connect:SSL negotiation finished successfully
<<< TLS 1.3, Handshake [length 00d9], NewSessionTicket
    04 00 00 d5 00 00 1c 20 5a 34 54 66 08 00 00 00
    00 00 00 00 01 00 c0 27 18 a1 8d 10 6b 00 f3 e0
    14 35 3e 98 72 78 5f 5b 4d dd df 2a 0a 1e f9 5d
    33 84 7e e5 0f f8 b2 da ba 5c fd 7b 3d d9 d3 f0
    6a 7f 92 62 34 e2 f7 0b dc b5 89 bc 72 7f df 46
    09 00 44 35 ba 08 9e 0c d3 12 56 83 a4 5d 3e 34
    4c 6c d9 6b cc d0 5f ec 3e 3e 64 2a 9d 58 d5 05
    25 7b d6 06 07 6a cc 77 4f 4e ca bb 4d b3 c1 77
    64 95 62 68 aa 6b 6d 5e 1e 5f 23 e2 19 50 7c 44
    01 0a bc ee 17 b3 c5 bc bb 10 d8 b9 69 dc cb fa
    22 0a d7 35 05 ec 4d c4 9d 59 eb 6c 07 c8 4d 36
    30 cb 8f e3 ca 6b 20 16 67 82 34 6e 70 db f8 2c
    0a 9d 97 8e 86 cc 7b a8 e6 4a 51 41 ae ea 62 3d
    a4 59 99 79 c1 ba 6f 00 00
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: 552176B7D5729BCB57219590B2D08091F93546987A655B1FB123A437D945AED9
    Session-ID-ctx:
    Resumption PSK: 7E503CD3688F5A761539EB16EF0BC891645737561657BF6999E79430F8671479B4DE346E719DAD203431AC8D0FF281A6
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    0000 - 27 18 a1 8d 10 6b 00 f3-e0 14 35 3e 98 72 78 5f   '....k....5>.rx_
    0010 - 5b 4d dd df 2a 0a 1e f9-5d 33 84 7e e5 0f f8 b2   [M..*...]3.~....
    0020 - da ba 5c fd 7b 3d d9 d3-f0 6a 7f 92 62 34 e2 f7   ..\.{=...j..b4..
    0030 - 0b dc b5 89 bc 72 7f df-46 09 00 44 35 ba 08 9e   .....r..F..D5...
    0040 - 0c d3 12 56 83 a4 5d 3e-34 4c 6c d9 6b cc d0 5f   ...V..]>4Ll.k.._
    0050 - ec 3e 3e 64 2a 9d 58 d5-05 25 7b d6 06 07 6a cc   .>>d*.X..%{...j.
    0060 - 77 4f 4e ca bb 4d b3 c1-77 64 95 62 68 aa 6b 6d   wON..M..wd.bh.km
    0070 - 5e 1e 5f 23 e2 19 50 7c-44 01 0a bc ee 17 b3 c5   ^._#..P|D.......
    0080 - bc bb 10 d8 b9 69 dc cb-fa 22 0a d7 35 05 ec 4d   .....i..."..5..M
    0090 - c4 9d 59 eb 6c 07 c8 4d-36 30 cb 8f e3 ca 6b 20   ..Y.l..M60....k
    00a0 - 16 67 82 34 6e 70 db f8-2c 0a 9d 97 8e 86 cc 7b   .g.4np..,......{
    00b0 - a8 e6 4a 51 41 ae ea 62-3d a4 59 99 79 c1 ba 6f   ..JQA..b=.Y.y..o

    Start Time:<PHONE_NUMBER>
    Timeout   : 7200 (sec)
    Verify return code: 26 (unsupported certificate purpose)
    Extended master secret: no
    Max Early Data: 0
---
SSL_connect:SSLv3/TLS read server session ticket
read R BLOCK

I've looked into this a bit. I don't think TLS is the problem, the connection seems to be made correctly.
You don't need a certificate to connect to the iRobot MQTT server, it doesn't use them, it's just using TLS encryption, it doesn't verify certificates.
What should happen is that we connect (using TLS) to port 8883 on the Roomba (which seems to work), then we send an MQTT reserved command (0xf0, followed by payload size 0x05) with a magic packet payload 0xefcc3b2900.
The Roomba should respond with the same payload (in this case f005efcc3b2900 ie 7 bytes) followed by the password (30 bytes). It seems that the Roomba is responding with the expected 7 bytes, but is not then sending the password, and the socket connection times out (10 second timeout).
I can't tell what happens from your pcap file because it's encrypted. Maybe if you try the openssl connection (but without the certificates) we might get something, but it's possible that iRobot has changed the way the Roomba password is retrieved. What we really need is an unencrypted pcap of the exchange between the app and the Roomba when it sets up the connection for the first time.
Unfortunately, I don't have a j7 to test things out on.
We may have to wait for someone with a j7 to figure it out - it probably isn't that different from what we currently have.

Is this an OpenSSL issue? Could just be an issue with our tools?
https://serverfault.com/questions/989230/openssl-s-client-returns-unsupported-certificate-purpose-on-one-machine-but-work
https://trac.nginx.org/nginx/ticket/1760#comment:5

Another way to get password is using the IOS app Thor to sniff ssl connection on roomba app start, you dont need to reset the device.

Good to know, you could also use Charles Proxy.
I guess if someone could get the password this way, then try connecting to a j7, it would confirm whether the ssl settings are Ok or not.
I do notice that the j7 only seems to have one button - can anyone confirm if it has a “home” button or not?
Sent from my iPad
Nick Waterton P.Eng.

From: DiegoCarrilho @.>
Sent: Sunday, October 3, 2021 2:38:01 PM
To: NickWaterton/Roomba980-Python @.>
Cc: Nick Waterton @.>; Comment @.>
Subject: Re: [NickWaterton/Roomba980-Python] Getting password on Roomba j7+ (#95)
Another way to get password is using the IOS app Thor to sniff ssl connection on roomba app start, you dont need to reset the device.
[01C0F85E-6377-42EE-8808-A10AD9539426]https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F5846420%2F135766938-41a8630c-aa49-45e1-8b32-cff0520e54a1.jpeg&data=04|01||e2deb2093e7a411942d108d9869cee23|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637688830830561423|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=s%2BogsG6KLL%2FXII%2Fb2hwVKUp7o3QN1kAeBSWiSmCQ%2BlU%3D&reserved=0
[B9AE0573-AA50-4D0D-BE42-57F811BDEB5C]https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F5846420%2F135766942-34080032-b98c-4152-95af-271f3b0c4b8f.jpeg&data=04|01||e2deb2093e7a411942d108d9869cee23|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637688830830571392|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=%2BRg%2FlCg9tVEmSMgwjRDQNLGTWbGmti6dcbixQ7e3bys%3D&reserved=0
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FNickWaterton%2FRoomba980-Python%2Fissues%2F95%23issuecomment-933003436&data=04|01||e2deb2093e7a411942d108d9869cee23|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637688830830571392|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=Ue039SLEmghGZOriG8sM0maqZNJB21XNkbvEBJGXY0M%3D&reserved=0, or unsubscribehttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FACYJIZ7BYFAIKC53ZXR4RQDUFCPITANCNFSM5EAT5S2Q&data=04|01||e2deb2093e7a411942d108d9869cee23|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637688830830581343|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=k5KGUiU1ZdDqmuxA4K7wlZLkxIXcCQ7qUkf0DbLvWFY%3D&reserved=0.
Triage notifications on the go with GitHub Mobile for iOShttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.apple.com%2Fapp%2Fapple-store%2Fid1477376905%3Fct%3Dnotification-email%26mt%3D8%26pt%3D524675&data=04|01||e2deb2093e7a411942d108d9869cee23|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637688830830581343|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=RTeyx6sa%2FhQ1yCZ1LXslikQqG3%2B%2FFTayD8yMIUzCMZE%3D&reserved=0 or Androidhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.github.android%26referrer%3Dutm_campaign%253Dnotification-email%2526utm_medium%253Demail%2526utm_source%253Dgithub&data=04|01||e2deb2093e7a411942d108d9869cee23|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637688830830591298|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=lW1yGsvYRV6QvzDhFYMNcwCi2yQDD2RabWKilNfKGjM%3D&reserved=0.

The j7 has just one button indeed. When it's docked, and I hold the button..

After 2 seconds, I get a happy chime and blue animated light
After ~10-15 seconds, I get a chime and a white light

Output using npm install -g dorita980:-
$ get-roomba-password <IP_ADDRESS>
Make sure your robot is on the Home Base and powered on (green lights on). Then
press and hold the HOME button (or DOCK+SPOT on some models) on your robot until
 it plays a series of tones (about 2 seconds). Release the button and your robot
 will flash WIFI light.
Then press any key here...
Robot Data:
{
  ver: '4',
  hostname: 'iRobot-XXX',
  robotname: 'Roomba',
  robotid: 'XXX',
  ip: '<IP_ADDRESS>',
  mac: 'XXX',
  sw: 'sapphire+1.0.17+Firmware-Production+52',
  sku: 'j755840',
  nc: 0,
  proto: 'mqtt',
  cap: {
    binFullDetect: 2,
    dockComm: 1,
    edge: 0,
    maps: 3,
    pmaps: 5,
    tLine: 2,
    area: 1,
    eco: 1,
    multiPass: 2,
    pose: 1,
    team: 1,
    pp: 0,
    lang: 2,
    '5ghz': 1,
    prov: 3,
    sched: 1,
    svcConf: 1,
    ota: 2,
    log: 2,
    langOta: 0,
    expectingUserConf: 1
  },
  cloudConnState: 14,
  blid: 'XXX'
}

If a dev would like to work closely with me to debug this thing, I can follow some instructions, maybe over a screenshare.

Following, as I've got the same issue.  Can easily get packet captures for any device on the network, just need to know what to collect.

A packet capture (decrypted) of the interaction with the j7 when you try to retrieve the password would be useful.
Also a capture of what happens when a new j7 is added to the app may shed some light on how the password is retrieved by the app.
It seems that pressing the start button is not putting the j7 in password retrieval mode, like pressing the home button does.
It’s hard to troubleshoot without actually having a j7.
a Wireshark .pcap file is fine, or a text file.

I’ll see what I can do about getting some captures. I did use Charles Proxy on my iPad to sniff what was happening when I launch the iRobot app. I believe I have gotten my blid and password (will try tomorrow and see if I can get the plugin to work), but also found some aws access keys. From what I can tell, the app logs into AWS cognito, and retrieves information about the robots linked to the account, including the password. If this is the case, then maybe a more effective method of getting the necessary info would be to have the plugin simulate logging into the iRobot app and parsing the json output for the necessary fields. No need to interact with the roomba, press buttons, sniff traffic, etc. Will check tomorrow and see if I can link my homebridge to my j7 and report back.

The command works for my j7+but there's no password
hostname=iRobot-xxx, firmware=sapphire+1.0.20+Firmware-Production+54, ip=<IP_ADDRESS>, mac=xx, robot_name=Roomba, sku=j755020, capabilities={'binFullDetect': 2, 'dockComm': 1, 'edge': 0, 'maps': 3, 'pmaps': 5, 'tLine': 2, 'area': 1, 'eco': 1, 'multiPass': 2, 'pose': 1, 'team': 1, 'pp': 0, 'lang': 2, '5ghz': 1, 'prov': 3, 'sched': 1, 'svcConf': 1, 'ota': 2, 'log': 2, 'langOta': 0, 'expectingUserConf': 1}, blid=xxx, password=

Following this as I'm having the same issue on a Roomba 694

Should work on a 600 series Roomba. How old is it? And what firmware version does it have?

@NickWaterton my bad, turns out that being on separate VLANs was the problem. Stuff passes fine between them for control but not the BLID/Password discovery.  All good now

https://github.com/koalazak/dorita980/issues/142#issuecomment-986166173 - example code at https://github.com/mjg59/python-irobotapi/blob/main/irobotapi/init.py

Thank you Matthew! @mjg59 that solves the whole problem.
Code is now updated to use cloud passwords. You have to run:
./password.py <login> <password>

Where <login> and <password> are your iRobot account login and password. This will then fetch the passwords(s) from the iRobots aws cloud. The config.ini file will be updated.

I can confirm on my J7+ the password worked in the HomeAssistant integration with the new method. Thanks to everyone for the great work!

Thank you Matthew! @mjg59 that solves the whole problem.
Code is now updated to use cloud passwords. You have to run:
./password.py <login> <password>

Where <login> and <password> are your iRobot account login and password. This will then fetch the passwords(s) from the iRobots aws cloud. The config.ini file will be updated.

Are there dumbed down instructions for making this work?  I'm not good with code.  I can run CLI commands easily enough through SSH but I don't see any instructions for how to use what you linked.

This assumes you have downloaded Roomba980-Python, and you have a console widow open, in the roomba directory (the one with password.py in it).
You literally type ./password.py login password
Where login is your iRobot login and password is your iRobot password.
That's it. Nothing else to do. Your Roomba IP address, blid, Roomba password etc are now all in the config.ini file.
Everything should now work as described in the README fike.

Thank you.  That did it.

Another way to get password is using the IOS app Thor to sniff ssl connection on roomba app start, you dont need to reset the device.

I did this method, but not seeing a robots or password field in the json

I had the same problem, but got it working this way on:
Following the instructions to execute the script in commandline (macOS):

cloning the whole git
manual installing requirements.txt via pip3
manual installing requests via pip3

I had an error using an old version if pip. Updating pip, did it again.
Trying python3 password.py --> Error:
Traceback (most recent call last):
  File "/Users/username/Roomba980-Python/roomba/password.py", line 293, in <module>
    main()
  File "/Users/username/Roomba980-Python/roomba/password.py", line 290, in main
    get_passwd.get_password()
  File "/Users/username/Roomba980-Python/roomba/password.py", line 119, in get_password
    iRobot.login()
  File "/Users/username/Roomba980-Python/roomba/getcloudpassword.py", line 107, in login
    uid = response['UID']
KeyError: 'UID'

Then executing not ./password.py, but directly
python3 getcloudpassword.py 'irobotmailadress' 'irobotpassword'
While trying all this, I copied my commands to an RTF, where the upper single quotation marks 'login' got changed to ‚login‘. Maybe this was also an issue. After correcting this ./getcloudpassword.py was working immediately.
The only issue I noticed was, that there no config.ini was created. So I saved my whole command line output.

I had the same problem, but got it working this way on: Following the instructions to execute the script in commandline (macOS):

cloning the whole git
manual installing requirements.txt via pip3
manual installing requests via pip3

I had an error using an old version if pip. Updating pip, did it again. Trying python3 password.py --> Error:
Traceback (most recent call last):
  File "/Users/username/Roomba980-Python/roomba/password.py", line 293, in <module>
    main()
  File "/Users/username/Roomba980-Python/roomba/password.py", line 290, in main
    get_passwd.get_password()
  File "/Users/username/Roomba980-Python/roomba/password.py", line 119, in get_password
    iRobot.login()
  File "/Users/username/Roomba980-Python/roomba/getcloudpassword.py", line 107, in login
    uid = response['UID']
KeyError: 'UID'

Then executing not ./password.py, but directly python3 getcloudpassword.py 'irobotmailadress' 'irobotpassword'
While trying all this, I copied my commands to an RTF, where the upper single quotation marks 'login' got changed to ‚login‘. Maybe this was also an issue. After correcting this ./getcloudpassword.py was working immediately.
The only issue I noticed was, that there no config.ini was created. So I saved my whole command line output.

I finally got this working by using double quotes around my username and password.
python getcloudpassword.py "username" "password"
Everything else gave me the same KeyError: 'UID' that you were getting.

Did anyone not from the US test this? I have a j7+ and a m6, both available via the app, but using this method I get:
2023-03-28 16:32:34 INFO [Roomba.Password] Got cloud info: {} 2023-03-28 16:32:34 INFO [Roomba.Password] Found 0 roombas defined in the cloud 2023-03-28 16:32:34 WARNING [Roomba.Password] No Roombas found on network, try again...
The M6 password was no issue, but the j7 still eludes my grasp :-)
Asking for the region, as I saw "/v1/discover/endpoints?country_code=US" in the getcloudpassword.py. Changing it to DE (since I am in Germany) didn't help, still 0.
Any ideas?

I was getting the same KeyError: 'UID' issue:
Traceback (most recent call last):
  File "./getcloudpassword.py", line 186, in <module>
    main()
  File "./getcloudpassword.py", line 176, in main
    irobot.login()
  File "./getcloudpassword.py", line 108, in login
    uid = response['UID']
KeyError: 'UID'

Using quotes for username and password didn't work for me.
I had to hard-code my credentials into the getcloudpassword.py file at lines 92-93:
data = {"apiKey": self.apikey,
        "targetenv": "mobile",
        "loginID": self.username,  # <- changed with: "loginID": "my_email"
        "password": self.password, # <- changed with: "password": "my_password"
        "format": "json",
        "targetEnv": "mobile",
}

In case this helps someone (was trying out multiple things unsuccessfully), the following worked for me:

I  executed the standard install described here: https://github.com/NickWaterton/Roomba980-Python#install
python3 getcloudpassword.py 'emailaddress' 'password'
(important: don't forget the ' ')

Thank you Matthew! @mjg59 that solves the whole problem.
Code is now updated to use cloud passwords. You have to run:
./password.py <login> <password>

Where <login> and <password> are your iRobot account login and password. This will then fetch the passwords(s) from the iRobots aws cloud. The config.ini file will be updated.

Just worked for me with a J7 using this method.


Investigate SCP-009 for warnings on over-broad deps.

see: https://github.com/scala/scala/pull/5724
The idea is to add a flag to scalac that warns if a jar is on the classpath that is not used during compilation. With this, we could potentially make that a fatal error when given a certain flag (or of course using fatal warnings).

Very cool!

@johnynek should we close this in favor of #235 ?
It's more generic but it's also more indicative on the direction we're going (i.e. not to use the stock plugin but to use our own variant)

yes, I think so.


Added CommunityStaking

Whoop Sentinel operator! Will get this merged in today, thanks 🚀

Whoop Sentinel operator! Will get this merged in today, thanks 🚀

Yes 💪 and of course Juno as well, but they are in the lead already hehe


Netty exception

When my players try to click "Assemble Ship" this exception gets thrown:
http://pastebin.com/fnGkFx1z

Fixed in newer builds, not sure if I've pushed to the repo yet but it's been fixed.


Preserve upload rotation

If someone submits a portrait image, NodeTube should make sure its not rotated.

Hi, what is the status on this issue? Where should I add this property?

@Danissss , thanks for your interest, as it turns out the browser support for this feature is very sparse. I will close this issue in the meantime as it looks like we're still some ways away from this landing in a decent amount of browsers.
https://caniuse.com/#feat=css-image-orientation


Connection disconnected shouldn't be Fail

It appears that's a normal way some browsers remove http connections from their connection pool.
Note fail: below
dbug: Microsoft.AspNet.Server.Kestrel[6]
      Connection id "1" received FIN.
dbug: Microsoft.AspNet.Server.Kestrel[7]
      Connection id "1" sending FIN.
fail: Microsoft.AspNet.Server.Kestrel[10]
      Connection id "1" disconnected.
dbug: Microsoft.AspNet.Server.Kestrel[8]
      Connection id "1" sent FIN with status "0".
dbug: Microsoft.AspNet.Server.Kestrel[2]
      Connection id "1" stopped.

Duplicate of https://github.com/aspnet/KestrelHttpServer/issues/392


Segmentation Violation when redisCommand is given a NULL for an expected argument

When using redisCommand and providing NULL for an expected argument, you can encounter a segmentation violation when hiredis attempts to use strlen on a NULL pointer.  For example, when executing:
reply = redisCommand( ctx, "DEL %s", key );

and key is NULL, then a segv occurs when attempting to determine the length of the key that is NULL.  I have put checks for NULL in my code that prevent me from calling redisCommand with a NULL argument.  However, I thought I should mention it in case this is something that you want to address in hiredis.
SIGSEGV(0x1) - Segmentation violation.
[2460] at 0x00007FFFF7223721 libc:__strlen_sse2_pminub (+0x11)

where 6
1* In routine libc:__strlen_sse2_pminub (+0x11)
2  Called from libhiredis:\hiredis\redisvFormatCommand 364 (+0x3)
3  Called from libhiredis:\hiredis\redisvAppendCommand 1102 (+0x5)
4  Called from libhiredis:\hiredis\redisvCommand 1172
5  Called from libhiredis:\hiredis\redisCommand 1180
6  Called from tkredis:\tkredis\deleteKey 1028 (+0x3F1)

Btw, if there are places where I neglected to check for valid arguments, where a NULL slips past me and is given to redisCommand, and a segv occurs, then I do have an exception handler that gets control.  I do check for a redisReply and when NULL, I do recreate the connection context in fear that it is bad.  However, when driving the segv as described above using a DEL comand given NULL, and my exception handler gets control, the connection context's err field has been left as zero.  I assume that since my exception handler was forced to handle it, then I can't trust the connection context in this situation even though its err field is zero.  Correct?

When I perform an ad hoc test as described above, where the segv occurs, I am able to subsequently use the connection successfully after handling the exception.  I assume the segv redisvFormatCommand occurs in a manner that does not render the connection bad in this test case.  However, I'm reluctant to trust context's err field in a cases where an exception has occurred, even though the connection appears ok in the test case described above.  Comments?

Hi @savincen
I'm not sure this is really a bug.  It's the responsibility of the caller to send non-null values with the %s format specifier.
I suppose we could catch the specific example of sending NULL for the %s specifier, but there are countless other ways to invoke UB with variadic functions.

What about my question regarding the connection context?  If I handle exceptions like this, when long-jumping out of the hiredis library, it has the potential of skipping over important hiredis code that it would have run otherwise.  Can the connection context be trusted in cases like this, or must I assume it to be un-trustworthy and re-create the connection?

Personally, I'd be quite wary of trying to catch a SIGSEGV and do anything other than dump a call stack and exit.
Whether or not the context is fine in that case is impossible to say, because you lose context as to what actually caused it.  It might have been a NULL pointer dereference, but maybe it was an invalid read/write and your stack is now corrupted.
Instead of trying to recover from such situations I would try and make sure they can't occur in the first place.

Going to close this issue, since it's not really a bug in hiredis.


bitcoin-classic: 0.11.2.cl1.b1 -> 1.2.1

Motivation for this change
Update
Things done

[x] Tested using sandboxing
(nix.useSandbox on NixOS,
or option build-use-sandbox in nix.conf
on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] Linux

[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

@jefdaj can you check this?

I am just not keeping up enough with Bitcoin to be sure this is not a version that should be skipped…

Merged into master with a further update.
I looked at the upstream, they are in enough flux that it's better to update…


DevContainer: Inner Loop, GitHub Actions and Codespaces

DevContainer
The "dev-container" is a shorter reference to development container, a place with all project dependencies installed and ready to be instantiated during development phase, the inner loop.
A popular way to define the development container in a consistent and reproducible manner is using the devcontainer.json format, it gives a predefined folder structure to introduce local a Dockerfile (or alternatively a docker-compose based approach), to organize and maintain the development toolset.
Considering the tools we use on the shipwright-io organization, we will need the following tools:

Golang (and GNU/Make)
Helm
KubeBuilder
Kubernetes Code Generator
And more...

Developers can use such environment directly in vscode-remote, in the command-line with the CLI, and/or using local tools like podman, docker and such.
A interesting feature to improve consistency is being able to adopt such dev-container during the CI steps directly. And as well on places like GitHub Code Spaces, which means we can use this foundation to provide a "single click" remote Shipwright complete development environment.
Lets formalize this concept of the "development container"? WDYT?

/cc @SaschaSchwarze0


JFoenix 9.0.0 Maven?

Is there any intention that this will eventually be in a maven artifact? Sort of complicates a build when you can't get all your dependencies properly from your gradle build script?

yeah sure it will be published to maven central soon.

Thanks.

pushed JFoenix 9.0.0 to maven central it will be available in a couple of hours.


Make Navigation reusable over all views

Currently, navigation is hard coded into Main activity - make it easily available for all views

The keywords are jetpack and fragments. Better to switch between those

https://developer.android.com/guide/navigation/navigation-getting-started#kts

Switching to Jetpack Compose due to declarative approach.

I am working on the navigation components and routes


Playing an mp3 File

I only want the bot to play an mp3 file in an voice channel. I dont want to create an TrackScheduler or anything, I only want the bot to join the channel an play an short mp3 if i write an command (ive programmed the command part already)

How is that an issue with lavaplayer? If you want support you can join #lavaplayer on the JDA Discord - but don't expect to be spoonfed.

If you're looking for short mp3 playback on command, lavaplayer might be overkill. https://github.com/cm/airhorn implements something similar in pure discord.js/opus.

Closing as this isn't an issue with the library.


Enable strong mode and fix a warning.

For context, we're working on making the core Dart packages and their transitive dependencies—which include this—strong-mode clean.

@seaneagan Ping—is there something I can do to land this soon?


Not working after latest update

My game crashes with the mod installed after update 1.5, can you please update it?

I was not able to look into it yet.
But in the next couple of days, I should be able to take a look.

Could you try to redo these two steps:

Extract Unstripped Unity files into $(SkulDirectory)\Skul_Data\Managed\

Download UnitySetup64-2020.1.17f1.exe
Rename it to setup.zip and open it (if that does not work, try 7-zip)
Extract the content of Editor\Data\MonoBleedingEdge\lib\mono\4.5\ into $(SkulDirectory)\Skul_Data\Managed\

That made it work for my system. But it looks like my Linux System only gets the 1.4 Version so I can not really test it.
1.5 Update on Mac & Delay Notice for Linux

I know I am not the orignal poster, though I am having the same issue after following all the steps.
The game crashes on launch.

The mod works perfectly fine on 1.4, which surprised me when it came out, I was sure it would stop working.
The problem started in version 1.5.
Please update the mod when you can access the latest version of Skul, I want to hold to attack badly xD

If you are working on update, please add auto dash feature, my finger hurt when play Pike

If you are working on update, please add auto dash feature, my finger hurt when play Pike

@ts2812ht That is a good request. I moved it to a new issue: #7

The mod run perfectly for me, thank you so much

It works perfectly for me as well now, thank you very much!


Switch in a Form creates input with no id or name

Hello everyone i have this FormField that has a Switch in it.
<FormField
  control={form.control}
  name="isActive"
  render={({ field }) => (
    <FormItem className="mt-2 flex flex-row items-center">
      <FormLabel htmlFor="is-active" className="mr-4 mt-2 flex flex-col space-y-1">
        Data Display

          Enables/Disables the option to display statistical data for this domain.

      </FormLabel>
      <FormControl>
        <Switch id="is-active" checked={field.value} onCheckedChange={field.onChange} />
      </FormControl>
      <FormMessage />
    </FormItem>
  )}
/>

Its working fine but a minor problem i cant resolve is that the input that gets generated has no id or name, so i get the usual issue "a form field element should have an id or name attribute". The input can be seen here.

Is there an easy way to fix this that i'm missing? Thanks in advance. Great library btw.

This issue has been automatically closed because it received no activity for a while. If you think it was closed by accident, please leave a comment. Thank you.

Hi @ApostolosFotopoulos, you can access the name from field
<FormField   control={form.control}   name="isActive"   render={({ field }) => (     <FormItem className="mt-2 flex flex-row items-center">       .....       <FormControl>         <Switch name={field.name} id={field.name} checked={field.value} onCheckedChange={field.onChange} />       </FormControl>       ......     </FormItem>   )} />

@OkiemuteGold Good suggestion but it doesn't solve the issue i mentioned. Its probably a radix issue.

@ApostolosFotopoulos It should. When you inspect on Chrome, you will find that the name is same as what you used there....and the warning should go away too.

Hello, i have the same problem when using FormField that have switch in it. I use it exactly like @ApostolosFotopoulos does. The problem is in my layout, the hidden input is causing my page to overflowing beyond the bottom boundary. Any fix? Thank you all

when using with FormField

when using outside FormField

Hello, i have the same problem when using FormField that have switch in it. I use it exactly like @ApostolosFotopoulos does. The problem is in my layout, the hidden input is causing my page to overflowing beyond the bottom boundary. Any fix? Thank you all

when using with FormField

when using outside FormField

Found a workaround by adding  className="[&_input]:fixed" to the Switch component. Which positions the input off screen but not within the flow of the page. @shadcn would this be possible to get looked at, this drove me nuts for a while giving me duplicate scrollbars.


utility dash

Implement a more general version of the dot command, one that takes in a character as a signal to look for more properties.
For example, instead of - pad, ...  for using the lodash function pad, one could have -pad ... which is more natural.

Implement the one character looking with a callout to whatever
Create the utility object to look through various utility objects for a method to use (lodash, datefns, csv (toCsv and fromCsv), he, ...?)

done in lib. think it should just be large stuff like lodash and datefns; can do explicit commands for the one or two such as csv-parse, csv-stringify,  html-encode, html-decode.


MultiHeadAttention not supported

[ERROR] ONNXRuntime environment created failed : Could not find an implementation for MultiHeadAttention(1) node with name 'MultiHeadAttention_0'

I had the same problem, have you solved it yet?

change onnxruntime version to 1.14.1

Really? But my onnxruntiume version is 1.14.1.  Can you tell me the details? Thanks

Really? But my onnxruntiume version is 1.14.1. Can you tell me the details? Thanks

I made too many changes and it's a bit old. I'm not sure which changes solved this problem. I'll upload my version to github when I have time.

I upload my version in https://github.com/lvfengkun/LightGlue-OnnxRunner-SIFT.git ，please notice I  haven't really implemented SIFT support on LightGlue-OnnxRunner, so it's just a semi-finished product for reference only.

Really? But my onnxruntiume version is 1.14.1. Can you tell me the details? Thanks

请问你解决了吗，我也遇到这个问题


Makefile: add automated way to update golang in Dockerfiles

There are a lot of separate Dockerfiles that need to be updated when a new
version of golang is released. Provide a Makefile target for updating these, as
well as the golang version utilized by Travis. This ensures that all Dockerfiles
that use golang use the same version across the respository.
Signed-off by: Ian Vernon<EMAIL_ADDRESS>

This change is

Coverage decreased (-0.007%) to 44.18% when pulling a180b5b20392c38de613009bc8dc2ca2813eb8a0 on pr/ianvernon/golang-makefile-target-dockerfiles into 0c7f066529815f4d51f64b709d6a52fba8ee8b25 on master.


Fixed #32195: Improve error from forgetting to call .as_view() on a CBV

Ticket https://code.djangoproject.com/ticket/32195#ticket

Thanks for the feedback, I've changed it to use the system check framework

Okay, changed to throw TypeError

@angusholder thanks for this :+1:
As this is a new feature it should be added to the release notes (3.2). Then once you are happy please untick needs improvement/docs on tract so it gets added to the review queue.


Update minimum CppInterOp due to code completion

Due to the introduction to code completion the minimum version of CppInterOp needed is 1.3.0 . This PR introduces this fix. @vgvassilev This PR is ready for review.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 57.83%. Comparing base (f2d118d) to head (539c6ea).

Additional details and impacted files

@@           Coverage Diff           @@
##             main     #105   +/-   ##
=======================================
  Coverage   57.83%   57.83%
=======================================
  Files          15       15
  Lines         600      600
  Branches       59       59
=======================================
  Hits          347      347
  Misses        253      253


Investigate why tags are not being set via MC

Cost tags are not being set when the Unity UI is installed via the Management Console, but they are working properly when the application is installed when running the terraform code locally.

Recent attempted fix did not resolve the issue. :(


unexpected promblem with xformers

when i used image to video with animatediff in ComfyUI, i had a problem like this:
`Error occurred when executing KSampler:
An xformers bug was encountered in AnimateDiff - this is unexpected, report this to Kosinkadink/ComfyUI-AnimateDiff-Evolved repo as an issue, and a workaround for now is to run ComfyUI with the --disable-xformers argument.
File "/mnt/workspace/ComfyUI/execution.py", line 152, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "/mnt/workspace/ComfyUI/execution.py", line 82, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "/mnt/workspace/ComfyUI/execution.py", line 75, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "/mnt/workspace/ComfyUI/nodes.py", line 1375, in sample
return common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise=denoise)
File "/mnt/workspace/ComfyUI/nodes.py", line 1345, in common_ksampler
samples = comfy.sample.sample(model, noise, steps, cfg, sampler_name, scheduler, positive, negative, latent_image,
File "/mnt/workspace/ComfyUI/custom_nodes/ComfyUI-Impact-Pack/modules/impact/sample_error_enhancer.py", line 22, in informative_sample
raise e
File "/mnt/workspace/ComfyUI/custom_nodes/ComfyUI-Impact-Pack/modules/impact/sample_error_enhancer.py", line 9, in informative_sample
return original_sample(*args, **kwargs) # This code helps interpret error messages that occur within exceptions but does not have any impact on other operations.
File "/mnt/workspace/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/animatediff/sampling.py", line 334, in motion_sample
latents = wrap_function_to_inject_xformers_bug_info(orig_comfy_sample)(model, noise, *args, **kwargs)
File "/mnt/workspace/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/animatediff/utils_model.py", line 219, in wrapped_function
raise RuntimeError(f"An xformers bug was encountered in AnimateDiff - this is unexpected, \
`

and by the way ,when i use text to video, i always get a misformed image like the screenshot shows.

I don konw why,but when i start the ComfyUI, i usually see "[AnimateDiff] - WARNING - xformers is enabled but it has a bug that can cause issue while using with AnimateDiff.". so i think something must go wrong with my envirment.

Can anybody tell me how  to run ComfyUI with the --disable-xformers argument?
I use jupyter notebook in linux in a cloud platform.

Hello i have the same problem could you fix that ?

AnimateDiff-Evolved explicitly does not use xformers attention inside it, but SparseCtrl code does - I'll push a change in Advanced-ControlNet later today to make it not use xformers no matter what in the baby motion module that's inside SparseCtrl.

I've pushed a fix for the xformers issue with SparseCtrl - update Advanced-ControlNet and the issue should hopefully go away.

For now I'll assume this is fixed, but let me know if it's not.


open-watcom-v2-unwrapped: unstable-2023-05-17 -> unstable-2023-11-11

Description of changes
Regular bump.
Checked on x86_64-darwin with #244216, tests pass there.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[x] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
(open-watcom-v2.passthru.tests)
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/2651

Current Darwin/Clang failures also happen on master (great…), see Hydra, so not a regression caused by this PR.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/2934

Fixed Darwin compilation (x86_64-darwin failure on ofborg is a timeout, aarch64-darwin completes without issues).

Squashed :)


fast participation times for users who only join for a single step (or datapoint)

By @martinjaggi from FeAI
can we make sure our scheme works well if a client only participates once, and then disappears again?
let's also measure how fast is load time at the first step, compared to subsequent steps? (ideally it should be comparable). would be great to get some numbers and see if there are any bottlenecks
related to #13 also)

deprecated


0.5km resolution support

I think that with EWS-G1 decoded, Sanchez should support full resolution data from it (20000x18956px on channel 1) which corresponds to about .5km at nadir (0.54 to be exact). IGFOV of the sat is 1km, so the pixels do overlap, but decoder produces 20k x 20k anyway. Using the 1km mode significantly impacts the quality
I'd require a bigger underlay too, to make colored images.

You could pull these images for your underlay which at best resolution is 500-meter spatial resolution.

You could pull these images for your underlay which at best resolution is 500-meter spatial resolution.

Thanks Carl - the Blue Marble images are the source of the currently-bundled underlays.

Thanks Carl - the Blue Marble images are the source of the currently-bundled underlays.

Added as part of v1.0.16. Note that for stitching, this can result in Sanchez becoming very memory hungry - for a 36,915px by 19,606px image, Sanchez was peaking at around 20Gb of RAM (!)
For the highest quality output, be sure to use an underlay which is at least 21,696px high. The blue marble images @creinemann linked to above are suitable, however they've been chunked into 21,600px square images.
If somebody has the energy and computing grunt to stitch these together, I'll add the underlay to the sister Sanchez underlay repository (otherwise I'll just do it myself).
In the meantime, you can use any of Carl's 1km underlays in that repository, or the Resources\world.200412.3x21600x10800.jpg file bundled with Sanchez.


Remove the rest of middleware and implementation

Summary
This replaces the rest of the existing middleware and the removes all the corresponding implementations.
Areas or cases that should be tested
Charts routes when the charts are both installed and not installed.
Areas which could experience regressions
Same as above
Checklist

[x] The PR is linked to an issue and the linked issue has a Milestone, or no issue is needed
[x] The PR has a Milestone
[x] The PR template has been filled out
[x] The PR has been self reviewed
[x] The PR has a reviewer assigned
[x] The PR has automated tests or clear instructions for manual tests and the linked issue has appropriate QA labels, or tests are not needed
[x] The PR has reviewed with UX and tested in light and dark mode, or there are no UX changes

Added @torchiaf for the Harvester perspective.

I tested this change + the latest fix for the switch versions issue . I couldn't see any regression :+1:


mleap-xgboost - runtime and Spark - do not support Scala 2.12

First, thanks a lot for this nice job !
This issue is an update of 576
We are using Scala 2.12 and MLeap for XGBoost models.
XGBoost now supports scala 2.12 since 1.0.0 version
Please, can you help to publish a new version of mleap-xgboost-runtime and mleap-xgboost-spark that support Scala 2.12?

See https://github.com/combust/mleap/pull/686. You can build it from spark-3.0.0 branch. There is no plan yet to support Scala 2.12 with Spark 2.4.

Thanks, I understand.
But it's a bad news for us, we are using Spark 2.4 (and like a lot of existing projects, it's not in our roadmap to change for spark 3.0).

I'm working on supporting 2.12 on master with spark 2.4 here: https://github.com/combust/mleap/issues/697
@ancasarb to link to our past conversation, it seems useful to have a 0.17.0 version on scala2.12 w/ spark 2.4  for all companies still on spark 2.4


WPML URL detection sample

Submitted by @stevygee: https://gist.github.com/stevygee/ed18db68a247c2cd4fb7680d39d41502
consider whether in Advanced Detection add-on or WPML specific add-on if other functionality makes sense to bundle

Hi Leon,
I have an issue with WPML now. Hope you can help.
I've added @stevygee's snippet and with that I managed to get all pages crawled but when I deploy on the S3 bucket I get a Forbidden error on the translated page.
http://m86zur9g.s3-website-eu-west-1.amazonaws.com/en-US/contact-us/
The rest of the website works well. What could it be?
Thanks

Hi Leon, just as an update on this. I've moved to Polylang and it's all working smoothly.
Thanks

Great, @jeffceriello - I will still get to optimizing WP2Static for WPML/Polylang (fairly high on todo list), but I think Polylang is the better option anyway. I've chatted with one of the Polylang devs (from France, I believe) and heard good reviews. Cannot say the same (or close) for WPML as a company/software ;)

I have been trying to get WPML and WP2Static working together on a project which uses translated permalinks. At first I tried the gist linked in the first post here, but it doesn't work with traslated permalinks. I also discovered a bug in one of the WPML functions related to retriving the translated permalink.
To try and workaround this, I took a different approach here https://gist.github.com/bkno/60b5a421c516db0aec0fd9af48602873
This constructs a list of the foreign language URLs, however the list is only correct when it is ran outside of the crawler context (e.g. outputted to a page). It seems when the functions that return the list are called within the crawler (called via web interface), the WPML functions are not working normally.
If I hard-code the translated permalink URLs, the crawler does process them correctly, but obviously a dynamic list of URLs would be better. I'm not sure why the result is different when it is the crawler calling the script.

Hi Leon, just as an update on this. I've moved to Polylang and it's all working smoothly.
Thanks

I might have to switch to Polylang too. Were you using translated permalinks?

I found that disabling WPML > Languages > "Adjust IDs for multilingual functionality" allows WP2Static to crawl all the translations. It fixed the issues I was having with the script above in relation to the language switcher.
In fact.. I don't think any script is needed anymore, at least for my situation where the translations each have different permalinks. The crawler can discover them by itself.


Building with MKL reduces CPU performance

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): Yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 16.04
TensorFlow installed from (source or binary): both
TensorFlow version (use command below): 1.4
Python version: 3.6
Bazel version (if compiling from source): 0.5.4
GCC/Compiler version (if compiling from source): 5.4.0
CUDA/cuDNN version: 8
GPU model and memory: Tesla P100-PCIE-16GB
Exact command to reproduce:

Describe the problem
Building tensorflow with mkl (--config=mkl) prevents the system from using all its cores.
CPU load remains always below 20% in my testcase. Using the same build flags but without mkl achieve 100% CPU load and a nearly 10 times faster execution.
While playing with the MKL flags described here https://www.tensorflow.org/performance/performance_guide#optimizing_for_cpu
i noticed some strange behavior:
Running the MKL-build with
OMP_NUM_THREADS=27 KMP_SETTINGS=1 KMP_AFFINITY=verbose
results in the following print:
User settings:

   KMP_AFFINITY=verbose
   KMP_SETTINGS=1
   OMP_NUM_THREADS=27

Effective settings:

   KMP_ABORT_DELAY=0
   KMP_ADAPTIVE_LOCK_PROPS='1,1024'
   KMP_ALIGN_ALLOC=64
   KMP_ALL_THREADPRIVATE=224
   KMP_ATOMIC_MODE=2
   KMP_BLOCKTIME=200
   KMP_CPUINFO_FILE: value is not defined
   KMP_DETERMINISTIC_REDUCTION=false
   KMP_DEVICE_THREAD_LIMIT=2147483647
   KMP_DISP_NUM_BUFFERS=7
   KMP_DUPLICATE_LIB_OK=false
   KMP_FORCE_REDUCTION: value is not defined
   KMP_FOREIGN_THREADS_THREADPRIVATE=true
   KMP_FORKJOIN_BARRIER='2,2'
   KMP_FORKJOIN_BARRIER_PATTERN='hyper,hyper'
   KMP_FORKJOIN_FRAMES=true
   KMP_FORKJOIN_FRAMES_MODE=3
   KMP_GTID_MODE=3
   KMP_HANDLE_SIGNALS=false
   KMP_HOT_TEAMS_MAX_LEVEL=1
   KMP_HOT_TEAMS_MODE=0
   KMP_INIT_AT_FORK=true
   KMP_INIT_WAIT=2048
   KMP_ITT_PREPARE_DELAY=0
   KMP_LIBRARY=throughput
   KMP_LOCK_KIND=queuing
   KMP_MALLOC_POOL_INCR=1M
   KMP_NEXT_WAIT=1024
   KMP_NUM_LOCKS_IN_BLOCK=1
   KMP_PLAIN_BARRIER='2,2'
   KMP_PLAIN_BARRIER_PATTERN='hyper,hyper'
   KMP_REDUCTION_BARRIER='1,1'
   KMP_REDUCTION_BARRIER_PATTERN='hyper,hyper'
   KMP_SCHEDULE='static,balanced;guided,iterative'
   KMP_SETTINGS=true
   KMP_SPIN_BACKOFF_PARAMS='4096,100'
   KMP_STACKOFFSET=64
   KMP_STACKPAD=0
   KMP_STACKSIZE=4M
   KMP_STORAGE_MAP=false
   KMP_TASKING=2
   KMP_TASKLOOP_MIN_TASKS=0
   KMP_TASK_STEALING_CONSTRAINT=1
   KMP_TEAMS_THREAD_LIMIT=56
   KMP_TOPOLOGY_METHOD=all
   KMP_USER_LEVEL_MWAIT=false
   KMP_VERSION=false
   KMP_WARNINGS=true
   OMP_CANCELLATION=false
   OMP_DEFAULT_DEVICE=0
   OMP_DISPLAY_ENV=false
   OMP_DYNAMIC=false
   OMP_MAX_ACTIVE_LEVELS=2147483647
   OMP_MAX_TASK_PRIORITY=0
   OMP_NESTED=false
   OMP_NUM_THREADS='27'
   OMP_PLACES: value is not defined
   OMP_PROC_BIND='false'
   OMP_SCHEDULE='static'
   OMP_STACKSIZE=4M
   OMP_THREAD_LIMIT=2147483647
   OMP_WAIT_POLICY=PASSIVE
   KMP_AFFINITY='verbose,warnings,respect,granularity=core,none'

OMP: Info #209: KMP_AFFINITY: decoding x2APIC ids.
OMP: Info #207: KMP_AFFINITY: Affinity capable, using global cpuid leaf 11 info
OMP: Info #154: KMP_AFFINITY: Initial OS proc set respected: {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #156: KMP_AFFINITY: 56 available OS procs
OMP: Info #157: KMP_AFFINITY: Uniform topology
OMP: Info #179: KMP_AFFINITY: 2 packages x 14 cores/pkg x 2 threads/core (28 total cores)
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35708 thread 0 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35706 thread 1 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35707 thread 2 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35704 thread 3 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35701 thread 4 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35711 thread 5 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35712 thread 6 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35713 thread 7 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35705 thread 8 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35710 thread 9 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35702 thread 10 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35717 thread 11 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
...
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35678 thread 78 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35672 thread 79 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
OMP: Info #247: KMP_AFFINITY: pid 35537 tid 35674 thread 80 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
....
(continues with a higher thread number each time)

If I use the same execution flags with a build without MKL or with the pip version I get the same ouput up to
... OMP: Info #247: KMP_AFFINITY: pid 36958 tid 37191 thread 27 bound to OS proc set {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55}
Afterwards no OMP prints are created. It seems like, if I build with mkl, tensorflow continues to create more and more threads but cant utilize them.
Is this a configuration issue or a bug?
If its a known issue, please expand the performance guide :)
pinging @skye because of its help with the performance issue with while_loop

I also have this problem. I build tensorflow step by step as official tutorial says, but get a much slower version when MKL is enabled. It is quiet strange,

@vivek-rane Vivek, could you respond to this?

Will get someone to take a look - thanks for tagging.

@georgh Could you tell us what the inter/intra op settings and model is?

I didn't set inter or intra op settings for the example, but I just tested it with both set to 20 and it still behaves the same.
The model I used is quite big, the main parts uses two big tf.while_loops with a few operations.
I will try to provide a simple test case tomorrow.

Setting the inter op to 20 is a really bad idea. Try starting with an inter op of 1 and intra op of #cores, and OMP_NUM_THREADS set to #cores and tweak from there.

Thank you for your advise. If that's a bad Idea, why does the performance guide state:

A common alternative optimization is to set the number of threads in both pools equal to the number of physical cores rather than logical cores.
Is this only valid if you set it to the number of physical cores?
I didn't do that much tests with these values, because I can't always use the complete cluster for my computations. Setting both values to 20 restricts tensorflow to 20 logical cores and leaves therefore enough room for other people to use the system.

But anyway - regarding the error using MKL the options to not show any effect.
Build with MKL and inter/intra set to 20 I only get a CPU usage of around 150% (1.5 cores) using a build without MKL I achieve 2000 % (20 cores).

@tfboyd do we recommend running with intra=num_cores for mkl? that would give pretty bad perf, since TF will run num_cores number of ops in parallel, each with OMP_NUM_THREADS threads (heavy oversubscription).

@georgh can you share the timeline for your run?

I created two timelines for a very small run, but I am not sure if they contain useful informations.
I tried to create a timeline for a bigger run, but the resulting file is 1.3GB big and chrome does not show any information if I try to open it.
timelines.zip

In my testing I had the best results with the following settings, cut and
pasted from the document
https://www.tensorflow.org/performance/performance_guide#optimizing_for_cpuI
wrote.  It can be a different for different models but for resnet and
inception training this worked well and even for inference.  Intel
mentioned that slightly higher levels of inter_op might work but my
guidelines as # of "sockets" was reasonable.  If someone gets data for
other models I am happy to try and find a way to share the info widely.
There are models and hardware platforms that benefit from different
settings. Each variable that impacts performance is discussed below.

KMP_BLOCKTIME: The MKL default is 200ms, which was not optimal in our
testing. 0 (0ms) was a good default for CNN based models that were tested.
The best performance for AlexNex was achieved at 30ms and both GoogleNet
and VGG11 performed best set at 1ms.
KMP_AFFINITY: The recommended setting is
granularity=fine,verbose,compact,1,0.
OMP_NUM_THREADS: This defaults to the number of physical cores.
Adjusting this parameter beyond matching the number of cores can have an
impact when using Intel® Xeon Phi™ (Knights Landing) for some
models. SeeTensorFlow*
Optimizations on Modern Intel® Architecture
https://software.intel.com/en-us/articles/tensorflow-optimizations-on-modern-intel-architecture
for
optimal settings.
intra_op_parallelism_threads: Setting this equal to the number of
physical
cores is recommended. Setting the value to 0, which is the default and
will result in the value being set to the number of logical cores, is an
option to try for some architectures. This value and OMP_NUM_THREADS should
be equal.
inter_op_parallelism_threads: Setting this equal to the number of
sockets is recommended. Setting the value to 0, which is the default,
results in the value being set to the number of logical cores.
On Thu, Nov 16, 2017 at 6:57 AM, georgh<EMAIL_ADDRESS>wrote:

I created two timelines for a very small run, but I am not sure if they
contain useful informations.
I tried to create a timeline for a bigger run, but the resulting file is
1.3GB big and chrome does not show any information if I try to open it.
timelines.zip
https://github.com/tensorflow/tensorflow/files/1478931/timelines.zip
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/issues/14496#issuecomment-344946223,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AWZeshN8JsICk3B_IfU-v9WbQsIJZxkuks5s3E1WgaJpZM4Qa4-L
.

I agree with Toby that the inter-op should be set to somewhere around the number of sockets on the system, which is typically 1.
I looked at the timeline and there are no ops in there that are currently supported with MKL on TensorFlow. If this timeline is representative of your workload, you will not gain any benefit from switching to MKL. The top 5 ops here are listed below, and matmul is probably the only thing that stands to gain from MKL. If this timeline is off, we need to find a way of getting the correct timeline.

Pack
Mul
StridedSlice
Matmul
Add

Btw setting the KMP_BLOCKTIME to 0 (as Toby suggested) also helps with oversubscription.

It has been 14 days with no activity and the awaiting tensorflower label was assigned. Please update the label and/or status accordingly.

@tatianashp any idea?

@vivek-rane explained why using MKL does not help with performance for this network. I am closing the issue.
@georgh If you have more questions related to MKL performance please re-open.


Update parent, github actions, maven wrapper

failure on java 11 known, looking into that, does not affect other java versions and likely to drop older java versions soon.


Update docs of cross-repo CIs.

Updated docs on both Github API authentication and branch dispatches.

Reverted and recommitted to utilize pre-commit hook for spell checking.
Check the .md file in repository to see the pretty formatting of Markdown language.


Administrative and Operational State at CurrentPerformance

Administrative and Operational State at CurrentPerformance are somehow misplaced, maybe redundant.
Potential Solutions:

moving it to Status class, and potentially delete a couple of attributes there
deleting it

UML and YANG have already been corrected.
Existing implementations are basing on the corrected YANG.
Proposal to the 5G-xhaul call on 28th of July 2021:
Just closing the issue

Decision made on the 5G-xhaul call on 28th of July 2021:
Issue just to be closed without further action.


[Feature Request] Configureable wiki branch

Introduction
Currently the wiki has only one branch where everything happens and its name is master. There is no option to view the wiki from a different branch
Proposal

Change the default branch name from master to main (IETF recommended terminology)
Add a drop-down menu where you can switch the branch of the wiki in the web-ui

Credits
The main idea of this feature request comes from the codeberg user ECP5-PCIe. Have a look at the issue on codeberg

Can you explain how you would use this to make this useful?
Sounds like it would be extremely confusing and making something that is simple and elegant overly complex, I'd like to know what usecase this solves.

(The first bullet point at least would be for sake of consistency. Creating a new repo will create a main branch, not master which is the old way. Second bullet would be optional, and not a need I have personally)

Yes, changing the default branch to main for consistency would be good and was my main issue with it, though having it configurable might be good for people who use other branch names, like having a wiki branch.
One use-case for a user-selectable branch might be if you have different wikis, for example one for using the program and another for developing it.

->  Make wiki default branch name changable #29603


Add Faker::WorldCup

I'm having an issue when I run bundle exec rake
I receive a "rake aborted" notification and a lot of failing tests.
I'm wondering if someone could take a look at this so I can run my tests. @olleolleolle @robbyrussell @garyharan @steveh @probablycorey

@snayrouz  I opened a console by running rake console. Your methods are not working properly.
Do that and run:

Faker::WorldCup.group
Faker::WorldCup.roster

Faker::WorldCup.team works fine.

@vbrazo thanks for taking a look and making changes! I should have prefaced in my PR that I wasn't ready to merge, just needed some help in regards to all the failing tests. I really appreciate your quick help as I'd love to get this merged before the first matches and see if anyone does anything fun with this library.. I'll probably wait to submit my final PR once the final rosters have been set for all teams June 4.

The solution would be:
module Faker
  class WorldCup < Base
    class << self
      def team
        fetch('world_cup.teams')
      end

      def group(group = 'group_A')
        fetch("world_cup.groups.#{group}")
      end

      def roster(country = 'Egypt', type = 'coach')
        fetch("world_cup.rosters.#{country}.#{type}")
      end
    end
  end
end

otherwise you won't be able to find the nested locales. I think you could keep this PR open and just update the locales when the teams are set.

@vbrazo that solution makes the tests pass, but with the hard coded group, country and type values, it will only generate those specific values in the library.
also thank you for your help!

@snayrouz the hardcoded will only be used when we don't pass the params. If you use Faker::WorldCup.roster, you'll be using the default params, but if you pass Faker::WorldCup.roster(country = 'Brazil', type = 'coach'), you'd be able to access the Brazilian coach.

You're right! 🤦🏻♂
On Sat, Jun 2, 2018 at 9:26 AM Vitor<EMAIL_ADDRESS>wrote:

@snayrouz https://github.com/snayrouz the hardcoded will only be used
when we don't pass the params. If you use Faker::WorldCup.roster, you'll
be using the default params, but if you pass Faker::WorldCup.roster(country
= 'Brazil', type = 'coach'), you'd be able to access the Brazilian coach.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/stympy/faker/pull/1265#issuecomment-394095065, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AXdDIh4-cRkJ7Hr-WmlNu0xtgKewW68Lks5t4q7CgaJpZM4UXi4f
.

Feel free to open a new PR to update the locales @snayrouz


Add LoadColorsFromCSV button in Tortuosity Module

Allows to load a CSV file with custom values for each tube ID,
as point Data, so that a colormap can be applied on it.

Can I have a last review ?

Looks good to me.


Microsoft Edge crashes when display range input

Are you requesting a feature, reporting a bug or ask a question?
A bug, only observed with Microsoft Edge at the moment
What is the current behavior?
The browser crashes and reload the pages
What is the expected behavior?
It is expected to display the page including the range input field.
How would you reproduce the current behavior (if this is a bug)?
Using Microsoft Edge. Create a survey inlcuding a text field and change the inputType to range
Provide the test code and the tested page URL (if applicable)
Tested page URL: https://plnkr.co/edit/0v5VnrwSvvXJjN5ZhUg9?p=preview
Test code
var json = {
    questions: [
        {
            name: "test",
            type: "text",
            inputType: "range"
        }
    ]
};

Specify your

browser: Microsoft Edge
browser version: Microsoft Edge 41.16299.402.0 Microsoft EdgeHTML 16.16299. But also newer versions are affected and i guess also older. IE 11 seems to work so far.
surveyjs platform (angular or react or jquery or knockout or vue<EMAIL_ADDRESS>surveyjs version: 1.0.23

Reproduced

MS Edge bug - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8696129/

and the fiddle from the ticket to reproduce: https://jsfiddle.net/ve088ofb/

This ticket at developer.microsoft.com created in 2016 and exists now. So we've fixed the issue, fix will be available in the next release.

Thanks, I cloned the repository, build the packages and it works now für Window Edge. Thanks for your fast response!
Back in August 2017 they marked https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8696129/ as fixed, but it still failing with the least version 🤔That's really strange.


v3.7.3 doesn't load the last character/vault of last time using when start if untick "Pre-Load All Vault and Character Files"

The issue as the tittle showed. I noticed this is as issue because it doesn't happen with v3.1.1 (i still using it because this issue).
If i tick "Pre-load All Vault and Character Files", time to start TQVault is alot longer than untick it on v3.7.3
I'm using the .zip tqvault download file.

Which character does it load? Nothing, or the first of the list?
@hguy You touched the loading code not too long ago. Could it have possibly caused the issue described in the title?

It shows nothing, like fresh new use.

@hguy You touched the loading code not too long ago. Could it have possibly caused the issue described in the title?

I confirm a problem on the LastCharacterLoad since refacto.
There's a PR for that in waiting.


What does install-panda-desk do?

@suddrey-qut what does this too do? Is there any description? Is there any help?
@btalb how should this be documented?

Same applies for cluster tools.

My preference is:

Limit qcr to convenience tools that improve the workflow on our systems / within QCR
Things like listing info about a robot's current state, finding what ROS things are actually currently running, printing status of all GPU cluster machines, creating a code template, etc.
Crucially, they must have no side effects! Users need to be able to run these without a second-thought or else they won't return once a side effect like installing software or modifying system state burns them.

Store static machine-specific configurations with our system config tracking tools
We need to split these into robot-specific repos ASAP, but no time has been assigned yet to actually exploring the issue:
https://github.com/qcr/robot_system_configs/issues/5

Figure out how we handle tracking commands that modify system state
Adding a basic install script to each robot-specific system config repo has been proposed, but again not explored. Time needs to be allocated to deciding and executing a solution here.

I think we really need to prioritise making some decisions around how we split all of this up. Things like all of the above have been discussed in isolation but not finalised yet, let alone documented so that contributors like @suddrey-qut have a clear picture.

Removed.