poro

Yetkin
Katılım
6 Mart 2024
Mesajlar
193
Makaleler
2
Çözümler
4
Beğeniler
207
Selamlar,

Birkaç gündür Victus laptopumda fanları dilediğim gibi kontrol edebileceğim bir araç arayışındaydım. Mevcut çözümler ya kararsız çalışıyordu ya da özellik bakımından çok yetersizdi. Bu noktada iş başa düştü diyerek kolları sıvadım.

Sürücü Tarafındaki Teknik Sorunlar ve Çözüm Süreci
Linux çekirdeğindeki mevcut hp-wmi sürücüsü maalesef Victus serisi için oldukça kısıtlı bir destek sunuyor. Mevcut sürücü cihazı sadece "Max Mode"a alabiliyordu; ancak BIOS'taki güvenlik mekanizması nedeniyle cihaz 2 dakika içinde otomatik olarak "Auto Mode"a geri dönüyordu. Bu da çekirdek sürücüsünün tek başına yetersiz kalmasına neden oluyordu.

Uygulamayı geliştirirken ilk aşamada, kullanıcı seviyesinde (user-space) bir sayaç oluşturarak BIOS'a sürekli sinyal gönderdim ve "Max Mode"da kalmasını sağladım. v0.2.0 sürümü bu haliyle yük altında başarılı olsa da, asıl hedefim olan Manuel Fan Kontrolü ve kişisel fan profilleri için yeterli değildi.

Linux Çekirdeği (Mainline) Gelişmeleri ve Özelleştirilmiş Yama
Araştırmalarım sonucunda, Linux çekirdeğinin for-next dalında 5 commitlik yeni bir yama seti buldum. Bu yama, hp-wmi sürücüsüne iki kritik özellik kazandırıyor:

Manuel Mod Desteği: Fan hızlarının tamamen kullanıcı tarafından belirlenmesine olanak tanıyor.

Kernel-Level Watchdog: Kullanıcı seviyesinde yaptığımız "BIOS'u uyarma" işlemi artık sürücü seviyesine inmiş durumda. Sürücü, manuel veya maksimum modda olunduğunda her 90 saniyede bir BIOS'a sinyal göndererek modun korunmasını sağlıyor.

Bu güncellemeler muhtemelen Kernel 7.0 veya bir sonraki sürümle ana dağıtımlara dahil edilecektir. Ancak mevcut yamada önemli bir eksiklik vardı: Manuel kontrol sadece CPU fanı üzerinden yapılıyordu ve GPU fanı zorunlu olarak CPU ile senkronize çalışıyordu.

Kendi Çözümüm ve Geliştirdiğim Uygulama
Yamayı yerel olarak fork'layıp üzerinde modifikasyonlar yaptım. CPU ve GPU fan kontrolünü birbirinden tamamen bağımsız hale getirdim. Yazdığım uygulamayı da bu iki ayrı fan profilini destekleyecek şekilde güncelledim.

Screenshot From 2026-02-10 03-33-24.webp
Screenshot From 2026-02-10 03-34-23.webp


Çekirdek güncellemesinin resmiyete dökülmesini beklemeden kullanmak isteyenler için hazırladığım yamayı DKMS üzerinden sisteme kurulabilir hale getirdim. En güzel yanı ise şu: Benim uygulamamı kullanmak zorunda değilsiniz. Yapılan yamalar ile birlikte hp-wmi sürücüsü artık hwmon standartlarına tam uyumlu olduğu için CoolerControl gibi popüler araçlarla da Victus fanlarınızı yönetebilirsiniz.

İlgili Linkler ve Commitler:

Sorularınız veya geri bildirimleriniz olursa paylaşırsanız sevinirim. İyi sosyaller
 
Son düzenleme:
Linux Kernel'inden kod bulunması, GPL lisansına uymanız gerektiği anlamına gelir. GPL lisansı ile lisanslanmış bir kod kullanmanız, projenizi MIT lisansı ile lisanslayamayacağınız anlamına gelir. Bu da şu anda "lisans ihmali" yaptığınız anlamına gelir.

Ayrıca kodları incelediğimizde çok fazla "vibe code" atmosferi yaşadık.

Yoğunlukla yapay zekâya kod yazdırmanız ve lisans ihmali yapmanız gerçekten üzücü. Eğer bu mesajımdan rahatsız olursanız, mesajımı kaldırabilirim. Rapor atmanız yeterli olur. Ancak eleştiriye açık olduğunuzu düşünüyorum.
 
