題 將ps / 2-> usb鍵盤連接到linux?


我有一個可愛的古老人體工學鍵盤(沒有名稱SK - 6000)通過DIN-> ps / 2適配器連接到我的擴展塢的ps / 2-> usb適配器。在Grub之後它停止工作。它需要暫停和喚醒,或者在Linux運行時重新插入它以使其工作。沒有額外的內核模塊為此加載。當它工作,我重新啟動沒有斷電,它會立即工作。

即使它確實如此  工作,它是可見的(lsusb設備數量不同但輸出是否相同,無論是否工作):

$ lsusb -v -s 001:006

Bus 001 Device 006: ID 0a81:0205 Chesen Electronics Corp. PS/2 Keyboard+Mouse Adapter
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x0a81 Chesen Electronics Corp.
  idProduct          0x0205 PS/2 Keyboard+Mouse Adapter
  bcdDevice            0.10
  iManufacturer           1 CHESEN
  iProduct                2 PS2 to USB Converter
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
bLength                 9
bDescriptorType         2
wTotalLength           59
bNumInterfaces          2
bConfigurationValue     1
iConfiguration          2 PS2 to USB Converter
bmAttributes         0xa0
  (Bus Powered)
  Remote Wakeup
MaxPower              100mA
Interface Descriptor:
  bLength                 9
  bDescriptorType         4
  bInterfaceNumber        0
  bAlternateSetting       0
  bNumEndpoints           1
  bInterfaceClass         3 Human Interface Device
  bInterfaceSubClass      1 Boot Interface Subclass
  bInterfaceProtocol      1 Keyboard
  iInterface              0 
    HID Device Descriptor:
      bLength                 9
      bDescriptorType        33
      bcdHID               1.10
      bCountryCode            0 Not supported
      bNumDescriptors         1
      bDescriptorType        34 Report
      wDescriptorLength      64
     Report Descriptors: 
       ** UNAVAILABLE **
  Endpoint Descriptor:
    bLength                 7
    bDescriptorType         5
    bEndpointAddress     0x81  EP 1 IN
    bmAttributes            3
      Transfer Type            Interrupt
      Synch Type               None
      Usage Type               Data
    wMaxPacketSize     0x0008  1x 8 bytes
    bInterval              10
Interface Descriptor:
  bLength                 9
  bDescriptorType         4
  bInterfaceNumber        1
  bAlternateSetting       0
  bNumEndpoints           1
  bInterfaceClass         3 Human Interface Device
  bInterfaceSubClass      1 Boot Interface Subclass
  bInterfaceProtocol      2 Mouse
  iInterface              0 
    HID Device Descriptor:
      bLength                 9
      bDescriptorType        33
      bcdHID               1.10
      bCountryCode            0 Not supported
      bNumDescriptors         1
      bDescriptorType        34 Report
      wDescriptorLength     148
     Report Descriptors: 
       ** UNAVAILABLE **
  Endpoint Descriptor:
    bLength                 7
    bDescriptorType         5
    bEndpointAddress     0x82  EP 2 IN
    bmAttributes            3
      Transfer Type            Interrupt
      Synch Type               None
      Usage Type               Data
    wMaxPacketSize     0x0008  1x 8 bytes
    bInterval              10
Device Status:     0x0000
  (Bus Powered)


$ ll -R /sys/bus/hid/drivers/
/sys/bus/hid/drivers/:
total 0
drwxr-xr-x 2 root root 0 Jul  8  2012 generic-usb/

/sys/bus/hid/drivers/generic-usb:
total 0
lrwxrwxrwx 1 root root    0 Jul  7 23:33 0003:046D:C03D.0003 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.2/1-1.2.2:1.0/0003:046D:C03D.0003/
lrwxrwxrwx 1 root root    0 Jul  7 23:33 0003:0A81:0205.0001 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/0003:0A81:0205.0001/
lrwxrwxrwx 1 root root    0 Jul  7 23:33 0003:0A81:0205.0002 -> ../../../../devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.1/0003:0A81:0205.0002/
--w------- 1 root root 4096 Jul  7 23:32 bind
lrwxrwxrwx 1 root root    0 Jul  7 23:33 module -> ../../../../module/usbhid/
--w------- 1 root root 4096 Jul  7 23:32 new_id
--w------- 1 root root 4096 Jul  8  2012 uevent
--w------- 1 root root 4096 Jul  7 23:32 unbind

