USB keyboards with multiple displays

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

USB keyboards with multiple displays

Mark Kettenis
OpenBSD/amd64 and OpenBSD/i386 have been supporting multiple
wsdisplay(4) devices for a while now.  Somewhat recently it became
also possible to use inteldrm(4) as a secondary display device.  There
have always been some issues with pairing wskbd(4) keyboard devices
with wsdisplay(4) devices.  But since it is fairly common for people
to have a desktop PC with both Intel integrated graphics and a
discrete graphics card, these issues affect many more people now.

On the amd64/i386 architecture, there is the concept of a primary
graphics device.  This is the device that the BIOS uses for its output
when the machine boots.  We try very hard to use this device as our
console, and it should become wsdisplay0 if we detect it as such.  We
also make sure that console keyboard attaches to wsdisplay0.  All
other keyboards are attached, through wsmux(4), to the wsdisplay(4)
device that attaches first.

Now figuring out what the console keyboard is, is abit tricky on
amd64/i386.  The BIOS is a very poor excuse for a firmware and doesn't
really tell us.  So we always attach pckbd(4) as the console keyboard,
and only if we don't detect a pckbc(4) controller, we bombard the
first USB keyboard as the console keyboard.  Since most desktop PCs
still contain a PC keyboard controller, this means that if you're
using a USB keyboard, it is unlikely to become the console keyboard.
As a result it attaches to the first wsdisplay(4) device that
attaches.  If that happens to be wsdisplay1, the keyboard appears to
be non-functional.  And since radeondrm(4) doesn't fully attach until
it can load its firmware, the USB keyboard will almost certainly
attach to wsdisplay1 at inteldrm0.

I'm still looking for a clever way to detect that the USB keyboard
should become the console keyboard even in the presence of pckbc0.
But it would already help these people if wemade sure the non-console
keyboards pair themselves with wsdisplay0 as well.  Fortunately, there
is an easy way to do this.  These keyboards attach themselves to the
keyboard wsmux(4) device wsmux1 (wsmux0 is used for mouse devices).
By default wsdisplay(4) devices take control over wsmux1 ifnobody else
has done so yet.  But we can prevent this from happening by specifying
"mux -1" in the kernel configuration file.

I don'thave a system with both inteldrm(4) and radeondrm(4), but on my
system with two readeondrm(4) devices, this makes sure an additional
USB keyboard connects itself to wsdisplay0 instead of wsdisplay1.

ok if I commit the equivalent changes to i386 as well?


Index: GENERIC
===================================================================
RCS file: /cvs/src/sys/arch/amd64/conf/GENERIC,v
retrieving revision 1.406
diff -u -p -r1.406 GENERIC
--- GENERIC 31 Dec 2015 13:06:49 -0000 1.406
+++ GENERIC 3 Jan 2016 20:03:13 -0000
@@ -313,12 +313,12 @@ agp* at intagp?
 drm0 at inteldrm? console 1
 drm* at inteldrm?
 wsdisplay0 at inteldrm? console 1
-wsdisplay* at inteldrm?
+wsdisplay* at inteldrm? mux -1
 radeondrm* at pci? # ATI Radeon DRM driver
 drm0 at radeondrm? console 1
 drm* at radeondrm?
 wsdisplay0 at radeondrm? console 1
-wsdisplay* at radeondrm?
+wsdisplay* at radeondrm? mux -1
 
 pcppi0 at isa?
 

Reply | Threaded
Open this post in threaded view
|

Re: USB keyboards with multiple displays

Timo Myyrä-4
Mark Kettenis <[hidden email]> writes:

