xorg-server can't load usb keyboards via config/hal

Robert Noland rnoland at FreeBSD.org
Mon Mar 2 19:17:19 PST 2009


On Tue, 2009-03-03 at 01:39 +0100, Jose M Rodriguez wrote:
> >Submitter-Id:	current-users
> >Originator:	Jose M Rodriguez
> >Organization:	Redes JM
> >Confidential:	no
> >Synopsis:	xorg-server can't load usb keyboards via config/hal
> >Severity:	serious
> >Priority:	medium
> >Category:	ports
> >Class:		sw-bug
> >Release:	FreeBSD 7.1-RELEASE-p3 i386
> >Environment:
> System: FreeBSD hermes 7.1-RELEASE-p3 FreeBSD 7.1-RELEASE-p3 #0: Mon Mar 2 03:34:41 CET 2009 root at hermes:/usr/obj/usr/src/sys/HERMES i386
> 
> machine only with usb keyboard
> kernel build without atkbd / kbdmux devices
> 
> >Description:
> 	xorg-server can't load usb keyboards via config/hal.
> 	It fails at device open, as hal have a device key.
> 
> 	This is not noticeable in an stock system.
> 	The presence of an atkbd without a hal device key
> 	makes xorg-server load the module.
> 
> 	Seems that xorg-server keyboard is not device oriented
> 	and hal must not have a device key for usb keyboard 
> 
> >How-To-Repeat:
> 	You can see this on the Xorg logs.
> 	In systems without kernel atkbd device, xorg-server
> 	can't get a functional keyboad
> 
> >Fix:
> 	Don't add a device key for usb keyborads, as is done
> 	for at ones (PS/2)
> 
> 	- hf_device_set_input(device, "keyboard", devname);
> 	+ hf_device_set_input(device, "keyboard", NULL);
> 

This appears to be correct, though incomplete.  It doesn't address usb2,
but I fixed that up.

The keyboard driver does have the ability to open character devices, but
in our case syscons always takes control of the device nodes.  This will
likely also fix the cases where people set keyboard options in fdi files
on usb keyboards.

robert.

> --- pr.patch begins here ---
> --- sysutils/hal/files/patch-hald_freebsd_hf-usb.c.old	2009-03-02 15:34:52.000000000 +0100
> +++ sysutils/hal/files/patch-hald_freebsd_hf-usb.c	2009-03-02 04:27:23.000000000 +0100
> @@ -1,5 +1,5 @@
> ---- hald/freebsd/hf-usb.c.orig	2008-05-07 19:24:02.000000000 -0400
> -+++ hald/freebsd/hf-usb.c	2009-02-27 14:01:46.000000000 -0500
> +--- hald/freebsd/hf-usb.c.orig	2008-05-08 01:24:02.000000000 +0200
> ++++ hald/freebsd/hf-usb.c	2009-03-02 04:23:32.000000000 +0100
>  @@ -25,13 +25,18 @@
>   #  include <config.h>
>   #endif
> @@ -31,7 +31,7 @@
>   
>   typedef struct
>   {
> -@@ -231,7 +241,7 @@ hf_usb_get_full_config_descriptor (int f
> +@@ -231,7 +241,7 @@
>    * Adapted from usb_compute_udi() in linux2/physdev.c and
>    * usbclass_compute_udi() in linux2/classdev.c.
>    */
> @@ -40,7 +40,7 @@
>   hf_usb_device_compute_udi (HalDevice *device)
>   {
>     g_return_if_fail(HAL_IS_DEVICE(device));
> -@@ -250,12 +260,13 @@ hf_usb_device_compute_udi (HalDevice *de
> +@@ -250,12 +260,13 @@
>       hf_device_set_udi(device, "usb_device_%x_%x_%s",
>   		      hal_device_property_get_int(device, "usb_device.vendor_id"),
>   		      hal_device_property_get_int(device, "usb_device.product_id"),
> @@ -56,7 +56,16 @@
>   hf_usb_add_webcam_properties (HalDevice *device)
>   {
>     int unit;
> -@@ -575,6 +586,8 @@ hf_usb_probe_device (HalDevice *parent,
> +@@ -424,7 +435,7 @@
> +     hf_devtree_device_set_name(device, di->udi_devnames[0]);
> + 
> +   if ((devname = hf_usb_get_devname(di, "ukbd")))	/* USB keyboard */
> +-    hf_device_set_input(device, "keyboard", devname);
> ++    hf_device_set_input(device, "keyboard", NULL);
> +   else if ((devname = hf_usb_get_devname(di, "ums")))	/* USB mouse */
> +     hf_device_set_input(device, "mouse", devname);
> +   else if ((devname = hf_usb_get_devname(di, "uhid")))	/* UHID device */
> +@@ -575,6 +586,8 @@
>       {
>         if (hal_device_has_capability(device, "hiddev"))
>   	hf_runner_run_sync(device, 0, "hald-probe-hiddev", NULL);
> @@ -65,7 +74,7 @@
>   
>         hf_device_add(device);
>       }
> -@@ -633,9 +646,18 @@ hf_usb_privileged_init (void)
> +@@ -633,9 +646,18 @@
>   {
>     int i;
>   
> --- pr.patch ends here ---
> 
> 
> _______________________________________________
> freebsd-gnome at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-gnome
> To unsubscribe, send any mail to "freebsd-gnome-unsubscribe at freebsd.org"
-- 
Robert Noland <rnoland at FreeBSD.org>
FreeBSD
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/freebsd-gnome/attachments/20090303/06ad1c99/attachment.pgp


More information about the freebsd-gnome mailing list