Linux Kernel'inden kod bulunması, GPL lisansına uymanız gerektiği anlamına gelir. GPL lisansı ile lisanslanmış bir kod kullanmanız, projenizi MİT lisansı ile lisanslayamayacağınız anlamına gelir. Bu da şu anda "lisans ihmali" yaptığınız anlamına gelir.

Ayrıca kodları incelediğimizde çok fazla "vibe code" atmosferi yaşadık.

Yoğunlukla yapay zekâya kod yazdırmanız ve lisans ihmali yapmanız gerçekten üzücü. Eğer bu mesajımdan rahatsız olursanız, mesajımı kaldırabilirim. Rapor atmanız yeterli olur. Ancak eleştiriye açık olduğunuzu düşünüyorum.

Öncelikle lisans uyarısı için teşekkür ederim. Uygulamanın ilk sürümlerinden kernel sürücüsü ekli olmadığı için MIT lisanslı ile yayınlamıştım. Sonrasında kernel sürücüsünü ekleyince aklıma bile gelmedi.

Öte yandan Vibe Coding'ten ziyade kodları yapay zeka ile istişare ederek yazıyorum. Ancak "Vibe Coding" yaptığımı düşünmüyorum. Her satır kodu tek tek araştırarak anlayarak öğrenerek ve yapay zekadan da yardım alarak yazıyorum. Profesyonel olarak Rust bilmiyorum zaten. Bu noktada yardım almanın üzücü bir durum olduğunu düşünmüyorum. Kodda herhangi bir açık, performans sorunu veya tehlike teşkil eden yapı fark ettiyseniz belirtmenizden çok memnun olurum bu benim de daha iyi öğrenmeme yardımcı olur. Amacım mevcut yapıyı basit tutarak tutarlı bir iş yapmak. Üst düzey bir karmaşa aramıyorum. Bir uygulamaya ihtiyacım vardı ve gerekli niteliklere sahip olan ihtiyacımı karşılayan uygulamayı inşa ettim o kadar.

Kesinlikle mesajınızdan rahatsız olmadım. Eleştirinize saygım var.
 
@Hasan Merkit hocamın tenkitinin ardından koda biraz daha göz attım. Linux tarafındaki uygulama geliştirme tecrübemdeki eksikliğin kodda oluşturduğu darboğazları ve kötü uygulanmış yapıları tespit ettim. Özellikle dosya sisteminin nasıl çalıştığını tam anlayamamış olmamdan kaynaklı olarak uygulamanın ana altyapısının kötü bir zemine dayanmasına sebebiyet vermiş. Ayrıca Rust konusundaki eksikliğim de bir o kadar göze çarpıyormuş tabii. Konuya tam hakim olmayınca ve bir işe ilk kez girişince bu tarz kötü uygulanmış şeyler ortaya çıkabiliyor. Tecrübe diyelim:).

Bu yüzden macerayı şimdilik kenara bırakıp bildiğim topraklara, C# tarafına çekilme kararı aldım. Kodu C# ile sıfırdan tekrar yazdım. Uygulama her ne kadar kullanılabilir olsa da mevcut durumda hala tam teşekküllü dağıtama hazır bir uygulama olduğunu söyleyemem. Ancak Tauri ile yazılan kod ile arasında çok ciddi farklar olduğunu söylemeliyim.

Screenshot From 2026-02-17 19-42-50.webp

Öte yandan, bu projenin benim için öncelikli olarak bir öğrenme süreci ve ihtiyaç giderme aracı olduğunu belirtmeliyim. Hala geliştirilmesi gereken yerler ve optimizasyon noktaları mevcut. Ancak şu anda buna ayıracak vaktim olmadığı için şimdilik projeyi bu noktada bırakacağım. Son durumda kernel yaması ile uygulama reposu tamamen ayrıldı. Ana konuda da belirttiğim gibi kernel yaması hwmon ile uyumlu olduğu için yamayı kurup yılardır üzerinden çalışılan CoolerControl programının kullanılması çok daha iyi olacaktır. İhtiyaç duyanlar için kernel yaması + CoolerControl birleşiminin en iyi seçenek olduğunu vurgulamak isterim.

İyi Sosyaller dilerim herkese.

Kernel Yaması: hp-wmi-driver
Uygulama Reposu: hp-fan-control
CoolerControl (Önerilen)