> OpenBSD/amd64 and OpenBSD/i386 have been supporting multiple
> wsdisplay(4) devices for a while now.  Somewhat recently it became
> also possible to use inteldrm(4) as a secondary display device.  There
> have always been some issues with pairing wskbd(4) keyboard devices
> with wsdisplay(4) devices.  But since it is fairly common for people
> to have a desktop PC with both Intel integrated graphics and a
> discrete graphics card, these issues affect many more people now.
>
> On the amd64/i386 architecture, there is the concept of a primary
> graphics device.  This is the device that the BIOS uses for its output
> when the machine boots.  We try very hard to use this device as our
> console, and it should become wsdisplay0 if we detect it as such.  We
> also make sure that console keyboard attaches to wsdisplay0.  All
> other keyboards are attached, through wsmux(4), to the wsdisplay(4)
> device that attaches first.
>
> Now figuring out what the console keyboard is, is abit tricky on
> amd64/i386.  The BIOS is a very poor excuse for a firmware and doesn't
> really tell us.  So we always attach pckbd(4) as the console keyboard,
> and only if we don't detect a pckbc(4) controller, we bombard the
> first USB keyboard as the console keyboard.  Since most desktop PCs
> still contain a PC keyboard controller, this means that if you're
> using a USB keyboard, it is unlikely to become the console keyboard.
> As a result it attaches to the first wsdisplay(4) device that
> attaches.  If that happens to be wsdisplay1, the keyboard appears to
> be non-functional.  And since radeondrm(4) doesn't fully attach until
> it can load its firmware, the USB keyboard will almost certainly
> attach to wsdisplay1 at inteldrm0.
>
> I'm still looking for a clever way to detect that the USB keyboard
> should become the console keyboard even in the presence of pckbc0.
> But it would already help these people if wemade sure the non-console
> keyboards pair themselves with wsdisplay0 as well.  Fortunately, there
> is an easy way to do this.  These keyboards attach themselves to the
> keyboard wsmux(4) device wsmux1 (wsmux0 is used for mouse devices).
> By default wsdisplay(4) devices take control over wsmux1 ifnobody else
> has done so yet.  But we can prevent this from happening by specifying
> "mux -1" in the kernel configuration file.
>
> I don'thave a system with both inteldrm(4) and radeondrm(4), but on my
> system with two readeondrm(4) devices, this makes sure an additional
> USB keyboard connects itself to wsdisplay0 instead of wsdisplay1.
>
> ok if I commit the equivalent changes to i386 as well?
>
>
> Index: GENERIC
> ===================================================================
> RCS file: /cvs/src/sys/arch/amd64/conf/GENERIC,v
> retrieving revision 1.406
> diff -u -p -r1.406 GENERIC
> --- GENERIC 31 Dec 2015 13:06:49 -0000 1.406
> +++ GENERIC 3 Jan 2016 20:03:13 -0000
> @@ -313,12 +313,12 @@ agp* at intagp?
>  drm0 at inteldrm? console 1
>  drm* at inteldrm?
>  wsdisplay0 at inteldrm? console 1
> -wsdisplay* at inteldrm?
> +wsdisplay* at inteldrm? mux -1
>  radeondrm* at pci? # ATI Radeon DRM driver
>  drm0 at radeondrm? console 1
>  drm* at radeondrm?
>  wsdisplay0 at radeondrm? console 1
> -wsdisplay* at radeondrm?
> +wsdisplay* at radeondrm? mux -1
>  
>  pcppi0 at isa?
>  

Just tested this on my desktop (amd64) and it attaches my usb keyboard
correctly.

Timo

Reply | Threaded
Open this post in threaded view
|

Re: USB keyboards with multiple displays

gjones5555
In reply to this post by Mark Kettenis
On 01/03/16 16:00, Mark Kettenis wrote:

