Claude quan sát driver Windows để sửa máy quét Linux

Claude giúp Christian Schaller sửa máy quét Linux bằng cách quan sát trình điều khiển Windows, so sánh dữ liệu phần cứng và kiểm thử mã trên thiết bị thật.

Máy quét phim được kết nối với máy tính chạy Linux
Claude hỗ trợ phân tích cách phần cứng giao tiếp với Windows.

Claude đã giúp Christian Schaller sửa máy quét Plustek OpticFilm 8200i trên Linux bằng cách quan sát trình điều khiển Windows, ghi lại lưu lượng USB và so sánh dữ liệu đó với đầu ra của trình điều khiển Linux. Phương pháp này tạo được bản quét đầu tiên trong vài giờ và bổ sung tính năng quét hồng ngoại sau vài ngày, nhưng vẫn cần Schaller kiểm thử từng thay đổi trên thiết bị thật.

Schaller, giám đốc kỹ thuật tại Red Hat và là người đóng góp lâu năm cho GNOME cùng Fedora, muốn số hóa một hộp phim âm bản cũ của gia đình. Chiếc Plustek OpticFilm 8200i ông mua không thể hoạt động với Linux dù sản phẩm được liệt kê là có hỗ trợ nền tảng này.

Theo bài viết gốc của The New Stack, nhà sản xuất đã thay bộ vi mạch bên trong máy quét bằng loại mà chưa trình điều khiển Linux nào nhận diện được. Schaller từng yêu cầu Claude Code viết trình điều khiển mới nhưng không đạt kết quả, nên ông tạm gác dự án trong vài tháng.

Khi quay lại, Schaller đổi cách làm. Thay vì chỉ yêu cầu Claude tạo mã, ông cho hệ thống quan sát trình điều khiển Windows đang hoạt động. Cách tiếp cận này cung cấp dữ liệu thực để Claude xác định điểm khác biệt giữa hoạt động đúng trên Windows và lỗi trên Linux.

Nội dung Claude quan sát từ trình điều khiển đang hoạt động

Claude sửa trình điều khiển bằng cách vận hành phần mềm Windows của nhà sản xuất, ghi lại dữ liệu USB và so sánh dữ liệu đó với những gì trình điều khiển Linux gửi đến máy quét. Schaller vẫn phải kiểm tra các thay đổi trên phần cứng vì mã có vẻ hợp lý chưa chắc điều khiển thiết bị đúng cách.

Ý tưởng của Schaller bắt nguồn từ Tom Crider, người thường được biết đến với tên Glorious Eggroll. Crider đã dùng một tác tử trí tuệ nhân tạo để sửa trình điều khiển chuột bằng cách cho nó truy cập máy Windows. Schaller đưa nội dung đó cho Claude và yêu cầu xây dựng một thiết lập tương tự dành cho máy quét.

Schaller mô tả việc suy ngược một giao thức thiết bị không có tài liệu là quá trình ghép nối dữ liệu USB, giá trị thanh ghi và các lệnh truyền điều khiển. Theo ông, công việc không quá phức tạp về mặt ý tưởng nhưng đòi hỏi nhiều kiên nhẫn và kỹ năng.

Đối chiếu dữ liệu giữa Windows và Linux

Máy quét phim kết nối với máy tính để phân tích trình điều khiển
Thiết bị thật cung cấp dữ liệu cho quá trình đối chiếu.

Nỗ lực trước đó nhằm xây dựng phần phụ trợ SANE bằng Claude đã đình trệ vì tác tử không có một trình điều khiển đang chạy để đối chiếu. Thiết lập mới giải quyết điểm nghẽn này. Claude vận hành phần mềm Windows của nhà sản xuất, ghi lại lưu lượng USB rồi so sánh với dữ liệu mà trình điều khiển Linux gửi đi. Từ chênh lệch giữa hai phía, Claude xác định lỗi và sửa mã.

Schaller cho rằng những cải tiến của Claude Code cũng có thể góp phần vào kết quả. Một lợi thế thực tế khác là Claude có thể lặp lại việc phân tích dữ liệu mà không mất kiên nhẫn. Tuy nhiên, Schaller vẫn phải thử từng thay đổi trên thiết bị thật.

