dgiese / dustcloud

Xiaomi Smart Home Device Reverse Engineering and Hacking
GNU General Public License v3.0
2.2k stars 254 forks source link

No communication with Rockrobo S50 with FW 3.3.9_001702 #180

Closed anonimno1 closed 5 years ago

anonimno1 commented 5 years ago

Hello,

since 2 days I have a Rockrobo S50 with the FW 3.3.9_001702 and I am trying to root it.

I am working with Linux Mint 18.3 desktop. So I build the image but I can not transfer it to the robot, it does not react at all.

  1. I connected the robot to Xiaomi and then extracted the token from the backup of the old Mi Home app.
  2. I reseted the Wifi connection and conneceted with the new Wifi Spot Roborockxxxx.
  3. mirobo --ip 192.168.8.1 --token xxx status => miio.exceptions.DeviceException: Unable to discover the device, but the 192.168.8.1 answers my ping.
  4. I connected the robot again to my guest Wifi and with the Xiaomi app. Then I tried mirobo --ip 192.168.189.23 (assigend ip) --token xxx status => miio.exceptions.DeviceException: Unable to discover the device, now the robot does not answet the ping althogh my pc is on the same network.
  5. When I run mirobo -d ... then I get DEBUG:miio.click_common:Exception: Unable to discover the device 192.168.189.23 Traceback (most recent call last): File "/home/hkemal/Downloads/rockrobo/.venv/lib/python3.5/site-packages/miio/click_common.py", line 54, in call return self.main(args, kwargs) File "/home/hkemal/Downloads/rockrobo/.venv/lib/python3.5/site-packages/click/core.py", line 717, in main rv = self.invoke(ctx) File "/home/hkemal/Downloads/rockrobo/.venv/lib/python3.5/site-packages/click/core.py", line 1137, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/hkemal/Downloads/rockrobo/.venv/lib/python3.5/site-packages/click/core.py", line 956, in invoke return ctx.invoke(self.callback, ctx.params) File "/home/hkemal/Downloads/rockrobo/.venv/lib/python3.5/site-packages/click/core.py", line 555, in invoke return callback(args, kwargs) File "/home/hkemal/Downloads/rockrobo/.venv/lib/python3.5/site-packages/click/decorators.py", line 64, in new_func return ctx.invoke(f, obj, *args, *kwargs) File "/home/hkemal/Downloads/rockrobo/.venv/lib/python3.5/site-packages/click/core.py", line 555, in invoke return callback(args, kwargs) File "/home/hkemal/Downloads/rockrobo/.venv/lib/python3.5/site-packages/miio/vacuum_cli.py", line 106, in status res = vac.status() File "/home/hkemal/Downloads/rockrobo/.venv/lib/python3.5/site-packages/miio/vacuum.py", line 157, in status return VacuumStatus(self.send("get_status")[0]) File "/home/hkemal/Downloads/rockrobo/.venv/lib/python3.5/site-packages/miio/device.py", line 224, in send self.do_discover() File "/home/hkemal/Downloads/rockrobo/.venv/lib/python3.5/site-packages/miio/device.py", line 162, in do_discover raise DeviceException("Unable to discover the device %s" % self.ip) miio.exceptions.DeviceException: Unable to discover the device 192.168.189.23

Any idea?

anonimno1 commented 5 years ago

I tried it all over again using this https://github.com/dgiese/dustcloud/wiki/VacuumRobots-manual-update-root-Howto, but still no luck. I do not get any response from the robot.

python ../../dustcloud/devices/xiaomi.vacuum/firmwarebuilder/flasher.py -d -a 192.168.8.1 -t 4f33705570507166726d4441536xxxxx -f output/v11_001792.pkg Flasher for Xiaomi Vacuum Connecting to device 192.168.8.1... Got error when receiving: timed out error while checking device: No response from the device

(.venv) hkemal@marvin ~/Downloads/rockrobo/firmware/image $ mirobo discover --handshake true INFO:miio.device:Sending discovery to with timeout of 5s.. INFO:miio.device:Discovery done

