DaemonForums  

Go Back   DaemonForums > OpenBSD > OpenBSD General

OpenBSD General Other questions regarding OpenBSD which do not fit in any of the categories below.

Reply
 
Thread Tools Display Modes
  #1   (View Single Post)  
Old 3 Weeks Ago
gustaf gustaf is offline
Port Guard
 
Join Date: Dec 2016
Posts: 31
Default External keyboard not recognized by laptop

I have an Apple Extended ADB Keyboard (the kind with mechanical key switches) connected to a Thinkpad X220 Tablet via a Griffin iMate USB to ADB adapter. This keyboard isn't playing nice with OpenBSD.

Before you run away FAST, please note: I am NOT asking for help with this truly esoteric (and beloved) piece of hardware.

For reasons that will (hopefully) become clear, I believe there might be a software solution that involves reconfiguring something that loads before xinit(1).

To make sure it really is the keyboard and not some other piece of attached hardware or my window manager, I disabled ~/.xinitrc and powered-off the laptop, then disconnected all external hardware except the ADB keyboard and adapter before restarting and booting into the console. This is my usual way of running X. I don't use a graphical log-in manager.

I tried logging in. The ADB keyboard didn't respond. I pressed some keys and nothing appeared on the screen. I tried escaping to an alternate console (Ctrl-Alt-F2, etc.). Same non-response.

The laptop keyboard worked. I could log in and run X, and I could escape to an alternate console.

Here's where it gets wierd.

After I have run xinit(1) once, the keyboard problem disappears.

When I quit X and return to the console, I can still enter text from the ADB keyboard and use the alternate consoles.

I tried two other keyboards: a native USB, and a PS2 with a USB adapter. The problem only occurs with the ADB keyboard.

I ran dmesg(8) immediately after booting, immediately after starting X, and immediately after quitting X. The result was the same in all three cases -- the Griffin iMate and converted keyboard are clearly being recognized by the kernel:

Code:
OpenBSD 6.2-beta (GENERIC.MP) #104: Mon Sep 18 23:31:27 MDT 2017
    deraadt@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 4156157952 (3963MB)
