Re: Reasons for keeping sc(4) and libvgl ?
- In reply to: Warner Losh : "Re: Reasons for keeping sc(4) and libvgl ?"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 08 Jul 2022 15:37:10 UTC
Warner Losh wrote (2022/06/23):
> On Thu, Jun 23, 2022 at 1:44 AM Cejka Rudolf <cejkar@fit.vutbr.cz> wrote:
> > Hello,
> > so is there any solution for problem below now?
> >
> > Cejka Rudolf wrote (2021/11/29):
> > > Hello,
> > > I have one problem or two with VT in FreeBSD 12. I wrote a question in
> > > freebsd-stable what to do, but without response, so I still have to
> > > use SC. Please, could you look at it? There is not configured device
> > > /dev/console without monitor after upgrade from 11 to 12 and device
> > > /dev/kbdmux0 is busy using VT but not with SC.
> > >
> > > Subject: Unable to grab keyboard with VT on a headless node in stable/12
> > >
> > > Hello,
> > > I have a headless node without monitor and without keyboard. There
> > > is just network and USB card reader in keyboard mode.
> > >
> > > In stable/11, there was no problem to disconnect USB card reader
> > > from kbdmux using kbdcontrol -A ukbd0 < /dev/console and open
> > > /dev/ukbd0 in a program.
> > >
> > > However, under stable/12 it works just with connected monitor.
> > >
> > > Without monitor, there is an error:
> > >
> > > # kbdcontrol < /dev/console
> > > -bash: /dev/console: Device not configured
> > >
> > > Furthermore with default VT, it is also impossible to use /dev/kbdmux0:
> > >
> > > # kbdcontrol < /dev/kbdmux0
> > > -bash: /dev/kbdmux0: Device busy
> > >
> > > I have found a workaround using SC, where it is possible to atleast
> > > open /dev/kbdmux0 and use kbdcontrol -A ukbd0 < /dev/kbdmux0, but why
> > > keyboard operation is now dependend on connected monitor? And why VT
> > > does not allow to open /dev/kbdmux0?
> > >
> > > Thank you.
> >
>
> Have you filed a bug for this? This looks like a legit bug and one that
> should be easy(ish) to reproduce.
Not yet, I'm still not sure, if it is a bug or a feature.
> Or at least it looks that way on the surface, there might be a pilot error
> as well that just happened to
> work before and needs a slightly different workaround to what you are
> doing...
During getting answers to your questions I finally found a workaround - do not
use /dev/console nor /dev/kbdmux0, but use /dev/ttyv0. With /dev/ttyv0 I can
detach USB card reader:
# usbconfig show_ifdrv
ugen0.2: <GIGA-TMS USB300> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
ugen0.2.0: ukbd0: <GIGA-TMS USB300, class 0/0, rev 1.10/7.03, addr 1>
ugen0.2.1: uhid0: <GIGA-TMS USB300, class 0/0, rev 1.10/7.03, addr 1>
from kbdmux0 using
kbdcontrol -A ukbd0 </dev/ttyv0
and then open /dev/ukbd0 in a program even after upgrade from FreeBSD 11 to 12
and even with
# sysctl kern.vty
kern.vty: vt
> And it's an actual monitor connected that's the only difference?
Yes.
> Or is this some KVM switch that's connected, so there's an atkbd
> in the mix somewhere?
No, just direct cable connection between computer and monitor.
> What's the difference in dmesg between
> these two boots? Is this with EFI or legacy BIOS boot?
> A dmesg with bootverbose would be most enligtening.
It is EFI boot and it seems that the only interesting difference
is that with connected monitor there is
kernel: VT(efifb): resolution 1280x1024
while with disconnected monitor there is
kernel: VT(vga): resolution 640x480
> 'Not conifgured' is ENXIO which is returned when /dev/console isn't there
> (eg, no /dev/console), which seems weird in the extreme. And it's 'bash'
> that's giving the message, which means kbdcontrol isn't even getting invoked.
Ok, however there is question, what is the suggested device for kbdcontrol.
I see just /dev/kbdmux0 or /dev/console in manual.
SC with or without monitor, both are the same (I temporarily
connected also one USB keyboard):
# kbdcontrol -i </dev/console
-bash: /dev/console: Device not configured
# kbdcontrol -i </dev/kbdmux0
kbd1:
kbdmux0, type:AT 101/102 (2)
VT with monitor (over console, if it could be
important, I can also try this over network
connection):
# kbdcontrol -i </dev/console
kbd1:
kbdmux0, type:AT 101/102 (2)
# kbdcontrol -i </dev/kbdmux0
bash: /dev/kbdmux0: Device busy
# kbdcontrol -i </dev/ttyv0
kbd1:
kbdmux0, type:AT 101/102 (2)
VT without monitor (over network connection):
# kbdcontrol -i </dev/console
-bash: /dev/console: Device not configured
# kbdcontrol -i </dev/kbdmux0
-bash: /dev/kbdmux0: Device busy
# kbdcontrol -i </dev/ttyv0
kbd1:
kbdmux0, type:AT 101/102 (2)
> And I'm also a little confused, detach ukbd0 from a usb card reader? That's
> an interesting setup. While
> it won't affect whether or not this is a bug, I'd be interested to know
> more details there...
Detach ukbd0 (= USB card reader) from kbdmux0, so USB card reader is usable
as an inpout in a program. Without detach, characters from USB card reader
are grabbed by kbdmux0.
PC connected to the network with USB card reader works as a controller
for Xerox printer for users authentication, when they want to make paid
paper copies.
--
Rudolf Cejka <cejkar at fit.vut.cz> https://www.fit.vut.cz/~cejkar
Brno University of Technology, Faculty of Information Technology
Bozetechova 1/2, 612 00 Brno, Czech Republic