Spontaneous numlock
#91
(04-21-2021, 04:49 AM)KC9UDX Wrote: I'm wondering, if this is on the main board, how is it proprietary to the keyboard and touchpad?

That's a good question.  I'd say that putting the controller chip off-keyboard was a space-saving measure.  The intention of the keyboard designers was surely to make the keyboard as thin and flat as possible.  Placing a small PCB with the controller chip somewhere inside the keyboard would have surely resulted in a bulge, increasing the overall/maximum thickness of the keyboard.
  Reply
#92
There seem to be 8 different USB buses on board, the keyboard is on 3.  It's also a Human Interface Device which I think means it runs a server and can have subdevices.  It figures, there are 3 types of external USB connectors plus the camera and keyboard have their own buses..

Code:
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType        1
  bcdUSB              3.00
  bDeviceClass            9 Hub
  bDeviceSubClass        0
  bDeviceProtocol        3
  bMaxPacketSize0        9
  idVendor          0x1d6b Linux Foundation
  idProduct          0x0003 3.0 root hub
  bcdDevice            5.07
  iManufacturer          3 Linux 5.7.0-2-pinebookpro-arm64 xhci-hcd
  iProduct                2 xHCI Host Controller
  iSerial                1 xhci-hcd.0.auto
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                9
    bDescriptorType        2
    wTotalLength      0x001f
    bNumInterfaces          1
    bConfigurationValue    1
    iConfiguration          0
    bmAttributes        0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        0
      bAlternateSetting      0
      bNumEndpoints          1
      bInterfaceClass        9 Hub
      bInterfaceSubClass      0
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type              None
          Usage Type              Data
        wMaxPacketSize    0x0004  1x 4 bytes
        bInterval              12
        bMaxBurst              0
Hub Descriptor:
  bLength              12
  bDescriptorType      42
  nNbrPorts            1
  wHubCharacteristic 0x000a
    No power switching (usb 1.0)
    Per-port overcurrent protection
  bPwrOn2PwrGood      10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  bHubDecLat          0.0 micro seconds
  wHubDelay            0 nano seconds
  DeviceRemovable    0x00
Hub Port Status:
  Port 1: 0000.02a0 5Gbps power Rx.Detect
Binary Object Store Descriptor:
  bLength                5
  bDescriptorType        15
  wTotalLength      0x000f
  bNumDeviceCaps          1
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes        0x02
      Latency Tolerance Messages (LTM) Supported
    wSpeedsSupported  0x0008
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport  3
      Lowest fully-functional device speed is SuperSpeed (5Gbps)
    bU1DevExitLat          0 micro seconds
    bU2DevExitLat          0 micro seconds
Device Status:    0x0001
  Self Powered

Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType        1
  bcdUSB              2.00
  bDeviceClass            9 Hub
  bDeviceSubClass        0
  bDeviceProtocol        1 Single TT
  bMaxPacketSize0        64
  idVendor          0x1d6b Linux Foundation
  idProduct          0x0002 2.0 root hub
  bcdDevice            5.07
  iManufacturer          3 Linux 5.7.0-2-pinebookpro-arm64 xhci-hcd
  iProduct                2 xHCI Host Controller
  iSerial                1 xhci-hcd.0.auto
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                9
    bDescriptorType        2
    wTotalLength      0x0019
    bNumInterfaces          1
    bConfigurationValue    1
    iConfiguration          0
    bmAttributes        0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        0
      bAlternateSetting      0
      bNumEndpoints          1
      bInterfaceClass        9 Hub
      bInterfaceSubClass      0
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type              None
          Usage Type              Data
        wMaxPacketSize    0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength              9
  bDescriptorType      41
  nNbrPorts            1
  wHubCharacteristic 0x000a
    No power switching (usb 1.0)
    Per-port overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood      10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
Hub Port Status:
  Port 1: 0000.0100 power
Device Status:    0x0001
  Self Powered