avail mem = 4023177216 (3836MB)
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.6 @ 0xdae9c000 (65 entries)
bios0: vendor LENOVO version "8DET58WW (1.28 )" date 02/14/2012
bios0: LENOVO 4299HB4
acpi0 at bios0: rev 2
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP SLIC SSDT SSDT SSDT HPET APIC MCFG ECDT ASF! TCPA SSDT SSDT UEFI UEFI UEFI
acpi0: wakeup devices LID_(S3) SLPB(S3) IGBE(S4) EXP4(S4) EXP7(S4) EHC1(S3) EHC2(S3) HDEF(S4)
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpihpet0 at acpi0: 14318179 Hz
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz, 2492.36 MHz
cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,SENSOR,ARAT
cpu0: 256KB 64b/line 8-way L2 cache
cpu0: TSC frequency 2492364500 Hz
cpu0: smt 0, core 0, package 0
mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges
cpu0: apic clock running at 99MHz
cpu0: mwait min=64, max=64, C-substates=0.2.1.1.2, IBE
cpu1 at mainbus0: apid 1 (application processor)
cpu1: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz, 2491.92 MHz
cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,SENSOR,ARAT
cpu1: 256KB 64b/line 8-way L2 cache
cpu1: smt 1, core 0, package 0
cpu2 at mainbus0: apid 2 (application processor)
cpu2: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz, 2491.92 MHz
cpu2: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,SENSOR,ARAT
cpu2: 256KB 64b/line 8-way L2 cache
cpu2: smt 0, core 1, package 0
cpu3 at mainbus0: apid 3 (application processor)
cpu3: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz, 2491.92 MHz
cpu3: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,SENSOR,ARAT
cpu3: 256KB 64b/line 8-way L2 cache
cpu3: smt 1, core 1, package 0
ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 24 pins
acpimcfg0 at acpi0 addr 0xf8000000, bus 0-63
acpiec0 at acpi0
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus -1 (PEG_)
acpiprt2 at acpi0: bus 2 (EXP1)
acpiprt3 at acpi0: bus 3 (EXP2)
acpiprt4 at acpi0: bus 5 (EXP4)
acpiprt5 at acpi0: bus 13 (EXP5)
acpiprt6 at acpi0: bus -1 (EXP7)
acpicpu0 at acpi0: C3(200@109 io@0x416), C2(500@80 io@0x414), C1(1000@1 halt), PSS
acpicpu1 at acpi0: C3(200@109 io@0x416), C2(500@80 io@0x414), C1(1000@1 halt), PSS
acpicpu2 at acpi0: C3(200@109 io@0x416), C2(500@80 io@0x414), C1(1000@1 halt), PSS
acpicpu3 at acpi0: C3(200@109 io@0x416), C2(500@80 io@0x414), C1(1000@1 halt), PSS
acpipwrres0 at acpi0: PUBS, resource for EHC1, EHC2
acpitz0 at acpi0: critical temperature is 99 degC
acpibtn0 at acpi0: LID_
acpibtn1 at acpi0: SLPB
"LEN0070" at acpi0 not configured
"LEN0020" at acpi0 not configured
"SMO1200" at acpi0 not configured
acpibat0 at acpi0: BAT0 model "42T4881" serial 23489 type LION oem "LGC"
acpiac0 at acpi0: AC unit offline
acpithinkpad0 at acpi0
"PNP0C14" at acpi0 not configured
"PNP0C14" at acpi0 not configured
acpidock0 at acpi0: GDCK not docked (0)
acpivideo0 at acpi0: VID_
acpivout at acpivideo0 not configured
acpivideo1 at acpi0: VID_
cpu0: Enhanced SpeedStep 2492 MHz: speeds: 2501, 2500, 2200, 2000, 1800, 1600, 1400, 1200, 1000, 800 MHz
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 "Intel Core 2G Host" rev 0x09
inteldrm0 at pci0 dev 2 function 0 "Intel HD Graphics 3000" rev 0x09
drm0 at inteldrm0
inteldrm0: msi
inteldrm0: 1366x768, 32bpp
wsdisplay0 at inteldrm0 mux 1: console (std, vt100 emulation)
wsdisplay0: screen 1-5 added (std, vt100 emulation)
"Intel 6 Series MEI" rev 0x04 at pci0 dev 22 function 0 not configured
puc0 at pci0 dev 22 function 3 "Intel 6 Series KT" rev 0x04: ports: 1 com
com4 at puc0 port 0 apic 2 int 19: ns16550a, 16 byte fifo
com4: probed fifo depth: 0 bytes
em0 at pci0 dev 25 function 0 "Intel 82579LM" rev 0x04: msi, address 3c:97:0e:01:d3:57
ehci0 at pci0 dev 26 function 0 "Intel 6 Series USB" rev 0x04: apic 2 int 16
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 configuration 1 interface 0 "Intel EHCI root hub" rev 2.00/1.00 addr 1
azalia0 at pci0 dev 27 function 0 "Intel 6 Series HD Audio" rev 0x04: msi
azalia0: codecs: Conexant CX20590, Intel/0x2805, using Conexant CX20590
audio0 at azalia0
ppb0 at pci0 dev 28 function 0 "Intel 6 Series PCIE" rev 0xb4: msi
pci1 at ppb0 bus 2
ppb1 at pci0 dev 28 function 1 "Intel 6 Series PCIE" rev 0xb4: msi
pci2 at ppb1 bus 3
iwn0 at pci2 dev 0 function 0 "Intel Centrino Advanced-N 6205" rev 0x34: msi, MIMO 2T2R, MoW, address 8c:70:5a:66:70:d0
ppb2 at pci0 dev 28 function 3 "Intel 6 Series PCIE" rev 0xb4: msi
pci3 at ppb2 bus 5
ppb3 at pci0 dev 28 function 4 "Intel 6 Series PCIE" rev 0xb4: msi
pci4 at ppb3 bus 13
sdhc0 at pci4 dev 0 function 0 "Ricoh 5U823 SD/MMC" rev 0x04: apic 2 int 16
sdhc0: SDHC 3.0, 50 MHz base clock
sdmmc0 at sdhc0: 4-bit, sd high-speed, mmc high-speed, dma
ehci1 at pci0 dev 29 function 0 "Intel 6 Series USB" rev 0x04: apic 2 int 23
usb1 at ehci1: USB revision 2.0
uhub1 at usb1 configuration 1 interface 0 "Intel EHCI root hub" rev 2.00/1.00 addr 1
pcib0 at pci0 dev 31 function 0 "Intel QM67 LPC" rev 0x04
ahci0 at pci0 dev 31 function 2 "Intel 6 Series AHCI" rev 0x04: msi, AHCI 1.3
ahci0: port 0: 6.0Gb/s
scsibus1 at ahci0: 32 targets
sd0 at scsibus1 targ 0 lun 0: <ATA, ST500LM021-1KJ15, 0002> SCSI3 0/direct fixed naa.5000c5008a80503c
sd0: 476940MB, 512 bytes/sector, 976773168 sectors
ichiic0 at pci0 dev 31 function 3 "Intel 6 Series SMBus" rev 0x04: apic 2 int 18
iic0 at ichiic0
spdmem0 at iic0 addr 0x50: 4GB DDR3 SDRAM PC3-10600 SO-DIMM
isa0 at pcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pms0 at pckbc0 (aux slot)
wsmouse0 at pms0 mux 0
wsmouse1 at pms0 mux 0
pms0: Synaptics clickpad, firmware 8.1, 0x1e2b1 0x940300
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
aps0 at isa0 port 0x1600/31
uhub2 at uhub0 port 1 configuration 1 interface 0 "Intel Rate Matching Hub" rev 2.00/0.00 addr 2
uhub3 at uhub1 port 1 configuration 1 interface 0 "Intel Rate Matching Hub" rev 2.00/0.00 addr 2
uhidev0 at uhub3 port 1 configuration 1 interface 0 "Griffin Technology, Inc. iMate, USB To ADB Adaptor" rev 1.00/3.70 addr 3
uhidev0: iclass 3/1
ukbd0 at uhidev0: 8 variable keys, 6 key codes
wskbd1 at ukbd0 mux 1
wskbd1: connecting to wsdisplay0
uhidev1 at uhub3 port 1 configuration 1 interface 1 "Griffin Technology, Inc. iMate, USB To ADB Adaptor" rev 1.00/3.70 addr 3
uhidev1: iclass 3/1
ums0 at uhidev1: 3 buttons
wsmouse2 at ums0 mux 0
uhidev2 at uhub3 port 5 configuration 1 interface 0 "Tablet ISD-V4" rev 1.10/1.39 addr 4
uhidev2: iclass 3/0, 17 report ids
ums1 at uhidev2 reportid 2: 3 buttons, tip, barrel, eraser
wsmouse3 at ums1 mux 0
uhid0 at uhidev2 reportid 17: input=7, output=0, feature=3
uhidev3 at uhub3 port 5 configuration 1 interface 1 "Tablet ISD-V4" rev 1.10/1.39 addr 4
uhidev3: iclass 3/0, 16 report ids
uhid1 at uhidev3 reportid 2: input=0, output=0, feature=1
uhid2 at uhidev3 reportid 3: input=0, output=0, feature=3
uhid3 at uhidev3 reportid 5: input=0, output=0, feature=8
uhid4 at uhidev3 reportid 6: input=0, output=0, feature=8
ums2 at uhidev3 reportid 12: 1 button, tip
wsmouse4 at ums2 mux 0
uhid5 at uhidev3 reportid 13: input=13, output=0, feature=0
uhid6 at uhidev3 reportid 14: input=0, output=0, feature=2
ums3 at uhidev3 reportid 15: 2 buttons
wsmouse5 at ums3 mux 0
ums4 at uhidev3 reportid 16: 1 button, tip
wsmouse6 at ums4 mux 0
vscsi0 at root
scsibus2 at vscsi0: 256 targets
softraid0 at root
scsibus3 at softraid0: 256 targets
root on sd0a (2a548c9d8383d7d3.a) swap on sd0b dump on sd0b
Since I haven't reconfigured anything in wscons(4), I don't have an /etc/wsconsctl.conf file.

