نوشتن درایور لینوکس برای سختافزار بیمستندات با کمک Claude
خلاصهٔ کاملتر
نویسنده این پست تو وبلاگ GNOME میگه بعد از فوت مادرش یه جعبه پر از نگاتیو عکسهای قدیمی خانوادگی بهش رسید. برای همین اسکنر Plustek OpticFilm 8200i رو خرید، ولی فهمید نسخه جدیدش چیپ Genesys GL128 داره که تو لینوکس پشتیبانی نمیشه. اول با Claude تلاش کرد درایور SANE (همون لایه استاندارد اسکنر تو لینوکس) بنویسه، ولی گیر کرد و چند ماه پروژه رو کنار گذاشت.
بعد پستی از Glorious Eggroll دید که با AI یه درایور موس رو درست کرده بود. ایده این بود که agent کنترل کامل یه ویندوز مجازی رو داشته باشه و دادههای لازم رو خودش ضبط کنه. نویسنده همین کارو برای اسکنر کرد و تو چند ساعت اولین اسکن قابل تشخیص رو تو لینوکس گرفت. چند روز بعد یه درایور تقریباً کامل با پشتیبانی infrared داشت؛ البته فهمید تو این فاصله یکی دیگه پشتیبانی این اسکنر رو به SANE اضافه کرده.
حاصل کار ابزاری به اسم hw-harness شده که برای Claude یا Codex طراحی شده. روندش اینه: درایور اصلی سازنده رو تو یه ماشین مجازی KVM با دستگاه واقعی وصلشده اجرا میکنی، ترافیک رو از بیرون ماشین مجازی با usbmon ضبط میکنی، همون کارو با درایور خودت تو لینوکس تکرار میکنی و دو trace رو diff میگیری. تفاوتها همون لیست باگهای درایورته. برای دستگاههایی که bus قابل شنود ندارن، مثل دوربین MIPI داخلی، از فایلهای INF، رجیستری و جدولهای ACPI ویندوز استفاده میشه.
به گفته نویسنده این روش کدی رو کپی نمیکنه و فقط رفتار سختافزار رو مشاهده میکنه، پس هر عدد تو درایور جدید به یه چیز ضبطشده برمیگرده. درایور اسکنر خودش تو رزولوشن کامل سریعتر از نسخه upstream هست (۳۴.۶ ثانیه در برابر ۵۴.۴) و پاک کردن گردوخاک با infrared رو هم داره. یه اپ GNOME با Rust به اسم Negative Vibes هم برای اسکن نگاتیو ساخته.
پروژه سوم دوربین لپتاپ ThinkPad X1 Carbon Gen 14 با سنسور Sony IMX471 و Intel IPU7 بود که تو لینوکس تصویر تاریک و زرد-سبز میداد. تو یه روز پچهایی برای کرنل و libcamera آماده شد: باگ crop، سقف پایین analogue gain که حدود ۱.۸ stop حساسیت رو میگرفت، و نبود کامل lens shading correction. تو تست نور کم، روشنایی فریم از ۳۱.۱ به ۹۰.۹ رسید.
نویسنده نتیجه میگیره AI تو کارهای خستهکننده مثل خوندن هزاران خط capture و پیدا کردن الگو خیلی خوبه، ولی آدم باید تصمیم بگیره چی ساخته بشه و همهچیز رو روی سختافزار واقعی چک کنه. خودش هم میگه نتیجهها هنوز بینقص نیستن.
نکات کلیدی:
- hw-harness ترافیک USB درایور ویندوز رو از بیرون VM با usbmon ضبط میکنه و با درایور لینوکس diff میگیره.
- اسکنر Plustek OpticFilm 8200i جدید از چیپ Genesys GL128 با شناسه USB 07b3:1825 استفاده میکنه.
- درایور جدید در 3600 dpi تو ۳۴.۶ ثانیه اسکن میکنه، در برابر ۵۴.۴ ثانیه نسخه upstream SANE.
- پچهای دوربین IMX471 روشنایی فریم در نور کم رو از ۳۱.۱ به ۹۰.۹ رسوند.
- Negative Vibes یه اپ GNOME نوشتهشده با Rust هست که بهصورت Flatpak منتشر شده.




