# Como fazer root de um aspirador Xiaomi (V1 ou V2)

**URL:** https://forum.cpha.pt/t/como-fazer-root-de-um-aspirador-xiaomi-v1-ou-v2/902
**Category:** Tutoriais
**Created:** [10 Setembro , 2018 21:09 UTC](https://forum.cpha.pt/t/como-fazer-root-de-um-aspirador-xiaomi-v1-ou-v2/902 "2018-09-10T21:09:35Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![beloso](https://forum.cpha.pt/user_avatar/forum.cpha.pt/beloso/32/91_2.png) [@beloso](https://forum.cpha.pt/u/beloso)
#### Post date: [10 Setembro , 2018 21:09 UTC](https://forum.cpha.pt/t/como-fazer-root-de-um-aspirador-xiaomi-v1-ou-v2/902/1 "2018-09-10T21:09:35Z")

</div>

# Como fazer root a um aspirador Xiaomi (V1 ou V2)

Este tutorial pretende explicar os passos necessários para fazer root num aspirador da Xiaomi, tanto a V1 como a V2. Depois de feito o root ao aspirador é possivel expor os mapas que o mesmo gera enquanto está a trabalhar para o Home Assistant.

**Antes demais quero deixar o aviso do costume. Estre procedimento implica trocar o firmware de origem do aspirador. Pelo que a garantia do aspirador provavelmente vai á vida.**

Ora bem, mãos á obra.

Para fazer o root do aspirador vamos usar as ferramentas fornecidas pelo projecto Dustcloud ([https://github.com/dgiese/dustcloud](https://github.com/dgiese/dustcloud)). Numa primeira fase vamos compilar um firmware customizado para o aspirador. Em seguida temos de “enganar” o aspirador a instalar este firmware customizado.

O firmware que vamos compilar não é muito diferente do firmware original da Xiaomi. Apenas acrescenta a nossa chave SSH para que possamos mais tarde entrar no aspirador com acesso root.

No site do Dustcloud tem lá os passos todos de forma mais explicita e detalhada. **Na wiki encontram passos para compilar o firmware em macOS, contudo foram reportados alguns problemas pelo que se aconselha a compilar o firmware em Linux**. Eu criei uma VM com Ubuntu Server para compilar o firmware.

## Compilar o Firmware

Ficam aqui os passos que segui em Linux para compilar o firmware:

1. Instalar os pacotes necessários para compilar o firmware:

`sudo apt-get install ccrypt git wget`

1. Criem uma pasta para colocarem os ficheiros necessários

`mkdir dustcloud && cd dustcloud`

1. Façam clone do repositório do duscloud para dentro da pasta

`git clone https://github.com/dgiese/dustcloud.git`

1. Façam download do firmare mais recente para o vosso aspirador

2. Saquem o pacote da lingua inglesa:

`wget https://github.com/dgiese/dustcloud/raw/master/devices/xiaomivacuum/original-soundpackages/encrypted/english.pkg`

1. Coloquem também na pasta a vossa chave SSH, p.ex: `cp ~/.ssh/id_rsa.pub .`. (Se estão a usar uma VM, podem ter que copiar a vossa chave SSH do vosso host.)

2. Corram o script para compilar o firmware:

`sudo ./dustcloud/devices/xiaomi.vacuum/firmwarebuilder/imagebuilder.sh -f v11_00xxxx.pkg -k id_rsa.pub -s english.pkg`

Uns minutos depois deve aparecer uma pasta `output` com o firmware que vamos utilizar.

## Actualizar o Aspirador

Depois de compilado o firmware customizado temos de actualizar o aspirador com o mesmo.  
Ficam aqui as instruções:

1. Instalem os pacotes necessários para comunicar com o aspirador

2. Ponham o aspirador em modo de configuração (Premir Home + Power durante uns segundos)

3. Liguem-se á rede que o aspirador cria, qqer coisa como `roborock-vacuum-XPTO`

4. Usem o script do dustcloud para enviar o firmware para o aspirador.

`python dustcloud/devices/xiaomi.vacuum/firmwarebuilder/flasher.py -f output/v11_00xxxx.pkg`

Este processo pode demorar alguns minutos. Mantenham o PC perto do aspirador para evitarque perca o sinal do mesmo.

Terminado todo este calvário terão acesso root ao aspirador por ssh. Se ainda estiverem ligados á rede do aspiradore basta fazerem `ssh root@192.168.8.1`.

## Configurar o Aspirador

Tendo acesso SSH ao aspirador podem configura-la para se ligar á vossa rede. Como fariam com a app da Xiaomi.

Liguem a vossa máquina á rede do aspirador e corram o seguinte comando para obter o token de configuração do aspirador:

`mirobo --debug discover --handshake true`

Com o token digam ao aspirador para se ligar á vossa rede:

`mirobo --ip=192.168.8.1 --token=token configure_wifi <Nome da Rede> <Password da Rede>`

Quando o aspirador se ligar á vossa rede ele vai mudar de token. Para obter o novo token façam SSH para o aspirador `ssh root@192.168.x.y` e corram o seguinte comando:

`printf $(cat /mnt/data/miio/device.token) | xxd -p`

Devem usar este novo token para configurar o aspirador no Home Assistant.

## Instalar o Valetudo

Para extrair os mapas do Aspirador vamos utilizar o Valetudo ([https://github.com/Hypfer/Valetudo](https://github.com/Hypfer/Valetudo)).

O vale tudo é uma espécia de mini web server que corre no aspirador e expõe uma API sobre agumas funcões do aspirador.

Ficam aqui os passos para instalr o Valetudo no vosso aspirador.

1. Fazer download do binário do Valetudo que está na releases do projecto no GitHub.

2. Copiem o binário para o aspitador, para a pasta `/usr/local/bin/`.

`$ scp valetudo root@&lt;IP.ASPIRADOR&gt;:/usr/local/bin/`

1. Saquem o ficheiro de configuração do Valetudo que está na pasta `deployment`. O ficheiro `valetudo.conf`. O ficheiro deve conter o seguinte:

```auto

#!upstart

description "Valetudo"

start on filesystem

stop on runlevel [06]

oom score 1000

exec /usr/local/bin/valetudo

respawn

respawn limit 10 90

```

1. Copiem o ficheiro `valetudo.conf` para a pasta `/etc/init/valetudo.conf`

`$ scp valetudo root@&lt;IP.ASPIRADOR&gt;:/etc/init/valetudo.conf`

1. Arranquem os processos todos. Liguem-se ao aspirador por SSH. Deiam permissões de execução ao binário e arranquem o valetudo como um serviço.

```auto

# ssh root@&lt;IP.ASPIRADOR&gt;

# chmod +x /usr/local/bin/valetudo

# service start valetudo

```

1. Num browser tentem abrir o url `http://&lt;IP.ASPIRADOR&gt;`. Se tudo tiver corrido bem, devem ver um interface web com algumas funções do aspirador.

## Extrair os Mapas do Aspirador para o Home Assistant

Para além de um interface web o Valetudo expõe uma API REST que podemos usar no Home Assistant para mostrar os mapas.

Eu usei um sensor REST e o componente de camera genérico.

```auto

sensor:

- platform: rest

resource: http://&lt;IP.ASPIRADOR&gt;/api/remote/map

name: Vacuum Map

value_template: '{{ value_json.mapsrc }}'

camera:

- platform: generic

name: Vacuum Map

limit_refetch_to_url_change: true

still_image_url: http://&lt;IP.ASPIRADOR&gt;{{ states.sensor.vacuum_map.state | string }}

content_type: image/png

```

Basta adicionar o componente de camera ao vosso UI e tá feito 🙂

---

<div class="post-metadata">

### Author: ![j\_assuncao](https://forum.cpha.pt/user_avatar/forum.cpha.pt/j_assuncao/32/3_2.png) [@j\_assuncao](https://forum.cpha.pt/u/j_assuncao)
#### Post date: [10 Setembro , 2018 23:16 UTC](https://forum.cpha.pt/t/como-fazer-root-de-um-aspirador-xiaomi-v1-ou-v2/902/2 "2018-09-10T23:16:59Z")

</div>

Uma mensagem foi unida em um tópico existente: [Como fazer root a um aspirador Xiaomi (V1 ou V2)](https://forum.cpha.pt/t/como-fazer-root-a-um-aspirador-xiaomi-v1-ou-v2/903/2)

---

<div class="post-metadata">

### Author: ![j\_assuncao](https://forum.cpha.pt/user_avatar/forum.cpha.pt/j_assuncao/32/3_2.png) [@j\_assuncao](https://forum.cpha.pt/u/j_assuncao)
#### Post date: [10 Setembro , 2018 23:19 UTC](https://forum.cpha.pt/t/como-fazer-root-de-um-aspirador-xiaomi-v1-ou-v2/902/5 "2018-09-10T23:19:09Z")

</div>



---

<div class="post-metadata">

### Author: ![system](https://forum.cpha.pt/user_avatar/forum.cpha.pt/system/32/2_2.png) [@system](https://forum.cpha.pt/u/system)
#### Post date: [10 Setembro , 2018 23:19 UTC](https://forum.cpha.pt/t/como-fazer-root-de-um-aspirador-xiaomi-v1-ou-v2/902/6 "2018-09-10T23:19:34Z")

</div>

Para comentares este tópico por favor clica em:

> [@Como fazer root a um aspirador Xiaomi (V1 ou V2)](https://forum.cpha.pt/t/como-fazer-root-a-um-aspirador-xiaomi-v1-ou-v2/903):
>
> [https://forum.cpha.pt/t/como-fazer-root-de-um-aspirador-xiaomi-v1-ou-v2/902](https://forum.cpha.pt/t/como-fazer-root-de-um-aspirador-xiaomi-v1-ou-v2/902)