wsconsctl(8) shows two keyboards, "pc-xt" (which I presume is the laptop) and "usb" (which I presume is the converted ADB keyboard), even before starting X:

Code:
$ doas wsconsctl -a

keyboard.type=pc-xt
......................
keyboard.encoding=us
......................
keyboard1.type=usb
......................
keyboard1.encoding=us
......................
display.type=inteldrm
display.width=1280
display.height=768
display.depth=32
display.emulations=vt100
display.screentypes=std
display.focus=4
display.brightness=100.00%
display.screen_on=250
display.screen_off=0
display.vblank=off
display.kbdact=on
display.msact=on
display.outact=on
Looking at /usr/include/dev/wscons/wsconsio.h, I can see that Apple ADB keyboards are a recognized type:

Code:
/* Get keyboard type. */
#define WSKBDIO_GTYPE           _IOR('W', 0, u_int)
.......................................................
#define         WSKBD_TYPE_PC_XT        3       /* PC-ish, XT scancode */
..........................................................................
#define         WSKBD_TYPE_USB          5       /* USB, XT scancode */
..........................................................................
#define         WSKBD_TYPE_ADB          10      /* Apple ADB keyboard */
..........................................................................
The purpose of the iMate is to convert ADB to USB, so this keyboard should be treated as just another USB device, but support for ADB is also available, if needed.