Bus 008 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType        1
  bcdUSB              3.00
  bDeviceClass            9 Hub
  bDeviceSubClass        0
  bDeviceProtocol        3
  bMaxPacketSize0        9
  idVendor          0x1d6b Linux Foundation
  idProduct          0x0003 3.0 root hub
  bcdDevice            5.07
  iManufacturer          3 Linux 5.7.0-2-pinebookpro-arm64 xhci-hcd
  iProduct                2 xHCI Host Controller
  iSerial                1 xhci-hcd.2.auto
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                9
    bDescriptorType        2
    wTotalLength      0x001f
    bNumInterfaces          1
    bConfigurationValue    1
    iConfiguration          0
    bmAttributes        0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        0
      bAlternateSetting      0
      bNumEndpoints          1
      bInterfaceClass        9 Hub
      bInterfaceSubClass      0
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type              None
          Usage Type              Data
        wMaxPacketSize    0x0004  1x 4 bytes
        bInterval              12
        bMaxBurst              0
Hub Descriptor:
  bLength              12
  bDescriptorType      42
  nNbrPorts            1
  wHubCharacteristic 0x000a
    No power switching (usb 1.0)
    Per-port overcurrent protection
  bPwrOn2PwrGood      10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  bHubDecLat          0.0 micro seconds
  wHubDelay            0 nano seconds
  DeviceRemovable    0x00
Hub Port Status:
  Port 1: 0000.02a0 5Gbps power Rx.Detect
Binary Object Store Descriptor:
  bLength                5
  bDescriptorType        15
  wTotalLength      0x000f
  bNumDeviceCaps          1
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes        0x02
      Latency Tolerance Messages (LTM) Supported
    wSpeedsSupported  0x0008
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport  3
      Lowest fully-functional device speed is SuperSpeed (5Gbps)
    bU1DevExitLat          0 micro seconds
    bU2DevExitLat          0 micro seconds
Device Status:    0x0001
  Self Powered

Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType        1
  bcdUSB              2.00
  bDeviceClass            9 Hub
  bDeviceSubClass        0
  bDeviceProtocol        1 Single TT
  bMaxPacketSize0        64
  idVendor          0x1d6b Linux Foundation
  idProduct          0x0002 2.0 root hub
  bcdDevice            5.07
  iManufacturer          3 Linux 5.7.0-2-pinebookpro-arm64 xhci-hcd
  iProduct                2 xHCI Host Controller
  iSerial                1 xhci-hcd.2.auto
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                9
    bDescriptorType        2
    wTotalLength      0x0019
    bNumInterfaces          1
    bConfigurationValue    1
    iConfiguration          0
    bmAttributes        0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        0
      bAlternateSetting      0
      bNumEndpoints          1
      bInterfaceClass        9 Hub
      bInterfaceSubClass      0
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type              None
          Usage Type              Data
        wMaxPacketSize    0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength              9
  bDescriptorType      41
  nNbrPorts            1
  wHubCharacteristic 0x000a
    No power switching (usb 1.0)
    Per-port overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood      10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
Hub Port Status:
  Port 1: 0000.0100 power
Device Status:    0x0001
  Self Powered

Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Device Descriptor:
  bLength                18
  bDescriptorType        1
  bcdUSB              1.10
  bDeviceClass            9 Hub
  bDeviceSubClass        0
  bDeviceProtocol        0 Full speed (or root) hub
  bMaxPacketSize0        64
  idVendor          0x1d6b Linux Foundation
  idProduct          0x0001 1.1 root hub
  bcdDevice            5.07
  iManufacturer          3 Linux 5.7.0-2-pinebookpro-arm64 ohci_hcd
  iProduct                2 Generic Platform OHCI controller
  iSerial                1 fe3e0000.usb
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                9
    bDescriptorType        2
    wTotalLength      0x0019
    bNumInterfaces          1
    bConfigurationValue    1
    iConfiguration          0
    bmAttributes        0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        0
      bAlternateSetting      0
      bNumEndpoints          1
      bInterfaceClass        9 Hub
      bInterfaceSubClass      0
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type              None
          Usage Type              Data
        wMaxPacketSize    0x0002  1x 2 bytes
        bInterval            255
Hub Descriptor:
  bLength              9
  bDescriptorType      41
  nNbrPorts            1
  wHubCharacteristic 0x0012
    No power switching (usb 1.0)
    No overcurrent protection
  bPwrOn2PwrGood        2 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
Hub Port Status:
  Port 1: 0000.0100 power
Device Status:    0x0001
  Self Powered

