Dùng AI để viết driver cho phần cứng không có tài liệu

Phần mềm15 tháng 10, 2026·7 phút đọc

Một lập trình viên đã dùng AI để tự viết driver Linux cho máy scan phim và camera MIPI trên laptop ThinkPad, mở ra hướng tiếp cận mới cho bài toán phần cứng không có tài liệu. Câu chuyện cho thấy AI có thể đảm nhận phần việc nhàm chán trong khi con người vẫn giữ vai trò quyết định.

Dùng AI để viết driver cho phần cứng không có tài liệu

Dùng AI để viết driver cho phần cứng không có tài liệu

Một lập trình viên đã dùng AI để tự viết driver Linux cho chiếc máy scan phim cũ và camera MIPI trên laptop ThinkPad của mình. Câu chuyện này cho thấy AI có thể đảm nhận phần việc nhàm chán trong quá trình đảo ngược kỹ thuật phần cứng, trong khi con người vẫn giữ vai trò quyết định.

Viết driver cho phần cứng không có tài liệu từ trước đến nay vẫn là công việc đòi hỏi sự kiên nhẫn. Bạn phải ghi lại lưu lượng trên bus, nhìn chằm chằm vào các hex dump, rồi đưa ra giả thuyết về ý nghĩa của từng thanh ghi hay lệnh truyền. Sau đó thử nghiệm từng cái một, thường mất nhiều tuần. Về mặt khái niệm thì không khó, nhưng đòi hỏi rất nhiều kiên nhẫn và kỹ năng.

Từ chiếc hộp phim cũ đến driver SANE

So sánh driverSo sánh driver

Sau khi mẹ qua đời, tác giả có một chiếc hộp lớn đựng đầy phim âm bản cũ chứa ảnh từ những chuyến du lịch gia đình thuở nhỏ. Ông quyết định mua một máy scan phim âm bản và chọn Plustek 8200i vì thấy nó được hỗ trợ trên Linux. Nhưng rồi phát hiện ra chipset trong máy scan đã thay đổi sang loại không còn được Linux hỗ trợ.

Trước đó, ông từng thành công khi dùng Claude để tạo công cụ cấu hình Linux cho một số thiết bị của mình, như ứng dụng điều khiển camera Dell. Ông nghĩ rằng có thể Claude sẽ giúp mình viết được driver SANE hoạt động. Nhưng dự án bị bế tắc rất lâu và ông gần như đã bỏ cuộc trong vài tháng.

Bước ngoặt đến khi ông đọc một bài đăng trên X của Tom Crider (còn gọi là Glorious Eggroll) về việc dùng công cụ AI để sửa driver chuột. Tom mô tả cách ông để cho tác tử AI kiểm soát hoàn toàn một phiên bản Windows nhằm thu thập dữ liệu cần thiết để sửa driver.

Bước đột phá

Tác giả dán bài đăng đó vào Claude và yêu cầu nó giúp thiết lập một máy ảo Windows để làm điều tương tự cho máy scan của mình. Sự kết hợp giữa khả năng chạy quét trên Windows và ghi lại dữ liệu USB trong quá trình đó đã mang lại kết quả bất ngờ. Chỉ trong vài giờ, ông đã có lần quét đầu tiên hoạt động được trên Linux, dù còn một số vấn đề về chất lượng, nhưng hình ảnh đã nhận diện được rõ ràng.

Vài ngày sau, ông đã có một driver gần như hoàn hảo, bao gồm cả hỗ trợ quét hồng ngoại. Nhưng đúng lúc đó, ông phát hiện ra rằng trong khoảng thời gian mình bỏ cuộc, ai đó đã commit code vào SANE để hỗ trợ chiếc máy scan này rồi. Ông cũng dùng Claude để viết một ứng dụng quét âm bản, đặt tên là Negative Vibes.

Với thành công của dự án máy scan, ông tự hỏi liệu có thể dùng cách này để sửa những vấn đề cuối cùng với camera MIPI trên laptop không. Ông yêu cầu Claude tái sử dụng harness đã tạo và thử sửa camera MIPI bằng cách cập nhật driver kernel và libcamera. Bắt đầu từ buổi sáng, đến cuối ngày ông đã có các bản vá cho cả kernel lẫn libcamera.

hw-harness: bộ công cụ chung cho cộng đồng

Nhận thấy điều này có thể hữu ích cho nhiều người, tác giả đã yêu cầu Claude làm cho harness trở nên tổng quát hơn và tài liệu hóa nó, giúp bất kỳ ai muốn thử trên phần cứng của mình cũng dễ dàng hơn. Dự án có tên hw-harness.