Would it be helpful to post /var/log/Xorg.0.log? I'm not sure what to look for in this file; I didn't see anything obvious when I inspected it.

Troubleshooting questions:
  • Shouldn't quitting X completely return the system to a non-X state, with all associated hardware restrictions?
  • What happens when I run xinit(1) that enables the external ADB keyboard to still function even after I quit X?

It seems like I should be able to reconfigure something so that the converted ADB keyboard is recognized during the boot sequence or find out what X is doing to the keyboard configuration and somehow move that bit of information into the boot sequence.

It's also possible that I have completely misinterpreted the problem.

I hope there's a way to fix this. I'd really like to get this keyboard fully working.

Many thanks to anyone who can offer assistance.
Reply With Quote
  #2   (View Single Post)  
Old 3 Weeks Ago
jggimi's Avatar
jggimi jggimi is offline
More noise than signal
 
Join Date: May 2008
Location: USA
Posts: 5,887
Default

Quote:
...but support for ADB is also available, if needed...
I believe this recognition is for the macppc architecture. You will find ADB keyboards mentioned in http://www.openbsd.org/macppc.html but not in http://www.openbsd.org/amd64.html.
Reply With Quote
  #3   (View Single Post)  
Old 3 Weeks Ago
jggimi's Avatar
jggimi jggimi is offline
More noise than signal
 
Join Date: May 2008
Location: USA
Posts: 5,887
Default

And that's confirmed. This is only used by sys/dev/akbd.c, which is only compiled with sys/arch/macppc/{GENERIC,RAMDISK} kernels. The akbd(4) man page describes the driver.

Last edited by jggimi; 3 Weeks Ago at 11:05 AM. Reason: clarity
Reply With Quote
  #4   (View Single Post)  
Old 3 Weeks Ago
gustaf gustaf is offline
Port Guard
 
Join Date: Dec 2016
Posts: 31
Default

