Linux'ta Steam'de Gamepad Çalışmıyor: Tanılama, udev İzinleri ve Steam Input

Kerem Aydın·9 Temmuz 2026·⏱3 dk

Sorunların %90'ında durum şuna indirgenir: Linux gamepad'i görür ancak Steam gerekli cihazlara (/dev/hidraw* ve/veya /dev/uinput) erişemez veya Steam Input, "donanım" girişiyle çatışarak çift tuş basımlarına veya hatalı eksenlere neden olur. Aşağıda kısa bir kontrol planı ve nokta atışı düzeltmeler yer almaktadır.

İçindekiler

Linux'un gamepad'i görüp görmediğini kontrol etme

  1. Bağlantıdan hemen sonra sistemde neyin oluştuğunu kontrol edin:
sudo dmesg -T | tail -n 80
ls -l /dev/input/by-id/ | tail -n 50
ls -l /dev/input/event* /dev/input/js* /dev/hidraw* 2>/dev/null
  1. Girişi Steam dışında test edin:
sudo evtest          # /dev/input/eventX kontrolü
jstest /dev/input/js0 2>/dev/null || true

Eğer ne event*, ne js*, ne de hidraw* yoksa sorun Steam kaynaklı değildir: kabloyu/portu/BT bağlantısını, gücü, çekirdek modülünü ve denetleyici uyumluluğunu kontrol edin.

Hızlı semptom tablosu

SemptomEn sık karşılaşılan nedenKontrol edilecekler
Linux'ta çalışıyor, Steam'de çalışmıyorhidraw üzerinde izin eksikliğils -l /dev/hidraw*, getfacl
Steam menüsünde çalışıyor, oyunda çalışmıyoruinput erişimi yokls -l /dev/uinput, `lsmod \
Çift girişOyun donanımı okuyor + Steam Input sanal gamepad oluşturuyorOyuna özel Steam Input ayarları
Hatalı eksenler/tetiklerUygun olmayan Steam Input modu/SDL eşlemesiOyun için Steam Input'u kapatıp açma

Steam Input ve /dev/uinput rolü

Steam genellikle denetleyiciyle hidraw üzerinden iletişim kurar ve ardından uinput aracılığıyla bir sanal gamepad oluşturur. Bu nedenle tipik bir arıza senaryosu şöyledir: Steam arayüzünde gamepad tepki verir ancak oyunda sessizlik vardır.

Kontrol edin:

ls -l /dev/uinput
lsmod | grep -E '^uinput' || echo "uinput modülü yüklenmedi"

Modül yoksa:

sudo modprobe uinput

Oyunda çift tuş basımları veya garip eksenler varsa — Steam Input'u sadece bu oyun için değiştirmeyi deneyin (oyun özellikleri → denetleyici). Genel ayarlar ve oyuna özel ayarlar çatışabilir.

udev, uaccess (ACL) ve Flatpak incelikleri

Doğru hedef: chmod 666 yapmadan aktif kullanıcıya gerekli cihazlara erişim sağlamaktır. systemd sistemlerinde bu genellikle TAG+="uaccess" (ACL) ve 0660 modu ile yapılır.

ACL izinlerinin verilip verilmediğini kontrol etme

İzinlerdeki "artı" işareti ACL anlamına gelir:

ls -l /dev/hidraw0 /dev/uinput 2>/dev/null
getfacl /dev/hidraw0 /dev/uinput 2>/dev/null || true

hidraw için nokta atışı udev kuralı (şablon)

  1. VID/PID değerlerini öğrenin:
lsusb
# veya belirli bir hidraw biliyorsanız şöyle:
udevadm info --query=all --name=/dev/hidraw0 | grep -E 'ID_VENDOR_ID|ID_MODEL_ID'
  1. Bir dosya oluşturun, örneğin: /etc/udev/rules.d/72-gamepad-hidraw-uaccess.rules
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="XXXX", ATTRS{idProduct}=="YYYY", MODE:="0660", GROUP="input", TAG+="uaccess"
  1. Uygulayın:
sudo udevadm control --reload-rules
sudo udevadm trigger

Her şey için SUBSYSTEM=="hidraw", MODE="0666" şeklinde bir kural oluşturmayın. Bu, tüm HID cihazlarına erişimi genişletir ve güvenliği zayıflatır.

Steam Flatpak olarak kurulmuşsa

Flatpak sandık ortamı sistem udev kurallarının yerine geçmez: hidraw/uinput erişimi yine de ana makinede belirlenir. Bu nedenle:

  • önce ana makinede doğru izinleri/ACL'leri sağlayın (yukarıdaki adımlar),
  • ardından Steam'i yeniden başlatın ve gamepad'i yeniden bağlayın.

Yaygın hatalar

  • Gamepad hiçbir yerde tanınmıyor: /dev/input ve /dev/hidraw içinde cihaz yok → kabloyu/BT bağlantısını, gücü, dmesg günlüklerini, uyumluluğu ve çekirdek modüllerini kontrol edin.
  • evtest içinde her şey var, Steam görmüyor: neredeyse her zaman hidraw izinleri sorunu → getfacl /dev/hidraw0 kontrol edin, uaccess içeren udev kuralı ekleyin.
  • Steam'de çalışıyor, oyunda çalışmıyor: /dev/uinput erişimi yok veya uinput modülü yüklenmemiş → lsmod | grep uinput, modprobe uinput.
  • Çift giriş: Oyun için Steam Input'u devre dışı bırakın veya tam tersine sadece Steam Input'u açık bırakın; paralel olarak giriş haritalayıcıları/emülatörleri çalıştırmayın.
  • Eksenler/tetikler "eğri": Direksiyonlar/HOTAS ve standart dışı cihazlar için genellikle oyuna özel Steam Input'u kapatmak ve oyun içindeki kontrolleri yapılandırmak yardımcı olur.

SSS

Kullanıcıyı input grubuna eklemek gerekir mi?
Bu hızlı bir geçici çözümdür, ancak genellikle tüm giriş cihazlarına erişimi genişletmemek için nokta atışı udev kuralları + uaccess daha iyidir.

Neden sadece chmod 666 /dev/uinput yapamıyoruz?
Bu güvenli değildir ve kararsızdır: izinler yeniden bağlanma/yeniden başlatma sonrası sıfırlanır. Doğrusu, erişimi udev üzerinden kalıcı hale getirmektir.

Nedeni hızlıca bulmak için hangi tanılama verilerini sağlamak gerekir? Komutların çıktıları:

lsusb
ls -l /dev/input/event* /dev/input/js* /dev/hidraw* /dev/uinput 2>/dev/null
getfacl /dev/hidraw0 /dev/uinput 2>/dev/null || true
lsmod | grep -E '^uinput' || true
sudo dmesg -T | tail -n 120