Touchpad doesn't work

Hi guys,

We have just bought a sta-RKCONS1708K. After we install it into our linux machine, the touchpad doesn’t work. The keyboard works fine. The linux OS is RedHat Linux 5.0. We need your help urgently as the machine is installed on the ship and the ship will sail soon.

Thank you
Regards
Eric

RedHat Linux 5.0 – released 1997, running kernel 2.0.32, EOL
RedHat Enterprise Linux 5.0 – released 2007, running kernel 2.6.18, EOL

Either way, I would suggest upgrading the Linux kernel. (As in download and build your own kernel) As a first test there, you might try getting a live distribution and seeing if that can see the touchpad.

If your Linux is more recent, maybe it is just a matter of installed drivers. I’m not sure what this driver would be. (Mine is i2c_hid_acpi, which is very unlikely to be yours.) (Again, a live distribution might help.)

Alternatively, maybe it is disabled. You might try xinput list to see what the X server sees as an input devices. This command can disable and enable specific devices as well.

Thank you very much for your reply. I have used the command xinput to list all the input devices I have, I didn’t find any touchpad info, could you please advise where should I go from here? Change OS is out of question as there are so many other software running in this Linux box.
Regards
Eric
Here is the output from xinput --list --long:
⎡ Virtual core pointer id=2 [master pointer (3)]
Reporting 3 classes:
Class originated from: 9. Type: XIButtonClass
Buttons supported: 10
Button labels: “Button Left” “Button Middle” “Button Right” “Button Wheel Up” “Button Wheel Down” “Button Horiz Wheel Left” “Button Horiz Wheel Right” None None None
Button state:
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative

⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
Reporting 3 classes:
Class originated from: 4. Type: XIButtonClass
Buttons supported: 10
Button labels: “Button Left” “Button Middle” “Button Right” “Button Wheel Up” “Button Wheel Down” “Button Horiz Wheel Left” “Button Horiz Wheel Right” None None None
Button state:
Class originated from: 4. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 0 units/m
Mode: relative
Class originated from: 4. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 0 units/m
Mode: relative

⎜ ↳ Macintosh mouse button emulation id=8 [slave pointer (2)]
Reporting 3 classes:
Class originated from: 8. Type: XIButtonClass
Buttons supported: 5
Button labels: “Button Left” “Button Middle” “Button Right” “Button Wheel Up” “Button Wheel Down”
Button state:
Class originated from: 8. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 8. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative

⎜ ↳ PTC HID PS/2 Keyboard - PS/2 Mouse id=10 [slave pointer (2)]
Reporting 3 classes:
Class originated from: 10. Type: XIButtonClass
Buttons supported: 7
Button labels: “Button Left” “Button Middle” “Button Right” “Button Wheel Up” “Button Wheel Down” “Button Horiz Wheel Left” “Button Horiz Wheel Right”
Button state:
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative

⎜ ↳ PixArt USB Optical Mouse id=9 [slave pointer (2)]
Reporting 3 classes:
Class originated from: 9. Type: XIButtonClass
Buttons supported: 7
Button labels: “Button Left” “Button Middle” “Button Right” “Button Wheel Up” “Button Wheel Down” “Button Horiz Wheel Left” “Button Horiz Wheel Right”
Button state:
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative

⎣ Virtual core keyboard id=3 [master keyboard (2)]
Reporting 1 classes:
Class originated from: 6. Type: XIKeyClass
Keycodes supported: 248

↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
Reporting 1 classes:
	Class originated from: 5. Type: XIKeyClass
	Keycodes supported: 248

↳ PTC HID PS/2 Keyboard - PS/2 Mouse      	id=6	[slave  keyboard (3)]
Reporting 1 classes:
	Class originated from: 6. Type: XIKeyClass
	Keycodes supported: 248

↳ Power Button                            	id=7	[slave  keyboard (3)]
Reporting 1 classes:
	Class originated from: 7. Type: XIKeyClass
	Keycodes supported: 248

OK. I would start with lsusb and lsinput. Run them with the device connected, and then again with device disconnected (as in unplug the USB cable). Then compare the results.

I suspect lsusb will see a USB hub disappear, and that hub will probably have other devices attached. Don’t add parameters to lsusb until you know which entries to look at. Once you do (and have it attached) use either -s or -d to select it, and -v for details. You should find Interface Descriptors with entries like:

   bInterfaceClass         3 Human Interface Device
   bInterfaceSubClass      1 Boot Interface Subclass
   bInterfaceProtocol      1 Keyboard

and

   bInterfaceClass         3 Human Interface Device
   bInterfaceSubClass      1 Boot Interface Subclass
   bInterfaceProtocol      2 Mouse

This basically proves that the device is recognized as being connected.


I would also expect several devices to disappear on lsinput, but that can get a tad hairy, as Linux input devices can be a bit weird. In this case, you should look for EV_REL (or maybe EV_ABS) in the “bits ev” line.

If you find this, I think it means you have the pointer device. If this is the case, maybe you need to restart or maybe even reconfigure the X Server.