After reading your responses and re-reading my original post, I can see that I wasn't very clear about some things.

I have examined the output of dmesg(8) and wsconsctl(8) more closely. In both cases, there are two recognized keyboards (PC and USB). "PC" is the laptop keyboard; "USB" is the converted Apple keyboard.

Code:
$ dmesg

..................................................
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pms0 at pckbc0 (aux slot)
..................................................
uhub3 at uhub1 port 1 configuration 1 interface 0 "Intel Rate Matching Hub" rev 2.00/0.00 addr 2
uhidev0 at uhub3 port 1 configuration 1 interface 0 "Griffin Technology, Inc. iMate, USB To ADB Adaptor" rev 1.00/3.70 addr 3
uhidev0: iclass 3/1
ukbd0 at uhidev0: 8 variable keys, 6 key codes
wskbd1 at ukbd0 mux 1
wskbd1: connecting to wsdisplay0
uhidev1 at uhub3 port 1 configuration 1 interface 1 "Griffin Technology, Inc. iMate, USB To ADB Adaptor" rev 1.00/3.70 addr 3
uhidev1: iclass 3/1
Code:
$ doas wsconsctl -a

keyboard.type=pc-xt
......................
keyboard1.type=usb
The strange thing is that the Apple keyboard/Griffin iMate combination works flawlessly, but only after the initial run of X. For some reason, the keyboard continues to work even after I quit X and return to the console. There is something about starting X that enables this keyboard.

How do I find out what X is doing that makes it possible for this keyboard to function and what do I need to configure to enable this keyboard at boot time?

I hope these are the right questions. My goal is to log in and work from the console immediately after booting without having to resort to the laptop keyboard.

Last edited by gustaf; 3 Weeks Ago at 05:09 AM. Reason: clarity
Reply With Quote
  #5   (View Single Post)  
Old 3 Weeks Ago
jggimi's Avatar
jggimi jggimi is offline
More noise than signal
 
Join Date: May 2008
Location: USA
Posts: 5,887
Default

Quote:
Originally Posted by gustaf View Post
How do I find out what X is doing that makes it possible for this keyboard to function ...
/var/log/Xorg.0.log may provide some information about keyboard attachment and keyboard drivers that it selects.
Quote:
... and what do I need to configure to enable this keyboard at boot time?
Are you interested in developing a software solution for your keyboard yourself? If so you may be able to gain insight through a review of the source code of the keyboard drivers noted in the log. Then you can compare this to the ukbd(4) kernel driver source code.

If you're not interested in a source code review (and developing your own patch), consider posting a problem report to the bugs@ mailing list.

http://www.openbsd.org/faq/faq1.html#Bugs
Reply With Quote
  #6   (View Single Post)  
Old 3 Weeks Ago
gustaf gustaf is offline
Port Guard
 
Join Date: Dec 2016
Posts: 31
Default

This is turning into a bigger project than I have time for; I may come back to it eventually.

In the meantime, I have enabled xenodm(1).

The X Window System FAQ and /usr/X11R6/README were also helpful.

Thanks for helping me sort this out.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
any consequences to moving a laptop-based installed disk to another different laptop daemonfowl OpenBSD General 7 2nd August 2012 04:29 PM
NVIDIA GeForce 9100 not recognized ionflux FreeBSD Installation and Upgrading 22 5th November 2009 08:59 PM
Keyboards not (recognized? found? functional?) in 4.3/4.4 i386 on amd64 Jack OpenBSD Installation and Upgrading 13 26th January 2009 08:37 PM
Dell R300 bce interface not recognized under 7.0 jwilson FreeBSD General 2 28th July 2008 07:39 PM
RAID array not recognized on new Intel server clevershark OpenBSD Installation and Upgrading 6 14th May 2008 09:20 PM


All times are GMT. The time now is 03:59 AM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Content copyright © 2007-2010, the authors
Daemon image copyright ©1988, Marshall Kirk McKusick