Linux

Driver Linux DRM Open-Source untuk SM750: Kartu HDMI Murah Jadi Monitor Ultrawide

Driver Linux DRM Open-Source untuk SM750: Kartu HDMI Murah Jadi Monitor Ultrawide

Kartu grafis murah berbasis Silicon Motion SM750 selama ini dikenal sebagai solusi display sederhana, tapi dukungan drivernya di Linux sering jadi keterbatasan. Sebuah proyek open-source bernama sm750hdmifb mencoba mengubah itu. Driver Linux DRM/KMS eksperimental ini dirancang khusus untuk kartu single-HDMI SE-DP750A-HDMI, membuka mode ultrawide 2048 piksel asli hingga desktop 2560x1080 lewat software scaling, lengkap dengan dithering RGB565 custom dan akselerasi DMA.

Proyek ini menarik bukan hanya karena teknisnya, tapi karena pendekatannya yang jujur: driver ini eksperimental, untuk satu board SM750 spesifik, dan punya peringatan jelas soal mode yang bisa melewati batas clock GPU atau monitor. Kode sumbernya tersedia di GitHub dengan lisensi terbuka, dan pengembangnya mendokumentasikan setiap trade-off dengan detail.

Kartu Apa yang Didukung

Board yang diuji dijual atau ditandai sebagai SE-DP750A-HDMI dan harus punya semua ini: Silicon Motion SM750G10-AC revisi A1, PCI ID 126f:0750, transmitter HDMI Silicon Image atau Lattice SiI9024ACNU, 16 MiB memori display, dan satu output HDMI. PCI ID saja tidak cukup, karena kartu SM750 lain mungkin memakai VGA, transmitter berbeda, atau wiring GPIO yang berbeda dan tidak didukung saat ini.

Ini batasan yang penting dipahami. SM750 punya banyak varian, dan driver ini dengan sengaja hanya menargetkan satu konfigurasi hardware yang teruji. Untuk kartu lain, pengguna harus mencari solusi berbeda atau menunggu dukungan lebih luas.

Instalasi dan Kompatibilitas Kernel

Pengguna Ubuntu 24.04 dan Linux Mint 22 bisa membangun paket DKMS secara lokal. Langkahnya sederhana: install dependensi seperti build-essential, dkms, linux-headers, dan libdrm-dev, clone repositori, jalankan make check, bangun paket dengan build-package.sh, install deb yang dihasilkan, lalu reboot. Reboot itu penting karena memungkinkan paket mem-blacklist driver sm750fb lama Linux sebelum ia sempat mengklaim kartu. Paketnya bernama sm750hdmifb dan modul kernelnya bernama sm750hdmidrm.ko supaya tidak tertukar dengan sm750fb.ko.

Driver ini ditujukan untuk Linux 6.17 dan lebih baru. DKMS dengan sengaja menolak kernel lama karena antarmuka DRM yang dibutuhkan tidak didukung proyek ini. Kode sumber punya jalur kompatibilitas untuk Linux 6.17 hingga seri 6.x dan untuk Linux 7.0 ke atas. Saat ini ia berhasil dibangun dan lulus seluruh rangkaian tes terhadap kernel Ubuntu 6.17 dan 7.0, dan workflow CI manual juga membangun terhadap header kernel 6.17 Ubuntu 24.04. Tidak ada batas versi atas yang tetap, tapi kernel masa depan bisa mengubah API DRM internal. Karena ini driver out-of-tree, versi kernel baru mungkin butuh pembaruan sumber meski masih dalam rentang 6.17 ke atas.

Bagaimana Driver Bekerja

Secara default, driver memakai mode EDID monitor, scanout RGB565 16-bit dengan dithering, hardware cursor, menggabungkan update di worker thread, mengunggah batch delapan baris dengan DMA, dan jatuh kembali dengan aman kalau DMA gagal.

