koalazak / dorita980

Unofficial iRobot Roomba and Braava (i7/i7+, 980, 960, 900, e5, 690, 675, m6, etc) node.js library (SDK) to control your robot
MIT License
945 stars 150 forks source link

J7 get password #142

Closed dcmeglio closed 2 years ago

dcmeglio commented 3 years ago

Anyone tested this with the new j7 yet?

jdiegmueller commented 3 years ago

Anyone tested this with the new j7 yet?

I just picked up a Roomba j7+. However, I can't seem to get it to fetch the password from the device:

[jdiegmueller@nv-dc2-rproxy1 dorita980]# get-roomba-password 10.245.2.102
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...
events.js:291
      throw er; // Unhandled 'error' event
      ^

Error: Client network socket disconnected before secure TLS connection was established
    at connResetException (internal/errors.js:609:14)
    at TLSSocket.onConnectEnd (_tls_wrap.js:1557:19)
    at Object.onceWrapper (events.js:420:28)
    at TLSSocket.emit (events.js:326:22)
    at endReadableNT (_stream_readable.js:1241:12)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)
Emitted 'error' event on TLSSocket instance at:
    at emitErrorNT (internal/streams/destroy.js:92:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  code: 'ECONNRESET',
  path: undefined,
  host: '10.245.2.102',
  port: 8883,
  localAddress: undefined
}

I've also tried the password-fetching tools from the similar(?) project (https://github.com/NickWaterton/Roomba980-Python) with similar results, so I suspect there is something different about the j7+.

koalazak commented 3 years ago

hello folks,

what do you see if run this snippet? (make sure you are in the same network as the J7 robot!)

const dorita980 = require('dorita980');

dorita980.discovery((err, data) => {
  console.log(err, data);
});
jdiegmueller commented 3 years ago
[root@ROCKY dorita980]# ./jason.js 
Looking for robots...
Robot found! with blid/username: BCBCDD45160547239EBF3D8B086CB7F2
{ ver: '3',
  hostname: 'iRobot-BCBCDD45160547239EBF3D8B086CB7F2',
  robotname: 'Braava jet',
  robotid: 'BCBCDD45160547239EBF3D8B086CB7F2',
  ip: '10.245.2.120',
  mac: '50:14:79:88:CE:F5',
  sw: 'sanmarino+3.18.11+sanmarino-release-rt321+12',
  sku: 'm611020',
  nc: 0,
  proto: 'mqtt',
  cap:
   { oMode: 4,
     edge: 0,
     maps: 3,
     pmaps: 5,
     tHold: 1,
     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,
     tileScan: 1 } }
koalazak commented 3 years ago

mmm that response is from your other robot (Braava jet). I was looking for a response from the J7. No worries I saw the correct response in your other issues:

{
  "ver": "4",
  "hostname": "iRobot-15DF6D60B10A4BA48A53015E91E330D2",
  "robotname": "Roomba",
  "robotid": "15DF6D60B10A4BA48A53015E91E330D2",
  "ip": "10.245.2.102",
  "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
}

I was lookig for the proto value.

Looks like a ssl issue. maybe they added more security like client certificates or ssl pinning.

t4sso4 commented 3 years ago

I'm seeing a similar response on an i7 with the latest firmware. Any chance we can extract the password some way? Note: I only get this response if I don't put it in wifi discovery mode (pressing spot+base for 2 sec). If I do, I just get an error, no response at all

Robot Data:
{
  ver: '3',
  hostname: 'iRobot-3CEE4408011A44209BCE340AFE0A0A23',
  robotname: 'Roomba',
  robotid: '3CEE4408011A44209BCE340AFE0A0A23',
  ip: '192.168.1.204',
  mac: '50:14:79:1C:31:0D',
  sw: 'lewis+3.18.11+lewis-release-rt321+13',
  sku: 'i715020',
  nc: 0,
  proto: 'mqtt',
  cap: {
    binFullDetect: 2,
    oMode: 10,
    dockComm: 1,
    wDevLoc: 2,
    bleDevLoc: 1,
    edge: 0,
    maps: 3,
    pmaps: 5,
    tLine: 2,
    area: 1,
    eco: 1,
    multiPass: 2,
    pose: 1,
    team: 1,
    pp: 0,
    lang: 2,
    hm: 0,
    '5ghz': 1,
    prov: 3,
    sched: 1,
    svcConf: 1,
    ota: 2,
    log: 2,
    langOta: 0,
    tileScan: 1
  },
  blid: '3CEE4408011A44209BCE340AFE0A0A23'
}
Error getting password. Follow the instructions and try again.
DiegoCarrilho commented 3 years ago