(.venv) hkemal@marvin ~/Downloads/rockrobo/firmware/image $ mirobo -d discover --handshake true INFO:miio.vacuum_cli:Debug mode active INFO:miio.device:Sending discovery to with timeout of 5s.. INFO:miio.device:Discovery done (.venv) hkemal@marvin ~/Downloads/rockrobo/firmware/image $ mirobo --ip=192.168.8.1 --token=4f33705570507166726d4441536xxxxx status ERROR:miio.device:Got error when receiving: timed out Error: No response from the device (.venv) hkemal@marvin ~/Downloads/rockrobo/firmware/image $ mirobo -d --ip=192.168.8.1 --token=4f33705570507166726d4441536xxxxx status INFO:miio.vacuum_cli:Debug mode active DEBUG:miio.vacuum_cli:Connecting to 192.168.8.1 with token 4f33705570507166726d4441536xxxxx DEBUG:miio.protocol:Unable to decrypt, returning raw bytes: b'' DEBUG:miio.device:Got a response: Container: data = Container: offset1 = 32 length = 0 value = b'' (total 0) data = b'' (total 0) offset2 = 32 header = Container: offset1 = 0 length = 16 value = Container: length = 32 unknown = 0 device_id = b'\x07\n\x7fW' (total 4) ts = 1970-01-01 10:49:31 data = b'!1\x00 \x00\x00\x00\x00\x07\n\x7fW\x00\x00\x98;' (total 16) offset2 = 16 checksum = b'CvQj7KqYPn7cD2FA' (total 16) DEBUG:miio.device:Discovered 070a7f57 with ts: 1970-01-01 10:49:31, token: b'4376516a374b7159506e376344324641' DEBUG:miio.device:192.168.8.1:54321 >>: {'params': [], 'id': 1, 'method': 'get_status'} DEBUG:miio.device:Retrying with incremented id, retries left: 3 DEBUG:miio.protocol:Unable to decrypt, returning raw bytes: b'' DEBUG:miio.device:Got a response: Container: data = Container: offset1 = 32 length = 0 value = b'' (total 0) data = b'' (total 0) offset2 = 32 header = Container: offset1 = 0 length = 16 value = Container: length = 32 unknown = 0 device_id = b'\x07\n\x7fW' (total 4) ts = 1970-01-01 10:49:36 data = b'!1\x00 \x00\x00\x00\x00\x07\n\x7fW\x00\x00\x98@' (total 16) offset2 = 16 checksum = b'CvQj7KqYPn7cD2FA' (total 16) DEBUG:miio.device:Discovered 070a7f57 with ts: 1970-01-01 10:49:36, token: b'4376516a374b7159506e376344324641' DEBUG:miio.device:192.168.8.1:54321 >>: {'params': [], 'id': 102, 'method': 'get_status'} DEBUG:miio.device:Retrying with incremented id, retries left: 2 DEBUG:miio.protocol:Unable to decrypt, returning raw bytes: b'' DEBUG:miio.device:Got a response: Container: data = Container: offset1 = 32 length = 0 value = b'' (total 0) data = b'' (total 0) offset2 = 32 header = Container: offset1 = 0 length = 16 value = Container: length = 32 unknown = 0 device_id = b'\x07\n\x7fW' (total 4) ts = 1970-01-01 10:49:41 data = b'!1\x00 \x00\x00\x00\x00\x07\n\x7fW\x00\x00\x98E' (total 16) offset2 = 16 checksum = b'CvQj7KqYPn7cD2FA' (total 16) DEBUG:miio.device:Discovered 070a7f57 with ts: 1970-01-01 10:49:41, token: b'4376516a374b7159506e376344324641' DEBUG:miio.device:192.168.8.1:54321 >>: {'params': [], 'id': 203, 'method': 'get_status'} DEBUG:miio.device:Retrying with incremented id, retries left: 1 DEBUG:miio.protocol:Unable to decrypt, returning raw bytes: b'' DEBUG:miio.device:Got a response: Container: data = Container: offset1 = 32 length = 0 value = b'' (total 0) data = b'' (total 0) offset2 = 32 header = Container: offset1 = 0 length = 16 value = Container: length = 32 unknown = 0 device_id = b'\x07\n\x7fW' (total 4) ts = 1970-01-01 10:49:46 data = b'!1\x00 \x00\x00\x00\x00\x07\n\x7fW\x00\x00\x98J' (total 16) offset2 = 16 checksum = b'CvQj7KqYPn7cD2FA' (total 16) DEBUG:miio.device:Discovered 070a7f57 with ts: 1970-01-01 10:49:46, token: b'4376516a374b7159506e376344324641' DEBUG:miio.device:192.168.8.1:54321 >>: {'params': [], 'id': 304, 'method': 'get_status'} ERROR:miio.device:Got error when receiving: timed out DEBUG:miio.click_common:Exception: No response from the device Traceback (most recent call last): File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/miio/device.py", line 259, in send data, addr = s.recvfrom(1024) socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/miio/device.py", line 259, in send data, addr = s.recvfrom(1024) socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/miio/device.py", line 259, in send data, addr = s.recvfrom(1024) socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/miio/device.py", line 259, in send data, addr = s.recvfrom(1024) socket.timeout: timed out

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/miio/click_common.py", line 54, in call return self.main(args, kwargs) File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/click/core.py", line 717, in main rv = self.invoke(ctx) File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/click/core.py", line 1137, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/click/core.py", line 956, in invoke return ctx.invoke(self.callback, ctx.params) File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/click/core.py", line 555, in invoke return callback(args, kwargs) File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/click/decorators.py", line 64, in new_func return ctx.invoke(f, obj, *args, *kwargs) File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/click/core.py", line 555, in invoke return callback(args, kwargs) File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/miio/vacuum_cli.py", line 106, in status res = vac.status() File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/miio/vacuum.py", line 157, in status return VacuumStatus(self.send("get_status")[0]) File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/miio/device.py", line 288, in send return self.send(command, parameters, retry_count - 1) File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/miio/device.py", line 288, in send return self.send(command, parameters, retry_count - 1) File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/miio/device.py", line 288, in send return self.send(command, parameters, retry_count - 1) File "/home/hkemal/Downloads/rockrobo/firmware/image/.venv/lib/python3.5/site-packages/miio/device.py", line 291, in send raise DeviceException("No response from the device") from ex miio.exceptions.DeviceException: No response from the device Error: No response from the device

cryptomilk commented 5 years ago

If the device wifi is not provisioned, then there will be a handshake to get the token, so don't specify it! Also make sure your firewall is off and you don't have a webserver running on your machine.

anonimno1 commented 5 years ago

I feed stupid now :)! My Linux Desktop has a firewall but I didn't think, that it blocks traffic coming out of the desktop. WIth disabled fw I have a connection with the robot now!

THank you!