1 pontos por GN⁺ 2024-02-26 | 1 comentários | Compartilhar no WhatsApp
  • 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 .txt incluídos; depois, no OBV, use na seguinte ordem
    • Em View, desative Board Fill e Part Fill
    • Em File, abra Switch 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

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

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

 
GN⁺ 2024-02-26
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

    • É bem possível que muitas das pessoas capazes de quebrar Denuvo simplesmente não queiram fazer isso
      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
    • Um crowdfunding em estilo caça-recompensas provavelmente seria o ideal. Acho que daria para montar, de qualquer jeito, um software de fórum em que cada thread fosse uma campanha de crowdfunding diferente
    • Concordo com o processo de fazer crowdfunding para um circuito específico
      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

    • Com dados Image→CAD, acho que daria para improvisar algo parecido com um equipamento de die bonding para automatizar o processo. Para cobrir toda a continuidade, um flying probe precisaria de duas cabeças, uma em cada lado, e também de um algoritmo que fizesse várias picadas com pequenos deslocamentos para lidar com contatos ligeiramente desalinhados ou ruins
      Também seria possível monitorar mudanças na capacitância da cabeça de prova para inferir a qualidade do contato
    • O que dá para fazer com dados de PCB obtidos por engenharia reversa? Você tem uma placa funcional, faz a engenharia reversa e, no fim, consegue fabricá-la por conta própria?
    • Por que fazer engenharia reversa de uma PCB? Também fiquei curioso sobre quais materiais você consultou no começo
    • Existe alguma ferramenta para gerar automaticamente uma netlist a partir de camadas de PCB escaneadas?
  • 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

    • Muito obrigado pela economia de banda. Quero usar esse método para scans de placas no futuro, mas não tenho infraestrutura de hospedagem. Sei que o OSD suporta overlays, e seria ótimo se fosse possível oferecer os recursos do OpenBoardView como uma aplicação web
  • É 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

    • Será que é possível criar um equipamento de raios X open source capaz de fazer esse tipo de scan por CT?
      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/

    • “A engenharia reversa de PCB é uma tecnologia de pesquisa reversa que usa uma série de técnicas de pesquisa reversa”, meu Deus
  • 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

    • O objetivo original era entender até o fim como executar de fato uma ideia que eu achava possível. O objetivo atual é mais melhorar e iterar isso, enquanto vejo qual é o nível real de interesse de mercado por esse tipo de coisa
      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/

    • Essa abordagem não escala
      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
    • Gosto da última ideia, mas como as placas seriam conectadas entre si? Esferas de solda? Só pressão?
    • Pensei a mesma coisa enquanto lia. Parece que daria para automatizar bastante a sondagem
  • 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?

    • O menor alvo nessa PCB tem cerca de 0,2 mm de diâmetro. Do ponto de vista de robótica de precisão, é algo bem administrável. Com um ferro de solda robótico ou um sistema de solda a laser acoplado a um alimentador e cortador de fio, daria para criar algo como um die bonder básico que solda fios nos pads corretos
      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

    • Não sou o autor do post original, mas minha vida melhorou quanto menos contato tive com Louis “eu deveria poder bater no meu filho” Rossmann
      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