# TV Box RK322X - MXQ Pro 5G 4K

<p class="callout info">Antes de começar, as seguintes leituras são recomendadas:  
- IFSP firma protocolo de intenções com Receita Federal: [https://www.ifsp.edu.br/noticias/3902-ifsp-firma-protocolo-de-intencoes-com-receita-federal](https://www.ifsp.edu.br/noticias/3902-ifsp-firma-protocolo-de-intencoes-com-receita-federal)  
- IFSP e Receita entregam 420 microcomputadores a escolas: [https://www.ifsp.edu.br/conemac/17-ultimas-noticias/2994-parceria-entre-ifsp-e-receita-federal-entrega-420-microcomputadores-a-escolas](https://www.ifsp.edu.br/conemac/17-ultimas-noticias/2994-parceria-entre-ifsp-e-receita-federal-entrega-420-microcomputadores-a-escolas)</p>

<p class="callout warning">Este documento é um rascunho. As pesquisas relacionadas a este equipamento ainda estão sendo realizadas.</p>

<p class="callout info">Até o momento, não foi possível descobrir como fazer boot por cartão SD nos dispositivos entregues ao IFSP São João da Boa Vista. As ações abaixo tratam de fazer a atualização direta via cabo USB.</p>

![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-07/scaled-1680-/image-1690806262301.png)

### Conhecendo a placa

A placa contém na parte integrada:

- chipset Rockchip RK3229/RK322A;
- memória RAM de 1GB;
- memória flash da Samsung de 8GB para armazenamento;
- módulo wireless;
- módulo Ethernet.

[![placa&#95;tvbox&#95;mxq&#95;pro&#95;5g.png](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-07/scaled-1680-/placa_tvbox_mxq_pro_5g.png)](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-07/placa_tvbox_mxq_pro_5g.png)![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-08/scaled-1680-/image-1691007133929.png)

Nos detalhes externos há:

- 1 leitor de cartão SD;
- 4 portas USB;
- 1 conector P2 para saída de som;
- 1 conector P2 para microfone;
- 1 porta HDMI;
- 1 porta Ethernet;
- 1 jack para energia 5V;
- 1 botão de ação localizado atrás do conector P2 de áudio.

### Conectando a um PC

<p class="callout danger">**Atenção**: o cabo confeccionado nas instruções abaixo não é padronizado. Jamais utilize-o para tentar conectar outros dispositivos USB-A.</p>

Para fazer a conexão a um computador é necessário um cabo USB-A para USB-A (macho-macho). Este cabo pode ser montado utilizando 2 cabos normais USB-A de quaisquer dispositivos antigos e construindo-o com a pinagem replicada, isto é, o pino de um lado de uma cabo deve-se ligar ao mesmo pino do outro. Normalmente, você poderá confeccionar este novo cabo apenas unindo os condutores pela cor, porém deve-se tomar o cuidado pois nem sempre tais cabos seguem um padrão (antes de ligar a placa, faça um teste nas pontas do novo cabo com um multímetro ou utilize cabos idênticos na confecção).

![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-07/scaled-1680-/image-1690748571956.png)

A conexão a um computador é feita através da porta USB da TV Box que fica isolada das outras.

![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-07/scaled-1680-/image-1690743030698.png)

#### Ligação

<p class="callout warning">Quando ligar a placa ao computador, **não ligue-a na fonte**. A porta USB do computador fornecerá a energia necessária para ligá-la. </p>

[![image-1690748417948.png](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-07/scaled-1680-/image-1690748417948.png)](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-07/image-1690748417948.png)

Se o dispositivo estiver funcionando normalmente, ao ligar a conexão USB apenas servirá para o fornecimento de energia. O sistema operacional carregado ainda poderá utilizar a conexão desta porta para outras finalidades (como o modo depuração que há no sistema operacional Android).

#### Programas

Há diversos programas para subir novos firmwares e sistemas operacionais para a placa. Para Linux, a ferramenta **rkdeveloptool** é utilizada. Em Windows, a ferramenta pode ser encontrada com o nome de AndroidTool, mas possui as mesmas funcionalidades. A grande diferença entre as versões é que em Windows a ferramenta possui uma interface gráfica amigável. Em Linux, é necessário utilizar o terminal.

Para instalar o rkdeveloptool em Debian, a ferramenta está disponível diretamente via repositórios. Para obtê-lo, basta executar como root: `apt install rkdeveloptool` .

Para instalar o rkdeveloptool em Ubuntu, os repositórios do Debian podem ser utilizados para baixar o rkdeveloptool:

```
echo "deb http://deb.debian.org/debian bookworm main non-free-firmware" > /etc/apt/sources.list.d/debian.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0E98404D386FA1D9
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6ED0E7B82643E131
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F8D2585B8783D481
apt update
apt install -y rkdeveloptool
```

Caso queira instalar o rkdeveloptool em Linux compilando diretamente do código-fonte, [clique aqui](https://github.com/rockchip-linux/rkdeveloptool) para ler as instruções oficiais.

Para instalar em Windows, baixe o AndroidTool [clicando aqui](http://app.sbv.ifsp.edu.br/instaladores/tvbox/tools/AndroidTool.7z) e extraia o arquivo compactado para uma pasta qualquer.

![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-08/scaled-1680-/image-1691007614390.png)

### Trabalhando em outros modos de operação

A placa funciona em 3 modos:

- Modo NORMAL: funcionamento padrão (carrega o sistema operacional);
- Modo LOADER: carrega apenas o firmware (utilizado para subir um novo sistema operacional);
- Modo [MASKROM](https://pt.wikipedia.org/wiki/Mask-ROM): carrega o firmware mínimo somente-leitura gravado de fábrica (é carregado quando o firmware principal está corrompido ou inválido). É um modo emergencial utilizado para subir um novo firmware.

Tecnicamente, os dispositivos Rockchip não podem ser bloqueados (*bricked*). Se o flash interno não contiver um sistema inicializável, eles sempre inicializarão a partir do cartão SD. Se, por algum motivo, o sistema inicializável no flash interno estiver corrompido ou não conseguir inicializar corretamente, você sempre poderá forçar o modo MASKROM encurtando o pino do relógio eMMC no PCB.

[![Pinos para entrar em MASKROM em chipset da TV Box RK322x](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-07/scaled-1680-/IMG_20230730_150604164.jpg)](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-07/IMG_20230730_150604164.jpg)

O computador deverá ter os drivers necessários para que que você possa trabalhar nos modos LOADER ou MASKROM. Sem os drivers, caso haja um sistema operacional Android instalado, a ação padrão de pressionar o botão ao ligar é de reiniciar o dispositivo para as configurações de fábrica.

Para baixar os drivers da Rockchip para Windows, [clique aqui](https://app.sbv.ifsp.edu.br/instaladores/tvbox/drivers/). Em Ubuntu, não houve necessidade de instalar drivers.

Tendo os drivers instalados, antes de ligar a placa deve-se segurar o botão que está atrás de um dos conectores P2 de áudio, e finalmente conectar o cabo USB.

![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-07/scaled-1680-/image-1690746278434.png)

Abra o AndroidTool. Se tudo ocorreu corretamente, o programa irá exibir, na parte inferior, a mensagem de que o dispositivo foi encontrado em modo LOADER.

![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-08/scaled-1680-/image-1691007652362.png)

#### Entendendo o AndroidTool

Ao ligar o dispositivo no modo normal, podemos notar (pela saída HDMI) que é carregado um sistema operacional Android com funcionalidades de multimidia.

Ao ligar o dispositivo segurando o botão interno acessível pela saída SPDIF, o dispositivo entra no modo LOADER (nenhuma imagem na saída HDMI é gerada). Com o AndroidTool aberto, indo na aba "Avançado", podemos obter mais informações do dispositivo clicando nos botões "(Info)":

(Info) FlashID :

![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-08/scaled-1680-/image-1691009396106.png)

(Info) Flash :

![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-08/scaled-1680-/image-1691009409357.png)

(Info) Chipset :

![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-08/scaled-1680-/image-1691009416892.png)

(Info) Capacidade :

![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-08/scaled-1680-/image-1691009477816.png)

Voltando na aba inicial "Imagem" e clicando no botão "Analisar partições" podemos observar o conteúdo da memória Flash:

![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-08/scaled-1680-/image-1691007985001.png)

#### Firmware/imagem original

##### Estrutura da imagem original

<table border="1" id="bkmrk-%C2%A0-descri%C3%A7%C3%A3o-uboot-ht" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 7.90128%;"> </td><td style="width: 32.0987%;">Descrição</td></tr><tr><td style="width: 7.90128%;">uboot</td><td style="width: 32.0987%;">[https://en.wikipedia.org/wiki/Das\_U-Boot](https://en.wikipedia.org/wiki/Das_U-Boot)</td></tr><tr><td style="width: 7.90128%;">trust</td><td style="width: 32.0987%;"> </td></tr><tr><td style="width: 7.90128%;">misc</td><td style="width: 32.0987%;">???</td></tr><tr><td style="width: 7.90128%;">baseparamer</td><td style="width: 32.0987%;">???</td></tr><tr><td style="width: 7.90128%;">resource</td><td style="width: 32.0987%;">???</td></tr><tr><td style="width: 7.90128%;">kernel</td><td style="width: 32.0987%;">Kernel Linux</td></tr><tr><td style="width: 7.90128%;">boot</td><td style="width: 32.0987%;">Igual ao initrd ([https://pt.wikipedia.org/wiki/Initrd](https://pt.wikipedia.org/wiki/Initrd) )</td></tr><tr><td style="width: 7.90128%;">recovery</td><td style="width: 32.0987%;">???</td></tr><tr><td style="width: 7.90128%;">backup</td><td style="width: 32.0987%;">???</td></tr><tr><td style="width: 7.90128%;">cache</td><td style="width: 32.0987%;">Partição para cache do Android</td></tr><tr><td style="width: 7.90128%;">metadata</td><td style="width: 32.0987%;">???</td></tr><tr><td style="width: 7.90128%;">kpanic</td><td style="width: 32.0987%;">???</td></tr><tr><td style="width: 7.90128%;">system</td><td style="width: 32.0987%;">Partição para os arquivos do Sistema Operacional</td></tr><tr><td style="width: 7.90128%;">userdata</td><td style="width: 32.0987%;">Partição para os arquivos do usuário</td></tr></tbody></table>

##### Backup da imagem

<p class="callout info">Até o momento, não foi possível fazer o backup do firmware original para entender como funciona a estrutura lógica do dispositivo. O programa AndroidTool gera erro.  
O tutorial utilizado é esse: "COMO FAZER BACKUP DO SEU TV BOX - ROCKCHIP": [https://www.youtube.com/watch?v=AhrbnEFczGc](https://www.youtube.com/watch?v=AhrbnEFczGc)</p>

#### UART

<p class="callout info">Rascunho para depuração serial</p>

##### RK3228A

![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-08/scaled-1680-/image-1691871247585.png)

AA15: GPIO1\_B1/UART0\_TX/GMAC\_TXD0\_M1

Y15: GPIO1\_B0/UART0\_RX/GMAC\_TXD1\_M1

##### RK3229

![](https://docs-cti.sbv.ifsp.edu.br/uploads/images/gallery/2023-08/scaled-1680-/image-1691870235114.png)

T18: GPIO2\_D2/UART0\_TX

Y17: GPIO2\_D3/UART0\_RX

#### Funcionamento do sistema

<p class="callout info">TO-DO: entender U-boot</p>

[https://en.wikipedia.org/wiki/Das\_U-Boot](https://en.wikipedia.org/wiki/Das_U-Boot)

[https://www.edivaldobrito.com.br/u-boot-agora-permite-iniciar-o-linux-a-partir-de-um-servidor-http/](https://www.edivaldobrito.com.br/u-boot-agora-permite-iniciar-o-linux-a-partir-de-um-servidor-http/)

[https://unix.stackexchange.com/questions/703518/defining-console-port-in-arm-kernel-image](https://unix.stackexchange.com/questions/703518/defining-console-port-in-arm-kernel-image)

Tutorial: Introduction to the Embedded Boot Loader U-boot - Behan Webster, Converse in Code: [https://www.youtube.com/watch?v=INWghYZH3hI](https://www.youtube.com/watch?v=INWghYZH3hI)

\[4/4\] rockchip: Enable HDMI output on rk3399 board w/ HDMI: [https://patchwork.kernel.org/project/linux-rockchip/patch/20200123162845.10651-5-jagan@amarulasolutions.com/](https://patchwork.kernel.org/project/linux-rockchip/patch/20200123162845.10651-5-jagan@amarulasolutions.com/)

rk3399 and hdmi logo: [https://github.com/rockchip-linux/u-boot/issues/42](https://github.com/rockchip-linux/u-boot/issues/42)

[https://github.com/rockchip-linux/u-boot/issues?q=](https://github.com/rockchip-linux/u-boot/issues?q=)

#### Gravando um novo firmware

<p class="callout info">TO-DO: </p>

#### Gravando um novo sistema operacional

<p class="callout info">TO-DO:</p>

### Referências

- Documentação oficial do RockChip sobre boot:   
    [https://opensource.rock-chips.com/wiki\_Boot\_option](https://opensource.rock-chips.com/wiki_Boot_option)
- [https://forum.armbian.com/topic/12656-csc-armbian-for-rk322x-tv-boxes/](https://forum.armbian.com/topic/12656-csc-armbian-for-rk322x-tv-boxes/)
- [https://imola.armbian.com/dl/rk322x-box/archive/](https://imola.armbian.com/dl/rk322x-box/archive/)
- [https://github.com/rockchip-linux/rkbin/tree/master/bin/rk32](https://github.com/rockchip-linux/rkbin/tree/master/bin/rk32)
- [http://rockchip.wikidot.com/how-to-enter-rockusb-maskrom-mode](http://rockchip.wikidot.com/how-to-enter-rockusb-maskrom-mode)
- Fix Your Slow Rockchip Android Box by Installing a New Firmware (Tested on MXQ Pro 4K 5G) Eng Sub: [https://www.youtube.com/watch?v=47QD9kBBdyk](https://www.youtube.com/watch?v=47QD9kBBdyk)
- Cabo USB x USB Macho:   
    [https://www.youtube.com/watch?v=7-wLGx6YA5w](https://www.youtube.com/watch?v=7-wLGx6YA5w)
- Como instalar firmware na TV Box:   
    [https://www.youtube.com/watch?v=U7KHzBfOXYk](https://www.youtube.com/watch?v=U7KHzBfOXYk)
- Instalando Linux em TV Box com RK322X!:   
    [https://www.youtube.com/watch?v=R0zjwQG2iE4](https://www.youtube.com/watch?v=R0zjwQG2iE4)
- [https://forum.xda-developers.com/t/tool-imgrepackerrk-rockchips-firmware-images-unpacker-packer.2257331/](https://forum.xda-developers.com/t/tool-imgrepackerrk-rockchips-firmware-images-unpacker-packer.2257331/)
- [https://opensource.rock-chips.com/wiki\_Rkdeveloptool](https://opensource.rock-chips.com/wiki_Rkdeveloptool)
- [https://github.com/rockchip-linux/rkdeveloptool/issues/13](https://github.com/rockchip-linux/rkdeveloptool/issues/13)
- [https://github.com/ilmich/rkflashtool/](https://github.com/ilmich/rkflashtool/)
- [https://wiki.radxa.com/RockpiN10/dev/usb-install](https://wiki.radxa.com/RockpiN10/dev/usb-install)
- COMO SAIR DO MODO MASKROM - ROCKCHIP TV BOX:   
    [https://www.youtube.com/watch?v=vqc4-Jc2nwc](https://www.youtube.com/watch?v=vqc4-Jc2nwc)
- Desbrickando TV BOX MXq Pro 4k 5G, RK3228A (Unbrick) placa R29\_5G\_LP3\_V1.2:   
    [https://www.youtube.com/watch?v=1Vxl2GVP2ho](https://www.youtube.com/watch?v=1Vxl2GVP2ho)
- TV BOX MASKROM SOLUÇÃO DEFINITIVA QUALQUER TVBOX MXQ  
    [https://www.youtube.com/watch?v=lgfkFnXBXlg](https://www.youtube.com/watch?v=lgfkFnXBXlg)
- Um guia para realizar uma compilação Linux:   
    [https://wiki.t-firefly.com/en/ROC-RK3568-PC/linux\_compile.html](https://wiki.t-firefly.com/en/ROC-RK3568-PC/linux_compile.html)
- Um usuário do fórum Armbian que possui o hardware idêntico ao que foi fornecido ao campus: [https://forum.armbian.com/topic/12656-csc-armbian-for-rk322x-tv-boxes/?do=findComment&amp;comment=117962](https://forum.armbian.com/topic/12656-csc-armbian-for-rk322x-tv-boxes/?do=findComment&comment=117962)
- Rockchip RK3229 Datasheet:   
    [ https://rockchip.fr/RK3229%20datasheet%20V1.2.pdf](https://rockchip.fr/RK3229%20datasheet%20V1.2.pdf)
- Intro to Hardware Reversing: Finding a UART and getting a shell:   
    [https://www.youtube.com/watch?v=ZmZuKA-Rst0](https://www.youtube.com/watch?v=ZmZuKA-Rst0)
- Hacker's Guide to UART Root Shells:   
    [https://www.youtube.com/watch?v=01mw0oTHwxg](https://www.youtube.com/watch?v=01mw0oTHwxg)
- Conheça as piores placas de tvbox mxq pro ou mx9  
    [https://www.youtube.com/watch?v=zCFzkr\_o9-s](https://www.youtube.com/watch?v=zCFzkr_o9-s)
- COMO FAZER BACKUP DO SEU TV BOX - ROCKCHIP  
    [https://www.youtube.com/watch?v=AhrbnEFczGc](https://www.youtube.com/watch?v=AhrbnEFczGc)
- Especificação com base no nome "hx322x\_box"  
    [https://specdevice.com/showspec.php?id=e4ca-0382-0033-c5870033c587](https://specdevice.com/showspec.php?id=e4ca-0382-0033-c5870033c587)
- CRIE SEU PRÓPRIO LINUX - TV Box  
    [https://www.youtube.com/watch?v=8Ch7nUBiQa0](https://www.youtube.com/watch?v=8Ch7nUBiQa0)

Coletânea de arquivos obtidos: [https://app.sbv.ifsp.edu.br/instaladores/tvbox/](https://app.sbv.ifsp.edu.br/instaladores/tvbox/)