rumpeltux / viomi-rooting

Tool for rooting the Xiaomi STYJ02YM (viomi-v7) and Mijia STYTJ02YM (viomi-v8) vacuum robot
100 stars 36 forks source link

Can't connect to device via adb #31

Closed tincturaginseng closed 3 years ago

tincturaginseng commented 3 years ago

OS: Arch Linux x86_64 Device: Viomi Vacuum Cleaner Mop P (STYTJ02YM) Firmware: 3.5.8_0017 ADB and USB cable works fine (tested on my android phone).

  1. I disassembled the device, disconnected the battery, connected the USB cable.
  2. Run script (and press Enter) and wait
  3. Plug USB cable to USB port on PC and watch in journalctl -xf
    Aug 16 11:45:05 localhost kernel: usb 2-1.5: new high-speed USB device number 4 using ehci-pci
    Aug 16 11:45:05 localhost kernel: usb 2-1.5: New USB device found, idVendor=1f3a, idProduct=efe8, bcdDevice=ff.ff
    Aug 16 11:45:05 localhost kernel: usb 2-1.5: New USB device strings: Mfr=0, Product=0, SerialNumber=0
    Aug 16 11:45:08 localhost kernel: usb 2-1.5: USB disconnect, device number 4

    After that I hear "Turning on" from device, waiting 2 seconds and unplug USB cable from PC. Script still waiting to connect to device. I'll try this more than 10 times - no result. Device disconnected after 3 seconds after connecting and script don't go to next step.

Maybe this firmware is non-rootable?

mkozinenko commented 3 years ago

Are you sure about FW version? 3.5.3_0017 maybe? Guys here reporting that it works. Though I have the same situation with yours with 3.5.3_0017 firmware.

tincturaginseng commented 3 years ago

Are you sure about FW version? 3.5.3_0017 maybe?

I'm sure, FW 3.5.8_0017 Screenshot_20210817-234644 I disable mtp-probe from udev rules, stop and disable VMware services (network, USB, etc). No results. I assume that the script does not have time to connect to the device during its boot.

benoegen commented 3 years ago

Hi I have the same issue. It seems there is no ADB exposed via the usb port under the battery. The viomi SE has another port under the rubber plug on the bottom, but my viomi V8 does not. I am now thinking about opening the robot to look for another port. Did you maybe already do that? Then I could keep my warranty seal...

mkozinenko commented 3 years ago

@benoegen I did. I've got Viomi v8, it doesn't have that second port. I did full disassembly.

Manoz commented 3 years ago

Same issue here with STYTJ02YM. Here's all the photos I took when disassembling my robot : https://imgur.com/gallery/3X8UgnE

tincturaginseng commented 3 years ago

Hi I have the same issue. It seems there is no ADB exposed via the usb port under the battery. The viomi SE has another port under the rubber plug on the bottom, but my viomi V8 does not. I am now thinking about opening the robot to look for another port. Did you maybe already do that? Then I could keep my warranty seal...

A vacuum cleaner is defined as a device when a cable is connected to an existing USB port (I see this via lsusb). But ADB does not appear on this port or the script does not have time to connect to it

razserv2010 commented 3 years ago

I have the same problem, anyone found a solution?

benoegen commented 3 years ago

Here: https://github.com/rumpeltux/python-miio/issues/1#issuecomment-915647117

Basically hold home and press power ten times after having plugged in usb. It will then expose adb and I just ran the script and it worked.

Dropaq commented 3 years ago

so. this method is for newer revisions manufactured in 2021 according to this comment https://github.com/rumpeltux/viomi-rooting/issues/32#issuecomment-911237365 robots from 2020 still had the ADB exposed on normal boot

