Adicionando Suporte para o Adaptador Wifi da Orange Pi 5 Max ao Arch Linux
Este guia descreve como fazer o adaptador AP6611s da Orange Pi 5 Max funcionar com o Arch Linux do Arch Linux Installer feito pelo Samuel (em breve um guia de como instalar esta distro na Orange Pi 5 Max). Os procedimentos foram adaptados do commit do repositório do Joshua-Riek, que descrevem no arquivo config/boards/orangepi-5-max.sh
como adicionar suporte ao adaptador por meio de um módulo de Kernel linux para a distribuição Ubuntu, configurado e instalado com DKMS.
Observação: os procedimentos aqui descritos podem não ser mais necessários no momento da leitura, pois podem já ter sido integrados a distro.
Preparação
Você deverá ter, a distro mencionada acima, instalada e configurada. Após isso, realizar os procedimentos:
Atualizar os repositórios e pacotes:
É sempre bom garantir que os espelhos (mirrors) e pacotes da distro estão todos atualizados. Portanto, execute:
sudo pacman -Syyu
Pode ser necessário instalar o git. E para instalá-lo, rode:
sudo pacman -S git
Desativar o serviço para o adaptador AP6275p:
Essa distro vem com um serviço para fazer o patch do adaptador AP6275p para que este possa funcionar com suas SBCs correspondentes. O que não é o caso para a Orange Pi 5 Max. Para desativar esse serviço, rode:
sudo systemctl stop bt_ap6275p
sudo systemctl disable bt_ap6275p
Adicionando os módulos anteriores a blacklist dos módulos do Kernel
Se o arquivo /etc/modprobe.d/bcmdhd.conf
não existir, criá-lo:
sudo touch /etc/modprobe.d/bcmdhd.conf
Em seguida:
echo "blacklist bcmdhd" | sudo tee "/etc/modprobe.d/bcmdhd.conf"
echo "blacklist dhd_static_buf" | sudo tee -a "/etc/modprobe.d/bcmdhd.conf"
Instalando DKMS e headers do Kernel
Headers do Kernel linux
Primeiro, você deverá instalar os headers para a versão atual do seu Kernel linux. A forma mais confiável de obter essa informação é olhando no arquivo /boot/extlinux/extlinux.conf
e procurando pela primeira entrada Kernel após o label. O arquivo deve apresentar um formato semelhante a este:
# This extlinux.conf is auto-generated by ACU
label linux-aarch64-rockchip-bsp6.1-joshua-git
kernel /vmlinuz-linux-aarch64-rockchip-bsp6.1-joshua-git
initrd /initramfs-linux-aarch64-rockchip-bsp6.1-joshua-git.img
devicetreedir /dtbs/linux-aarch64-rockchip-bsp6.1-joshua-git
append root=UUID=UUID_DO_DISPOSITIVO_DE_ARMAZENAMENTO_ROOT rw quiet splash
O nome do pacote do Kernel, nesse caso é: linux-aarch64-rockchip-bsp6.1-joshua-git
De posse deste nome, instale o pacote de headers correspondente:
sudo pacman -S linux-aarch64-rockchip-bsp6.1-joshua-git-headers
Lembre-se de substituir o nome do pacote linux pelo seu atual e acrescentar -headers.
Pacote DKMS
Agora, instale o pacote do dkms:
sudo pacman -S dkms
Adicionando os firmwares
Existem várias versões de firmwares disponíveis de diversas fontes. Incluindo, as do fabricante da SBC (Single-Board Computer), como no repositório: https://github.com/orangepi-xunlong/firmware, da Armbian e de outros projetos. Neste guia, vamos usar a versão do Joshua Riek.
Instale com:
sudo pacman -S linux-firmware-joshua-git
Configurando e Instalando o módulo bcmdhd
O módulo bcmdhd, bcmdhd-sdio mais especificamente, é o responsável por controlar o hardware do Wifi do adaptador AP6611s que conta também com hardware para Bluetooth, que de forma semelhante precisa de intervenção para funcionar. Instruções a este respeito serão fruto de outro artigo, em breve.
Clone do repositório
Navegue até sua pasta de usuário:
cd $HOME
Para trabalhar com códigos de terceiros, vamos criar uma pasta:
mkdir sources
cd sources
Agora, clone o repo com:
git clone https://github.com/rogersanctus/bcmdhd-dkms.git
Navegue até o diretório do repositório clonado:
cd $HOME/sources/bcmdhd-dkms
Build e instalação com DKMS
O DKMS utiliza-se de algumas convenções para o processo de automatização de construção de módulos para o Kernel atual. Uma delas é que o código do módulo necessita estar no diretório /usr/src
. E dentro de uma pasta com nome do módulo e sua versão (vamos usar 1.0 neste caso) no formato: /usr/src/nome_modulo-versao
em que nome_modulo é o nome do módulo e versao é a versão do mesmo. Desta forma, precisamos que esse módulo esteja em: /usr/src/bcmdhd-dkms-1.0
. Todavia, não vamos copiar o código, mas criar um link simbólico para ele:
Link simbólico:
sudo ln -s $(pwd) /usr/src/bcmdhd-dkms-1.0
No comando acima, o $(pwd)
apenas passa o diretório atual.
Para confirmar que o link foi criado da forma correta, faça:
ls -l /usr/src/ | grep bcmdhd
O comando acima deverá oferecer uma saída semelhante à de abaixo:
lrwxrwxrwx 1 root root DIA MES ANO HORA bcmdhd-dkms-1.0 -> /home/seu_usuario/sources/bcmdhd-dkms
Adicionando o código
O DKMS precisa de mais alguns preparativos que são realizados com:
sudo dkms add -m bcmdhd-dkms -v 1.0
Com isso, será criado um outro link simbólico para o código do módulo dentro, agora, da pasta com estrutura: /var/lib/dkms/nome_module/versao
, ficando o código em: /var/lib/dkms/bcmdhd-dkms/1.0/source
. E é nessa pasta que será feito o build. Ademais, o DKMS agora passará a fazer o build e instalação desse módulo a toda instalação de Kernel.
Podemos verificar os módulos adicionados ao DKMS e seu estado atual com:
dkms status
Build
O próximo passo é construir o módulo. Faça isso com:
sudo dkms build -m bcmdhd-dkms -v 1.0
Instalação
Finalmente, para esta etapa, vamos instalar o módulo construído rodando:
sudo dkms install -m bcmdhd-dkms -v 1.0
O DKMS copiará os binários do módulo para o diretório dos módulos do Kernel atual e realizar o depmod.
Se tudo correu bem, você deve ter o módulo pronto para uso!
Testando o WIFI
Com todos os procedimentos realizados até aqui, agora podemos testar se tudo está funcionando como deveria.
Reiniciando o Linux:
Para que novos módulos sejam carregados, é preciso reiniciar o sistema operacional. Faça:
sudo reboot
Aguarde o processo de reinicialização.
Verificando o log do Kernel
Se o módulo foi carregado de forma correta pelo Kernel, veremos uma interface wlan criada.
Para isso, rode:
dmesg | grep wlan
Procure por uma linha informando algo como: [dhd] Register interface [wlan0] MAC: O_MAC_DO_ADAPTADOR
. Note que o nome da interface, entre colchetes, pode mudar.
Testando Wifi com nmcli
Listando interfaces de rede
Com a interface wlan
criada, vamos verificar se o nmcli consegue enxergá-la com:
nmcli dev status
Verifique se é listada em DEVICE a interface registrada pelo dhd. O seu TYPE deve ser wifi.
Varredura de redes wifi
Para finalizar, vamos fazer varredura por dispositivos wifi por perto, executando:
nmcli dev wifi
Deverão aparecer as redes wifi na proximidade.
Conclusão
Embora sejam necessárias algumas etapas, é possível ter o adaptador Wifi funcionando como deve em uma ótima distro linux para essa SBC. Isso, porque esta distro já conta com vários recursos funcionais, incluindo, aceleração de vídeo com os ports dos driver mali-g610 pela Panfrost. Além de ser uma das poucas distros, fora as distribuídas pelo próprio fabricante da SBC, que funciona e bem com a Orange Pi 5 Max. Enfim, em breve trago mais artigos explicando coisas como instalar novas distros no cartão SD e no eMMC, como ativar o adaptador bluetooth do adatador citado neste artigo e outros artigos mais conforme for usando a “plaquinha”.