Tutorial Roteador com Raspberry Pi e OpenWRT

Objetivo

Utilizar o Raspberry Pi Compute Module 4 (CM4) e a placa Router Board da DFRobot para criar um roteador de internet.

Requisitos Necessários

  • Raspberry Pi CM4 (Compute Module 4)
  • Placa Router Board da DFRobot (caso compre a placa por este link, vou ganhar umas moedinhas de comissão)
  • Fonte de Alimentação USB-C: 5 Volts, com disponibilidade de 3 Amperes de corrente
  • 2 cabos RJ45 – para ligar roteador no computador e ligar o roteador no Modem de internet
  • Cabo USB-C (caso sua versão do CM4 tiver eMMC)
  • Cartão micro SD (caso sua versão do CM4 for a Lite (sem eMMC)

Raspberry Pi CM4 + DFRobot Router Carrier Board

Considerações Iniciais

Você poderá optar por qualquer versão do Raspberry PI CM4. Pelos testes realizados, utilizando a imagem do OpenWRT o consumo de memória RAM é extremamente baixo, 1GB é mais que o suficiente (normalmente utiliza algo em torno de 120MB de ram). O espaço em disco utiliza perto de 100MB também.

Lembrando que se pegar o modelo com eMMC, o slot de cartão micro SD fica desabilitado, sendo necessário utilizar somente o eMMC como memória principal. O processo de espelho da imagem do sistema operacional com o OpenWRT é um pouco mais complicado no eMMC, porém o eMMC é mais estável e mais rápido.

A rede wireless não é muito veloz, sendo necessário também comprar a extensão de antena externa, pois o dissipador de calor do Raspberry e o case podem atrapalhar no sinal (caso opte pela versão do CM4 que vem com wireless).

A vantagem da versão CM4 Lite é utilizar cartões de memória micro SD com mais espaço disponível, visto que a versão top de linha do eMMC suporta no máximo 32GB. A desvantagem é que os cartões SD tendem a falhar com o tempo, necessário serem substituídos. Mas também pode ser vantagem, caso o eMMC apresente falha, será necessário soldar um novo no local, algo que não é prático.

Expandir o sistema de arquivos também é mais simples na versão lite, você tem a comodidade de plugar o cartão SD no seu computador e estender o tamanho da partição para o tamanho real do cartão micro SD. Como utilizamos uma imagem pronta, mesmo que seu cartão ou eMMC tenha 4GB ou mais de espaço, o sistema operacional vai reconhecer algo perto de 100MB. Pois a imagem é feita para sistemas embarcados e já vem em um tamanho bem enxuto. Mas expandindo o seu cartão de memória ou eMMC você consegue utilizar o tamanho real deles.

Raspberry Pi - uso total de memória ram do roteador RPi com CM4Raspberry Pi - espaço em disco disponível após instalação openWRT

Recomendação para Raspberry Pi Compute Module 4 para projeto de roteador

Para este projeto específico, o melhor custo benefício será com a versão CM4 Lite de 1GB de ram, que vem sem eMMC.
O módulo wifi não é muito veloz, mas se morar em uma residência pequena e utilizar o wifi somente para os aparelhos celulares, e o resto dos computadores conectados por cabo, é uma opção. Como a diferença de preço é pequena para a versão com wifi, tem que ver se faz sentido para você pegar esta versão. Lembrando que se pegar a versão sem wifi, ainda é possível ligar um Access Point wifi no CM4 via cabo RJ45 e ter uma rede wifi disponível.

O modelo lite é mais prático, só clonar a imagem do OpenWRT no cartão micro SD e plugar no Router Board. O modelo com eMMC é necessário desmontar o case, mudar o pino de boot do eMMC, ligar cabo USB, montar o eMMC como disco no computador e realizar o clone da imagem para o eMMC.

Porém, neste projeto específico, vou utilizar o modelo do CM4 de 8GB de ram, com 32GB de eMMC e wifi. Já tinha este modelo do CM4 disponível de outro projeto, mas sigam minha recomendação para economizar. Vou abordar a instalação das 2 formas, pelo SD e eMMC.

Características do Raspberry Pi Compute Module + Router Carrier Board DFRobot

A grande vantagem deste setup é ter 2 portas gigabit reais disponíveis. Com uma das portas gerenciada pelo barramento PCI-e (RTL8111) e a outra pela placa de rede interna da Broadcom gigabit NIC.

O poder de processamento do BCM2711 Cortex-A72 de 4 cores e 1.5GHz e o suporte da comunidade é imprescindível para ser uma escolha sólida para projetos de entusiastas com tecnologia. A relação de poder de processamento e eficiência energética também é um ponto forte do setup.

Este projeto também conta com uma porta USB-C limitada a USB 2.0 para dados e 26 pinos GPIO disponíveis; além de uma porta USB-C para alimentação de energia.
A Router Carrier Board também conta com jumper de proteção contra gravação da EEPROM que pode ser ativada e desativada, muito útil para upgrades no bootloader do CM4.

Conectando a porta rj-45 de lan ETH1 em um switch gigabit também é uma excelente opção para estender a conexão ethernet cabeada para todos os computadores de sua residência. Em testes práticos para internet de até 1000Mbps (Gigabit) este roteador consegue entregar toda a banda.

Mas uma das funcionalidades mais importantes deste router é o software OpenWRT que juntamente ao grande espaço em disco disponível, a grande quantidade de memória ram e o poder de processamento, permite a instalação de diversos outros softwares para garantir ainda mais funcionalidades ao seu roteador.

No meu setup em casa, utilizo o Adguardhome para bloquear todas as propagandas, removem até mesmo os banners de propaganda no youtube. Só não conseguem remover as propagandas embutidas nos vídeos.

É possível utilizar também o serviço de DNS dinâmico neste roteador, permitindo acesso externo para acessar câmeras de segurança em sua residência e até mesmo um servidor local.

Há diversos outros softwares que podem ser instalados de acordo com suas necessidades.

Tutorial criar Roteador com Raspberry Pi CM4 e Dfrobots Router Carrier Board

Downloads Necessários Instalação Raspberry Pi CM4 Router com OpenWRT

O primeiro passo é realizar o download de todos os softwares necessários:

  • Software para descompactar o download da imagem do OpenWRT: Winrar (7zip, winzip,… utilize o de sua preferência)
  • Software para espelhar a imagem do OpenWRT para cartão micro SD ou eMMC: Rufus
  • Software para caso seu Raspberry Pi CM4 seja a versão com eMMC (reconhecer eMMC como disco pela USB): RpiBoot eMMC
  • Arquivo de imagem do Sistema Operacional com OpenWRT:

Lembrando que o recomendado para a imagem do OpenWRT é a disponibilizada no wiki da DFRobot, pois já vem previamente configurada (mas na versão que testei é necessário configurar o driver do wifi manualmente, pois ele vem incorreto, caso sua CM4 tenha wifi).
A versão da imagem do DFRobot vem com sistema de arquivos ext4, tem algumas vantagens no processo de estender o sistema de arquivos. No repositório oficial é possível realizar o download da imagem tanto com etx4, quanto squashfs. Mesmo que o link para as duas versões não esteja disponível, basta reparar na url de download e mudar o squashfs para ext4, por exemplo.

Só é necessário realizar o download o RpiBoot eMMC caso sua versão do Raspberry CM4 tiver eMMC soldado na placa. Se estiver na dúvida, basta olhar na imagem abaixo. Cuidado para não confundir o eMMC com o wifi.

Raspberry pi - página de wiki do DFRobot com imagem previamente configurada está disponível para DownloadRaspberry Pi - imagem openWRT disponibilizada pela DFRobot - arquivo já descomprimidoRaspberry Pi CM4 - versão com eMMC e wifi

Rasberry Pi CM4 Versão Lite

Passo 1

No seu computador pessoal, plugue o cartão micro SD, e espere até que o mesmo fique disponível no gerenciador de arquivos.

Passo 2

No seu computador pessoal, execute o software Rufus.

Em device, escolha o cartão micro SD do passo anterior. Confirme que selecionou o dispositivo correto, pois o mesmo será formatado (legal olhar se o tamanho do dispositivo é o mesmo do cartão e a letra da unidade também).

Em Boot selection, escolha a imagem do OpenWRT descompactada (.img) que fez download do site da DFRobot, exemplo:

openwrt-21.02.3-bcm27xx-bcm2711-rpi-4-ext4-factory.img

Seu nome de arquivo deve ser algo semelhante ao descrito acima, o que pode mudar é possivelmente a versão e o sistema de arquivos.

Clique em START e aguarde até o término do processo de clonar a imagem para o cartão micro SD.

Agora lembre-se de ir no sistema operacional e clicar para remover (ejetar) o seu cartão SD com segurança.

Raspberry pi clonando imagem openwrt cartao sd

Passo 3

Remova o seu cartão SD do computador e insira na sua placa DFRobot Router Carrier Board.

Se ainda não plugou a DFRobot Router Carrier Board no CM4, é o momento.

Rasberry Pi CM4 (versão com eMMC)

Passo 1

O primeiro passo é conectar o Raspberry Pi CM4 na placa de Router Carrier Board da DFRobot.

Passo 2

Repare que na placa do roteador, há duas chaves. Há o escrito EEPROM_WP (Write Protection – Proteção Gravação EEPROM) na chave de cima, e RPIBOOT na chave de baixo (habilita o acesso do eMMC como dispositivo de armazenamento USB).

Então mude somente a chave do RPIBOOT para 1.

Passo 3

Repare que a placa Router Carrier Board tem 2 entradas USB-C. Na entrada lateral que vem escrito USB, conecte o cabo USB-C e conecte a outra ponta no seu computador.

Passo 4

Na outra porta USB-C da placa de roteador, que vem escrito “POWER”, conecte a fonte de alimentação.

Passo 5

No seu computador, execute o software RPiBOOT eMMC.
A memória eMMC do seu Raspberry CM4 irá aparecer no gerenciador de arquivos como um dispositivo de armazenamento.

Raspberry Pi - executando RPiBoot para acessar memória eMMC

Passo 6

Ainda no seu computador, execute o software Rufus.

Em device (dispositivo), escolha o drive do seu eMMC que foi montado como um dispositivo de armazenamento. Verifique se o tamanho do dispositivo é o mesmo do seu eMMC e se a letra da unidade está correta.

Em Boot Selection, escolha o arquivo de imagem do OpenWRT descompactada (.img) que fez download do site da wiki do DFRobot:

openwrt-21.02.3-bcm27xx-bcm2711-rpi-4-ext4-factory.img

A sua versão do arquivo pode ser diferente, pois a DFRobot sempre atualiza eventualmente para as versões mais recentes do OpenWRT.

Confira novamente se está tudo correto, pois o processo irá formatar a unidade que selecionou, tenha certeza que é o eMMC.
Clique no botão de START e aguarde até o término do processo de clonar a imagem para o eMMC do CM4.

Raspberry pi clonando imagem eMMC

Passo 7

Ainda no seu computador, após o fim do processo de clonagem para o eMMC. Ejete o dispositivo com segurança, igual faz com um pen drive.

Passo 8

Feche o software RPiBOOT eMMC.

Passo 9

Desconecte o cabo de força do Router Board. Desconecte também o cabo de dados (a outra porta USB-C).

Passo 10

Mude a chave RPiBOOT novamente para a opção 0.

Funcionamento do Roteador (Primeiro boot)

O primeiro passo agora é ligar os cabos de rede na sua placa.

Ligue a porta ETH0 com cabo RJ-45 no seu modem de internet. A porta ETH1 você também utiliza um cabo RJ-45, mas agora para ligar em seu computador pessoal ou em um switch ethernet para distribuir a internet para várias portas.

Agora conecte o cabo de força USB-C na sua placa, e o sistema operacional deve iniciar o boot normalmente.

No seu computador plugado na rede do roteador, acesse o seu browser e digite o endereço:

192.168.1.1

Você agora acabou de acessar a interface web do roteador, essa interface tem o nome de LuCI, sendo a interface do OpenWRT.

Caso solicitado, já defina uma nova senha de login.

Raspberry Pi - tela login LuCI Openwrt no Raspberry Pi configurado como roteadorRaspberry Pi - tela inicial openwrt após login, utilizando cm4 como roteador

Considerações Finais

O setup do roteador é bem simples e prático para o modelo lite (cartão SD). Para a versão do eMMC, alguns passos adicionais são necessários, sendo bem menos prático, principalmente se atualizar periodicamente o sistema pela Flash nova do OpenWRT pela USB.

Conclusões

Este setup com o Raspberry Pi CM4 e placa de roteamento superou minhas expectativas. O desempenho é bem acima da média dos roteadores que tive oportunidade de utilizar. Quem já sofreu com roteadores de segunda mão, que esquentam, travam, não dão conta do throughput da rede, vai perceber as vantagens.
Ao colocar meu modem da internet em modo bridge (utilizo o Humax HP610 da claro) consegui velocidades superiores de internet. Meu modem da Claro conseguia chegar em 350Mbps com dificuldades em modo roteador (testes via cabo) e eventualmente tinha burst de 500Mbps. Após deixá-lo em modo bridge, consegui velocidade estáveis em 500MBps e burst de 770Mbps.

Raspberry pi - teste velocidade com modem em modo bridge e roteador RPi CM4

Com certeza irá conseguir desempenho similar colocando seu modem em modo bridge, essa velocidade não é benefício deste setup de roteador especificamente. Existem vários outros roteadores que você pode utilizar da mesma forma e irão garantir bons resultados. O grande diferencial é desafogar o modem da sua empresa de internet da responsabilidade de roteamento e delegar para outro dispositivo.

Mas o grande diferencial deste setup é a liberdade de poder instalar vários softwares pelo gerenciador de pacotes do OpenWRT (opkg). Praticamente não ter limitação de espaço em disco, ter memória ram e poder de processamento de sobra.

Recomendo também acessar o próximo tutorial e aprender a adicionar uma nova interface de bridge para wan, para conseguir acessar o endereço de rede do seu modem, pela rede do roteador. Assim vai conseguir acessar tanto seu roteador, quanto seu modem pelo browser, mesmo eles estando em redes diferentes: Tutorial acessar modem em bridge pela rede do roteador com OpenWRT

Uma recomendação é a instalação de um filtro de propaganda por DNS. O PiHole e o Adguardhome são boas opções. O Adguardhome tem suporte pelo OpenWRT e pode ser instalado diretamente pela interface.

Gostou deste projeto de roteador com o Raspberry Pi? Ficou com dúvida em alguma etapa? Alguma sugestão? Conte para mim nos comentários, farei o possível para ajudar!