<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Neil Angelo</title>
    <description>The latest articles on DEV Community by Neil Angelo (@neilsantos).</description>
    <link>https://dev.to/neilsantos</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3999478%2Fc4290ad2-57fa-47fc-bc70-56d768ffb77d.png</url>
      <title>DEV Community: Neil Angelo</title>
      <link>https://dev.to/neilsantos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/neilsantos"/>
    <language>en</language>
    <item>
      <title>Subindo um servidor DNS no hardware de uma TVBOX</title>
      <dc:creator>Neil Angelo</dc:creator>
      <pubDate>Tue, 23 Jun 2026 22:39:31 +0000</pubDate>
      <link>https://dev.to/neilsantos/subindo-um-servidor-dns-no-hardware-de-uma-tvbox-1a30</link>
      <guid>https://dev.to/neilsantos/subindo-um-servidor-dns-no-hardware-de-uma-tvbox-1a30</guid>
      <description>&lt;p&gt;Preciso montar um servidor DNS na minha pequena e humilde infra local (qualquer dia desses posto falando sobre ela), mas não estava muito afim de gastar com um mini PC ou colocar um PC antigo para ficar fazendo barulho e gastando mais energia do que deveria. Então resolvi seguir um caminho que particularmente gosto bastante: aproveitar hardware.&lt;/p&gt;

&lt;p&gt;Já fazia um tempo que eu queria dar uma utilidade pra uma TV Box que tinha aqui e que nunca atendeu muito bem seu propósito (péssima haha). Até cogitei montar um retrogame, mas também não parecia um destino muito interessante. Então resolvi instalar algum Linux minimal e dar um destino útil.&lt;/p&gt;

&lt;p&gt;Como a maioria esmagadora das TV Boxes são chinesas, documentação e padrões não costumam existir. Eu já esperava por isso e também sabia que não seria simplesmente gravar uma imagem e sair usando. Então o primeiro passo foi desmontar e fazer o levantamento das specs visuais: processador, memória, armazenamento, controladores e demais componentes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Funduflp9qvfcrcx56ga4.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Funduflp9qvfcrcx56ga4.JPG" alt="tv-box" width="799" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A minha TV Box é uma IN X Plus com um SoC Allwinner H313 e memória eMCP (RAM + eMMC), padrão bastante comum nesse tipo de equipamento. Depois de confirmar que os modelos eram realmente os que estavam gravados na superfície dos chips, o segundo passo foi encontrar uma imagem com um bootloader compatível com essa combinação de hardware.&lt;/p&gt;

&lt;p&gt;Essa parte é mais complicada do que parece. Em equipamentos ARM, antes mesmo do Linux começar a carregar e poder controlar as coisas, o bootloader precisa identificar e inicializar corretamente a memória para que o restante do sistema consiga subir. O fluxo é mais ou menos: BootROM → SPL → inicialização da memória → bootloader completo → kernel Linux. Se alguma dessas etapas falhar, o sistema simplesmente não sobe (nem video dá).&lt;/p&gt;

&lt;p&gt;Pra me ajudar, a placa possui uma porta serial que, com um conversor serial → USB, permite acompanhar os logs de inicialização pelo PC. Isso faz toda a diferença porque me permite ver em tempo real onde o processo falhou e o que está acontecendo em background.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F531wdqzbj2hzmakvoixo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F531wdqzbj2hzmakvoixo.gif" alt="Logs via serial" width="640" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A primeira imagem que testei foi a Armbian X96 Mate. Não deu bom e a TV Box nem sinal de vídeo dava.&lt;/p&gt;

&lt;p&gt;O erro que apareceu no log foi:&lt;br&gt;
&lt;code&gt;This DRAM setup is currently not supported.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftk2hgpqk29umhlez2xyl.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftk2hgpqk29umhlez2xyl.jpeg" alt="erro logs" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Claramente é incompatibilidade com a memória, então nem perdi tempo insistindo nessa imagem.&lt;/p&gt;

&lt;p&gt;Fui procurar uma alternativa e, pra minha sorte, a segunda tentativa foi com a imagem Armbian X96Q TV Box. Como o hardware dela é muito mais próximo da minha IN X Plus, dessa vez deu certo e não precisei sofrer mais. Caso eu não encontrasse uma imagem compatível, provavelmente teria que buildar uma com as configurações corretas.&lt;/p&gt;

&lt;p&gt;A ex-TV Box conseguiu subir o Linux, mas nem tudo é tão simples. O projeto ainda está em andamento. A próxima etapa é ajustar o arquivo DTB, que mapeia os periféricos para o processador, para fazer a interface Ethernet integrada subir corretamente e não depender de um adaptador USB externo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2mhzl1s430kijml31zam.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2mhzl1s430kijml31zam.gif" alt="Linux rodando" width="474" height="850"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8vmimjdlwco6bxuyubc9.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8vmimjdlwco6bxuyubc9.jpeg" alt="linux is alive" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Se tudo der certo, em breve ela passa a fazer parte oficialmente da infra como servidor DNS.&lt;/p&gt;

</description>
      <category>ptbr</category>
    </item>
  </channel>
</rss>