Bus 002 Device 003: ID 0c45:6321 Microdia HP Integrated Webcam
Device Descriptor:
  bLength                18
  bDescriptorType        1
  bcdUSB              2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass        2
  bDeviceProtocol        1 Interface Association
  bMaxPacketSize0        64
  idVendor          0x0c45 Microdia
  idProduct          0x6321 HP Integrated Webcam
  bcdDevice            0.00
  iManufacturer          2 Sonix Technology Co., Ltd.
  iProduct                1 USB Camera
  iSerial                0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                9
    bDescriptorType        2
    wTotalLength      0x01eb
    bNumInterfaces          2
    bConfigurationValue    1
    iConfiguration          0
    bmAttributes        0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Association:
      bLength                8
      bDescriptorType        11
      bFirstInterface        0
      bInterfaceCount        2
      bFunctionClass        14 Video
      bFunctionSubClass      3 Video Interface Collection
      bFunctionProtocol      0
      iFunction              5 USB Camera
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        0
      bAlternateSetting      0
      bNumEndpoints          1
      bInterfaceClass        14 Video
      bInterfaceSubClass      1 Video Control
      bInterfaceProtocol      0
      iInterface              5 USB Camera
      VideoControl Interface Descriptor:
        bLength                13
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdUVC              1.00
        wTotalLength      0x004d
        dwClockFrequency      15.000000MHz
        bInCollection          1
        baInterfaceNr( 0)      1
      VideoControl Interface Descriptor:
        bLength                9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            2
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID              4
        iTerminal              0
      VideoControl Interface Descriptor:
        bLength                26
        bDescriptorType        36
        bDescriptorSubtype      6 (EXTENSION_UNIT)
        bUnitID                4
        guidExtensionCode        {28f03370-6311-4a2e-ba2c-6890eb334016}
        bNumControls            8
        bNrInPins              1
        baSourceID( 0)          3
        bControlSize            1
        bmControls( 0)      0x1f
        iExtension              0
      VideoControl Interface Descriptor:
        bLength                18
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID            1
        wTerminalType      0x0201 Camera Sensor
        bAssocTerminal          0
        iTerminal              0
        wObjectiveFocalLengthMin      0
        wObjectiveFocalLengthMax      0
        wOcularFocalLength            0
        bControlSize                  3
        bmControls          0x0000200e
          Auto-Exposure Mode
          Auto-Exposure Priority
          Exposure Time (Absolute)
          Roll (Absolute)
      VideoControl Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      5 (PROCESSING_UNIT)
      Warning: Descriptor too short
        bUnitID                3
        bSourceID              1
        wMaxMultiplier          0
        bControlSize            2
        bmControls    0x0000177f
          Brightness
          Contrast
          Hue
          Saturation
          Sharpness
          Gamma
          White Balance Temperature
          Backlight Compensation
          Gain
          Power Line Frequency
          White Balance Temperature, Auto
        iProcessing            0
        bmVideoStandards    0x2e
          NTSC - 525/60
          PAL - 625/50
          SECAM - 625/50
          PAL - 525/60
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type              None
          Usage Type              Data
        wMaxPacketSize    0x0010  1x 16 bytes
        bInterval              6
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        1
      bAlternateSetting      0
      bNumEndpoints          0
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0
      iInterface              5 USB Camera
      VideoStreaming Interface Descriptor:
        bLength                            14
        bDescriptorType                    36
        bDescriptorSubtype                  1 (INPUT_HEADER)
        bNumFormats                        1
        wTotalLength                  0x010f
        bEndPointAddress                  129
        bmInfo                              0
        bTerminalLink                      2
        bStillCaptureMethod                2
        bTriggerSupport                    0
        bTriggerUsage                      0
        bControlSize                        1
        bmaControls( 0)                    0
      VideoStreaming Interface Descriptor:
        bLength                            27
        bDescriptorType                    36
        bDescriptorSubtype                  4 (FORMAT_UNCOMPRESSED)
        bFormatIndex                        1
        bNumFrameDescriptors                5
        guidFormat                            {32595559-0000-0010-8000-00aa00389b71}
        bBitsPerPixel                      16
        bDefaultFrameIndex                  1
        bAspectRatioX                      0
        bAspectRatioY                      0
        bmInterlaceFlags                0x00
          Interlaced stream or variable: No
          Fields per frame: 2 fields
          Field 1 first: No
          Field pattern: Field 1 only
        bCopyProtect                        0
      VideoStreaming Interface Descriptor:
        bLength                            34
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                        1
        bmCapabilities                  0x00
          Still image unsupported
        wWidth                          1280
        wHeight                          720
        dwMinBitRate                73728000
        dwMaxBitRate                147456000
        dwMaxVideoFrameBufferSize    1843200
        dwDefaultFrameInterval        1000000
        bFrameIntervalType                  2
        dwFrameInterval( 0)          1000000
        dwFrameInterval( 1)          2000000
      VideoStreaming Interface Descriptor:
        bLength                            34
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                        2
        bmCapabilities                  0x00
          Still image unsupported
        wWidth                          1600
        wHeight                          1200
        dwMinBitRate                460800000
        dwMaxBitRate                614400000
        dwMaxVideoFrameBufferSize    3840000
        dwDefaultFrameInterval        500000
        bFrameIntervalType                  2
        dwFrameInterval( 0)            500000
        dwFrameInterval( 1)            666666
      VideoStreaming Interface Descriptor:
        bLength                            42
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                        3
        bmCapabilities                  0x00
          Still image unsupported
        wWidth                            640
        wHeight                          480
        dwMinBitRate                24576000
        dwMaxBitRate                98304000
        dwMaxVideoFrameBufferSize      614400
        dwDefaultFrameInterval        500000
        bFrameIntervalType                  4
        dwFrameInterval( 0)            500000
        dwFrameInterval( 1)            666666
        dwFrameInterval( 2)          1000000
        dwFrameInterval( 3)          2000000
      VideoStreaming Interface Descriptor:
        bLength                            42
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                        4
        bmCapabilities                  0x00
          Still image unsupported
        wWidth                            320
        wHeight                          240
        dwMinBitRate                  6144000
        dwMaxBitRate                24576000
        dwMaxVideoFrameBufferSize      153600
        dwDefaultFrameInterval        500000
        bFrameIntervalType                  4
        dwFrameInterval( 0)            500000
        dwFrameInterval( 1)            666666
        dwFrameInterval( 2)          1000000
        dwFrameInterval( 3)          2000000
      VideoStreaming Interface Descriptor:
        bLength                            34
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                        5
        bmCapabilities                  0x00
          Still image unsupported
        wWidth                            800
        wHeight                          600
        dwMinBitRate                38400000
        dwMaxBitRate                76800000
        dwMaxVideoFrameBufferSize      960000
        dwDefaultFrameInterval        1000000
        bFrameIntervalType                  2
        dwFrameInterval( 0)          1000000
        dwFrameInterval( 1)          2000000
      VideoStreaming Interface Descriptor:
        bLength                            38
        bDescriptorType                    36
        bDescriptorSubtype                  3 (STILL_IMAGE_FRAME)
        bEndpointAddress                    0
        bNumImageSizePatterns              8
        wWidth( 0)                      1600
        wHeight( 0)                      1200
        wWidth( 1)                        320
        wHeight( 1)                      240
        wWidth( 2)                        320
        wHeight( 2)                      240
        wWidth( 3)                        640
        wHeight( 3)                      480
        wWidth( 4)                        352
        wHeight( 4)                      288
        wWidth( 5)                        320
        wHeight( 5)                      240
        wWidth( 6)                        176
        wHeight( 6)                      144
        wWidth( 7)                        160
        wHeight( 7)                      120
        bNumCompressionPatterns            0
      VideoStreaming Interface Descriptor:
        bLength                            6
        bDescriptorType                    36
        bDescriptorSubtype                13 (COLORFORMAT)
        bColorPrimaries                    1 (BT.709,sRGB)
        bTransferCharacteristics            1 (BT.709)
        bMatrixCoefficients                4 (SMPTE 170M (BT.601))
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        1
      bAlternateSetting      1
      bNumEndpoints          1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type              Asynchronous
          Usage Type              Data
        wMaxPacketSize    0x0080  1x 128 bytes
        bInterval              1
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        1
      bAlternateSetting      2
      bNumEndpoints          1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type              Asynchronous
          Usage Type              Data
        wMaxPacketSize    0x0100  1x 256 bytes
        bInterval              1
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        1
      bAlternateSetting      3
      bNumEndpoints          1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type              Asynchronous
          Usage Type              Data
        wMaxPacketSize    0x0320  1x 800 bytes
        bInterval              1
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        1
      bAlternateSetting      4
      bNumEndpoints          1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type              Asynchronous
          Usage Type              Data
        wMaxPacketSize    0x0b20  2x 800 bytes
        bInterval              1
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        1
      bAlternateSetting      5
      bNumEndpoints          1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type              Asynchronous
          Usage Type              Data
        wMaxPacketSize    0x1320  3x 800 bytes
        bInterval              1
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        1
      bAlternateSetting      6
      bNumEndpoints          1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type              Asynchronous
          Usage Type              Data
        wMaxPacketSize    0x1400  3x 1024 bytes
        bInterval              1
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType        6
  bcdUSB              2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass        2
  bDeviceProtocol        1 Interface Association
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:    0x0002
  (Bus Powered)
  Remote Wakeup Enabled