Cách làm này mở rộng vai trò của tác tử lập trình bằng trí tuệ nhân tạo ra ngoài việc sinh mã. Khi có môi trường thử nghiệm, dữ liệu đối chiếu và phản hồi từ phần cứng, tác tử có thể hỗ trợ một quy trình kỹ thuật gồm nhiều vòng phân tích, sửa đổi và kiểm tra.

Trình điều khiển riêng nhanh hơn trong phép thử một khung hình

Trong phép thử một khung hình của Schaller, trình điều khiển riêng hoàn thành bản quét độ phân giải đầy đủ trong 34,6 giây, so với 54,4 giây của trình điều khiển SANE thượng nguồn. Kết quả này chỉ phản ánh một phép thử giới hạn, không phải đánh giá toàn diện giữa hai trình điều khiển.

Trong lúc Schaller hoàn thiện dự án, một nhà phát triển khác đã bổ sung hỗ trợ cho phiên bản OpticFilm 8200i mới vào SANE từ tháng 9. Vì vậy, Schaller không định duy trì một trình điều khiển cạnh tranh. Ông sẽ chuyển sang phiên bản thượng nguồn của SANE khi phiên bản đó có đủ tính năng mình cần, còn phiên bản tự viết được giữ lại như một minh chứng kỹ thuật.

Theo thông tin và phép thử do Schaller công bố, trình điều khiển riêng hỗ trợ loại bỏ bụi bằng hồng ngoại, điều chỉnh phơi sáng cho phim âm bản dày đặc và quét màu hoặc thang xám ở độ phân giải từ 300 đến 7.200 dpi.

Nguyên nhân phần cứng của sự cố là thay đổi bộ vi mạch. Các máy OpticFilm 8200i mới sử dụng Genesys GL128 thay cho GL845, loại đã được SANE hỗ trợ.

Trong phép thử của Schaller, cả hai trình điều khiển tái hiện cùng mức chi tiết ở 3.600 dpi, dù SANE cung cấp nhiều lựa chọn độ phân giải hơn. Những số liệu này chưa cho biết hai trình điều khiển sẽ hoạt động ra sao với nhiều loại phim, thiết lập và máy tính khác nhau.

Negative Vibes giữ nguyên dữ liệu quét 16 bit

Schaller phát triển Negative Vibes để xử lý ảnh quét mà vẫn giữ nguyên dữ liệu 16 bit ban đầu, bao gồm cả kênh hồng ngoại. Ứng dụng GNOME này được viết bằng Rust với sự hỗ trợ của Claude.

Dự án máy quét đã dẫn Schaller tới việc phát triển Negative Vibes. Theo mô tả của Schaller, người dùng có thể loại bỏ bụi và chỉnh sửa hình ảnh mà không làm thay đổi bản gốc.

Negative Vibes hỗ trợ hiệu chỉnh màu bằng ArgyllCMS và xuất kết quả thành tệp TIFF, JPEG, PNG hoặc DNG. Việc giữ lại dữ liệu 16 bit và kênh hồng ngoại cho phép quy trình xử lý tiếp tục sử dụng dữ liệu do máy quét thu được.

Điểm chính của dự án không chỉ nằm ở tốc độ tạo mã. Schaller xây dựng một quy trình trong đó tác tử có dữ liệu thực để kiểm tra giả thuyết. Đây cũng là vấn đề trong việc dùng trí tuệ nhân tạo để rà soát mã: kết quả do mô hình tạo ra vẫn cần kỹ sư thử nghiệm và đánh giá.

Từ máy quét đến camera ThinkPad

Schaller áp dụng cùng nguyên tắc đối chiếu dữ liệu cho camera trên Lenovo ThinkPad X1 Carbon Gen 14 Aura Edition. Claude phân tích cấu hình Windows, thông tin phần cứng và ảnh từ một camera USB tham chiếu, sau đó hỗ trợ tạo các bản vá cho nhân Linux và libcamera.

Khi chạy Linux, camera tích hợp tạo ảnh quá tối, các góc tối hơn rõ rệt và toàn khung hình có sắc vàng xanh. Máy tính sử dụng cảm biến Sony IMX471 cùng hệ thống xử lý hình ảnh IPU7 của Intel.

Camera MIPI bên trong máy tính không tạo lưu lượng USB để Claude phân tích như máy quét. Schaller chuyển sang cung cấp các tệp cấu hình của trình điều khiển Windows, mục đăng ký hệ thống, bảng ACPI và thuộc tính thiết bị. Ông còn kết nối một camera USB đang hoạt động để Claude có hình ảnh tham chiếu. Theo Schaller, đến cuối ngày, ông đã có các bản vá cho nhân Linux và libcamera.

