打印

USB接口PS型手柄的驱动

USB接口PS型手柄的驱动

近日看见朋友买了一个USB接口的PS型手柄,就是市面上常见的十多元一个的那种,手感还不错,朋友买的这个牌子为WELCOM,个人推荐买北通(betop)的。我的北通手柄用了几年了,其中摔过很多次,外壳还安然无恙。
相信有不少朋友都使用这种手柄,一来价格便宜,二来手感好,三来按钮多,四来在WIN下安装非常方便,即插即用(就算是98也自带了驱动),不像并口型需要安装驱动那么麻烦
一直想在linux下面测试一下是否能够驱动这种手柄,于是向朋友借来测试一番,结论是:在linux下使用完全没问题
下面说说驱动这种手柄的方法:
系统:主板I815,MAGIC LINUX 1.1,内核是自行编译的2.6.2(没打任何补丁)
(如果你使用的是发行版自带的内核,那么以下的内核配置步骤可以忽略,因为发行版自带的内核往往已经将相关的功能编译成模块,你只需输入后面的模块加载命令即可)
在linux下驱动USB手柄,需要内核配置下面几项:
首先当然是手柄的支持
device drivers-input device support-joystick interface,选M或Y(本人选M),如果选M,则生成的模块名字为joydev
你可以从此项的说明里知道,此项能使/dev/input/jsX文件生效,从而允许应用程序通过/dev/input/jsX这个设备文件来使用你的手柄
device drivers-input device support-joysticks,选Y,此项是所有类型手柄的驱动,必须选中此项来支持你的各种手柄,包括串口型,并口型或USB口型
既然是USB手柄,当然需要启用USB端口和相关支持
device drivers-usb support-support for usb,选M或Y(本人选M),如果选M,则编译后生成模块usbcore,此项是usb设备的支持,不选它则无法驱动usb设备
device drivers-usb support-support for usb-uhci hcd(most intel and via)support,选M或Y(本人选M),编译后生成模块uhci-hcd,此项是绝大多数intel或via芯片组主板上usb接口的驱动,相当于主板usb口驱动,如果不选中,也无法驱动usb设备(如果你的主板芯片组不是intel或via的,譬如是sis的,则可能需要device drivers-usb support-support for usb-ohci hcd support这项的支持,生成模块的名字是ohci-hcd;如果你的usb接口是2.0型的,可能还需要device drivers-usb support-support for usb-ehci hcd(usb 2.0)support的支持,生成的模块名字是ehci-hcd)
device drivers-usb support-usb human interface device(full hid)support选M或Y(本人选M),生成的模块名字为hid
device drivers-usb support-hid input layer support,选Y
此两项是usb手柄,usb键盘,usb鼠标的支持,不选中这两项,则无法驱动usb型手柄

设置好上述内核配置后,重新编译安装内核或(和)模块(过程略,详细步骤详见"内核安装及升级"板块),启用新内核(或模块)后,打开一个终端,依次输入下面的命令:
modprobe joydev                #加载joydev模块,如果device drivers-input device support-joystick interface选M的话
modprobe usbcore        #加载usbcore模块,如果device drivers-usb support-support for usb选M的话
modprobe uhci-hcd        #加载uhci-hcd模块,如果device drivers-usb support-support for usb-uhci hcd(most intel and via)support选M的话
modprobe hid                #加载hid模块,如果device drivers-usb support-usb human interface device(full hid)support选M的话

(当然,如果前面的几项支持功能你全部选Y,则这些模块功能都已经编译进内核里,启动内核时就已经生效,上面的几个命令也就不用输入了)

再输入dmesg命令,你应该可以在最后几行看到类似如下的输出信息:
drivers/usb/core/usb.c: registered new driver usbfs
drivers/usb/core/usb.c: registered new driver hub
drivers/usb/core/usb.c: registered new driver hid
drivers/usb/input/hid-core.c: v2.0:USB HID core driver
drivers/usb/host/uhci-hcd.c: USB Universal Host Controller Interface driver v2.1
uhci_hcd 0000:00:1f.2: UHCI Host Controller
PCI: Setting latency timer of device 0000:00:1f.2 to 64
uhci_hcd 0000:00:1f.2: irq 5, io base 0000d000
uhci_hcd 0000:00:1f.2: new USB bus registered, assigned bus number 1
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
uhci_hcd 0000:00:1f.4: UHCI Host Controller
PCI: Setting latency timer of device 0000:00:1f.4 to 64
uhci_hcd 0000:00:1f.4: irq 3, io base 0000d400
uhci_hcd 0000:00:1f.4: new USB bus registered, assigned bus number 2
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
hub 1-0:1.0: new USB device on port 2, assigned address 2
input: USB HID v1.10 Joystick [GreenAsia Inc.    USB Joystick     ] on usb-0000:00:1f.2-2

