1 điểm bởi GN⁺ 2024-02-26 | 1 bình luận | Chia sẻ qua WhatsApp
  • Đã công bố dữ liệu boardview được tạo bằng cách trích xuất netlist từ PCB ở trạng thái đã lắp ráp của bo mạch logic Nintendo Switch Lite, rồi kết hợp với hình dạng linh kiện, pad và ảnh tham chiếu hai mặt
  • Trong quá trình này có sử dụng ảnh toàn cảnh PCB 6.000 PPI, một GUI để chồng dữ liệu linh kiện·pad, cùng PCB trích xuất tự chế có thể lần lượt kích nhiều chân và đọc trạng thái
  • Toàn bộ quy trình bao gồm chụp và căn chỉnh hai mặt, tháo RF Shield, gỡ và phân loại linh kiện, đo tính liên tục GND, nhóm các net-fragment dựa trên kết nối ở lớp ngoài, rồi đi đến đi dây PCB trích xuất và hợp nhất fragment
  • Dữ liệu công bố có thể mở trong OpenBoardView bằng Switch Lite Logic Board.bvr; do kết xuất phức tạp hiện chưa được OBV hỗ trợ nên cũng cung cấp khả năng tương thích với FlexBV5
  • Cần thận trọng khi diễn giải kết quả do dung lượng rất lớn của bản gốc 6.000 PPI, ảnh toàn cảnh mặt trên bị bẩn, khả năng có false-positive do cặn flux, và thiếu dữ liệu đo đặc tính điện của linh kiện

Dữ liệu boardview Switch Lite đã được công bố

  • Bản công bố là kết quả trích xuất netlist từ bo mạch logic Nintendo Switch Lite đã lắp ráp
  • Trên PCB, linh kiện được hàn lên các mounting pad lộ ra, còn các lớp đồng nối giữa các pad để tạo thành mạch điện
  • Danh sách đầy đủ mọi kết nối giữa pad và linh kiện là netlist; khi kết hợp thêm hình dạng linh kiện·pad thì thành boardview
  • Dữ liệu cuối cùng được đóng gói dưới dạng boardview kèm ảnh tham chiếu hai mặt của PCB

Cách mở trong OpenBoardView

  • Tải OpenBoardView mới nhất
  • Dữ liệu công bố có thể tải qua Torrent hoặc Download
  • Giải nén, đọc toàn bộ các tệp .txt đi kèm, rồi dùng trong OBV theo thứ tự sau
    • Trong View, tắt Board FillPart Fill
    • Trong File, mở Switch Lite Logic Board.bvr
    • Nhấp chuột trái để kiểm tra net của linh kiện·pad, kéo để di chuyển, và dùng bánh xe chuột để phóng to·thu nhỏ
    • Nhấp chuột giữa hoặc nhấn Space để chuyển mặt bo mạch

Những yếu tố giúp có thể trích xuất netlist

  • Đã dùng một quy trình tạo ảnh toàn cảnh có độ chính xác hình học và màu sắc của PCB đã lắp ráp ở mức 6.000 PPI
  • Một GUI point-and-click được dùng để vẽ dữ liệu hình dạng linh kiện·pad lên ảnh toàn cảnh, đồng thời hỗ trợ thêm và sửa dữ liệu tùy ý
  • PCB tự chế có thể cấp nguồn lần lượt cho từng chân với số lượng chân tùy ý, và ở mỗi bước đều có thể đọc trạng thái của tất cả các chân

Quy trình công việc thực tế

  • Chụp nhiều ảnh rồi stitching thành ảnh toàn cảnh mặt dưới
  • Lật bo mạch, desolder RF Shield, rồi cũng stitching ảnh toàn cảnh mặt trên
  • Đối chiếu chéo hai ảnh toàn cảnh và các ảnh khác để tinh chỉnh thêm độ chính xác hình học và màu sắc
  • Nhập ảnh toàn cảnh đã hoàn thiện vào GUI và đặt dữ liệu hình dạng linh kiện·pad ban đầu
  • Desolder toàn bộ linh kiện từng cái một, rồi cho vào các vị trí bin riêng để phân tích về sau
    • Ghi lại vị trí bin và reference designator ước tính trong GUI
    • Nếu có khác biệt so với hình dạng pad tạo ở bước 2 thì chỉnh sửa
  • Khi toàn bộ pad đã lộ ra và không còn bị short, dùng DMM ở chế độ đo liên tục
    • Nối một đầu dò vào ground plane
    • Dùng đầu dò còn lại probing toàn bộ pad trên PCB
    • Ghi lại các hit vào GUI và gộp chúng thành một net
  • Các pad còn lại được nhóm thành net-fragment dựa trên các kết nối nhìn thấy được ở lớp ngoài của cả hai mặt
    • Nếu không thấy kết nối nào thì xem là fragment độc lập
  • Ghi lại trong GUI thứ tự các wire được hàn từ chân trên PCB trích xuất đến net-fragment của PCB đích
  • Khi chạy bộ trích xuất, nguồn sẽ đi từ chân trên PCB trích xuất qua wire vào net-fragment
    • Nó đi qua các kết nối ẩn bên trong PCB sang net-fragment khác
    • Sau đó quay lại PCB trích xuất qua wire, và kết quả này được ghi lại
    • Kết quả ghi được được dùng để tạo bản đồ đầy đủ của các kết nối ẩn
  • Dựa trên bản đồ của bộ trích xuất, hợp nhất các fragment để tạo netlist hoàn chỉnh rồi xuất ra tệp boardview