Aplikasi tetap merender dalam warna 32-bit. Tepat sebelum unggah, driver mengonversi region layar yang berubah ke RGB565 dan menerapkan ordered dither buatan KodeMunkie dengan koreksi kanal hijau 94 persen. Ini default karena framebuffer SM750 diakses lewat link PCIe 1.1 x1. Pada resolusi tinggi, link itu tidak bisa memberikan update full-screen 32-bit yang responsif: XRGB8888 mengirim empat byte per piksel output, sementara RGB565 mengirim dua byte. RGB565 dengan dithering karena itu membagi dua trafik piksel yang menuju device sambil mempertahankan banyak detail warna yang tampak.

Opsi kernel yang umum diatur lewat parameter modul, misalnya sm750hdmidrm.enable_dma=0 di GRUB. Beberapa parameter penting: scanout_format=rgb565-bbdither sebagai default yang direkomendasikan, xrgb8888 untuk scanout 32-bit yang menggandakan trafik unggah, enable_dma untuk mengaktifkan atau menonaktifkan DMA, disable_hardware_cursor untuk fallback kursor software, dan edid_only yang berbahaya untuk dinonaktifkan karena menghentikan pembatasan mode oleh EDID.

Mode Ultrawide dan Software Scaling

Device ini biasanya digambarkan mendukung hingga 1920 piksel horizontal. Dengan edid_only=0, driver juga mengekspos mode hardware 2048-wide yang nyata: 2048x864, 2048x1024, 2048x1080, dan 2048x1152 dengan berbagai refresh rate. Mode-mode ini eksperimental dan tidak dibatasi EDID, jadi monitor bisa tidak mendukungnya, dan refresh tinggi bisa melebihi spesifikasi.

softscale_wide=1 menambahkan dua desktop logis yang lebih lebar. Keduanya membutuhkan monitor ultrawide 2560x1080 fisik dengan full widescreen stretch diaktifkan di menu on-screen. Mode 2464x1080 direkomendasikan karena memberi lebih banyak detail dan responsivitas lebih baik dengan kompresi 16,9 persen, sementara 2560x1080 memakai kompresi 20 persen dan mengurangi detail karena lebih banyak lebar yang dikompresi. Untuk kedua mode, sinyal HDMI diregangkan dari 2048x1080 ke 2560x1080 fisik monitor. 2048 piksel adalah lebar nyata tertinggi yang bisa dihasilkan kartu ini di hardware, karena bidang grafis utama SM750 punya field right-edge 11-bit, jadi lebar scanout fisiknya tidak bisa melebihi 2048 piksel. Ini batasan hardware; mengurangi tinggi tidak melepaskan bit horizontal tambahan.

Pertimbangan dan Risiko

Driver ini tidak untuk semua orang. Mode opsional bisa melebihi batas clock GPU atau monitor yang dipublikasikan dan bisa menghasilkan tanpa sinyal, distorsi, atau display yang tidak stabil. Pengembang menyarankan menjaga SSH atau jalur recovery lain saat mencoba mode non-EDID.

Karena ini driver out-of-tree, setiap pembaruan kernel berpotensi membutuhkan pembaruan sumber. Pengguna yang tidak nyaman membangun modul kernel sendiri mungkin lebih baik menunggu paket prebuilt dari GitHub Releases atau memakai distribusi yang menyediakan DKMS secara otomatis.

Di sisi positif, driver ini menunjukkan apa yang bisa dicapai komunitas open-source dengan hardware yang tampaknya sederhana. Kartu SM750 yang murah bisa diubah menjadi solusi display ultrawide yang fungsional untuk server, workstation, atau homelab, selama penggunanya paham risikonya.

Mengapa Driver Ini Dibutuhkan