I have succesfully extracted password using the IOS app Thor to sniff sll comunication while starting roomba app. 2675310C-28FE-46CF-95EB-8D16A4664261 22502DD1-0688-4C06-AEE0-AE4A563ECB24

koalazak commented 3 years ago

J7 owners: can you please enumerate the steps that the iRobot app guide to configure your robot the first time?. There is a wizard to setup your robot the first time and there is one step in where the app ask to press some buttons on the robot...which are those butons and instructions?

Can your enumerate the complete guided process?

thank you

andornaut commented 2 years ago

I was able to retrieve the password using the "Thor" app as mentioned above.

twitchdatweek commented 2 years ago

@koalazak There is no home button on the J7, it is supposed to automatically connect.

Also, is there an alternative to using this "Thor" app? I don't have an iPhone.

DiegoCarrilho commented 2 years ago

@koalazak There is no home button on the J7, it is supposed to automatically connect.

Also, is there an alternative to using this "Thor" app? I don't have an iPhone.

Fiddler, Titanium Web Proxy, Charles proxy and …

koalazak commented 2 years ago

@koalazak There is no home button on the J7, it is supposed to automatically connect.

Also, is there an alternative to using this "Thor" app? I don't have an iPhone.

do you own a J7? Can you please describe the mobile app steps to setup the robot? in detail...

thanks

dcmeglio commented 2 years ago

From the Roomba website:

This step turns on Roomba®’s internal Wi-Fi network so that your device can locate the robot. This step is not required for Roomba j7. Roomba j7 automatically does this step when turned on initially. If the robot is unable to be found, please reboot the robot but holding the Clean button until the light ring turns white and spins clockwise (10-20 seconds)

Maybe try doing that to put the roomba into discovery mode?

See https://homesupport.irobot.com/s/article/17734

twitchdatweek commented 2 years ago

@koalazak There is no home button on the J7, it is supposed to automatically connect. Also, is there an alternative to using this "Thor" app? I don't have an iPhone.

Fiddler, Titanium Web Proxy, Charles proxy and …

I tried using Fiddler and have had no success. I have it sniffing traffic when I open the app or reset the roomba and I don't see any messages from iRobot or the IP of the roomba. I'm pretty new to this, so it's probably just me. I even enabled HTTPS.

thiagodeserto commented 2 years ago

Managed to sniff it using Charles Proxy on PC (https://www.charlesproxy.com). Summary: -Opened Charles on PC. -Proxy -> Access Control Settings -> Added phone's local IP address. -Proxy -> SSL Proxying Settings -> Enabled SSL Proxying adding "unauth1.prod.iot.irobotapi.com" with all ports "*". -Installed SSL Certificate on the phone (https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/) -Added the Trusted Certificate and Profile (ios). -Closed and Opened the iRobot app on the phone. -Then I managed to see the request with the password.

(If using HA to integrate, remember to close the iRobot App before adding the password.)

ps.: "You may try Charles for 30 days before purchasing a license. This enables you to evaluate Charles before deciding to purchase."

uvNikita commented 2 years ago

Have anyone managed to do it on Android? I think Android 11 added some security measures which prevents SSL decryption with user-provided certificates.

binary64 commented 2 years ago

I can connect to my Roomba j7's IP on tcp/8883 using ROBOT_CIPHERS=TLS_AES_256_GCM_SHA384

I send 8f005efcc3b2900 and promptly get back a reply of f005efcc3b2903. In utf8 that looks like �♣��;)♥ -- I can't help but think that is a similey face sent by the Roomba devs :(