Giới hạn của dữ liệu và công cụ

  • Ảnh toàn cảnh gốc 6.000 PPI ban đầu có quy mô 0,5 gigapixel mỗi ảnh nên phát sinh nhiều vấn đề
  • Ảnh toàn cảnh 6.000 PPI được cung cấp qua Torrent hoặc Download
  • Có thể xem ảnh toàn cảnh top-sidebottom-side trên ZoomHub
  • Outline của linh kiện·pad có thể trông đơn giản

Các phần còn thiếu trong quy trình và giới hạn chất lượng

  • Sau khi tháo RF Shield và trước bước trích xuất, lý tưởng là nên có bước làm sạch siêu âm
  • Nếu tháo RF Shield mà không dùng low-melt bismuth solder thì cần khá nhiều mẹo
  • Do không có máy làm sạch siêu âm nên ảnh toàn cảnh mặt trên bẩn hơn mặt dưới
  • Nếu cặn flux trước khi trích xuất đủ dẫn điện, có thể phát sinh kết nối false-positive giữa các net-fragment
  • Giữa bước 8 và 9 còn thiếu bước lấy linh kiện đã cho vào bin ra để đo đặc tính điện
    • Thiết bị hiện có là một LCR Meter cơ bản với độ chính xác thấp
    • Nếu đo ngay bây giờ thì dữ liệu thu được có thể không hoàn chỉnh và chất lượng tương đối thấp

Mục tiêu của dự án và lời kêu gọi hỗ trợ

  • Người thực hiện có hơn 10 năm làm việc trong lĩnh vực Electronics Contract Manufacturing cho y tế, hàng không vũ trụ, quân sự và công nghiệp
  • Hơn một nửa thời gian đó là ở vai trò SMT Process Technician, với kinh nghiệm có quyền truy cập đọc·ghi vào các thiết bị đắt tiền
  • Dự án này là một thử nghiệm kết hợp làm freelancer internet tại nhà với kỹ năng hàn điện tử thành thạo
  • Việc vận hành cửa hàng sửa chữa, đối phó thuật toán để kiếm doanh thu quảng cáo, quảng bá affiliate link, hay bán lại công cụ chất lượng thấp không phù hợp với kiểu công việc hàn mà tác giả theo đuổi
  • Nếu thấy dữ liệu công bố hữu ích hoặc muốn xem thêm, tác giả đề nghị donate
    • Với hỗ trợ đó, tác giả muốn bổ sung thêm nhiều thiết bị, rút ngắn cycle time, cải thiện chất lượng và cung cấp thêm nhiều dữ liệu
    • Mục tiêu là tối ưu chi phí, tài liệu hóa và open-source hóa toàn bộ quy trình để có thể tái hiện được