You might want to ensure that module usbhid is installed or built-in (check /sys/module/usbhid/ existence).

I would also want to question if you need mouse access to a rack-mounted linux box. I would expect you could remote access (either via X and SSH, or via VNC) any GUI applications.

You might also see if plugging in a mouse to the back of the RKCONS1708K works. (Admittedly this might not be a good long-term solution, but it might be a good data point.)


Finally, if you post pasted text, add a space at the start of each line, so it is quoted.

Hi guys,
I have tried to use “lsusb” to do the basic check. The keyboard is indeed connected to the Linux machine and I can type something. But there is no reaction to the touchpad. I have checked the version in lab and in the field, both are exactly the same version, but the touchpad works fine in the lab before I install it in to the field. I really have no idea where to go. I have checked the another Linux box where KVM works fine. Two KVM are different version I guess, the output from the command “lsusb -d -v” are quite different. Could you please help me?
Now I attach the output from “lsusb -d -v” from the Linux box where KVM doesn’t work.
Regards
Eric
Here are the output text from “lsusb -d -v”:

Bus 001 Device 025: ID 04b4:2020 Cypress Semiconductor Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.01
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x04b4 Cypress Semiconductor Corp.
idProduct 0x2020
bcdDevice 0.01
iManufacturer 1
iProduct 2 HID PS/2 Keyboard - PS/2 Mouse
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 59
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 4 HID Keyboard / Mouse
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 5 HID Keyboard
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.00
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 63
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 6 HID Mouse
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.00
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 52
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 0x0004 1x 4 bytes
bInterval 10
Device Status: 0x0000
(Bus Powered)

This is the output from “lsusb -d -v” on the Linux box where the kvm works fine:

Bus 001 Device 003: ID 04b4:6560 Cypress Semiconductor Corp. CY7C65640 USB-2.0 “TetraHub”
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 2 TT per port
bMaxPacketSize0 64
idVendor 0x04b4 Cypress Semiconductor Corp.
idProduct 0x6560 CY7C65640 USB-2.0 “TetraHub”
bcdDevice 0.0b
iManufacturer 0
iProduct 0
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 41
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 1 Single TT
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0001 1x 1 bytes
bInterval 12
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 9 Hub
bInterfaceSubClass 0 Unused
bInterfaceProtocol 2 TT per port
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0001 1x 1 bytes
bInterval 12
Hub Descriptor:
bLength 9
bDescriptorType 41
nNbrPorts 4
wHubCharacteristic 0x0089
Per-port power switching
Per-port overcurrent protection
TT think time 8 FS bits
Port indicators
bPwrOn2PwrGood 50 * 2 milli seconds
bHubContrCurrent 100 milli Ampere
DeviceRemovable 0x00
PortPwrCtrlMask 0xff
Hub Port Status:
Port 1: 0000.0100 power
Port 2: 0000.0100 power
Port 3: 0000.0100 power
Port 4: 0000.0100 power
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed (or root) hub
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0001
Self Powered

OK. This means that your Linux box sees the keyboard/mouse device.

What about lsinput and /sys/module/usbhid/ ? In lsinput, look for a device with “HID PS/2 Keyboard - PS/2 Mouse” in the “name” field. You might also try input-events passing it the number of the event device found, and trying to produce mouse events while it runs. On my system, lsinput and input-events are part of the input-utils package.

As a sample of what a mouse might produce (from a single press of a button):

$ input-events 9
/dev/input/event9
   bustype : BUS_USB
   vendor  : 0x4f3
   product : 0x235
   version : 273
   name    : "OM"
   phys    : "usb-0000:00:14.0-1.3.4/input0"
   uniq    : ""
   bits ev : (null) (null) (null) (null)

waiting for events
16:32:32.085369: (null) ??? 589825
16:32:32.085369: (null) ??? (0x110) pressed
16:32:32.085369: (null) code=0 value=0
16:32:32.173347: (null) ??? 589825
16:32:32.173347: (null) ??? (0x110) released
16:32:32.173347: (null) code=0 value=0
timeout, quitting
$

And please indent (4 spaces required on this platform) to preserve formatting!

An odd thought: Particularly old X servers were not good at dynamically adding input devices. You might actually need to update it’s configuration file. If so, I would install “gpm” and configure to use that. (This would also get you mouse usage on the console.)

There are no lsinput and input-events commands. I have tried to download input-utils package, but I can’t find 32 bit version. The computer is offline, it can’t connected to internet or it is not allowed to connect to input. Are there other ways to trouble-shot the issue?
Regards
Eric

A few questions:

  1. What kernel are you running? (uname -srvm or uname -a [and remove your hostname])
  2. Are you using X? If so, which version? If not, what are you using that you expect a mouse to work with?
  3. Are you using gpm? If so, which version, and does the mouse work on the console? If not, can you install it?
  4. Do you have directory /sys ?
  5. Do you need a mouse on this Linux machine? (rack Linux boxes are typically servers.)

I’ve managed to install that, under qemu. The mouse is OK there, but isn’t USB.