當重新插入時,dmesg顯示這個(除了第一行和啟動時已經出現的不同輸入數字):

[ 1583.295385] usb 1-1.2.1: new low-speed USB device number 6 using ehci_hcd
[ 1583.446514] input: CHESEN PS2 to USB Converter as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/input/input17
[ 1583.446817] generic-usb 0003:0A81:0205.0001: input,hidraw0: USB HID v1.10 Keyboard [CHESEN PS2 to USB Converter] on usb-0000:00:1a.0-1.2.1/input0
[ 1583.454764] input: CHESEN PS2 to USB Converter as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.1/input/input18
[ 1583.455534] generic-usb 0003:0A81:0205.0002: input,hidraw1: USB HID v1.10 Mouse [CHESEN PS2 to USB Converter] on usb-0000:00:1a.0-1.2.1/input1
[ 1583.455578] usbcore: registered new interface driver usbhid
[ 1583.455584] usbhid: USB HID core driver

所以我試過了

$ sudo udevadm test /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/0003:0A81:0205.0001/hidraw/hidraw0
run_command: calling: test
adm_test: version 175
This program is for debugging only, it does not run any program,
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

parse_file: reading '/lib/udev/rules.d/40-crda.rules' as rules file
parse_file: reading '/lib/udev/rules.d/40-fuse.rules' as rules file
...
parse_file: reading '/lib/udev/rules.d/40-usb-media-players.rules' as rules file
parse_file: reading '/lib/udev/rules.d/40-usb_modeswitch.rules' as rules file
...
parse_file: reading '/lib/udev/rules.d/42-qemu-usb.rules' as rules file
...
parse_file: reading '/lib/udev/rules.d/69-cd-sensors.rules' as rules file
add_rule: IMPORT found builtin 'usb_id', replacing /lib/udev/rules.d/69-cd-sensors.rules:76
...
parse_file: reading '/lib/udev/rules.d/77-mm-usb-device-blacklist.rules' as rules file
...
parse_file: reading '/lib/udev/rules.d/85-usbmuxd.rules' as rules file
...
parse_file: reading '/lib/udev/rules.d/95-upower-hid.rules' as rules file
parse_file: reading '/lib/udev/rules.d/95-upower-wup.rules' as rules file
parse_file: reading '/lib/udev/rules.d/97-bluetooth-hid2hci.rules' as rules file
udev_rules_new: rules use 271500 bytes tokens (22625 * 12 bytes), 44331 bytes buffer
udev_rules_new: temporary index used 76320 bytes (3816 * 20 bytes)
udev_device_new_from_syspath: device 0x7f78a5e4d2d0 has devpath '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/0003:0A81:0205.0001/hidraw/hidraw0'
udev_device_new_from_syspath: device 0x7f78a5e5f820 has devpath '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/0003:0A81:0205.0001/hidraw/hidraw0'
udev_device_read_db: device 0x7f78a5e5f820 filled with db file data
udev_device_new_from_syspath: device 0x7f78a5e60270 has devpath '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/0003:0A81:0205.0001'
udev_device_new_from_syspath: device 0x7f78a5e609c0 has devpath '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0'
udev_device_new_from_syspath: device 0x7f78a5e61160 has devpath '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1'
udev_device_new_from_syspath: device 0x7f78a5e61960 has devpath '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2'
udev_device_new_from_syspath: device 0x7f78a5e62150 has devpath '/devices/pci0000:00/0000:00:1a.0/usb1/1-1'
udev_device_new_from_syspath: device 0x7f78a5e62940 has devpath '/devices/pci0000:00/0000:00:1a.0/usb1'
udev_device_new_from_syspath: device 0x7f78a5e630f0 has devpath '/devices/pci0000:00/0000:00:1a.0'
udev_device_new_from_syspath: device 0x7f78a5e638a0 has devpath '/devices/pci0000:00'
udev_event_execute_rules: no node name set, will use kernel supplied name 'hidraw0'
udev_node_add: creating device node '/dev/hidraw0', devnum=251:0, mode=0600, uid=0, gid=0
udev_node_mknod: preserve file '/dev/hidraw0', because it has correct dev_t
udev_node_mknod: preserve permissions /dev/hidraw0, 020600, uid=0, gid=0
node_symlink: preserve already existing symlink '/dev/char/251:0' to '../hidraw0'
udev_device_update_db: created empty file '/run/udev/data/c251:0' for '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/0003:0A81:0205.0001/hidraw/hidraw0'
ACTION=add
DEVNAME=/dev/hidraw0
DEVPATH=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/0003:0A81:0205.0001/hidraw/hidraw0
MAJOR=251
MINOR=0
SUBSYSTEM=hidraw
UDEV_LOG=6
USEC_INITIALIZED=969079051

