개요
Linux는 게이머에게 가장 인기 있는 플랫폼은 아니지만 Steam의 Linux 지원 확대로 게임패드 설정 수요가 늘었습니다. 커널 3.19 이후 주요 게임패드의 기본 지원은 크게 개선되었지만, 커널의 xpad 모듈은 일부 컨트롤러에서 버그가 있거나 설정 옵션이 부족한 경우가 있습니다. 이 가이드는 xpad를 비활성화하고 더 유연한 드라이버로 교체하는 방법, 보정과 매핑, 그리고 흔한 문제 해결 절차를 다룹니다.
주요 대안과 용어 한 줄 설명
- xpad: Linux 커널에 포함된 Xbox 계열 컨트롤러 기본 드라이버. 간단한 사용에 적합.
- xboxdrv: 사용자 공간 드라이버로 추가 매핑과 설정 기능을 제공.
- jstest-gtk: 게임패드 보정 및 테스트 GUI 툴.
- qjoypad: 게임패드 입력을 키보드/마우스 이벤트로 매핑하는 유틸리티.
드라이버 대체 방법
터미널을 열고 배포판 패키지 관리자로 xboxdrv를 설치합니다. 예시는 Debian/Ubuntu 계열입니다.
sudo apt-get install xboxdrv
최신 버전이나 더 많은 장치 지원이 필요하면 xboxdrv 프로젝트 페이지에서 소스나 패키지를 확인하세요. 설치 후 드라이버를 다음과 같이 실행합니다.
sudo xboxdrv --detach-kernel-driver
–detach-kernel-driver 옵션은 동일 장치에 대해 커널 모듈(xpad)과 사용자 공간 드라이버를 동시에 사용하지 못하므로 필요합니다.
대신 먼저 xpad 모듈을 언로드한 다음 xboxdrv를 실행할 수도 있습니다.
sudo rmmod xpad
sudo xboxdrv
정상적으로 실행되면 터미널에 버튼 입력과 축값이 출력됩니다. 출력이 방해되면 –silent 옵션을 사용하세요.
sudo xboxdrv --silent
또 다른 사용자 공간 드라이버로 ubuntu-xboxdrv라는 배포판 기반 패키지가 있습니다. 표준 xboxdrv에서 문제가 발생하면 시도해 볼 수 있습니다(외부 PPA 추가는 사용자 책임입니다).
sudo apt-add-repository -y ppa:rael-gc/ubuntu-xboxdrv
sudo apt-get update
sudo apt-get install ubuntu-xboxdrv
중요: 최근 커널과 Steam Input의 발전으로 커널 xpad나 Steam의 입력 레이어가 많은 컨트롤러를 잘 지원합니다. 먼저 기본 드라이버가 충분한지 확인한 뒤 대체 드라이버를 고려하세요.
게임패드 보정
jstest-gtk를 설치하고 실행하면 GUI에서 버튼과 축 상태를 실시간으로 확인하고 보정할 수 있습니다.
sudo apt-get install jstest-gtk
도구를 열고 장치를 선택한 뒤 Properties를 눌러 상태를 확인하세요. 하단의 Calibration 버튼을 눌러 Start Calibration을 클릭하고 지시에 따라 모든 축을 끝까지 밀고 중립 상태로 돌려 보정합니다.
보정이 끝나면 Mapping 버튼으로 버튼 순서를 시스템 전반에 적용할 수 있습니다. 설정을 저장하면 모든 게임과 애플리케이션에서 반영됩니다.
버튼과 축을 키/마우스에 매핑하기
게임패드 입력을 키보드/마우스 입력으로 변환하려면 qjoypad를 사용하세요.
sudo apt-get install qjoypad
qjoypad --notray
앱에서 Add 버튼으로 레이아웃을 추가하고 각 게임패드 입력에 키나 마우스 동작을 할당합니다. Quick Set 기능은 버튼을 누르고 대응하는 키를 자동으로 연결해줘 초보자에게 편리합니다.
예: 왼쪽 아날로그를 왼쪽으로 밀면 ‘H’ 키, 오른쪽으로 밀면 ‘O’ 키를 보내도록 설정할 수 있습니다.
설정을 마치면 qjoypad를 트레이에서 실행해 프로파일 간 전환이 가능합니다.
xpad를 영구 비활성화하는 법
한 번만 rmmod로 언로드하는 대신 부팅 시 xpad가 로드되지 않게 하려면 모듈 블랙리스트에 추가합니다.
# /etc/modprobe.d/blacklist-xpad.conf 파일 생성
sudo sh -c 'echo "blacklist xpad" > /etc/modprobe.d/blacklist-xpad.conf'
이후 필요하면 수동으로 xboxdrv를 시작하거나 systemd 단위로 자동 실행하도록 설정하세요.
xboxdrv를 systemd로 자동 실행하는 예
아래 예시는 부팅 시 자동으로 특정 장치에 xboxdrv를 띄우는 간단한 systemd 서비스입니다. 경로와 옵션은 환경에 맞게 조정하세요.
# /etc/systemd/system/xboxdrv.service
[Unit]
Description=xboxdrv service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/xboxdrv --daemon --silent --detach-kernel-driver
Restart=on-failure
[Install]
WantedBy=multi-user.target
서비스 등록 및 활성화:
sudo systemctl daemon-reload
sudo systemctl enable --now xboxdrv.service
주의: –daemon 옵션은 xboxdrv 버전 및 배포판에 따라 다르므로 매뉴얼을 확인하세요.
udev 규칙으로 특정 장치에 자동 동작 설정
특정 USB 게임패드가 연결될 때 자동으로 스크립트를 트리거하고 싶다면 udev 규칙을 사용하세요. 예시는 제조사 ID와 제품 ID를 알 때 유용합니다.
# /etc/udev/rules.d/99-gamepad.rules
ACTION=="add", ATTRS{idVendor}=="045e", ATTRS{idProduct}=="028e", RUN+="/usr/local/bin/start-xboxdrv.sh"
start-xboxdrv.sh 내부에서 필요한 언로드/실행 명령을 작성합니다. 스크립트에 실행 권한을 주세요.
문제 해결 체크리스트
- 장치가 인식되지 않음: lsusb로 USB 연결 확인, dmesg에서 커널 로그 검사.
- LED가 깜빡임 또는 무한 루프: xpad 모듈과 충돌 가능성, rmmod xpad 후 xboxdrv로 시도.
- 축이 중앙에서 벗어나 있음: jstest-gtk로 보정 수행.
- 버튼 매핑이 다름: qjoypad의 Quick Set 또는 jstest-gtk의 Mapping 사용.
- xboxdrv가 실행되지 않음: 권한 문제, 모듈 충돌, 또는 잘못된 옵션 확인.
언제 대체 드라이버가 실패하는가
- 최신 컨트롤러나 비표준 장치(특수 RGB, 진동 제어 등)는 사용자 공간 드라이버로도 완전 지원이 어려울 수 있습니다.
- 배포판의 커널이 매우 최신이면 커널 자체의 드라이버가 더 안정적일 수 있습니다. 먼저 기본 드라이버를 테스트하세요.
대안 접근법 비교
- 커널 xpad: 유지보수와 성능 측면에서 장점, 설정 옵션 적음.
- xboxdrv: 강력한 매핑·교정 기능, 사용자 공간에서 유연하게 동작.
- Steam Input: 게임별 매핑이 가능하고 Steam 런처 안에서 작동하므로 게임 단위로 맞춤 설정을 원할 때 추천.
간단 체크리스트 역할별
- 게이머:
- jstest-gtk로 보정 확인
- qjoypad로 자주 쓰는 키 매핑 저장
- 트레이에서 프로파일 전환
- 시스템 관리자:
- /etc/modprobe.d에 블랙리스트 추가
- systemd 서비스로 자동화
- udev 규칙으로 장치 식별 자동화
- 개발자/테스터:
- dmesg와 /var/log/syslog에서 장치 로그 수집
- 재현 가능한 테스트 케이스 정리
테스트 케이스 예시
- 연결 테스트: USB 연결 후 lsusb 출력에 장치가 있는지 확인.
- 입력 테스트: jstest-gtk에서 모든 버튼과 축의 값이 변화하는지 확인.
- 매핑 테스트: qjoypad 프로파일을 적용한 뒤 게임에서 키 입력이 기대대로 동작하는지 검증.
- 내구성 테스트: 30분간 연속 플레이 중 드라이버 충돌이나 LED 이상 여부 확인.
1줄 용어집
- 축(axis): 아날로그 스틱의 연속적인 위치 값.
- 매핑(mapping): 한 입력을 다른 이벤트(키/마우스)로 변환하는 작업.
- 언로드(unload): 커널 모듈을 시스템에서 제거하는 행위.
요약
- 커널 xpad가 기본적으로 동작하지만, 문제 발생 시 xboxdrv 같은 사용자 공간 드라이버로 대체하면 더 많은 구성 옵션을 얻을 수 있습니다.
- jstest-gtk로 보정하고 qjoypad로 키/마우스 매핑을 하면 게임별로 유연한 입력 구성이 가능합니다.
- 영구 비활성화는 modprobe 블랙리스트, 자동 실행은 systemd 서비스나 udev 규칙으로 구현하세요.
중요: 시스템 변경(모듈 블랙리스트, PPA 추가, systemd 서비스 생성 등)은 관리자 권한과 충분한 이해 후에 수행하세요. 문제가 발생하면 원래 상태로 되돌릴 수 있도록 변경 전 백업을 권장합니다.