though, apparently the script is still compatible as we have an ADB now, please be aware, that it is doing a little too much, like killing the robot manager and then restoring it. If it fails in the process - robot might not work and needs to be manually fixed (https://github.com/rumpeltux/viomi-rooting/issues/32)

@benoegen which errors you had during execution?

maybe we can make a separate version of the rooting-tool to simplify the process

benoegen commented 3 years ago

Problem for me was that I am not too familiar with linux commands in the first place, so I did not know if I have to paste the whole command block or every command by itself. So I was already unsure if I created the adb_shell correctly. Removing the password by "sed" command did not work, but that was the only "real error".

Basically this was the reason to use the script, which worked fine for me.

razserv2010 commented 3 years ago

Here: rumpeltux/python-miio#1 (comment)

Basically hold home and press power ten times after having plugged in usb. It will then expose adb and I just ran the script and it worked.

I did what you said but the vacuum still sounds "turn on" And the vacuum cleaner does not appear in adb devices

benoegen commented 3 years ago

Did you read the linked comment? After plugging in, I waited a short moment, then started clicking power but took it rather slow, I think it took two attempts. What output gives dmesgfor you?

Keep USB connected to the robot, but not to the PC
Long press the power key for at least 10 seconds to power off the device
Press the "Home" key and do not release it.
Connect the USB to the PC
Click power key for about 10 times
Release both keys
Robot is going to boot into FEL mode, and start the ADB

dmesg should show you an android device popping up. The voice will confirm the connection as well.

razserv2010 commented 3 years ago

Did you read the linked comment? After plugging in, I waited a short moment, then started clicking power but took it rather slow, I think it took two attempts. What output gives dmesgfor you?

Keep USB connected to the robot, but not to the PC
Long press the power key for at least 10 seconds to power off the device
Press the "Home" key and do not release it.
Connect the USB to the PC
Click power key for about 10 times
Release both keys
Robot is going to boot into FEL mode, and start the ADB

dmesg should show you an android device popping up. The voice will confirm the connection as well.

[ 5921.521759] usb 1-1.1: new high-speed USB device number 35 using xhci_hcd [ 5921.652002] usb 1-1.1: New USB device found, idVendor=1f3a, idProduct=efe8, bcdDevice=ff.ff [ 5921.652024] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 5924.495506] usb 1-1.1: USB disconnect, device number 35 [ 5924.691675] Voltage normalised (0x00000000)

razserv2010 commented 3 years ago

I did not understand "Release both keys" In the last 10 click on power on Should I also release the home button?

benoegen commented 3 years ago

You press home and keep it pressed. You plug in USB, click power 10x, the home key is pressed the whole time, after clicking the power key the last time, you release both, power and home.

After that it takes some seconds for the device to show up as android under dmesg

tincturaginseng commented 3 years ago

You press home and keep it pressed. You plug in USB, click power 10x, the home key is pressed the whole time, after clicking the power key the last time, you release both, power and home.

After that it takes some seconds for the device to show up as android under dmesg

For fw 3.5.8_0017 this method not work. My steps:

  1. Turn off device
  2. Disconnect battery
  3. Connect micro-USB cable to robot
  4. Hold down Home key and connect USB cable to PC
  5. Press Power key for 10 times and release both - Home and Power keys
  6. In lsusb output I see Allwinner Technology sunxi SoC OTG connector in FEL/flashing mode device for 3 seconds and it disconnect. Output for adb devices still empty
  7. After that I hear "turning on" message and robot try to normal boot

Video for process - https://user-images.githubusercontent.com/3119849/132990528-172776da-22b4-4a8d-b58a-11b9d70eeb57.mp4

colordeficiency commented 3 years ago

You press home and keep it pressed. You plug in USB, click power 10x, the home key is pressed the whole time, after clicking the power key the last time, you release both, power and home. After that it takes some seconds for the device to show up as android under dmesg

For fw 3.5.8_0017 this method not work. My steps:

1. Turn off device

2. Disconnect then battery

3. Connect micro-USB cable to robot

4. Hold down **Home** key and connect USB cable to PC

5. Press **Power** key for 10 times and release both - **Home** and **Power** keys

6. In _lsusb_ output I see _Allwinner Technology sunxi SoC OTG connector in FEL/flashing mode_ device for 3 seconds and it disconnect. Output for _adb devices_ still empty

7. After that I hear "turning on" message and robot try to normal boot

