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: 1 Guest(s)