Bus 002 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Device Descriptor:
  bLength                18
  bDescriptorType        1
  bcdUSB              2.00
  bDeviceClass            9 Hub
  bDeviceSubClass        0
  bDeviceProtocol        1 Single TT
  bMaxPacketSize0        64
  idVendor          0x05e3 Genesys Logic, Inc.
  idProduct          0x0608 Hub
  bcdDevice          85.36
  iManufacturer          0
  iProduct                1 USB2.0 Hub
  iSerial                0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                9
    bDescriptorType        2
    wTotalLength      0x0019
    bNumInterfaces          1
    bConfigurationValue    1
    iConfiguration          0
    bmAttributes        0xe0
      Self Powered
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        0
      bAlternateSetting      0
      bNumEndpoints          1
      bInterfaceClass        9 Hub
      bInterfaceSubClass      0
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type              None
          Usage Type              Data
        wMaxPacketSize    0x0001  1x 1 bytes
        bInterval              12
Hub Descriptor:
  bLength              9
  bDescriptorType      41
  nNbrPorts            4
  wHubCharacteristic 0x00e0
    Ganged power switching
    Ganged overcurrent protection
    TT think time 32 FS bits
    Port indicators
  bPwrOn2PwrGood      50 * 2 milli seconds
  bHubContrCurrent    100 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
