DEV Community

Evandro Carvalho
Evandro Carvalho

Posted on Originally published at landingfymax.com.br

Reaproveitando Smartphones Antigos como Servidores de IA de Borda com Linux (PostmarketOS / ARM64)

A maioria dos desenvolvedores e entusiastas de hardware possui algum smartphone antigo esquecido em uma gaveta. Celulares topo de linha de gerações passadas (como os equipados com Snapdragon 845 ou Snapdragon 870) possuem:

  • 6GB a 8GB de memória LPDDR4X rápida;
  • SoCs Octa-Core de 64 bits com excelente eficiência por Watt;
  • Armazenamento flash UFS veloz;
  • Uma bateria integrada (UPS/No-break nativo) que impede o desligamento súbito em caso de queda de energia.

Enquanto rodar ferramentas no Android via Termux frequentemente sofre com o OOM killer agressivo do sistema operacional móvel, instalar uma distribuição Linux real como o postmarketOS (baseado no Alpine Linux) transforma o celular em um micro-servidor bare-metal de baixo consumo.

Neste artigo, veremos como configurar um nó de inferência de IA local (Edge AI) rodando Ollama e Small Language Models (SLMs) diretamente no hardware ARM64.


1. Por que postmarketOS em vez de Android/Termux?

Aspecto Android + Termux postmarketOS (Alpine Linux)
Kernel Kernel customizado do fabricante (antigo) Kernel Linux mainline upstream
Overhead de RAM ~2.5GB consumidos pela JVM e serviços Android Menos de 200MB de RAM em idle
Gerenciamento de Processos Android suspende daemons em background systemd / OpenRC padrão de servidor
Acesso a Pacotes Repositórios limitados do Termux Repositórios completos Alpine ARM64 (apk)

2. Preparando o Ambiente Headless

Após flashear o postmarketOS no dispositivo (ex: Xiaomi Pocophone F1, OnePlus 6, etc.), o primeiro passo para maximizar a memória disponível para os modelos de IA é desativar a interface gráfica (Phosh ou Plasma Mobile) e mascarar a suspensão profunda:

# Conectado via SSH no aparelho
# 1. Desativar suspensão para não derrubar a conexão de rede
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

# 2. Desativar interface gráfica no boot (modo servidor puro)
sudo systemctl set-default multi-user.target
Enter fullscreen mode Exit fullscreen mode

Após reiniciar, o sistema consumirá míseros 150MB a 200MB de RAM, deixando mais de 5.5GB livres para carregar pesos de modelos de linguagem diretamente na memória unificada do SoC.


3. Instalando o Ollama no ARM64

O Ollama possui compilações oficiais compatíveis com a arquitetura aarch64. A instalação pode ser realizada via script oficial:

curl -fsSL https://ollama.com/install.sh | sh
Enter fullscreen mode Exit fullscreen mode

Para garantir que o serviço escute em todas as interfaces da sua rede local privada (ou na malha Tailscale), configure as variáveis de ambiente do serviço:

sudo systemctl edit ollama.service
Enter fullscreen mode Exit fullscreen mode

Insira:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_KEEP_ALIVE=24h"
Enter fullscreen mode Exit fullscreen mode

Reinicie o serviço:

sudo systemctl daemon-reload
sudo systemctl restart ollama.service
Enter fullscreen mode Exit fullscreen mode

4. Escolha e Benchmark de Modelos SLM para Edge

Em chips como o Snapdragon 845/870, modelos de 1B a 3B de parâmetros quantizados em 4 bits (GGUF) oferecem um equilíbrio ideal entre velocidade e consumo de memória:

# Modelo ultra-rápido para código e raciocínio lógico (consome ~1.2GB de RAM)
ollama pull qwen2.5-coder:1.5b

# Modelo excelente para conversação e triagem de tarefas gerais (consome ~2.1GB de RAM)
ollama pull llama3.2:3b
Enter fullscreen mode Exit fullscreen mode

Resultados de Performance (Snapdragon 845 / 6GB RAM):

  • Qwen 2.5 Coder 1.5B (Q4_K_M): ~12 a 15 tokens/segundo.
  • Llama 3.2 3B (Q4_K_M): ~7 a 9 tokens/segundo.
  • Consumo Energético: Menos de 3 Watts sob carga máxima de inferência.

Conclusão e Recursos

Reaproveitar hardware existente reduz lixo eletrônico e oferece uma infraestrutura de IA privada 24/7 sem custos recorrentes em nuvem. Com a bateria interna do smartphone, você ganha ainda tolerância total contra oscilações de energia elétrica.

Confira o guia aprofundado com comparação de hardware dedicado e mini PCs no meu blog:

👉 Artigo Completo no Fymax Sentinel


Você tem algum smartphone antigo encostado? Já considerou rodar serviços locais ou nós de rede nele? Deixe seu comentário!

Top comments (1)

Collapse
 
ai_adam profile image
ai_adam •

Ótimo guia prático. Alguns pontos que costumo ver aparecer em produção com esse stack:

Thermal throttling é o gargalo real — smartphones não têm dissipação passiva decente. Em cargas sustentadas de inferência (ex.: Llama-3-8B q4_k_m rodando contínuo), a frequência do Snapdragon cai 40-60% em 10-15 min. Solução barata: abrir a carcaça, colocar thermal pad grosso no SoC + heatsink de alumínio 30x30mm com ventoinha 5V USB. Ganha 2-3x throughput estável.

Quantização faz toda diferença no ARM64 mobile. q4_k_m costuma ser o sweet spot: cabe em 4-5 GB RAM (deixa folga pro OS + Ollama), latência ~50-80 tok/s no 8 Gen 1. q8_0 só vale se tiver 8 GB+ e aceitar 30-40% mais lento. Evite q2_k — degradação de coerência em português é brutal.

NPU/Hexagon ainda é dor de cabeça no postmarketOS. O driver qcom_q6 expõe o DSP, mas o stack ONNX Runtime / ExecuTorch pra Ollama não tem backend maduro pro Hexagon ainda. Atualmente roda tudo na CPU (kryo) + Adreno via Vulkan compute (site: labagent .tech)

Some comments may only be visible to logged-in visitors. Sign in to view all comments. Some comments have been hidden by the post's author - find out more