I get the same password even after a short button press (whilst docked), and also a 20 second long press (a reboot?).

koalazak commented 2 years ago

I have succesfully extracted password using the IOS app Thor to sniff sll comunication while starting roomba app. @DiegoCarrilho

have you been able to use the password with dorita980 without other changes?

koalazak commented 2 years ago

I can connect to my Roomba j7's IP on tcp/8883 using ROBOT_CIPHERS=TLS_AES_256_GCM_SHA384

I send 8f005efcc3b2900 and promptly get back a reply of f005efcc3b2903. In utf8 that looks like �♣��;)♥ -- I can't help but think that is a similey face sent by the Roomba devs :(

I get the same password even after a short button press (whilst docked), and also a 20 second long press (a reboot?).

nice! can you share the complete (edit your ids for privacy) output of the following command:

npm install -g dorita980
ROBOT_CIPHERS=TLS_AES_256_GCM_SHA384 get-roomba-password <robotIP>

( please take into account all the troubleshooting things: https://github.com/koalazak/dorita980#troubleshoot---getting-the-password )

thank you!

binary64 commented 2 years ago

I already tried that several ways (holding down the button etc) - but just get Error getting password. Follow the instructions and try again.. I get those 7 bytes back and the code for get-roomba-password checks if it's 7 or less, it fails with that error message.

I have just made a discovery, I left my terminal open, and after those 7 bytes.. I started to get traffic! Here's some snippets:

:$aws/things/020C465103B5452A92D1E54XXXXXXX/shadow/update{"state":{"reported":{"cleanMissionStatus": {"cycle": "none", "phase": "charge", "expireM": 0, "rechrgM": 0, "error": 0, "notReady": 0, "mssnM": 0, "expireTm": 0, "rechrgTm": 0, "mssnStrtTm": 1633980984, "operatingMode": 0, "initiator": "rmtApp", "nMssn": 41, "missionId": "0001GP94HRQ2A2FJZVJXXXXXXX"}}}}

:$aws/things/020C465103B5452A92D1E54XXXXXXX/shadow/update{"state":{"reported":{"cleanMissionStatus": {"cycle": "clean", "phase": "run", "expireM": 0, "rechrgM": 0, "error": 0, "notReady": 0, "mssnM": 0, "expireTm": 0, "rechrgTm": 0, "mssnStrtTm": 1633980984, "operatingMode": 2, "initiator": "rmtApp", "nMssn": 41, "missionId": "0001GP94HRQ2A2FJZVJXXXXXXX"}}}}

:$aws/things/020C465103B5452A92D1E54XXXXXXX/shadow/update{"state":{"reported":{"cleanMissionStatus": {"cycle": "clean", "phase": "hmPostMsn", "expireM": 0, "rechrgM": 0, "error": 0, "notReady": 0, "mssnM": 0, "expireTm": 0, "rechrgTm": 0, "mssnStrtTm": 1633980984, "operatingMode": 0, "initiator": "rmtApp", "nMssn": 41, "missionId": "0001GP94HRQ2A2FJZVJXXXXXXX"}}}}

:$aws/things/020C465103B5452A92D1E54XXXXXXX/shadow/update{"state":{"reported":{"cleanMissionStatus": {"cycle": "clean", "phase": "evac", "expireM": 0, "rechrgM": 0, "error": 0, "notReady": 0, "mssnM": 0, "expireTm": 0, "rechrgTm": 0, "mssnStrtTm": 1633980984, "operatingMode": 0, "initiator": "rmtApp", "nMssn": 41, "missionId": "0001GP94HRQ2A2FJZVJXXXXXXX"}}}}
binary64 commented 2 years ago

My code is just this

const tls = require("tls");
var client = tls.connect(
  8883,
  "192.168.1.136",
  {
    rejectUnauthorized: false,
    ciphers: process.env.ROBOT_CIPHERS || "AES128-SHA256",
  },
  function () {
    const magicPacket = new Buffer("f005efcc3b2904", "hex");
    console.log("Connected! Sending magic packet..", magicPacket);
    client.write(magicPacket);
  }
);

client.on("data", function (data) {
  console.log("got data", data, new Buffer(data).toString("hex"));
});
HansLehnert commented 2 years ago

I ran ROBOT_CIPHERS=TLS_AES_256_GCM_SHA384 get-roomba-password <ip> and got this output

{
  ver: '4',
  hostname: 'iRobot-XXXX',
  robotname: 'XXXX',
  robotid: 'XXXX',
  ip: '192.168.2.128',
  mac: '50:14:79:XX:XX:XX',
  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: 12,
  blid: 'XXXX'
}
Error getting password. Follow the instructions and try again.

After the f005efcc3b2900 MQTT packet is sent, I get these 13 bytes as response efbfbd05efbfbdefbfbd3b2903, which are the same that have been mentioned before. I couldn't make sense of either the request or the response. How was this packet built?

I was able to get the password by capturing traffic from the App and was able to connect with that. For Android 10 I used apk-mitm to patch the iRobot app and was then able to proxy the requests (through Fiddler, for example).

abhi9cr7 commented 2 years ago

I am using Hoobs and trying to get the blid and password.

Probably because of Hoobs 4, the folder for hombridge-roomba2 is like this /usr/local/share/.cache/yarn/v6/npm-homebridge-roomba2-1.2.2-20d857384cc8aa25a649f19a66046cc2f25bc718-integrity/node_modules/homebridge-roomba2 and there is no dorita980 within this folder.

When I did locate for dorita980, the directory is /usr/local/share/.cache/yarn/v6/npm-dorita980-3.1.10-7f6d681688e3fcaa42040b16a9ceded08270457e-integrity/node_modules/dorita980/

Whenever I am running sudo npm run getrobotpwd 192.168.XX.XXX I am getting "can't cd into node_modules/dorita980".

mpreissner commented 2 years ago

Following. I'm having issues getting my j7 to work. Got the BLID/password using Charles proxy, but after adding to homebridge with the roomba2 plugin, the devices always show "No response". I'm assuming it's because of the need to use stronger ciphers than what's set as the default here.

mpreissner commented 2 years ago

I updated the getpassword.js file on my homebridge to use TLS_AES_256_GCM_SHA384 for ROBOT_CIPHERS, and was able to get the BLID from the output, but it still failed password retrieval.

Robot Data: { ver: '4', hostname: 'iRobot-', robotname: 'Roomba', robotid: '', ip: '', mac: '', 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, blid: '' } Error getting password. Follow the instructions and try again.

This was without pressing the button. If I press the button, I get the same error.

j-ktz commented 2 years ago

Same issue here. Get all the data except password.

koalazak commented 2 years ago

Hello folks,

yeah, looks like the J7 mechanism to get the password is diferent (and will be for next robots too). It is imposible to me debug the problem without a J7 robot. So if you want to help me to get a robot here is the information:

Donations to get J7 robot

https://github.com/koalazak/dorita980/blob/master/README.md#donations

any other kind of help is welcome!

thank you very much!

dcmeglio commented 2 years ago

For those who grabbed the password from the mobile app, are you then able to get the j7 to work? Considering buying one.

On Oct 24, 2021, at 10:03 AM, Facu ZAK @.***> wrote:

 Hello guys,

yeah, looks like the J7 mechanism to get the password is diferent (and will be for next robots too). It is imposible to me debug the problem without a J7 robot. So if you want to help me to get a robot here is the information:

Donations to get J7 robot

https://github.com/koalazak/dorita980/blob/master/README.md#donations

any other kind of help is welcome!

thank you very much!

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

andornaut commented 2 years ago

For those who grabbed the password from the mobile app, are you then able to get the j7 to work?

Yep, works fine.

myzinsky commented 2 years ago

For those who grabbed the password from the mobile app, are you then able to get the j7 to work? Yep, works fine.

So for me unfortunately not! @andornaut what you have done to get it finally working?

andornaut commented 2 years ago

So for me unfortunately not! @andornaut what you have done to get it finally working?

@myzinsky Once I got the blid and password, I was able to progress through the Home Assistant Roomba integration setup without issue. I don't recall doing anything special other than to make sure that the Roomba Android app wasn't running while I was going through the setup and I may have also rebooted the Roomba J7 just prior to running the Home Assistant Roomba integration setup process. I don't know whether these steps are actually required, but that's what I remember doing.

mpreissner commented 2 years ago

I haven’t been able to get mine to work, but I’m using the roomba2 plugin which relies on dorita980. I sign out of all iRobot apps, reboot the roomba, but my homebridge still can’t communicate with the robot once it comes back online.

andornaut commented 2 years ago

@myzinsky & @dcmeglio

Sorry, I got my Roomba-projects mixed up. The Home Assistant Roomba integration that I'm using appears to use roombapy under the hood, so my experience doesn't apply to this project.


Edit: I decided to give this project a shot and it appears to work as long as you set this environment variable: ROBOT_CIPHERS=TLS_AES_256_GCM_SHA384.

I wrote a small script to test it:

const dorita980 = require('./index');
const {
  ROOMBA_HOST: host,
  ROOMBA_PASSWORD: password,
  ROOMBA_USERNAME: username,
} = process.env;
const roomba = new dorita980.Local(username, password, host);

roomba.on('connect', () => {
  roomba.clean()
  .then(() => roomba.end())
  .catch(console.log);
});

Save the script to ./app.js in the root of this project, then execute the following:

export ROOMBA_USERNAME=SNIP
export ROOMBA_PASSWORD=SNIP
export ROOMBA_HOST=SNIP
export ROBOT_CIPHERS=TLS_AES_256_GCM_SHA384
node app.js
koalazak commented 2 years ago

To summarize, we have 2 issues!

1) TLS connection error: to control the robot and to get the password we first need to connect to the robot on 8883 port using TLS. The default cipher is causing an error connecting to the robot. To solve this issue please setup the ROBOT_CIPHERS OS environment variable to TLS_AES_256_GCM_SHA384 value. By doing this you should be able to connect to the robot to control it (temporaly get the password with the Thor method). I am working on a patch so that it is not necessary to configure this environment variable and it will work by default in all robots.