1 bình luận

 
GN⁺ 2024-02-26
Các ý kiến trên Hacker News
  • Tôi không có trải nghiệm trực tiếp, nhưng trong mô hình tài chính, có vẻ họ lo rằng sau khi công bố thành quả thì gần như không kiếm được doanh thu vì sao chép lậu. Có thể cân nhắc cách huy động tiền trước bằng crowdfunding; cách này cũng có tác dụng để mọi người tự nhiên bỏ phiếu cho dự án họ mong muốn nhất.
    Mô hình này khá giống Empress, cracker Denuvo DRM khét tiếng. Người này được biết đến như gần như là người duy nhất có thể phá anti-cheat của trò chơi này: https://en.m.wikipedia.org/wiki/Empress_(cracker)
    Dù có khá nhiều tranh cãi xung quanh, về mặt tài chính thì có vẻ vẫn vận hành được. Cũng đáng nghĩ xem công việc này hữu ích ở đâu và mang lại đề xuất giá trị gì cho người khác. Ví dụ, như các máy Wii console được mod thu nhỏ, một nhóm nhỏ những người muốn lấy netlist của mạch họ yêu thích rồi tái tạo nó với kích thước nhỏ hơn, nhiều layer hơn và kỹ thuật hiện đại hơn có thể thấy nó rất có giá trị.

    • Có khả năng khá nhiều người có thể phá Denuvo chỉ đơn giản là không muốn làm.
      Mọi người đều đã có tuổi, đang làm công việc lập trình viên ổn định và lương tốt. Họ thậm chí không muốn chấp nhận rủi ro vi phạm pháp luật. Giai đoạn 1987–2004 thật sự rất vui, nhưng tôi đã không mở IDA suốt 20 năm rồi. Chương đó đã khép lại, và có lẽ không chỉ mình tôi như vậy.
      Có thời tôi có thể dịch ngược Z80 ngay trong đầu. Giờ tôi chỉ còn nhớ C9 là RET, còn lại thì quên hết.
    • Crowdfunding kiểu săn tiền thưởng có lẽ là lý tưởng. Có thể phác nhanh một phần mềm diễn đàn trong đó mỗi thread là một chiến dịch crowdfunding khác nhau.
    • Tôi đồng ý với quy trình crowdfunding nhắm vào một mạch cụ thể.
      Có nhiều dự án sẽ rất hay nếu có PCB mới cho thiết bị cũ. Ví dụ có các máy tính vintage dễ bị hỏng do tụ điện hoặc pin, và cũng có vài bo thay thế cho Mac, nhưng rõ ràng đó là những sản phẩm thủ công đầy tâm huyết.
      Hi-Fi cổ điển cũng có nhiều bo 40 năm tuổi và vật liệu đang xuống cấp. Chẳng hạn, một số PCB hai mặt đời đầu có lớp thứ hai đúng nghĩa là được sơn lên. Một netlist chính xác cũng có thể giúp nâng chất lượng thông tin sơ đồ mạch, vốn thường chỉ có trong các bản scan service manual cũ gần như khó đọc.
  • Một dự án tuyệt vời. Tôi đã xem cách đây vài ngày và số lượng dây thật ấn tượng.
    Tôi đã reverse engineering PCB trong vài năm, chủ yếu xử lý bo 2–4 layer, và đây là một phần của vấn đề mà tôi vẫn đang nghĩ cách giải. Phương án tốt nhất tôi nghĩ ra là một thiết bị flying probe chế từ máy in 3D. Về cơ bản là 1) scan mặt trên và dưới của bo, 2) tạo danh sách test point và pad, rồi 3) đưa tọa độ vào hệ thống flying probe để tạo netlist.
    Một cách khác để xử lý bo nhiều layer là scan–mài–scan. Cá nhân tôi thấy đây là cách chính xác nhất, vì nó nắm bắt được chính xác các cấu trúc như thiết kế ground plane và guard trace. Có thể thu được artwork chính xác, nhưng nhược điểm là bụi phát sinh khá độc hại.

    • Nếu có dữ liệu Image→CAD, có lẽ có thể dựng tạm một thứ giống thiết bị die bonding để tự động hóa quy trình. Flying probe sẽ cần hai đầu dò ở hai mặt để bao phủ toàn bộ tính liên tục, và cũng cần thuật toán chọc nhiều lần với các offset rất nhỏ để xử lý tiếp xúc lệch nhẹ hoặc tiếp xúc kém.
      Cũng có thể theo dõi thay đổi điện dung của đầu dò để suy ra chất lượng tiếp xúc.
    • Có thể làm gì với dữ liệu PCB đã reverse engineering? Có phải là có một bo đang hoạt động, reverse engineering nó, rồi cuối cùng có thể tự sản xuất nó không?
    • Vì sao lại reverse engineering PCB? Tôi cũng tò mò lúc bắt đầu đã tham khảo những tài liệu nào.
    • Có công cụ nào tự động tạo netlist từ các layer PCB đã scan không?
  • Tôi đã nhanh chóng đưa PCB trong bài viết vào trình xem Openseadragon: https://ha-norge.no/images/pcb_highres/highres_pcb.html
    Có thể xem ở độ phân giải đầy đủ trên điện thoại mà không cần tải file JPG 124MB. Ảnh gồm các layer ở nhiều độ phân giải khác nhau và rất nhiều ảnh nhỏ, hơn 45.000 ảnh.

    • Thật sự cảm ơn vì đã tiết kiệm băng thông. Tôi muốn dùng cách này cho các bản scan bo về sau, nhưng không có hạ tầng hosting. Tôi biết OSD hỗ trợ overlay, và sẽ rất tuyệt nếu có thể cung cấp các tính năng OpenBoardView dưới dạng webapp.
  • Nói vậy đúng, nhưng tôi không muốn hàn 2.000 sợi dây. Lần cuối tôi reverse engineering một bo một cách “chuyên nghiệp”, tôi gửi ra ngoài để CT scan, rồi nhận về một chương trình tự chạy kèm dữ liệu point cloud, surface extraction và giao diện cho phép chỉnh histogram để làm hiện các đặc trưng.
    Nếu là tôi, tôi sẽ gắn vài đầu dò tự động lên khung máy in 3D, rồi kết hợp vision/căn chỉnh/các thuật toán thị giác máy tính truyền thống.
    Những thứ như vậy đã tồn tại, nhưng tôi ước có một phiên bản mã nguồn mở.

    • Liệu có thể làm thiết bị X-quang mã nguồn mở có khả năng CT scan kiểu này không?
      Trông thì có vẻ phải khả thi, nhưng tôi không biết đủ về nguồn phát và detector CCD nên không hình dung được phải lắp ráp thế nào.
  • Khối lượng công việc hàn cần ở đây đúng là điên rồ. Có các thiết bị flying probe công nghiệp làm cùng việc này hoàn toàn tự động mà không cần hàn, nhưng kiểu reverse engineering điển hình của Trung Quốc là mài bo từng lớp một: https://www.chinapcbcopy.com/pcb-reverse-engineering/
    Các công ty Trung Quốc cung cấp dịch vụ này với giá rất thấp, cỡ vài trăm đô la cho một 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/

    • “Reverse engineering PCB là một công nghệ nghiên cứu ngược sử dụng một loạt kỹ thuật nghiên cứu ngược” cơ đấy, trời ạ.
  • Nếu có thứ như thế này thì chắc hẳn đã rất tuyệt. Trong vài tháng gần đây, tôi đã thử reverse engineering giao diện cấp nguồn của mainboard máy chủ Dell và riser PCI-E của mainboard Lenovo ThinkCentre, nhưng làm thủ công quá đau khổ nên chỉ xác định được vài kết nối cơ bản rồi gần như bỏ cuộc
    Tôi không rõ mục tiêu là gì. Cái này có vẻ sẽ là một dự án mã nguồn mở tuyệt vời. Ngay cả nếu muốn kiếm tiền, tôi nghĩ giá trị tạo ra trong quy trình sẽ lớn hơn rất nhiều so với bản thân công cụ. Dù sao thì công cụ gần như chỉ có chính tác giả mới dùng được cho đúng
    Ở bình luận bên dưới có nói đến việc tự động hóa quy trình hơn nữa, giống như thiết bị bonding, nhưng trong mảng chung này thì phía máy in 3D đã làm rất nhiều phần cơ khí rồi. Có vẻ có thể điều chỉnh tương đối dễ cho việc probing

    • Mục tiêu ban đầu là đi đến cùng để xem thực sự triển khai một ý tưởng mà tôi nghĩ là khả thi như thế nào. Mục tiêu hiện tại gần hơn với việc cải tiến và lặp lại nó, đồng thời xem mức độ quan tâm của thị trường đối với những thứ như vậy thực tế đến đâu
      Tôi nghĩ phần lớn giá trị nằm ở công nghệ imaging, và có thể cung cấp dễ dàng dưới dạng dịch vụ nhận qua bưu điện. Cũng có thể sản xuất hàng loạt PCB extractor, bán với một chút biên lợi nhuận, còn phần còn lại thì công bố mã nguồn mở
  • Tôi thắc mắc liệu có thể dùng kiểu bed-of-nails để loại bỏ khó khăn cơ khí của flying probe không. Tức là đặt hàng nghìn probe trên một lưới có độ phân giải nhất định, rồi nối chúng với backend ma trận chuyển mạch gần giống như thứ đã có
    Đặc biệt, những thứ như [1] có thể có đủ độ phân giải. Khi đó “probe” chỉ là các pad trên PCB cảm biến. Như vậy vấn đề cơ khí sẽ biến thành một bài toán layout PCB mật độ cực cao, nghe lại có vẻ đúng sở trường hơn
    Việc nhiệt đóng rắn lớp dị hướng thì phiền và có thể là giải pháp dùng một lần, nhưng nếu bạn là bên bán board thì cũng không tệ
    Một khái niệm “ngớ ngẩn nhưng có thể hiệu quả” khác là dùng bản scan board để in một PCB tùy chỉnh có cùng layout pad theo dạng ảnh gương, rồi gắn trực tiếp hai board đối mặt nhau. Nó sẽ là breakout ở cấp độ board, giúp hàn dây dễ hơn hoặc thậm chí tích hợp trực tiếp phần cứng trích xuất netlist
    [1] https://www.3m.com/3M/en_US/p/d/b5005076018/

    • Cách này không có khả năng mở rộng
      Thiết bị di động hiện đại thường dùng package BGA bước 0,5mm. Ở độ phân giải này, ngay cả một board 5×5cm tương đối nhỏ cũng cần ít nhất 100×100, tức 10.000 probe cho mỗi mặt. Khi kích thước board tăng lên, số lượng tăng theo bình phương
      Cách dễ hơn nhiều là thiết bị flying probe với một số ít probe có thể di chuyển nhanh [1]. Bài viết cũng nhắc đến lựa chọn này nhưng loại trừ vì chi phí ban đầu
      [1] https://en.wikipedia.org/wiki/Flying_probe
    • Tôi thích ý tưởng cuối, nhưng kết nối các board với nhau bằng cách nào? Bi hàn? Hay chỉ ép áp lực?
    • Khi đọc bài tôi cũng nghĩ như vậy. Có vẻ có thể tự động hóa việc probing khá nhiều
  • Cách brute force để tìm các kết nối ẩn tuy đơn giản nhưng xuất sắc. Tôi biết rằng khá nhiều công việc reverse engineering ở mức sở thích hiện nay phải đi xa hơn nhiều, mang tính phá hủy và cần mài từng lớp. Kết quả không chỉ là boardview đơn giản mà là tái dựng 1:1, nhưng rõ ràng càng nhiều lớp PCB thì việc này sẽ ngày càng khó hơn, nhất là trên các thiết bị tiêu dùng tiên tiến

  • Thật sự quá ấn tượng. Đặc biệt là phần hàn tay; tôi thích kiểu “việc này không thể được, phải làm hàng nghìn lần cơ mà” rồi đáp lại bằng “vậy nên tôi đã làm hàng nghìn lần”
    Tuy nhiên, dạo này pick-and-place tự chế ngày càng khả thi, nên tôi tự hỏi liệu có cách thực dụng nào để tận dụng nó không. Một đầu pick-and-place tương tự dụng cụ wire-wrap nghe cũng có vẻ hợp lý. Hay công việc này gần với bond wire của chip hơn, cần độ chính xác cao hơn hẳn một bậc?

    • Mục tiêu nhỏ nhất trên PCB này có đường kính khoảng 0,2mm. Từ góc nhìn robot chính xác thì mức này hoàn toàn có thể quản lý được. Có thể tạo ra một thứ giống die bonder cơ bản: một mỏ hàn robot hoặc hệ thống hàn laser gắn bộ cấp và cắt dây, để hàn dây vào đúng pad
      Do nền tảng của tôi là kỹ thuật quy trình, tôi nghiêng về việc trước tiên tìm ra một quy trình rất thủ công nhưng có thể tự động hóa, thay vì bắt đầu ngay bằng một quy trình tự động hóa cao
  • Có lẽ nên đề nghị Louis Rossmann trên YouTube phỏng vấn về các chủ đề như quyền được sửa chữa

    • Tôi không phải tác giả bài gốc, nhưng càng ít tiếp xúc với Louis “tôi phải được quyền đánh con mình” Rossmann thì đời tôi càng tốt hơn
      Rossmann giống như RMS của phong trào quyền được sửa chữa. Ông ấy có nhiều suy nghĩ phù hợp với mục tiêu chung, nhưng hiện nay nhìn bối cảnh quyền được sửa chữa khá hẹp, và bên ngoài lĩnh vực đó còn có những quan điểm khá nguy hiểm, nên là nhân vật đại diện thì tệ nhất. Những phát ngôn thô bạo về phụ nữ và các nhóm thiểu số đã thực sự trở thành vật cản đối với một số nhà hoạt động quyền được sửa chữa, và ông ấy cũng không thừa nhận phạm vi vấn đề mở rộng sang những lĩnh vực nào. Ví dụ, trong stream ông ấy đã vài lần nói rằng máy rửa bát là “thứ đơn giản chẳng ai cần boardview”
      Tương tự RMS, như phát ngôn được ám chỉ ở trên, ông ấy cũng từng lên livestream trong tình trạng say xỉn nặng và giải thích những niềm tin không phù hợp lắm với các chuẩn mực thông thường về phẩm giá con người cơ bản