Hub Port Status:
  Port 1: 0000.0100 power
  Port 2: 0000.0503 highspeed power enable connect
  Port 3: 0000.0100 power
  Port 4: 0000.0100 power
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType        6
  bcdUSB              2.00
  bDeviceClass            9 Hub
  bDeviceSubClass        0
  bDeviceProtocol        0 Full speed (or root) hub
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:    0x0001
  Self Powered

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType        1
  bcdUSB              2.00
  bDeviceClass            9 Hub
  bDeviceSubClass        0
  bDeviceProtocol        0 Full speed (or root) hub
  bMaxPacketSize0        64
  idVendor          0x1d6b Linux Foundation
  idProduct          0x0002 2.0 root hub
  bcdDevice            5.07
  iManufacturer          3 Linux 5.7.0-2-pinebookpro-arm64 ehci_hcd
  iProduct                2 EHCI Host Controller
  iSerial                1 fe3c0000.usb
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                9
    bDescriptorType        2
    wTotalLength      0x0019
    bNumInterfaces          1
    bConfigurationValue    1
    iConfiguration          0
    bmAttributes        0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        0
      bAlternateSetting      0
      bNumEndpoints          1
      bInterfaceClass        9 Hub
      bInterfaceSubClass      0
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type              None
          Usage Type              Data
        wMaxPacketSize    0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength              9
  bDescriptorType      41
  nNbrPorts            1
  wHubCharacteristic 0x0009
    Per-port power switching
    Per-port overcurrent protection
  bPwrOn2PwrGood      10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
Hub Port Status:
  Port 1: 0000.0503 highspeed power enable connect
Device Status:    0x0001
  Self Powered

Bus 003 Device 002: ID 258a:001e HAILUCK CO.,LTD USB KEYBOARD
Device Descriptor:
  bLength                18
  bDescriptorType        1
  bcdUSB              1.10
  bDeviceClass            0
  bDeviceSubClass        0
  bDeviceProtocol        0
  bMaxPacketSize0        8
  idVendor          0x258a
  idProduct          0x001e
  bcdDevice            1.00
  iManufacturer          1 HAILUCK CO.,LTD
  iProduct                2 USB KEYBOARD
  iSerial                0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                9
    bDescriptorType        2
    wTotalLength      0x003b
    bNumInterfaces          2
    bConfigurationValue    1
    iConfiguration          0
    bmAttributes        0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        0
      bAlternateSetting      0
      bNumEndpoints          1
      bInterfaceClass        3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0
        HID Device Descriptor:
          bLength                9
          bDescriptorType        33
          bcdHID              1.10
          bCountryCode            0 Not supported
          bNumDescriptors        1
          bDescriptorType        34 Report
          wDescriptorLength      65
        Report Descriptors:
          ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type              None
          Usage Type              Data
        wMaxPacketSize    0x0008  1x 8 bytes
        bInterval              10
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        1
      bAlternateSetting      0
      bNumEndpoints          1
      bInterfaceClass        3 Human Interface Device
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
        HID Device Descriptor:
          bLength                9
          bDescriptorType        33
          bcdHID              1.10
          bCountryCode            0 Not supported
          bNumDescriptors        1
          bDescriptorType        34 Report
          wDescriptorLength    487
        Report Descriptors:
          ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type              None
          Usage Type              Data
        wMaxPacketSize    0x0008  1x 8 bytes
        bInterval              10