Untuk memahami nilai proyek ini, perlu melihat lanskap driver grafis di Linux untuk hardware murah. Kartu berbasis SM750 selama bertahun-tahun hanya didukung driver sm750fb yang terbatas: framebuffer sederhana tanpa akselerasi, tanpa manajemen mode modern, dan sering bermasalah dengan resolusi tinggi atau output HDMI. Pengguna Linux yang membeli kartu display murah sering mendapati dirinya terjebak dengan resolusi rendah dan tanpa dukungan proper.

Proyek sm750hdmifb menjawab kebutuhan ini dengan membangun driver DRM/KMS yang layak untuk satu varian kartu yang umum. DRM dan KMS adalah infrastruktur grafis modern Linux yang dipakai driver Intel, AMD, dan NVIDIA open-source. Dengan memakai fondasi ini, driver bisa memanfaatkan tooling standar, pengaturan multi-monitor, dan dukungan aplikasi yang lebih baik daripada pendekatan framebuffer lama.

Bagi pengguna homelab atau server yang butuh output display murah, kartu seperti ini adalah pilihan populer. Harganya jauh di bawah kartu gaming, konsumsi dayanya rendah, dan driver open-source menghilangkan ketergantungan pada binary blob. Proyek ini membuat kartu tersebut jauh lebih berguna di Linux.

Dithering dan Kualitas Warna

Salah satu aspek teknis paling menarik dari driver ini adalah pendekatannya terhadap kualitas warna pada keterbatasan bandwidth. Koneksi PCIe 1.1 x1 kartu ini adalah bottleneck nyata: pada resolusi tinggi, mengirim empat byte per piksel untuk format 32-bit tidak bisa dilakukan secara responsif. Solusi driver ini adalah memakai RGB565 yang hanya dua byte per piksel, lalu mengkompensasi hilangnya kedalaman warna dengan ordered dithering.

Dithering bekerja dengan menyebarkan error kuantisasi ke piksel tetangga, sehingga gradasi warna yang halus tetap terlihat meski hanya memakai 16-bit per piksel. Tanpa dithering, RGB565 sering menghasilkan banding yang terlihat pada gradasi, terutama di langit atau area dengan transisi halus. KodeMunkie menambahkan koreksi kanal hijau 94 persen karena mata manusia paling sensitif terhadap hijau, dan kanal ini paling berpengaruh pada persepsi kecerahan.

Hasilnya adalah trade-off yang cerdas: aplikasi tetap merender dalam 32-bit, dan hanya saat unggah ke framebuffer warna dikonversi dan di-dither. Ini berarti kualitas yang dirasakan pengguna jauh lebih baik daripada RGB565 polos, sementara trafik ke device tetap setengah dari format 32-bit. Detail semacam ini menunjukkan pemahaman mendalam tentang keterbatasan hardware dan cara mengakalinya secara software.

Perjalanan Menuju Mode Ultrawide

Batasan hardware SM750 yang paling mendasar adalah lebar scanout fisik maksimal 2048 piksel, karena field right-edge 11-bit pada bidang grafis utama. Kartu ini tidak bisa menghasilkan gambar lebih lebar dari itu secara native, apa pun yang dilakukan software. Driver ini menerima batasan tersebut dan mencari cara kreatif untuk tetap memberi pengalaman ultrawide.

Jawabannya ada dua lapis. Pertama, mode 2048-wide asli diekspos dengan menonaktifkan pembatasan EDID, yang memungkinkan resolusi seperti 2048x1080 pada berbagai refresh rate. Kedua, softscale_wide menambahkan kompresi horizontal di hardware: desktop logis 2560x1080 dikompresi ke sinyal 2048x1080, lalu monitor ultrawide dengan mode stretch membentangkannya kembali ke 2560 piksel fisik. Kompresi 16,9 persen pada mode 2464x1080 dianggap titik manis antara detail dan performa.

Pendekatan ini tidak sempurna. Teks bisa tampak sedikit lebih lembut karena penskalaan, dan mode ini butuh monitor dengan fitur stretch yang diaktifkan manual. Tapi untuk pengguna yang ingin memakai satu monitor ultrawide dengan kartu murah, ini adalah opsi yang sebelumnya tidak ada sama sekali. Eksperimen semacam ini juga mendorong batas pemahaman komunitas tentang apa yang bisa dilakukan hardware yang tampaknya terbatas.