2) Error getting the password: besides the TLS problem, we still don't know exactly how is the process to get the password for this robot.

koalazak commented 2 years ago

Thank you for your support!

In just a couple of hours I have received from you almost half of what is needed to buy a j7 robot

▰▰▰▰▱▱▱▱▱▱ 41%

I think we are going to make it quicky! thank you!

https://github.com/koalazak/dorita980/blob/master/README.md#donations

uvNikita commented 2 years ago

Here are some instructions on how to get BLID and password with mitmproxy if you are using Android 11 and don't want/trust to download apks from external websites like apkpure: https://gist.github.com/uvNikita/f9dbbc09cdd71cbcac3a24beac62f355.

myzinsky commented 2 years ago

To summarize, we have 2 issues!

  1. TLS connection error: to control the robot and to get the password we first need to connect to the robot on 8883 port using TLS. The default cipher is causing an error connecting to the robot. To solve this issue please setup the ROBOT_CIPHERS OS environment variable to TLS_AES_256_GCM_SHA384 value. By doing this you should be able to connect to the robot to control it (temporaly get the password with the Thor method). I am working on a patch so that it is not necessary to configure this environment variable and it will work by default in all robots.
  2. Error getting the password: besides the TLS problem, we still don't know exactly how is the process to get the password for this robot.