Device Status:    0x0000
  (Bus Powered)

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Device Descriptor:
  bLength                18
  bDescriptorType        1
  bcdUSB              1.10
  bDeviceClass            9 Hub
  bDeviceSubClass        0
  bDeviceProtocol        0 Full speed (or root) hub
  bMaxPacketSize0        64
  idVendor          0x1d6b Linux Foundation
  idProduct          0x0001 1.1 root hub
  bcdDevice            5.07
  iManufacturer          3 Linux 5.7.0-2-pinebookpro-arm64 ohci_hcd
  iProduct                2 Generic Platform OHCI controller
  iSerial                1 fe3a0000.usb
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                9
    bDescriptorType        2
    wTotalLength      0x0019
    bNumInterfaces          1
    bConfigurationValue    1
    iConfiguration          0
    bmAttributes        0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        0
      bAlternateSetting      0
      bNumEndpoints          1
      bInterfaceClass        9 Hub
      bInterfaceSubClass      0
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type              None
          Usage Type              Data
        wMaxPacketSize    0x0002  1x 2 bytes
        bInterval            255
Hub Descriptor:
  bLength              9
  bDescriptorType      41
  nNbrPorts            1
  wHubCharacteristic 0x0012
    No power switching (usb 1.0)
    No overcurrent protection
  bPwrOn2PwrGood        2 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
Hub Port Status:
  Port 1: 0000.0303 lowspeed power enable connect
Device Status:    0x0001
  Self Powered

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType        1
  bcdUSB              2.00
  bDeviceClass            9 Hub
  bDeviceSubClass        0
  bDeviceProtocol        0 Full speed (or root) hub
  bMaxPacketSize0        64
  idVendor          0x1d6b Linux Foundation
  idProduct          0x0002 2.0 root hub
  bcdDevice            5.07
  iManufacturer          3 Linux 5.7.0-2-pinebookpro-arm64 ehci_hcd
  iProduct                2 EHCI Host Controller
  iSerial                1 fe380000.usb
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                9
    bDescriptorType        2
    wTotalLength      0x0019
    bNumInterfaces          1
    bConfigurationValue    1
    iConfiguration          0
    bmAttributes        0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                9
      bDescriptorType        4
      bInterfaceNumber        0
      bAlternateSetting      0
      bNumEndpoints          1
      bInterfaceClass        9 Hub
      bInterfaceSubClass      0
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                7
        bDescriptorType        5
        bEndpointAddress    0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type              None
          Usage Type              Data
        wMaxPacketSize    0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength              9
  bDescriptorType      41
  nNbrPorts            1
  wHubCharacteristic 0x0009
    Per-port power switching
    Per-port overcurrent protection
  bPwrOn2PwrGood      10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
Hub Port Status:
  Port 1: 0000.0100 power
Device Status:    0x0001
  Self Powered
  Reply
#93
All USB keyboards belong to the USB human interface device (HID) class of USB devices.
  Reply
#94
Hee-hee, I've been following and wishing I had an 8051 to play with. I look down at a pile of junk boards beside me and there's an 8052. Came out of some junk printer I think years ago. 256 byes of RAM. Now my chances of unsoldering a 40-pin DIP and having it still work, well, not so great. Genuine Intel with a 1989 date code. I could build a front panel for it and pretend it's an Altair. Who knows.
  Reply
#95
Good old times.  These days, eight 5 GHz cores and 16 GB of RAM is what's needed to display bloated websites.

Edit: Actually, the datasheet for the SH68F83 keyboard controller is available.  Have a look at the page 54, for example; it shows a reference keyboard design.
  Reply
#96
Yep, and they run half the speed than they did on computers a quarter as fast just a few years ago.

