web-dev-qa-db-ja.com

ps / 2-> usbキーボードをLinuxに接続しますか?

私は、DIN-> ps/2アダプターを介してドッキングステーションのps/2-> usbアダプターに接続された、素敵な古代の人間工学に基づいたキーボード(SK-6000という名前はありません)を持っています。 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はこれを表示します(1行目と異なる入力番号を除いて、起動時にすでに入力されています)。

[ 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
Daniel

ここで解決策: https://askubuntu.com/questions/48792/how-to-enable-an-extern-keyboard-using-ps2-to-usb-adapter-on-a-notebook

このアダプタには2種類あります。1つはプラグを別のプラグに変更するだけで、もう1つは信号を処理します。

1
emilio

私も同じ問題に直面していました。

解決策(根本的な原因はわかりませんが、これは私にとってはうまくいきました):

  1. PS2からUSBをラップトップから取り外します。
  2. キーボードとマウスを取り外します。
  3. PS2-to-USBをラップトップに接続し直してから、キーボードとマウスを接続するだけです。動作を開始します。根本的な原因は不明です。
0
pushkarajthorat