[Bug 274620] USB HID mouse not working
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 274620] USB HID mouse not working"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 21 Oct 2023 06:07:32 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=274620
Bug ID: 274620
Summary: USB HID mouse not working
Product: Base System
Version: 14.0-STABLE
Hardware: Any
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: usb
Assignee: usb@FreeBSD.org
Reporter: tamaru@psc.t.u-tokyo.ac.jp
I have ATEN IP-KVM products, and FreeBSD console K/B and mouse are provided as
(emulated) USB devices by KVM modules such as KA7188.
The keyboard part is detected as ukbd0 and is functional both on console and X.
However, uhid0 attaches to the mouse part and does not work on console nor X.
This is on FreeBSD 14.0-RC1 amd64.
From boot message:
ugen0.2: <Manufacturer KVM Adapter> at usbus0
ukbd0 on uhub0
ukbd0: <Manufacturer KVM Adapter, class 0/0, rev 1.10/1.00, addr 1> on usbus0
kbd2 at ukbd0
:
uhid0 on uhub0
uhid0: <Manufacturer KVM Adapter, class 0/0, rev 1.10/1.00, addr 1> on usbus0
# usbconfig -d 0.2 show_ifdrv
ugen0.2: <Manufacturer KVM Adapter> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps)
pwr=ON (100mA)
ugen0.2.0: ukbd0: <Manufacturer KVM Adapter, class 0/0, rev 1.10/1.00, addr 1>
ugen0.2.1: uhid0: <Manufacturer KVM Adapter, class 0/0, rev 1.10/1.00, addr 1>
I have ums.ko and hms.ko loaded.
from kldstat:
Id Refs Address Size Name
3 1 0xffffffff81f3d000 7ec8 ums.ko
5 1 0xffffffff8251c000 3c78 hms.ko
6 2 0xffffffff82520000 4e80 hidmap.ko
7 4 0xffffffff82525000 77c0 hidbus.ko
13 1 0xffffffff8308a000 3360 uhid.ko
14 1 0xffffffff8308e000 33c0 usbhid.ko
15 1 0xffffffff83092000 3360 wmt.ko
Just to be sure, I ran:
# hd < /dev/sysmouse
and moved my mouse around, but with no output.
Then, I tried uhidd from sysutils/uhidd
# uhidd -dmu /dev/ugen0.2
ugen0.2[1]-> Kernel driver is active
ugen0.2[1]-> kernel driver detached!
and ran hd and moved my mouse again:
# hd < /dev/sysmouse
00000000 87 7f 80 80 81 87 7f 80 80 81 87 7f 80 80 81 87 |................|
00000010 7f 80 80 81 87 7f 80 80 81 87 7f 80 80 81 87 7f |................|
00000020 80 80 81 87 7f 80 80 81 87 7f 80 80 81 87 7f 80 |................|
00000030 80 81 87 7f 80 80 81 87 7f 80 80 81 87 7f 80 80 |................|
00000040 81 87 7f 80 80 81 87 7f 80 80 81 87 7f 80 80 81 |................|
00000050 87 7f 80 80 81 87 7f 80 80 81 87 7f 80 80 81 87 |................|
00000060 7f 80 80 81 87 7f 80 80 81 87 7f 80 80 81 87 7f |................|
00000070 80 80 81 87 7f 80 80 81 87 7f 80 80 81 87 7f 80 |................|
^C
My mouse motion seemed to be recognized by uhidd,
but there is no mouse activity on the actual console,
with or without hd running.
I have enabled console mouse (I'm on ttyv0) by
# vidcontrol -m on < /dev/ttyv0
and the mouse pointer shows up, but no motion, and dissappears in a while (due
to lack of recognized mouse activity).
With uhidd enabled, I then enabled /dev/sysmouse to evdev.
# sysctl kern.evdev
kern.evdev.input.5.uniq:
kern.evdev.input.5.phys: ukbd0
kern.evdev.input.5.id: { bustype = 0x0003, vendor = 0x0557, product = 0x2310,
version = 0x0000 }
kern.evdev.input.5.name: Manufacturer KVM Adapter, class 0/0, rev 1.10/1.00,
addr 1
kern.evdev.input.4.uniq:
kern.evdev.input.4.phys: atkbd0
kern.evdev.input.4.id: { bustype = 0x0011, vendor = 0x0001, product = 0x0001,
version = 0x0000 }
kern.evdev.input.4.name: AT keyboard
kern.evdev.input.3.uniq:
kern.evdev.input.3.phys: acpi_button1
kern.evdev.input.3.id: { bustype = 0x0019, vendor = 0x0000, product = 0x0000,
version = 0x0001 }
kern.evdev.input.3.name: Power Button
kern.evdev.input.2.uniq:
kern.evdev.input.2.phys: acpi_button0
kern.evdev.input.2.id: { bustype = 0x0019, vendor = 0x0000, product = 0x0000,
version = 0x0001 }
kern.evdev.input.2.name: Sleep Button
kern.evdev.input.1.uniq:
kern.evdev.input.1.phys: sysmouse
kern.evdev.input.1.id: { bustype = 0x0006, vendor = 0x0000, product = 0x0000,
version = 0x0000 }
kern.evdev.input.1.name: System mouse
kern.evdev.input.0.uniq:
kern.evdev.input.0.phys: kbdmux0
kern.evdev.input.0.id: { bustype = 0x0006, vendor = 0x0000, product = 0x0000,
version = 0x0000 }
kern.evdev.input.0.name: System keyboard multiplexer
kern.evdev.sysmouse_t_axis: 0
kern.evdev.rcpt_mask: 12
# hd < /dev/input/event1
(no output despite mouse motion, as expected)
^C
# grep EVDEV_RCPT /sys/dev/evdev/evdev.h
#define EVDEV_RCPT_SYSMOUSE (1<<0)
#define EVDEV_RCPT_KBDMUX (1<<1)
#define EVDEV_RCPT_HW_MOUSE (1<<2)
#define EVDEV_RCPT_HW_KBD (1<<3)
# sysctl kern.evdev.rcpt_mask=9
kern.evdev.rcpt_mask: 12 -> 9
# hd < /dev/input/event1
00000000 27 db 32 65 00 00 00 00 5f b9 05 00 00 00 00 00 |'.2e...._.......|
00000010 02 00 00 00 df 07 00 00 27 db 32 65 00 00 00 00 |........'.2e....|
00000020 5f b9 05 00 00 00 00 00 02 00 01 00 b7 05 00 00 |_...............|
00000030 27 db 32 65 00 00 00 00 5f b9 05 00 00 00 00 00 |'.2e...._.......|
00000040 00 00 00 00 01 00 00 00 27 db 32 65 00 00 00 00 |........'.2e....|
00000050 61 07 06 00 00 00 00 00 02 00 00 00 af 07 00 00 |a...............|
00000060 27 db 32 65 00 00 00 00 61 07 06 00 00 00 00 00 |'.2e....a.......|
00000070 02 00 01 00 b7 05 00 00 27 db 32 65 00 00 00 00 |........'.2e....|
^C
and started X.
Now the mouse motion is recognized, but as soon as
I touched my mouse, the mouse cursor flew to right bottom corner
of the screen and got stuck there.
It seems as if the protocol format sending events to sysmouse
by uhidd mismatches with what is expected, both for console and X.
After a fresh reboot (to eliminate the effects by uhidd), I tried
# usbhidctl -f /dev/uhid0 -al
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_1=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_2=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_3=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_3.Generic_Desktop:Wheel=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Generic_Desktop:X=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Generic_Desktop:Y=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_1=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_2=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_3=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_3.Generic_Desktop:Wheel=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Generic_Desktop:X=2048
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Generic_Desktop:Y=1055
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_1=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_2=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_3=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_3.Generic_Desktop:Wheel=0
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Generic_Desktop:X=2035
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Generic_Desktop:Y=1055
^C
so uhid0 itself seemed to be working well.
After surfing the net for a very good while, I found,
https://github.com/jiixyj/evdevfbsd
https://lists.freebsd.org/pipermail/freebsd-x11/2017-March/018978.html
and gave it a try.
# kldload cuse
# ./evdevfbsd -c /dev/uhid0
input/event6: inp mou
input/event6
The console mouse still does not work
(but since the pointer does not disappear in a while and stays at the screen
center, I guess SOMETHING different from uhidd is passed to the console),
but X started to recognize this mouse correctly!
Many htanks to Jan Kokemueller!
So this is where I am.
The hardware is functional,
uhid can decode them correctly, and
evdevfbsd seems to recognize its protocols (at least for X),
but ums, hms (and uhidd) are not handling them correctly.
I assume it is best to have ums recognize this device correctly in the first
place. so this is a bug report for the system part of the FreeBSD, to ask for
an
update of the ums module.
And surely, if evdevfbsd can be made into a port and pkg,
it would help a lot to workaround the issue in the mean time.
Thank you.
--
You are receiving this mail because:
You are the assignee for the bug.