I think there is another issue 3, even if you have password and BLID, you cannot talk to the robot.

koalazak commented 2 years ago

To summarize, we have 2 issues!

  1. TLS connection error: to control the robot and to get the password we first need to connect to the robot on 8883 port using TLS. The default cipher is causing an error connecting to the robot. To solve this issue please setup the ROBOT_CIPHERS OS environment variable to TLS_AES_256_GCM_SHA384 value. By doing this you should be able to connect to the robot to control it (temporaly get the password with the Thor method). I am working on a patch so that it is not necessary to configure this environment variable and it will work by default in all robots.
  2. Error getting the password: besides the TLS problem, we still don't know exactly how is the process to get the password for this robot.

I think there is another issue 3, even if you have password and BLID, you cannot talk to the robot.

you should talk to the robot using ROBOT_CIPHERS=TLS_AES_256_GCM_SHA384.

@andornaut (and others) proved that: https://github.com/koalazak/dorita980/issues/142#issuecomment-950402865

if that is not working for you, check the troubleshooting guide: https://github.com/koalazak/dorita980#troubleshoot---getting-the-password

myzinsky commented 2 years ago

To summarize, we have 2 issues!

  1. TLS connection error: to control the robot and to get the password we first need to connect to the robot on 8883 port using TLS. The default cipher is causing an error connecting to the robot. To solve this issue please setup the ROBOT_CIPHERS OS environment variable to TLS_AES_256_GCM_SHA384 value. By doing this you should be able to connect to the robot to control it (temporaly get the password with the Thor method). I am working on a patch so that it is not necessary to configure this environment variable and it will work by default in all robots.
  2. Error getting the password: besides the TLS problem, we still don't know exactly how is the process to get the password for this robot.