後面的線聽起來像它已經存在。這些都沒有喚醒鍵盤:

$ sudo udevadm trigger --verbose --sysname-match=usb*
/sys/devices/pci0000:00/0000:00:1a.0/usb1
/sys/devices/pci0000:00/0000:00:1a.0/usbmon/usbmon1
/sys/devices/pci0000:00/0000:00:1d.0/usb2
/sys/devices/pci0000:00/0000:00:1d.0/usbmon/usbmon2
/sys/devices/virtual/usbmon/usbmon0

$ sudo udevadm trigger --verbose --sysname-match=hidraw0
/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/0003:0A81:0205.0001/hidraw/hidraw0

$ sudo udevadm trigger

我也試過這個無濟於事:

# echo -n 0003:0A81:0205.0001 > /sys/bus/hid/drivers/generic-usb/bind
ksh: echo: write to 1 failed [No such device]

# echo -n 0003:0A81:0205.0001 > /sys/bus/hid/drivers/generic-usb/unbind

# echo -n 0003:0A81:0205.0001 > /sys/bus/hid/drivers/generic-usb/bind

# echo usb1 >/sys/bus/usb/drivers/usb/unbind

# echo usb1 >/sys/bus/usb/drivers/usb/bind

我還應該嘗試通過發出命令來獲得與重新插入或暫停相同的結果?


3
2017-07-07 22:31


起源


你需要發布這個問題 serverfault.com
可能不是,但您可能檢查的一件事是PS / 2適配器的電流額定值。你可以通過運行看到這一點 lsusb -v 並尋找合適設備的“MaxPower”。我認為PS / 2的最大電流應該是275 mA。 USB可以是0到500 mA,具體取決於適配器要求的配置。哦,你可能嘗試的另一件事是將它插入一個自供電的集線器,看看它是否重現。 - Stephen Niedzielski
只是為了完整性相同 - 肥胖的舊插頭稱為DIN9。從我的舊xt tho開始,我沒見過一個; p - Journeyman Geek♦
2012年,桌面linux的一年。 - Shiki
哦,這不是linux的錯。它很可能只是令人費解的設置。我似乎認為啟動電壓在這裡是錯誤的,但那隻是毫無根據的直覺。 - Journeyman Geek♦


答案:


這裡的解決方案: https://askubuntu.com/questions/48792/how-to-enable-an-extern-keyboard-using-ps2-to-usb-adapter-on-a-notebook

有兩種這種適配器: 第一個只是換一個插頭換另一個, 另一個用於信號。


1
2018-01-14 16:36



歡迎來到超級用戶!雖然理論上這可以回答這個問題, 這會更好 在這裡包括答案的基本部分,並提供參考鏈接。 - Canadian Luke


我也面臨同樣的問題。

解決方案(不確定根本原因,但這對我有用):

  1. 從筆記本電腦上拆下PS2到USB。
  2. 拆下鍵盤和鼠標。
  3. 只需將PS2-to-USB連接到筆記本電腦,然後將鍵盤和鼠標插入即可。開始工作。根本原因尚不清楚。

0
2017-07-04 07:50