Engenharia reversa do boardview da Switch Lite com 1.917 fios
(usoldering.com)- Foi publicado um conjunto de dados de boardview que extrai a netlist de uma PCB montada da placa lógica do Nintendo Switch Lite, combinando formas de componentes e pads com imagens de referência dos dois lados
- No trabalho, também foram usados panoramas da PCB em 6.000 PPI, uma GUI para sobrepor dados de componentes e pads e uma PCB de extração própria que aciona sequencialmente vários pinos e lê seu estado
- O procedimento completo segue por captura e alinhamento dos dois lados, remoção do RF Shield, dessoldagem e classificação dos componentes, medição de continuidade do GND, agrupamento de net-fragments com base nas conexões da camada externa e fiação da PCB de extração com mesclagem dos fragments
- Os dados publicados podem ser abertos no OpenBoardView como
Switch Lite Logic Board.bvr; como renderizações complexas ainda não são suportadas no OBV, a compatibilidade com o FlexBV5 também é fornecida - É preciso cuidado ao interpretar os resultados por causa do grande volume dos originais em 6.000 PPI, da contaminação no panorama do lado superior, da possibilidade de false positives por resíduos de flux e da falta de dados de medição das características elétricas dos componentes
Dados públicos do boardview do Switch Lite
- O material publicado é o resultado da extração da netlist de uma placa lógica do Nintendo Switch Lite montada
- Em uma PCB, os componentes são soldados nos mounting pads expostos, e as camadas de cobre conectam os pads entre si para formar o circuito elétrico
- A lista completa de conexões entre pads e componentes é a netlist; ao combinar isso com as formas de componentes e pads, obtém-se o boardview
- O dado final reúne o boardview com imagens de referência dos dois lados da PCB
Como abrir no OpenBoardView
- Baixe a versão mais recente do OpenBoardView
- Os dados públicos podem ser obtidos via Torrent ou Download
- Descompacte o arquivo e leia todos os arquivos
.txtincluídos; depois, no OBV, use na seguinte ordem- Em
View, desative Board Fill e Part Fill - Em
File, abraSwitch Lite Logic Board.bvr - Clique com o botão esquerdo para verificar a net de componentes e pads, arraste para mover e use a roda do mouse para ampliar e reduzir
- Use o clique do meio ou Space para alternar o lado da placa
- Em
O que tornou possível a extração da netlist
- Foi usado um procedimento para criar imagens panorâmicas com precisão geométrica e de cor de uma PCB montada em 6.000 PPI
- É usada uma GUI point-and-click que desenha dados de forma de componentes e pads sobre o panorama, com suporte a adição e edição manual de dados
- A PCB feita sob medida consegue energizar, um por um, uma quantidade arbitrária de pinos e ler o estado de todos os pinos em cada etapa
Fluxo real do trabalho
- Várias imagens são capturadas para fazer o stitching do panorama do lado inferior
- A placa é virada, o RF Shield é dessoldado e o panorama do lado superior também é montado por stitching
- Os dois panoramas e outras imagens são comparados entre si para refinar ainda mais a precisão geométrica e de cor
- O panorama finalizado é importado para a GUI e as formas iniciais de componentes e pads são posicionadas
- Todos os componentes são dessoldados um a um e colocados em posições únicas de bin para análise posterior
- A posição no bin e o reference designator estimado são registrados na GUI
- Se houver diferença em relação às formas de pad criadas na etapa 2, elas são corrigidas
- Com todos os pads expostos e sem curto, usa-se um DMM em modo de continuidade
- Uma ponta é conectada ao ground plane
- A outra ponta é usada para probing de todos os pads da PCB
- Os hits são registrados na GUI e mesclados em uma única net
- Os pads restantes são agrupados em net-fragments com base nas conexões visíveis nas camadas externas de ambos os lados
- Se não houver conexão visível, eles são tratados como fragments independentes
- A ordem dos wires soldados dos pinos da PCB de extração até os net-fragments da PCB alvo é registrada na GUI
- Quando o extrator é executado, a energia entra do pino da PCB de extração no net-fragment pelo wire
- Ela passa por conexões ocultas dentro da PCB e vai para outros net-fragments
- Depois retorna à PCB de extração por outro wire, e esse resultado é registrado
- Os resultados registrados são usados para criar um mapeamento completo das conexões ocultas
- Com base no mapeamento do extrator, os fragments são mesclados para formar a netlist final, que é exportada como arquivo de boardview
Limitações dos dados e das ferramentas
- Os panoramas originais em 6.000 PPI têm escala de 0,5 gigapixel cada, o que causa vários problemas
- Os panoramas em 6.000 PPI são fornecidos via Torrent ou Download
- Os panoramas top-side e bottom-side podem ser vistos no ZoomHub
- Os contornos de componentes e pads podem parecer simples
- Recursos de renderização complexa ainda não são suportados no OpenBoardView
- Os dados em si estão incluídos
- O arquivo também é compatível com o fork premium e closed-source FlexBV5
Etapas ausentes no processo e limites de qualidade
- Após a remoção do RF Shield e antes da etapa de extração, o ideal seria incluir uma limpeza ultrassônica
- Remover o RF Shield sem low-melt bismuth solder exige várias técnicas
- Como não há limpadora ultrassônica, o panorama do lado superior está mais sujo que o do lado inferior
- Se os resíduos de flux antes da extração tiverem condutividade suficiente, podem surgir conexões false-positive entre net-fragments
- Entre as etapas 8 e 9, falta uma etapa de retirar os componentes dos bins para medir suas características elétricas
- O equipamento disponível é um LCR Meter básico e de baixa precisão
- Se a medição for feita agora, o resultado pode ser um conjunto de dados relativamente incompleto e de qualidade inferior
Objetivo do projeto e pedido de apoio
- O criador tem mais de 10 anos de experiência em Electronics Contract Manufacturing nos setores médico, aeroespacial, militar e industrial
- Mais da metade desse tempo foi como SMT Process Technician, com experiência de ter acesso de leitura e escrita a equipamentos caros
- Este projeto é um experimento para combinar freelancing pela internet em regime Work-From-Home com soldagem elétrica especializada
- Operar uma oficina de reparo, adaptar-se a algoritmos para receita publicitária, promover affiliate links ou revender ferramentas de baixa qualidade não combina com o trabalho de soldagem que ele busca
- Se os dados públicos forem úteis ou se você quiser ver mais, ele pede donate
- Com esse apoio, pretende adicionar mais dispositivos, reduzir o cycle time, melhorar a qualidade e fornecer mais dados
- O objetivo é tornar todo o procedimento reproduzível por meio de otimização de custos, documentação e open source
1 comentários
Comentários do Hacker News
Não tenho experiência direta, mas, pelo modelo de financiamento, parece que há receio de que, depois de publicar o trabalho, ele quase não gere receita por causa da pirataria. Talvez valha considerar arrecadar dinheiro antes via crowdfunding, o que também teria o efeito de fazer as pessoas votarem naturalmente nos projetos que mais querem
Esse modelo é parecido com o da Empress, a infame cracker de DRM Denuvo. Ela é conhecida como praticamente a única pessoa capaz de quebrar esse anticheat de jogos: https://en.m.wikipedia.org/wiki/Empress_(cracker)
Há bastante controvérsia em torno dela, mas financeiramente parece funcionar. Também vale pensar para que esse trabalho serve e qual proposta de valor ele oferece a outras pessoas. Por exemplo, como consoles Wii modificados em tamanho reduzido: um pequeno grupo de pessoas que quer obter a netlist de um circuito de que gosta para recriá-lo em tamanho menor, com mais camadas e técnicas modernas, poderia ver muito valor nisso
Todo mundo envelheceu e hoje tem empregos estáveis e bem pagos como desenvolvedor. Nem querem correr o risco de infringir a lei. O período de 1987 a 2004 foi muito divertido, mas faz 20 anos que não abro o IDA. Esse capítulo se encerrou, e acho que não sou o único
Houve uma época em que eu conseguia desassemblar Z80 de cabeça. Hoje só lembro que C9 era RET, e esqueci o resto
Há muitos projetos em que seria ótimo ter uma PCB nova para dispositivos antigos. Por exemplo, há computadores vintage vulneráveis a danos por capacitores ou baterias, e também existem algumas placas substitutas para Mac, mas claramente são trabalhos artesanais feitos com carinho
O Hi-Fi clássico também tem muitas placas de 40 anos e materiais que se degradam. Por exemplo, algumas PCBs antigas de dupla face tinham a segunda camada literalmente pintada. Uma netlist precisa também poderia ajudar a melhorar a qualidade das informações de esquemáticos que, muitas vezes, existem apenas como scans de manuais de serviço antigos e quase ilegíveis
Projeto excelente. Vi há alguns dias e a quantidade de fios era impressionante
Venho fazendo engenharia reversa de PCBs há alguns anos, principalmente em placas de 2 a 4 camadas, e isso é parte do problema que eu vinha pensando em como resolver. A melhor ideia que me ocorre é um equipamento de flying probe improvisado a partir de uma impressora 3D. Basicamente, seria 1) escanear a parte de cima e de baixo da placa, 2) criar uma lista de pontos de teste e pads e 3) inserir as coordenadas no sistema de flying probe para gerar a netlist
Outro método para lidar com placas multicamadas é o scan-lixamento-scan. Pessoalmente, considero o mais preciso, porque identifica corretamente estruturas como planos de terra e guard traces. Dá para obter a arte exata, mas a desvantagem é que a poeira gerada é bastante nociva
Também seria possível monitorar mudanças na capacitância da cabeça de prova para inferir a qualidade do contato
Fiz rapidamente um visualizador em Openseadragon para a PCB do artigo: https://ha-norge.no/images/pcb_highres/highres_pcb.html
Dá para vê-la em resolução total no celular sem baixar um JPG de 124 MB. A imagem é composta por camadas em diferentes resoluções e por um número enorme de pequenas imagens, mais de 45.000
É verdade, mas eu não gostaria de soldar 2 mil fios. Na última vez que fiz engenharia reversa de uma placa “profissionalmente”, enviei para fora para fazer um scan por CT e recebi um programa executável próprio com os dados de nuvem de pontos, extração de superfície e uma interface para tornar as características visíveis com ajuste de histograma
Eu colocaria algumas sondas automáticas no chassi de uma impressora 3D e combinaria visão/alinhamento/algoritmos tradicionais de visão computacional
Equipamentos assim já existem, mas seria bom ter uma versão open source
Parece algo que deveria ser possível, mas não sei o suficiente sobre a fonte e o detector CCD para imaginar como montar isso
A quantidade de solda necessária aqui é insana. Existem equipamentos industriais de flying probe que fazem o mesmo trabalho de forma totalmente automática, sem solda, mas a engenharia reversa típica chinesa é feita lixando a placa camada por camada: https://www.chinapcbcopy.com/pcb-reverse-engineering/
Empresas chinesas oferecem esse serviço por preços muito baixos, na faixa de algumas centenas de dólares por PCB
https://www.pcb-hero.com/blogs/lilycolumn/pcb-reverse-engineering-1
https://www.chinapcbcopy.com/pcb-clone-service/
https://www.pcbtok.com/pcb-reverse-engineering/
Teria sido muito bom se algo assim existisse. Nos últimos meses, tentei fazer engenharia reversa da interface de alimentação de uma placa-mãe de servidor Dell e do riser PCI-E de uma placa-mãe Lenovo ThinkCentre, mas fazer isso à mão era tão doloroso que acabei identificando só algumas conexões básicas e praticamente desisti
Não sei bem qual é o objetivo. Acho que isso daria um excelente projeto open source. Mesmo que a ideia seja ganhar dinheiro, vejo muito mais valor sendo criado no processo do que na ferramenta em si. Afinal, na prática, provavelmente só o próprio autor conseguiria usar a ferramenta direito
Nos comentários abaixo falaram em automatizar mais o processo, como em equipamentos de bonding; nessa área geral, muita coisa mecânica já foi feita no mundo das impressoras 3D. Acho que seria relativamente fácil adaptar para sondagem
Acho que a maior parte do valor está na tecnologia de imageamento, e isso poderia ser oferecido facilmente como um serviço por correio. Também daria para produzir os PCBs extratores em volume, vendê-los com uma pequena margem, e abrir o restante como open source
Fico me perguntando se daria para usar uma abordagem de cama de pregos para eliminar as dificuldades mecânicas de uma flying probe. Seria algo como distribuir milhares de probes em uma grade com certa resolução e conectá-los a um backend de matriz de comutação quase igual ao que já existe
Em particular, algo como [1] talvez tenha resolução suficiente. Agora a “probe” é apenas um pad sobre a PCB sensora. Isso transforma o problema mecânico em um problema de layout de PCB de densidade absurda, o que, por outro lado, parece uma área adequada
A cura térmica da camada anisotrópica é chata e pode virar uma solução descartável, mas, se você estiver vendendo placas, não é uma ideia ruim
Outro conceito “idiota, mas talvez funcione” seria usar o escaneamento da placa para gerar uma PCB personalizada com o mesmo layout de pads espelhado e montar as duas placas diretamente uma de frente para a outra. Seria um breakout em nível de placa, permitindo soldar fios com facilidade ou até integrar diretamente o hardware de extração de netlist
[1] https://www.3m.com/3M/en_US/p/d/b5005076018/
Dispositivos móveis modernos usam com frequência encapsulamentos BGA com passo de 0,5 mm. Nessa resolução, até uma placa relativamente pequena de 5×5 cm exigiria pelo menos 100×100 probes por face, ou seja, 10 mil probes. Conforme o tamanho da placa aumenta, a quantidade cresce ao quadrado
Um caminho muito mais fácil é um equipamento de flying probe com um pequeno número de probes capazes de se mover rapidamente [1]. O texto também menciona essa opção, mas a descarta por causa do custo inicial
[1] https://en.wikipedia.org/wiki/Flying_probe
A abordagem de força bruta para encontrar conexões ocultas é simples, mas excelente. Sei que boa parte do trabalho atual de engenharia reversa amadora precisa ir muito mais longe, é destrutiva e exige lixar camada por camada. O resultado não é apenas um boardview simples, mas uma reconstrução 1:1; ainda assim, conforme o número de camadas de PCB aumenta, especialmente em dispositivos de consumo de ponta, isso certamente ficará cada vez mais difícil
Realmente impressionante. A soldagem manual, em especial, chama a atenção; gosto desse gênero de “isso é impossível, você teria que fazer isso milhares de vezes” respondido com “então fiz milhares de vezes”
Dito isso, como pick-and-place homebrew está ficando cada vez mais viável hoje em dia, fico curioso se haveria uma forma prática de aproveitá-lo. Uma ponta de pick-and-place parecida com uma ferramenta de wire-wrap parece plausível. Ou isso está mais próximo dos bond wires de um chip e exige uma ordem de grandeza a mais de precisão?
Por causa do meu histórico em engenharia de processos, eu tendi a primeiro encontrar um processo bem manual, mas automatizável, em vez de partir logo para um processo altamente automatizado
Seria bom pedir uma entrevista ao Louis Rossmann, do YouTube, sobre temas como direito ao reparo
Rossmann é uma espécie de RMS do movimento pelo direito ao reparo. Ele tem muitas ideias alinhadas ao objetivo geral, mas hoje enxerga o cenário do direito ao reparo de forma bastante estreita e, fora disso, tem opiniões bem perigosas, então é péssimo como figura representativa. Por causa de comentários agressivos sobre mulheres e minorias, ele acabou virando um obstáculo real para alguns ativistas do direito ao reparo, e também não reconhece até que áreas o escopo do problema se estende. Por exemplo, ele já disse algumas vezes em stream que lava-louças são “coisas simples para as quais ninguém precisa de boardview”
De modo parecido com RMS, como sugerem as falas mencionadas acima, ele também já explicou em livestream, bastante bêbado, crenças que não combinam muito com padrões usuais de decência humana básica