I think there is another issue 3, even if you have password and BLID, you cannot talk to the robot.

you should talk to the robot using ROBOT_CIPHERS=TLS_AES_256_GCM_SHA384.

@andornaut (and others) proved that: #142 (comment)

if that is not working for you, check the troubleshooting guide: https://github.com/koalazak/dorita980#troubleshoot---getting-the-password

Ah, i have not seen androdaut's last edit. Okay how can I set the ROBOT_CIPHERS=TLS_AES_256_GCM_SHA384 thing in homebridge?

koalazak commented 2 years ago

you are asking in the wrong project :p Check their documentation to configure Environment variables

DiegoCarrilho commented 2 years ago

To summarize, we have 2 issues!

  1. TLS connection error: to control the robot and to get the password we first need to connect to the robot on 8883 port using TLS. The default cipher is causing an error connecting to the robot. To solve this issue please setup the ROBOT_CIPHERS OS environment variable to TLS_AES_256_GCM_SHA384 value. By doing this you should be able to connect to the robot to control it (temporaly get the password with the Thor method). I am working on a patch so that it is not necessary to configure this environment variable and it will work by default in all robots.
  2. Error getting the password: besides the TLS problem, we still don't know exactly how is the process to get the password for this robot.

I think there is another issue 3, even if you have password and BLID, you cannot talk to the robot.

Here is working without rebooting the robot, just got password by sniffer and then add to home assistant with no library changes. 29C46CA9-9002-40FD-A450-8BC8862257A8

koalazak commented 2 years ago

Thank you for your support!

In just a couple of hours I have received from you almost half of what is needed to buy a j7 robot

▰▰▰▰▱▱▱▱▱▱ 41%

I think we are going to make it quicky! thank you!

https://github.com/koalazak/dorita980/blob/master/README.md#donations

thanks to another donor! ▰▰▰▰▱▱▱▱▱▱ 47%

koalazak commented 2 years ago

thank you @cismarine ! (sorry I deleted you comment by mistake :p)

dcmeglio commented 2 years ago

How do you set the cipher from rest980?

On Oct 26, 2021, at 7:43 AM, Facu ZAK @.***> wrote:

 Thank you for your support!

In just a couple of hours I have received from you almost half of what is needed to buy a j7 robot

▰▰▰▰▱▱▱▱▱▱ 41%

I think we are going to make it quicky! thank you!

https://github.com/koalazak/dorita980/blob/master/README.md#donations

thank you to another donator! ▰▰▰▰▱▱▱▱▱▱ 47%

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

koalazak commented 2 years ago

hello @dcmeglio

cd path/to/rest980
ROBOT_CIPHERS=TLS_AES_256_GCM_SHA384 npm start
koalazak commented 2 years ago

Hello folks,

yeah, looks like the J7 mechanism to get the password is diferent (and will be for next robots too). It is imposible to me debug the problem without a J7 robot. So if you want to help me to get a robot here is the information:

Donations to get J7 robot