Instalasi di Distribusi Lain

Meski panduan instalasi resmi fokus pada Ubuntu 24.04 dan Linux Mint 22, pengguna distribusi lain tidak sepenuhnya kehilangan harapan. Selama kernelnya 6.17 atau lebih baru dan toolchain build tersedia, proyek ini bisa dikompilasi secara manual. Pengguna Arch, Fedora, atau Debian sid bisa membangun modul langsung dari sumber dengan make, asalkan header kernel yang cocok terpasang.

Yang perlu diperhatikan adalah konsistensi antara header kernel yang dipakai untuk build dan kernel yang berjalan saat modul dimuat. Ketidakcocokan versi adalah penyebab paling umum modul gagal dimuat dengan error seperti invalid module format. Untuk menghindari ini, pastikan paket linux-headers sesuai persis dengan kernel aktif, dan biasakan membangun ulang modul setelah pembaruan kernel.

Bagi pengguna yang tidak nyaman dengan proses build manual, opsi paling aman adalah menunggu paket prebuilt dari halaman GitHub Releases proyek, atau memakai distribusi yang menyediakan DKMS otomatis. DKMS mengelola siklus hidup modul: ia membangun ulang modul secara otomatis setiap kali kernel diperbarui, menghilangkan salah satu sumber frustrasi terbesar pengguna driver out-of-tree.

Komunitas dan Arah Pengembangan

Proyek dengan 28 bintang dan satu fork mungkin terlihat kecil, tapi energinya nyata. Repositori ini punya 35 commit, workflow CI manual yang membangun terhadap beberapa versi kernel, rangkaian tes yang berjalan terhadap kernel 6.17 dan 7.0, serta dokumentasi yang luar biasa detail untuk ukuran proyeknya. Ini menunjukkan pengembang tunggal atau tim kecil yang serius dan metodis.

Struktur repositori juga sehat: folder src, tests, tools, packaging, docs, dan workflow GitHub terpisah dengan bersih. Ada DKMS config dan script build-package yang matang. Ini bukan proyek prototipe sekali jalan, melainkan fondasi yang dirancang untuk dipelihara.

Bagi komunitas Linux di Indonesia, proyek seperti ini adalah undangan untuk berkontribusi. Menguji di hardware yang berbeda, melaporkan bug dengan detail, atau membantu dokumentasi bahasa Indonesia adalah kontribusi berharga yang tidak butuh keahlian kernel mendalam. Driver open-source tumbuh dari pengguna yang mau melaporkan pengalaman nyata mereka.

Kesimpulan

sm750hdmifb adalah contoh bagus driver Linux open-source yang jujur tentang kemampuannya. Ia tidak menjanjikan dukungan universal, tapi ia melakukan satu hal dengan baik: membuka potensi penuh kartu SE-DP750A-HDMI, termasuk mode ultrawide yang sebelumnya tidak bisa diakses. Dokumentasi yang detail, peringatan risiko yang jelas, dan pendekatan bertahap membuatnya layak dicoba untuk siapa pun yang punya kartu ini dan ingin eksperimen display di Linux.

Untuk pengguna Linux di Indonesia yang mencari kartu display murah untuk server atau workstation, proyek ini layak dipantau. Sebelum membeli kartu SM750, pastikan variannya cocok dengan yang didukung driver, dan siapkan jalur recovery kalau ingin mencoba mode eksperimental. Open-source kembali membuktikan: dengan dokumentasi dan komunitas yang baik, hardware murah bisa melakukan hal yang tidak pernah dibayangkan pabrikannya.

💬 Komentar (0)

Belum ada komentar. Jadilah yang pertama! 💬

Komentar akan muncul setelah moderasi.