Cách tiếp cận của hw-harness gồm bốn bước:

  • Ghi lại phiên tham chiếu. Chạy driver Windows của nhà sản xuất trong máy ảo KVM, với thiết bị thật được truyền vào guest.
  • Thu thập từ bên ngoài máy ảo. Ghi lại lưu lượng trên host Linux bằng usbmon. Nó nằm dưới lớp passthrough nên guest không thấy được.
  • Lặp lại thao tác trên Linux với driver của bạn và ghi lại theo cùng cách.
  • So sánh hai bản ghi. Cả hai đều đến từ cùng một công cụ đo nên so sánh trực tiếp được. Sự khác biệt chính là danh sách lỗi driver của bạn.

Với những thiết bị không có bus để tap như camera MIPI nội bộ, harness dùng cách kiểm tra phía Windows thay thế, bao gồm file INF, dữ liệu registry, bảng ACPI và thuộc tính thiết bị. Cách làm này không sao chép code mà chỉ quan sát hành vi phần cứng và trích xuất dữ liệu cấu hình từ driver Windows, nên mọi hằng số trong driver mới đều truy nguyên được về một thứ đã ghi lại.

Ba dự án thực tế

Dự án 1: Backend SANE cho Plustek OpticFilm 8200i. Chiếc máy scan mới dùng bộ điều khiển Genesys GL128 (USB 07b3:1825) và không có hỗ trợ Linux. Backend hỗ trợ chế độ màu, xám, hồng ngoại và màu kết hợp hồng ngoại; độ phân giải từ 300 đến 7200 dpi với 8 hoặc 16 bit mỗi kênh; loại bỏ bụi và vết xước từ kênh hồng ngoại. Backend nhanh hơn driver chính thức ở độ phân giải đầy đủ (34,6 giây so với 54,4 giây) và hỗ trợ loại bỏ bụi hồng ngoại.

Dự án 2: Negative Vibes. Đây là ứng dụng GNOME viết bằng Rust để quét phim màu, đen trắng và slide trên bất kỳ máy scan SANE nào hỗ trợ phim. Bản quét được giữ nguyên đúng như máy scan xuất ra: 16-bit, tuyến tính, kèm mặt phẳng hồng ngoại. Mọi thứ khác là một chồng thiết lập không phá hủy ở trên, nên bạn có thể thay đổi diện mạo và xuất lại. Ứng dụng hỗ trợ đảo âm bản trong không gian mật độ với hiệu chỉnh nền phim và nhiễu màu, thiết lập cho cả cuộn phim với ghi đè từng khung, hiệu chỉnh IT8 qua ArgyllCMS, và xuất ra TIFF, JPEG, PNG, DNG kèm profile ICC và metadata.

Dự án 3: Sửa camera MIPI trên ThinkPad. Camera trong Lenovo ThinkPad X1 Carbon Gen 14 dùng cảm biến Sony IMX471 sau Intel IPU7. Trên Linux, nó cho ra ảnh tối với hiện tượng tối góc nặng và ám vàng-xanh mạnh. Các bản vá đã sửa được lỗi chọn vùng crop trả về lỗi trước khi lưu hình chữ nhật crop, lỗi khai báo thanh ghi test-pattern sai độ rộng, và giới hạn gain tương tự quá thấp làm mất khoảng 1,8 stop độ nhạy. Trong bài kiểm tra ánh sáng yếu có kiểm soát, độ sáng khung hình tăng từ 31,1 lên 90,9.

Bài học rút ra

Bản ghi tham chiếu là bước tiến lớn. Việc để AI so sánh một bản ghi tốt với một bản ghi lỗi biến câu hỏi mơ hồ "nó không chạy" thành một danh sách khác biệt cụ thể.

AI rất giỏi ở những việc nhàm chán. Nó có thể đọc hàng nghìn dòng bản ghi USB, nhận ra một chuỗi lặp lại với một byte thay đổi, rồi đề xuất ý nghĩa của byte đó. Nó viết được bài kiểm tra để xác nhận và không bao giờ thấy chán. Con người vẫn quyết định xây dựng cái gì và kiểm tra rằng nó chạy trên phần cứng thật.

Phần cứng thật là thẩm phán duy nhất. Mọi tuyên bố đều được kiểm chứng trên máy scan hoặc laptop thực tế. Nếu bạn có phần cứng không có driver Linux, hãy thử hw-harness.

Tác giả thừa nhận mình không có kiến thức chuyên sâu về loại công việc này, nhưng AI đã giúp ông tiến được những bước quan trọng. Với cộng đồng người dùng Linux tại Việt Nam, những công cụ mã nguồn mở như thế này có thể là gợi ý đáng thử khi gặp thiết bị ngoại vi không được hỗ trợ chính thức trên hệ điều hành mã nguồn mở.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