> OpenBSD/amd64 and OpenBSD/i386 have been supporting multiple
> wsdisplay(4) devices for a while now.  Somewhat recently it became
> also possible to use inteldrm(4) as a secondary display device.  There
> have always been some issues with pairing wskbd(4) keyboard devices
> with wsdisplay(4) devices.  But since it is fairly common for people
> to have a desktop PC with both Intel integrated graphics and a
> discrete graphics card, these issues affect many more people now.
>
> On the amd64/i386 architecture, there is the concept of a primary
> graphics device.  This is the device that the BIOS uses for its output
> when the machine boots.  We try very hard to use this device as our
> console, and it should become wsdisplay0 if we detect it as such.  We
> also make sure that console keyboard attaches to wsdisplay0.  All
> other keyboards are attached, through wsmux(4), to the wsdisplay(4)
> device that attaches first.
>
> Now figuring out what the console keyboard is, is abit tricky on
> amd64/i386.  The BIOS is a very poor excuse for a firmware and doesn't
> really tell us.  So we always attach pckbd(4) as the console keyboard,
> and only if we don't detect a pckbc(4) controller, we bombard the
> first USB keyboard as the console keyboard.  Since most desktop PCs
> still contain a PC keyboard controller, this means that if you're
> using a USB keyboard, it is unlikely to become the console keyboard.
> As a result it attaches to the first wsdisplay(4) device that
> attaches.  If that happens to be wsdisplay1, the keyboard appears to
> be non-functional.  And since radeondrm(4) doesn't fully attach until
> it can load its firmware, the USB keyboard will almost certainly
> attach to wsdisplay1 at inteldrm0.
>
> I'm still looking for a clever way to detect that the USB keyboard
> should become the console keyboard even in the presence of pckbc0.
> But it would already help these people if wemade sure the non-console
> keyboards pair themselves with wsdisplay0 as well.  Fortunately, there
> is an easy way to do this.  These keyboards attach themselves to the
> keyboard wsmux(4) device wsmux1 (wsmux0 is used for mouse devices).
> By default wsdisplay(4) devices take control over wsmux1 ifnobody else
> has done so yet.  But we can prevent this from happening by specifying
> "mux -1" in the kernel configuration file.
>
> I don'thave a system with both inteldrm(4) and radeondrm(4), but on my
> system with two readeondrm(4) devices, this makes sure an additional
> USB keyboard connects itself to wsdisplay0 instead of wsdisplay1.
>
> ok if I commit the equivalent changes to i386 as well?
>
>
> Index: GENERIC
> ===================================================================
> RCS file: /cvs/src/sys/arch/amd64/conf/GENERIC,v
> retrieving revision 1.406
> diff -u -p -r1.406 GENERIC
> --- GENERIC 31 Dec 2015 13:06:49 -0000 1.406
> +++ GENERIC 3 Jan 2016 20:03:13 -0000
> @@ -313,12 +313,12 @@ agp* at intagp?
>   drm0 at inteldrm? console 1
>   drm* at inteldrm?
>   wsdisplay0 at inteldrm? console 1
> -wsdisplay* at inteldrm?
> +wsdisplay* at inteldrm? mux -1
>   radeondrm* at pci? # ATI Radeon DRM driver
>   drm0 at radeondrm? console 1
>   drm* at radeondrm?
>   wsdisplay0 at radeondrm? console 1
> -wsdisplay* at radeondrm?
> +wsdisplay* at radeondrm? mux -1
>  
>   pcppi0 at isa?
>  
Mark,

Works here! dmesg below.

Thank you,

Greg

---------------------

OpenBSD 5.9-beta (GENERIC.MP) #0: Mon Jan  4 10:50:49 EST 2016
     wombat@Willowdale:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 34222071808 (32636MB)