Video for process - https://user-images.githubusercontent.com/3119849/132990528-172776da-22b4-4a8d-b58a-11b9d70eeb57.mp4

I am having the same issues.

> lsusb
> Bus 001 Device 044: ID 1f3a:efe8 Allwinner Technology sunxi SoC OTG connector in FEL/flashing mode

> dmesg
[Sep13 02:57] usb 1-1: new high-speed USB device number 44 using xhci_hcd
[  +0.152220] usb 1-1: New USB device found, idVendor=1f3a, idProduct=efe8, bcdDevice=ff.ff
[  +0.000013] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[  +2.785393] usb 1-1: USB disconnect, device number 44

Any idea what should the lights be when adb is enabled?

prometheus247 commented 2 years ago

Same problem here.

You press home and keep it pressed. You plug in USB, click power 10x, the home key is pressed the whole time, after clicking the power key the last time, you release both, power and home. After that it takes some seconds for the device to show up as android under dmesg

For fw 3.5.8_0017 this method not work. My steps:

1. Turn off device

2. Disconnect then battery

3. Connect micro-USB cable to robot

4. Hold down **Home** key and connect USB cable to PC

5. Press **Power** key for 10 times and release both - **Home** and **Power** keys

6. In _lsusb_ output I see _Allwinner Technology sunxi SoC OTG connector in FEL/flashing mode_ device for 3 seconds and it disconnect. Output for _adb devices_ still empty

7. After that I hear "turning on" message and robot try to normal boot

Video for process - https://user-images.githubusercontent.com/3119849/132990528-172776da-22b4-4a8d-b58a-11b9d70eeb57.mp4

I am having the same issues.

> lsusb
> Bus 001 Device 044: ID 1f3a:efe8 Allwinner Technology sunxi SoC OTG connector in FEL/flashing mode

> dmesg
[Sep13 02:57] usb 1-1: new high-speed USB device number 44 using xhci_hcd
[  +0.152220] usb 1-1: New USB device found, idVendor=1f3a, idProduct=efe8, bcdDevice=ff.ff
[  +0.000013] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[  +2.785393] usb 1-1: USB disconnect, device number 44

Any idea what should the lights be when adb is enabled?

patrickelectric commented 2 years ago

any updates ?

gdumgdum commented 1 month ago

Having the exact same problem here.

After fully disassembling and looking at the motherboard, it looks like the extra USB port that other robots have under the rubber is a duplicate of the port next to the battery (it's not a second USB port, it's the exact same USB port, pin to pin). On other robots this mirror port is connected to the 5-pin socket labelled J32.

In my case, the only noticeable difference is when I power off the robot, keep pressed the Home button, plug the USB cable, hold Power for 4 seconds until the leds switch from slow-blinking-white to steady red+white, then release both buttons. Only after these steps, the robots says "turning on", then 3 seconds later "device connected, setup is now completed". However, no ADB device shows up, only the "Allwinner Technology sunxi SoC OTG connector" device for 3 seconds at the very beginning of the process.

Still investigating.

patrickelectric commented 1 month ago

just to update here, I got it working in the end, I don't remember how. But I got it holding the buttons, watching dmesg and running the script. The ADB_ARG was necessary for me.

gdumgdum commented 1 month ago

just to update here, I got it working in the end, I don't remember how. But I got it holding the buttons, watching dmesg and running the script. The ADB_ARG was necessary for me.

ADB_ARG ?

gdumgdum commented 1 month ago

Ok, I succeeded but it wasn't easy. Here is what worked for me on my Mijia STYTJ02YM viomi.vacuum.v8:

Note: if the motherboard never speaks, your USB cable is not good enough. Note 2: the viomi-root.sh scripts needs to be modified in order to change the dropbear configuration. In function install_dropbear(), right before the EOF line, add this: PubkeyAcceptedAlgorithms +ssh-rsa HostkeyAlgorithms +ssh-rsa Note3: dismantling the robot helps a lot to see if the leds are orange or red+white (you can't really tell the difference unless you directly see the leds)