最后一行信息表示USB手柄已经被正确识别出来并驱动成功,厂家牌子为GreenAsia Inc(??)
驱动后的手柄设备文件为/dev/input/jsX,如果你没有驱动其他手柄,那么就是/dev/input/js0,如果你驱动了其他手柄,占用了/dev/input/js0,那它就是/dev/input/js1(譬如我并口上也接有手柄,并且先驱动并口上的手柄,已经占用了/dev/input/js0,这个usb手柄驱动后占用的设备文件是/dev/input/js1),依次类推

如果你安装了joytest,那么可以通过joytest /dev/input/jsX这个命令来测试手柄,如果你没装joytest,也可以通过cat /dev/input/jsX来测试,输入命令后随便按几个按钮,应该可以看到屏幕输出一堆乱七八糟的信息

驱动成功后,你就可以在各种游戏里设置好此手柄的相应的设备文件来使用这个手柄了,譬如,我这里驱动后是/dev/input/js1,运行epsxe后,选菜单"config-ext game pad",选用ammoQ's padJoy Joy Device Driver这个手柄插件,点击"configure"按钮,在"device file"里填入/dev/input/js1,点"ok"后重新点击"configure"按钮,就可以设置手柄上的相应按钮功能了。
在2.4.x系列内核下驱动此类手柄的过程差不多,需要注意的是usb相关模块的名字和2.6.x不一致,留意一下内核配置里各项的帮助说明就行,这里就不多说了。
祝大家使用愉快!
(转贴请注明www.linuxfans.org,多谢!)
附件: 您所在的用户组无法下载或查看附件
http://llc.linuxsky.org

TOP

好像1.2p6下应该不需要编译内核的,不过好像你应该比较有时间了啊,呵呵。

TOP

[quote:ed7baf3eaf="sejishikong"]好像1.2p6下应该不需要编译内核的,不过好像你应该比较有时间了啊,呵呵。[/quote]

呵呵,其实我也没有重新编译内核,那些模块以前编译时就考虑到可能需要用usb手柄,预先编译好了
http://llc.linuxsky.org

TOP

可惜对北通野牛三无效
業精于勤,荒于嬉

TOP

[quote:f85183a1b1="KanKer"]可惜对北通野牛三无效[/quote]
呵呵,改天我弄一个再试试,成功的话再跟贴
http://llc.linuxsky.org

TOP

[quote:067c0c918b="llc"]呵呵,改天我弄一个再试试,成功的话再跟贴[/quote]

好啊。等你的好消息。我的野牛三都闲了2年了,没办法只好弄了个紫星2先玩着。
業精于勤,荒于嬉

TOP

想问一下,这个手柄的usb控制芯片是不是8866的?
我有一个usb接口的ps手柄转接器,用的就是8866的控制芯片,现在有很多usb的手柄都用的这个芯片,在win2k及以上的系统中可以不装驱动即插即用,在linux中可以识别出8866的芯片型号,但不能用.
MicroSoft = Micro$oft
Intel = In£el
windows = 晕倒死
voodoomaster = 巫毒教主

TOP

[quote:8b39962129="voodoomaster"]想问一下,这个手柄的usb控制芯片是不是8866的?
我有一个usb接口的ps手柄转接器,用的就是8866的控制芯片,现在有很多usb的手柄都用的这个芯片,在win2k及以上的系统中可以不装驱动即插即用,在linux中可以识别出8866的芯片型号,但不能用.[/quote]

应该不是,按它识别出来的信息,芯片应该是GreenAsia
http://llc.linuxsky.org

TOP

我现在用的就是 MP-8866 控制芯片的 PS>USB 转接器, PS 原装手柄
在 Mandrake 9.2 PowerPack 上能认出来,显示

input: USB HID v1.00 Joystick [js0] on usb-0000:00:1f.2-2
(大概就是这样)

设备号 /dev/input/js0

但是还没有找到软件测试,不知道能不能正常工作
另外,似乎与计算机所带的 USB 控制芯片有关。原来,在一块 USB 2.0 卡上就不能认出来
具体情况还要请大家协助测试

TOP