avail mem = 33180782592 (31643MB)
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.7 @ 0xee7f0 (28 entries)
bios0: vendor American Megatrends Inc. version "P2.80" date 01/17/2013
bios0: ASRock Z77 Extreme4
acpi0 at bios0: rev 2
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP APIC FPDT MCFG AAFT HPET SSDT SSDT SSDT
acpi0: wakeup devices CIR_(S3) PS2K(S4) PS2M(S4) UAR1(S4) P0P1(S4) USB1(S3)
USB2(S3) USB3(S3) USB4(S3) USB5(S3) USB6(S3) USB7(S3) RP01(S4) RP02(S4) RP03(S4)
RP04(S4) [...]
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz, 3500.54 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,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,POPCNT,DEADLINE,AES,XSAVE,OSXSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu0: 256KB 64b/line 8-way L2 cache
cpu0: smt 0, core 0, package 0
mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges
cpu0: apic clock running at 100MHz
cpu0: mwait min=64, max=64, C-substates=0.2.1.1, IBE
cpu1 at mainbus0: apid 2 (application processor)
cpu1: Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz, 3500.02 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,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,POPCNT,DEADLINE,AES,XSAVE,OSXSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu1: 256KB 64b/line 8-way L2 cache
cpu1: smt 0, core 1, package 0
cpu2 at mainbus0: apid 4 (application processor)
cpu2: Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz, 3500.02 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,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,POPCNT,DEADLINE,AES,XSAVE,OSXSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu2: 256KB 64b/line 8-way L2 cache
cpu2: smt 0, core 2, package 0
cpu3 at mainbus0: apid 6 (application processor)
cpu3: Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz, 3500.02 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,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,POPCNT,DEADLINE,AES,XSAVE,OSXSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu3: 256KB 64b/line 8-way L2 cache
cpu3: smt 0, core 3, package 0
cpu4 at mainbus0: apid 1 (application processor)
cpu4: Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz, 3500.02 MHz
cpu4:
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,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,POPCNT,DEADLINE,AES,XSAVE,OSXSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu4: 256KB 64b/line 8-way L2 cache
cpu4: smt 1, core 0, package 0
cpu5 at mainbus0: apid 3 (application processor)
cpu5: Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz, 3500.02 MHz
cpu5:
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,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,POPCNT,DEADLINE,AES,XSAVE,OSXSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu5: 256KB 64b/line 8-way L2 cache
cpu5: smt 1, core 1, package 0
cpu6 at mainbus0: apid 5 (application processor)
cpu6: Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz, 3500.02 MHz
cpu6:
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,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,POPCNT,DEADLINE,AES,XSAVE,OSXSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu6: 256KB 64b/line 8-way L2 cache
cpu6: smt 1, core 2, package 0
cpu7 at mainbus0: apid 7 (application processor)
cpu7: Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz, 3500.02 MHz
cpu7:
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,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,POPCNT,DEADLINE,AES,XSAVE,OSXSAVE,AVX,F16C,RDRAND,NXE,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,SENSOR,ARAT
cpu7: 256KB 64b/line 8-way L2 cache
cpu7: smt 1, core 3, package 0
ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 24 pins
acpimcfg0 at acpi0 addr 0xf8000000, bus 0-63
acpihpet0 at acpi0: 14318179 Hz
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus -1 (P0P1)
acpiprt2 at acpi0: bus 2 (RP01)
acpiprt3 at acpi0: bus -1 (RP02)
acpiprt4 at acpi0: bus -1 (RP03)
acpiprt5 at acpi0: bus 3 (RP04)
acpiprt6 at acpi0: bus 4 (RP05)
acpiprt7 at acpi0: bus 5 (RP06)
acpiprt8 at acpi0: bus 6 (BR40)
acpiprt9 at acpi0: bus -1 (RP07)
acpiprt10 at acpi0: bus 7 (RP08)
acpiprt11 at acpi0: bus 1 (PEG0)
acpiprt12 at acpi0: bus -1 (PEG1)
acpiprt13 at acpi0: bus -1 (PEG2)
acpiprt14 at acpi0: bus -1 (PEG3)
acpiec0 at acpi0: not present
acpicpu0 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10), C1(1000@1
mwait.1), PSS
acpicpu1 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10), C1(1000@1
mwait.1), PSS
acpicpu2 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10), C1(1000@1
mwait.1), PSS
acpicpu3 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10), C1(1000@1
mwait.1), PSS
acpicpu4 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10), C1(1000@1
mwait.1), PSS
acpicpu5 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10), C1(1000@1
mwait.1), PSS
acpicpu6 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10), C1(1000@1
mwait.1), PSS
acpicpu7 at acpi0: C3(350@80 mwait.1@0x20), C2(500@59 mwait.1@0x10), C1(1000@1
mwait.1), PSS
acpibat0 at acpi0: BAT0 not present
acpibat1 at acpi0: BAT1 not present
acpibat2 at acpi0: BAT2 not present
acpibtn0 at acpi0: PWRB
acpibtn1 at acpi0: LID0
acpivideo0 at acpi0: GFX0
acpivout0 at acpivideo0: DD02
cpu0: Enhanced SpeedStep 3500 MHz: speeds: 3501, 3500, 3400, 3200, 3100, 3000,
2800, 2700, 2500, 2400, 2300, 2100, 2000, 1900, 1700, 1600 MHz
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 "Intel Core 3G Host" rev 0x09
ppb0 at pci0 dev 1 function 0 "Intel Core 3G PCIE" rev 0x09: msi
pci1 at ppb0 bus 1
radeondrm0 at pci1 dev 0 function 0 "ATI Radeon HD 7770" rev 0x00
drm0 at radeondrm0
radeondrm0: msi
azalia0 at pci1 dev 0 function 1 vendor "ATI", unknown product 0xaab0 rev 0x00: msi
azalia0: no supported codecs
inteldrm0 at pci0 dev 2 function 0 "Intel HD Graphics 4000" rev 0x09
drm1 at inteldrm0
inteldrm0: msi
inteldrm0: 1024x768
wsdisplay1 at inteldrm0
wsdisplay1: screen 0-5 added (std, vt100 emulation)
xhci0 at pci0 dev 20 function 0 "Intel 7 Series xHCI" rev 0x04: msi
usb0 at xhci0: USB revision 3.0
uhub0 at usb0 "Intel xHCI root hub" rev 3.00/1.00 addr 1
"Intel 7 Series MEI" rev 0x04 at pci0 dev 22 function 0 not configured
ehci0 at pci0 dev 26 function 0 "Intel 7 Series USB" rev 0x04: apic 2 int 16
usb1 at ehci0: USB revision 2.0
uhub1 at usb1 "Intel EHCI root hub" rev 2.00/1.00 addr 1
azalia1 at pci0 dev 27 function 0 "Intel 7 Series HD Audio" rev 0x04: msi
azalia1: codecs: Realtek/0x0899, Intel/0x2806, using Realtek/0x0899
audio0 at azalia1
ppb1 at pci0 dev 28 function 0 "Intel 7 Series PCIE" rev 0xc4: msi
pci2 at ppb1 bus 2
ppb2 at pci0 dev 28 function 3 "Intel 7 Series PCIE" rev 0xc4: msi
pci3 at ppb2 bus 3
ahci0 at pci3 dev 0 function 0 "ASMedia ASM1061 AHCI" rev 0x01: msi, AHCI 1.2
scsibus1 at ahci0: 32 targets
ppb3 at pci0 dev 28 function 4 "Intel 7 Series PCIE" rev 0xc4: msi
pci4 at ppb3 bus 4
bge0 at pci4 dev 0 function 0 "Broadcom BCM57781" rev 0x10, BCM57765 B0
(0x57785100): msi, address bc:5f:f4:8c:15:36
brgphy0 at bge0 phy 1: BCM57765 10/100/1000baseT PHY, rev. 4
ppb4 at pci0 dev 28 function 5 "Intel 7 Series PCIE" rev 0xc4: msi
pci5 at ppb4 bus 5
ppb5 at pci5 dev 0 function 0 "ASMedia ASM1083/1085 PCIE-PCI" rev 0x03
pci6 at ppb5 bus 6
em0 at pci6 dev 1 function 0 "Intel 82541GI" rev 0x05: apic 2 int 18, address
00:1b:21:01:4b:44
ppb6 at pci0 dev 28 function 7 "Intel 7 Series PCIE" rev 0xc4: msi
pci7 at ppb6 bus 7
xhci1 at pci7 dev 0 function 0 "ASMedia ASM1042 xHCI" rev 0x00: msi
usb2 at xhci1: USB revision 3.0
uhub2 at usb2 "ASMedia xHCI root hub" rev 3.00/1.00 addr 1
ehci1 at pci0 dev 29 function 0 "Intel 7 Series USB" rev 0x04: apic 2 int 23
usb3 at ehci1: USB revision 2.0
uhub3 at usb3 "Intel EHCI root hub" rev 2.00/1.00 addr 1
pcib0 at pci0 dev 31 function 0 "Intel Z77 LPC" rev 0x04
ahci1 at pci0 dev 31 function 2 "Intel 7 Series AHCI" rev 0x04: msi, AHCI 1.3
ahci1: port 0: 6.0Gb/s
ahci1: port 1: 6.0Gb/s
ahci1: port 2: 3.0Gb/s
ahci1: port 4: 1.5Gb/s
scsibus2 at ahci1: 32 targets
sd0 at scsibus2 targ 0 lun 0: <ATA, Samsung SSD 850, EXM0> SCSI3 0/direct fixed
naa.500253884004066d
sd0: 488386MB, 512 bytes/sector, 1000215216 sectors, thin
sd1 at scsibus2 targ 1 lun 0: <ATA, WDC WD5002AALX-0, 15.0> SCSI3 0/direct fixed
naa.50014ee2b17a0ae6
sd1: 476940MB, 512 bytes/sector, 976773168 sectors
sd2 at scsibus2 targ 2 lun 0: <ATA, WDC WD1600AAJS-0, 05.0> SCSI3 0/direct fixed
naa.50014ee0002a4452
sd2: 152626MB, 512 bytes/sector, 312579695 sectors
cd0 at scsibus2 targ 4 lun 0: <HP, DVD Writer 1260v, AH24> ATAPI 5/cdrom removable
ichiic0 at pci0 dev 31 function 3 "Intel 7 Series SMBus" rev 0x04: apic 2 int 18
iic0 at ichiic0
spdmem0 at iic0 addr 0x50: 8GB DDR3 SDRAM PC3-10600
spdmem1 at iic0 addr 0x51: 8GB DDR3 SDRAM PC3-10600
spdmem2 at iic0 addr 0x52: 8GB DDR3 SDRAM PC3-10600
spdmem3 at iic0 addr 0x53: 8GB DDR3 SDRAM PC3-10600
isa0 at pcib0
isadma0 at isa0
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
wbsio0 at isa0 port 0x2e/2: NCT6776F rev 0x33
lm1 at wbsio0 port 0x290/8: NCT6776F
uaudio0 at uhub0 port 2 configuration 1 interface 0 "Focusrite Scarlett 2i2 USB"
rev 2.00/0.cc addr 2
uaudio0: audio descriptors make no sense, error=4
ugen0 at uhub0 port 2 configuration 1 "Focusrite Scarlett 2i2 USB" rev 2.00/0.cc
addr 2
uhub4 at uhub1 port 1 "Intel Rate Matching Hub" rev 2.00/0.00 addr 2
ugen1 at uhub4 port 1 "SCM Microsystems SCR33xx v2.0 USB SC Reader" rev
2.00/3.04 addr 3
uhub5 at uhub3 port 1 "Intel Rate Matching Hub" rev 2.00/0.00 addr 2
uhidev0 at uhub5 port 5 configuration 1 interface 0 "Logitech USB-PS/2 Optical
Mouse" rev 2.00/24.10 addr 3
uhidev0: iclass 3/1
ums0 at uhidev0: 8 buttons, Z and W dir
wsmouse0 at ums0 mux 0
uhidev1 at uhub5 port 6 configuration 1 interface 0 "Microsoft Wired Keyboard
600" rev 1.10/1.10 addr 4
uhidev1: iclass 3/1
ukbd0 at uhidev1: 8 variable keys, 6 key codes
wskbd1 at ukbd0 mux 1
uhidev2 at uhub5 port 6 configuration 1 interface 1 "Microsoft Wired Keyboard
600" rev 1.10/1.10 addr 4
uhidev2: iclass 3/0, 3 report ids
uhid0 at uhidev2 reportid 1: input=7, output=0, feature=0
uhid1 at uhidev2 reportid 3: input=1, output=0, feature=0
vscsi0 at root
scsibus3 at vscsi0: 256 targets
softraid0 at root
scsibus4 at softraid0: 256 targets
root on sd0a (592ba117735403d0.a) swap on sd0b dump on sd0b
radeondrm0: 1920x1080
wsdisplay0 at radeondrm0 mux 1: console (std, vt100 emulation), using wskbd0
wskbd1: connecting to wsdisplay0
wsdisplay0: screen 1-5 added (std, vt100 emulation)