https://github.com/koalazak/dorita980/blob/master/README.md#donations

any other kind of help is welcome!

thank you very much!

more progress on donations!

▰▰▰▰▰▱▱▱▱▱ 58.4%

thank you guys!

m-ruhl commented 2 years ago

I tried the workaround/solution from @andornaut, but for me it does not work.

ROBOT_CIPHERS=TLS_AES_256_GCM_SHA384 NODE_DEBUG=cluster,net,http,fs,tls,timers node run.js

NET 7912: pipe false undefined
NET 7912: _read
NET 7912: _read wait for connection
NET 7912: afterConnect
TLS 7912: start
NET 7912: destroy
NET 7912: close
NET 7912: close handle
NET 7912: _read
NET 7912: _read wait for connection
NET 7912: emit close
NET 7912: pipe false undefined
NET 7912: _read
NET 7912: _read wait for connection
NET 7912: afterConnect

Are we sure that the authentication did not change? i7: "user_cert": false j7: "user_cert": true

    "robots":
    {
        "69A56E703ACF491DA483FD225F9F095F":
        {
            "password": "xxx",
            "sku": "i715840",
            "softwareVer": "lewis+3.18.11+lewis-release-rt321+13",
            "name": "Robby deprecated",
            "cap":
            {
                "binFullDetect": 2,
                "dockComm": 1,
                "maps": 3,
                "edge": 0,
                "area": 1,
                "eco": 1,
                "multiPass": 2,
                "pose": 1,
                "pp": 0,
                "5ghz": 1,
                "prov": 3,
                "sched": 1,
                "svcConf": 1,
                "ota": 2,
                "log": 2,
                "team": 1,
                "wDevLoc": 2,
                "bleDevLoc": 1,
                "pmaps": 5,
                "tLine": 2,
                "tileScan": 1,
                "lang": 2,
                "langOta": 0,
                "oMode": 10,
                "hm": 0
            },
            "svcDeplId": "v011",
            "user_cert": false
        },
        "6614293A8BCC403F928CC7BEB11307D4":
        {
            "password": "xxx",
            "sku": "j755840",
            "softwareVer": "sapphire+1.0.20+Firmware-Production+54",
            "name": "Robby",
            "cap":
            {
                "binFullDetect": 2,
                "dockComm": 1,
                "wDevLoc": 2,
                "bleDevLoc": 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
            },
            "svcDeplId": "v011",
            "user_cert": true
        }
dcmeglio commented 2 years ago

Worked for me. What version of node do you have? It requires TLS 1.3 which I believe means you need at least node 12

On Nov 5, 2021, at 5:13 PM, Michael Ruhl @.***> wrote:

 I tried the workaround/solution from @andornaut, but for me it does not work.

ROBOT_CIPHERS=TLS_AES_256_GCM_SHA384 NODE_DEBUG=cluster,net,http,fs,tls,timers node run.js

NET 7912: pipe false undefined NET 7912: _read NET 7912: _read wait for connection NET 7912: afterConnect TLS 7912: start NET 7912: destroy NET 7912: close NET 7912: close handle NET 7912: _read NET 7912: _read wait for connection NET 7912: emit close NET 7912: pipe false undefined NET 7912: _read NET 7912: _read wait for connection NET 7912: afterConnect Are we sure that the authentication did not change? i7: "user_cert": false j7: "user_cert": true

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

m-ruhl commented 2 years ago

@dcmeglio oh thanks 👍 did not had that in mind.. there was still node 10 in use

SKB-CGN commented 2 years ago

Hi, i am having a simliar problem.

I am receiving the password, but not the blid. Robot Data is "undefined".

I need this for ioBroker, to get it working. The i7 i have was replaced because of faulty charging. The old one was possible, to get the blid and password - but with the new one, it is impossible.

Even with the Sniffer Software on the phone - the app blocks the proxy or vpn apps and says, it is not able to connect to iRobot.

SKB-CGN commented 2 years ago

Seems, when the robot is new, it needs a little bit more time. After creating the Map on the phone and several "discovery-runs", i was able to connect the i7 again. Perhaps this also helps with some j7?