Các lỗi được xác định trong nhân Linux và libcamera

Các bản sửa nhân xử lý ba vấn đề. Lỗi chọn vùng cắt khiến libcamera dùng sai khu vực điểm ảnh. Thanh ghi mẫu kiểm tra được định nghĩa không chính xác. Giới hạn khuếch đại tương tự còn làm camera mất khoảng 1,8 bậc độ nhạy, theo phân tích của Schaller.

Claude cũng phát hiện lỗi trong quá trình xử lý hình ảnh của libcamera. Việc thiếu hiệu chỉnh độ tối ở rìa ống kính khiến các góc ảnh tối hơn tâm khoảng 2,7 bậc. Cách tính dữ liệu cảm biến và mức đen không khớp cũng làm cân bằng trắng bị sai.

Trong phép thử ánh sáng yếu của Schaller, độ sáng khung hình tăng từ 31,1 lên 90,9. Tỷ lệ màu cũng tiến gần hơn tới hình ảnh từ camera USB dùng làm tham chiếu.

Kết quả vẫn chưa hoàn chỉnh. Theo Schaller, trong điều kiện thiếu sáng, kênh xanh lam còn thấp hơn thiết bị tham chiếu khoảng 17%. Cả hai nhóm bản vá cũng chưa được hợp nhất. Kate Hsuan, kỹ sư công nghệ phát triển trí tuệ nhân tạo tại Nvidia, đang xem xét thay đổi đối với nhân Linux. Wim Taymans, kỹ sư phần mềm chính tại Red Hat, phụ trách phần libcamera.

Bộ công cụ hw-harness hoạt động như thế nào

hw-harness đặt trình điều khiển Windows và Linux vào một quy trình có thể quan sát và so sánh. Thiết bị chạy với trình điều khiển Windows trong máy ảo KVM, usbmon ghi lại lưu lượng, sau đó nhà phát triển chuyển thiết bị về Linux và lặp lại thao tác với trình điều khiển thử nghiệm.

Schaller đã công bố phương pháp nền tảng dưới dạng dự án mã nguồn mở hw-harness theo giấy phép MIT. Ông lưu ý phiên bản phát hành không hoàn toàn giống bộ công cụ từng dùng cho máy quét và camera.

Trong thiết lập được công bố, trình điều khiển Windows của nhà sản xuất chạy trong một máy ảo KVM, còn thiết bị vật lý được chuyển vào hệ điều hành khách. Claude điều khiển phiên Windows từ xa trong khi usbmon ghi lưu lượng trên máy Linux. Sau đó, nhà phát triển chuyển thiết bị trở lại Linux, lặp lại thao tác bằng trình điều khiển thử nghiệm và yêu cầu Claude so sánh hai bản ghi.

Các thành phần của hw-harness

Máy quét phim nối với máy tính trong thiết lập kiểm thử phần cứng
Phần cứng được chuyển đổi giữa môi trường Windows và Linux.

Kho mã gồm winctl để điều khiển máy ảo Windows, usbcap để ghi lưu lượng, hostdev để chuyển thiết bị giữa máy chủ và hệ điều hành khách, cùng hwdbg phục vụ gỡ lỗi phía Linux. Các tập lệnh PowerShell thu thập thông tin mô tả thiết bị, mục đăng ký hệ thống, bảng ACPI và tệp INF.

Theo Schaller, cách tiếp cận này có thể tạo ra một trình điều khiển đủ chất lượng để người bảo trì dự án xem xét hợp nhất. Tuy nhiên, những câu hỏi về giấy phép vẫn chưa được giải quyết, còn bộ công cụ tổng quát chưa được thử nghiệm trên nhiều loại phần cứng.

Trường hợp của Schaller không chứng minh tác tử có thể tự sửa mọi thiết bị. Kết quả cho thấy tác tử hữu ích hơn khi kỹ sư cung cấp một bản triển khai đang hoạt động để đối chiếu, công cụ ghi lại hành vi của phần cứng và vòng kiểm thử trên thiết bị thật.

Nếu quan tâm đến cách tác tử thay đổi công việc kỹ thuật, bạn có thể tiếp tục theo dõi các phân tích về trí tuệ nhân tạo và phần mềm trên Sine.