kbdmux disabled --> no useable keyboard?!

Luis P. Mendes luislupe at gmx.com
Fri Feb 19 16:18:11 UTC 2016


On 2016.02.18 01:10:23 +0100, Polytropon wrote:
> On Wed, 17 Feb 2016 16:44:14 +0000, Luis P. Mendes wrote:
> > (Due to change of hardware and OS I lost the original messages, but
> > will paste the context)
> > 
> > On 2015.11.25 Polytropon wrote:
> > > On Tue, 24 Nov 2015 23:23:56 +0000, Luis P. Mendes wrote:
> > > >   Hi,
> > > >
> > > >   I'm setting up a multiseat workstation, where two users, with two
> > > >   monitors, two keyboards, two mice and two X sessions can be
> > > >   connected to the same computer at the same time.
> > > >
> > > >   For this to happen, one of the things that is necessary to do is to
> > > >   disable kbdmux in order for the two keyboards to be considered
> > > >   independent.
> > > >
> > > >   In the past, I've accomplished this with syscon, which had other
> > > >   problems.  But now with vt, when I disable kbdmux either on
> > > >   /boot/device.hints or in /boot/loader.conf with:
> > > >     hint.kbdmux.0.disabled="1"
> > > >
> > > >   No keys are recognized by the OS, although dmesg seems to know about
> > > >   the existence of the USB keyboard.
> > >
> > > You need to manually transfer the control of one keyboard to the
> > > other - from the "active" to the "inactive" one (to become the
> > > "active" one). Use the kbdcontrol program to do this, "man kbdcontrol"
> > > has more information about the -k option.
> > >
> > > This of course only works when kbdmux is disabled.
> > 
> > Only now, could I return to this project.
> > 
> > The steps I've taken:
> > 1. Have an USB keyboard attached to the motherboard.  No serial keyboard used.
> 
> The AT keyboard isn't a typical serial keyboard. A Sun keyboard is. ;-)

Ok, always learning :-) 


> > 2. In /boot/loader.conf, have these lines added:
> >     ukbd_load="YES"
> >     hint.kbdmux.0.disabled="1"
> >     hint.atkbd.0.disabled="1"
> >     hint.atkbdc.0.disabled="1"
> 
> I don't know if disabling the AT keyboard controller is useful here.
> If no keyboard is attached, the device will stay present. But if an
> USB keyboard is being used anyway, this should not matter.

Well, just in case, I removed the two *atk* lines from
/boot/loader.conf.  The USB keyboard is still not useable.

> > 3. In /etc/rc.conf.local:
> >     kbdcontrol -k /dev/ukbd0 < /dev/console
> 
> That should go to /etc/rc.local. Note that /etc/rc.conf.local is a
> configuration file (in the style of /etc/rc.conf) that's being sourced
> additionally; see "man rc" and "man rc.conf" for details.

I've read it before and from what I understand /etc/rc.conf.local is
meant for local configurations, instead of global configurations that
should be placed in /etc/rc.conf.  Could see no problem in placing the
above line in /etc/rc.conf.local, but moved it to /etc/rc.conf anyway.


> > 4. In /var/log/messages, there are these lines:
> >     kernel: ukbd0: <USB Keyboard> on usbus0
> >     kernel: kbd0 at ukbd0
> > 
> > 5. # ll /dev/uk*
> >      crw-------  1 root  wheel  0x7f 15 Fev 22:39 /dev/ukbd0
> > 
> > 6. # ls -l /dev/kb*
> >      lrwxr-xr-x  1 root  wheel  5 15 Fev 22:39 /dev/kbd0 -> ukbd0
> 
> For comparison: With an AT and a USB keyboard both operational,
> the following results will be present:
> 
> % ll /dev/*kbd*
> crw-------  1 root  wheel    0,  55 2016-02-17 19:30:58 /dev/atkbd0
> lrwxr-xr-x  1 root  wheel         6 2016-02-17 19:30:58 /dev/kbd0@ -> atkbd0
> lrwxr-xr-x  1 root  wheel         7 2016-02-17 19:30:58 /dev/kbd1@ -> kbdmux0
> lrwxr-xr-x  1 root  wheel         5 2016-02-17 19:31:10 /dev/kbd2@ -> ukbd0
> crw-------  1 root  wheel    0,  10 2016-02-17 19:30:58 /dev/kbdmux0
> crw-------  1 root  wheel    0, 150 2016-02-17 19:31:10 /dev/ukbd0
> 
> In this case, kbdmux is active. If it was not, the both keyboards
> should be identified as kbd0 (atkbd0) and kbd1 (ukbd0).

Mine (after commenting the two atk lines in /boot/loader.conf): 
# ll /dev/*kbd*
crw-------  1 root  wheel  0x34 18 Fev 14:34 /dev/atkbd0
lrwxr-xr-x  1 root  wheel     6 18 Fev 14:34 /dev/kbd0@ -> atkbd0
lrwxr-xr-x  1 root  wheel     5 18 Fev 14:34 /dev/kbd1@ -> ukbd0
crw-------  1 root  wheel  0x81 18 Fev 14:34 /dev/ukbd0



> As you can see from your kernel message, the device has been picked
> up and recognized correctly, and the required device links have been
> established.

Got some more information from /var/log/messages:
# egrep -i -e 'kbd|keyb' messages
Feb 18 14:34:58 leao kernel: module_register_init: MOD_LOAD (kbdmux,
0xffffffff805d4070, 0) error 6
Feb 18 14:34:58 leao kernel: atkbdc0: <Keyboard controller (i8042)>
at port 0x60,0x64 on isa0
Feb 18 14:34:58 leao kernel: atkbd0: <AT Keyboard> irq 1 on atkbdc0
Feb 18 14:34:58 leao kernel: kbd0 at atkbd0
Feb 18 14:34:58 leao kernel: atkbd0: [GIANT-LOCKED]
Feb 18 14:34:58 leao kernel: ukbd0: <USB Keyboard> on usbus0
Feb 18 14:34:58 leao kernel: kbd1 at ukbd0
Feb 18 14:34:58 leao kernel: uhid0: <USB Keyboard> on usbus0

It seems there's an error 6 loading kbdmux...
My FreeBSD version is
# uname -a
FreeBSD leao 10.3-BETA1 FreeBSD 10.3-BETA1 #0 r295321: Fri Feb  5
17:02:27 WET 2016 


> > But I can't type anything in the (virtual) console.  I'm not
> > considering X yet.
> 
> And you are _totally sure_ the keyboard works?
Completely sure, when these setting are not in place, I can use the
keyboard.  And with the settings, I can type my GELI password on boot
and choose from the boot menu.


> > I don't understand what exactly is meant as example in the manual of
> > kbdcontrol, so cannot find what is wrong with this.
> > Would appreciate some help on this.
> 
> You have been using the correct command for switching to a specific
> keyboard (as quoted above).

This is the only thing keeping me from using my workstation the way I
need.  I hope there's some fix to this.
Thanks for the ongoing help Polytropon!  Hope that you or somebody
else can point me to the right correction.


Luis


More information about the freebsd-questions mailing list