I had forgot* that all this stuff was USB. That's probably a good reason for the code size. Although if the disassembly above is correct, there's probably just a ton of bloat, as must be expected these days. No doubt the source is hundreds of megabytes of C++.

What I was thinking about the location of the chip above, is that if it was proprietary from the manufacturer, I'd expect it to be on a separate board. It just seems odd to me to supply proprietary code for the end user to run on their own processor. It also seems odd to me to use USB in this case, but I suppose that makes sense from a modern software perspective.

*not that I didn't know, but just can't get used to using so much bloat from a hardware design perspective.
  Reply
#97
(04-21-2021, 04:36 PM)KC9UDX Wrote: I had forgot* that all this stuff was USB.  That's probably a good reason for the code size.  Although if the disassembly above is correct, there's probably just a ton of bloat, as must be expected these days.  No doubt the source is hundreds of megabytes of C++.

*not that I didn't know, but just can't get used to using so much bloat from a hardware design perspective.

It would be really interesting to see the original source code of the keyboard and touchpad firmware.  There's even some helper firmware image, which gets flashed to the keyboard in the first step, and serves to update the keyboard and the touchpad to their final firmware images in the second step.  Perhaps the source code isn't C++, and not in the range of hundreds of MBs, but it surely is a mix of various licensed libraries, cobbled together so they barely work.

I was also disgusted when the USB keyboards started replacing PS/2 keyboards.  Why replacing a good, dedicated interface?  However, convenience trumps everything, and for the most people it's convenient to have only one port type (i.e. USB) for all peripherals.

(04-21-2021, 04:36 PM)KC9UDX Wrote: What I was thinking about the location of the chip above, is that if it was proprietary from the manufacturer, I'd expect it to be on a separate board.  It just seems odd to me to supply proprietary code for the end user to run on their own processor.  It also seems odd to me to use USB in this case, but I suppose that makes sense from a modern software perspective.

Actually, the SH68F83 controller isn't proprietary to the keyboard manufacturer, as you can see in the datasheet I've linked in my previous post.  The keyboard and the keyboard controller are made by two different manufacturers, which was probably a measure to cut the cost down.  Also, I don't think that the PineBook Pro keyboard was made specifically for the PineBook Pro; I'd say that it's a generic design that's been just tweaked a bit to fit the PineBook Pro.

See also this very good description of the PineBook Pro keyboard and touchpad hardware.
  Reply
#98
I know the chip isn't proprietary, but the software it runs, which makes the keyboard work, is. It's probably normal these days, just odd to me that a keyboard manufacturer would supply software for you to run outside of the product they deliver.
  Reply
#99
From working with USB 2832 SDR dongles I've come to see the USB as just a layer.  librtlsdr handles the usblib stuff and you get to the data behind it like it wasn't connected by USB.  Now I've got a USB DVD drive, printer, hard drives and SSDs (in adapters), cameras.  Only Apple could design a connector that you have a 50% chance of trying to plug in upside down though.  And microusb connectors are standard power connectors on cell phones.  All of my internet comes through a microusb cable that tethers a phone to a regular USB jack on a Raspberry Pi which is powered through another microusb.

I guess I didn't realize that the keyboard firmware was a proprietary blob, I never agreed not to disassemble it. Having worked with 8088 code (25 years ago) the 8051 looks like a simpler version. If you search for 8051 in Debian debs you can find assemblers and dissasemblers, there's even a specialized IDE that comes with another assembler. With the 8-write limit you can't do much playing around though.
  Reply
I don't think Apple had any say in the design of USB connectors. I thought that was mainly Intel with input from DEC. Apple of course eventually made the symmetrical lightning connector, which I wish would replace USB. It is inherently much stronger than the USB-C connector.

I don't know what the licencing might be like for the firmware. But it is closed source.

I yoostaby fluent in 8086. I fully abandoned that when it became obvious that Windows 95 was the future. I couldn't put together three lines of 8086 today. It is my opinion, right or wrong, that if we're going to have a fully functional keyboard and a touchpad without serious hysteresis, someone is going to have to write the firmware from scratch in 8051. If I had the time to invest in writing that, I'd spend it to reverse engineer the hardware and replace the microcontroller with a 65c816 and support, which wouldn't be helpful to anyone but myself, unfortunately.
  Reply


Forum Jump:


Users browsing this thread: 6 Guest(s)