Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Razer Ornata V3 Tenkeyless #2140

Open
abeguerra opened this issue Oct 2, 2023 · 4 comments · May be fixed by #2183
Open

Support for Razer Ornata V3 Tenkeyless #2140

abeguerra opened this issue Oct 2, 2023 · 4 comments · May be fixed by #2183
Labels
Device Support need pcap USB traffic packet captures are useful - see wiki "Reverse Engineering USB Protocol"

Comments

@abeguerra
Copy link

abeguerra commented Oct 2, 2023

Device Info

  • Name: Razer Ornata V3 TKL
  • Product Number: RZ03-04880200-R3U1
  • Model Number: RZ03-0488

Device Information

Bus 001 Device 013: ID 1532:02a3 Razer USA, Ltd Razer Ornata V3 Tenkeyless
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x1532 Razer USA, Ltd
  idProduct          0x02a3 
  bcdDevice            2.00
  iManufacturer           1 Razer
  iProduct                2 Razer Ornata V3 Tenkeyless
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0054
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              500mA
    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.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      61
         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               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      1 Keyboard
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     179
         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     0x0016  1x 22 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      94
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               1
Device Status:     0x0000
  (Bus Powered)
total 0
drwxr-xr-x 2 root root 420 Oct  1 21:11 .
drwxr-xr-x 4 root root 840 Oct  1 21:11 ..
lrwxrwxrwx 1 root root  10 Oct  1 21:11 usb-046d_Logitech_Webcam_C930e_D7153C0E-event-if00 -> ../event22
lrwxrwxrwx 1 root root   9 Oct  1 21:11 usb-Azurewave_Integrated_Camera_200901010001-event-if00 -> ../event3
lrwxrwxrwx 1 root root   9 Oct  1 21:11 usb-Azurewave_Integrated_Camera_200901010001-event-if02 -> ../event5
lrwxrwxrwx 1 root root   9 Oct  1 21:11 usb-Logitech_USB_Receiver-if02-event-mouse -> ../event9
lrwxrwxrwx 1 root root   9 Oct  1 21:11 usb-Logitech_USB_Receiver-if02-mouse -> ../mouse3
lrwxrwxrwx 1 root root  10 Oct  1 21:11 usb-Razer_Razer_Blade-event-if01 -> ../event19
lrwxrwxrwx 1 root root  10 Oct  1 21:11 usb-Razer_Razer_Blade-event-kbd -> ../event15
lrwxrwxrwx 1 root root  10 Oct  1 21:11 usb-Razer_Razer_Blade-if01-event-kbd -> ../event18
lrwxrwxrwx 1 root root  10 Oct  1 21:11 usb-Razer_Razer_Blade-if02-event-mouse -> ../event20
lrwxrwxrwx 1 root root   9 Oct  1 21:11 usb-Razer_Razer_Blade-if02-mouse -> ../mouse5
lrwxrwxrwx 1 root root   9 Oct  1 21:11 usb-Razer_Razer_Laptop_Stand_Chroma-event-mouse -> ../event4
lrwxrwxrwx 1 root root  10 Oct  1 21:11 usb-Razer_Razer_Laptop_Stand_Chroma-if01-event-kbd -> ../event25
lrwxrwxrwx 1 root root  10 Oct  1 21:11 usb-Razer_Razer_Laptop_Stand_Chroma-if02-event-kbd -> ../event23
lrwxrwxrwx 1 root root   9 Oct  1 21:11 usb-Razer_Razer_Laptop_Stand_Chroma-mouse -> ../mouse0
lrwxrwxrwx 1 root root  10 Oct  1 21:11 usb-Razer_Razer_Ornata_V3_Tenkeyless-event-if01 -> ../event16
lrwxrwxrwx 1 root root  10 Oct  1 21:11 usb-Razer_Razer_Ornata_V3_Tenkeyless-event-kbd -> ../event12
lrwxrwxrwx 1 root root  10 Oct  1 21:11 usb-Razer_Razer_Ornata_V3_Tenkeyless-if01-event-kbd -> ../event14
lrwxrwxrwx 1 root root  10 Oct  1 21:11 usb-Razer_Razer_Ornata_V3_Tenkeyless-if02-event-mouse -> ../event17
lrwxrwxrwx 1 root root   9 Oct  1 21:11 usb-Razer_Razer_Ornata_V3_Tenkeyless-if02-mouse -> ../mouse4
001:012:002:DESCRIPTOR         1696209784.254085
 05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 05
 15 00 25 01 75 01 95 05 81 02 75 01 95 03 81 03
 06 00 FF 09 40 75 08 95 02 15 81 25 7F 81 02 05
 01 09 38 15 81 25 7F 75 08 95 01 81 06 09 30 09
 31 16 00 80 26 FF 7F 75 10 95 02 81 06 C0 06 00
 FF 09 02 15 00 25 01 75 08 95 5A B1 01 C0

001:012:001:DESCRIPTOR         1696209784.254704
 05 01 09 06 A1 01 85 01 05 07 19 E0 29 E7 15 00
 25 01 75 01 95 08 81 02 19 00 2A FF 00 15 00 26
 FF 00 75 08 95 0E 81 00 C0 05 0C 09 01 A1 01 85
 02 19 00 2A 3C 02 15 00 26 3C 02 95 01 75 10 81
 00 75 08 95 0D 81 01 C0 05 01 09 80 A1 01 85 03
 19 81 29 83 15 00 25 01 75 01 95 03 81 02 95 05
 81 01 75 08 95 0E 81 01 C0 05 01 09 00 A1 01 85
 04 09 03 15 00 26 FF 00 35 00 46 FF 00 75 08 95
 0F 81 00 C0 05 01 09 00 A1 01 85 05 09 03 15 00
 26 FF 00 35 00 46 FF 00 75 08 95 0F 81 00 C0

001:012:000:DESCRIPTOR         1696209784.255226
 05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01
 75 01 95 08 81 02 81 01 19 00 2A FF 00 15 00 26
 FF 00 75 08 95 06 81 00 05 08 19 01 29 03 15 00
 25 01 75 01 95 03 91 02 95 05 91 01 C0

001:013:002:DESCRIPTOR         1696209784.255613
 05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 05
 15 00 25 01 75 01 95 05 81 02 75 01 95 03 81 03
 06 00 FF 09 40 75 08 95 02 15 81 25 7F 81 02 05
 01 09 38 15 81 25 7F 75 08 95 01 81 06 09 30 09
 31 16 00 80 26 FF 7F 75 10 95 02 81 06 C0 06 00
 FF 09 02 15 00 25 01 75 08 95 5A B1 01 C0

001:013:001:DESCRIPTOR         1696209784.256222
 05 01 09 06 A1 01 85 01 05 07 05 07 19 E0 29 E7
 15 00 25 01 75 01 95 08 81 02 19 00 29 A0 15 00
 25 01 75 01 95 A0 81 02 05 08 19 01 29 03 15 00
 25 01 75 01 95 03 91 02 95 05 91 01 C0 05 0C 09
 01 A1 01 85 02 19 00 2A 3C 02 15 00 26 3C 02 95
 01 75 10 81 00 75 08 95 13 81 01 C0 05 01 09 80
 A1 01 85 03 19 81 29 83 15 00 25 01 75 01 95 03
 81 02 95 05 81 01 75 08 95 14 81 01 C0 05 01 09
 00 A1 01 85 04 09 03 15 00 26 FF 00 35 00 46 FF
 00 75 08 95 15 81 00 C0 05 01 09 00 A1 01 85 05
 09 03 15 00 26 FF 00 35 00 46 FF 00 75 08 95 15
 81 00 C0

001:013:000:DESCRIPTOR         1696209784.256799
 05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01
 75 01 95 08 81 02 81 01 19 00 2A FF 00 15 00 26
 FF 00 75 08 95 06 81 00 05 08 19 01 29 03 15 00
 25 01 75 01 95 03 91 02 95 05 91 01 C0

001:009:002:DESCRIPTOR         1696209784.257138
 05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01
 75 01 95 08 81 02 81 01 19 00 2A FF 00 15 00 26
 FF 00 75 08 95 06 81 00 05 08 19 01 29 03 15 00
 25 01 75 01 95 03 91 02 95 05 91 01 C0

001:009:001:DESCRIPTOR         1696209784.257675
 05 01 09 06 A1 01 85 01 05 07 19 E0 29 E7 15 00
 25 01 75 01 95 08 81 02 19 00 2A FF 00 15 00 26
 FF 00 75 08 95 0E 81 00 C0 05 0C 09 01 A1 01 85
 02 19 00 2A 3C 02 15 00 26 3C 02 95 01 75 10 81
 00 75 08 95 0D 81 01 C0 05 01 09 80 A1 01 85 03
 19 81 29 83 15 00 25 01 75 01 95 03 81 02 95 05
 81 01 75 08 95 0E 81 01 C0 05 01 09 00 A1 01 85
 04 09 03 15 00 26 FF 00 35 00 46 FF 00 75 08 95
 0F 81 00 C0 05 01 09 00 A1 01 85 05 09 03 15 00
 26 FF 00 35 00 46 FF 00 75 08 95 0F 81 00 C0

001:009:000:DESCRIPTOR         1696209784.258305
 05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 05
 15 00 25 01 75 01 95 05 81 02 75 01 95 03 81 03
 06 00 FF 09 40 75 08 95 02 15 81 25 7F 81 02 05
 01 09 38 15 81 25 7F 75 08 95 01 81 06 09 30 09
 31 16 00 80 26 FF 7F 75 10 95 02 81 06 C0 06 00
 FF 09 02 15 00 25 01 75 08 95 5A B1 01 C0

Packet Captures

stepping through this

Synapse Screenshots

I'm on ubuntu. I'm not sure how to get these screenshots
<Screenshots of all available options as seen on Razer Synapse in a Windows Environment>

@z3ntu z3ntu changed the title Support for [device name here] Support for Razer Ornata V3 Tenkeyless Oct 2, 2023
@z3ntu z3ntu added the need pcap USB traffic packet captures are useful - see wiki "Reverse Engineering USB Protocol" label Oct 2, 2023
@abeguerra
Copy link
Author

I don't have synapse so I capture packets from switching my keyboard lights on and off via the keyboard F11 and F12 keys
packets.zip

@z3ntu
Copy link
Member

z3ntu commented Oct 14, 2023

Doing anything just on the keyboard won't produce any useful USB packets. Really just Synapse on Windows will provide what's interesting. But if you can you can also directly try adding support for your device, following https://github.com/openrazer/openrazer/blob/master/DEVELOPMENT.md

@AndersKlint
Copy link

I've working on supporting this keyboard, but have some problems. Synapse works fine for changing brightness and for the following effects: wave, spectrum, static, reactive and breath. However, custom effects doesn't work (as well as starlight and ripple - I assume they're not built into the firmware).

Checking dmesg there's errors like " Response doesn't match request" etc (see logs inside attached zip). Report params are set to this:
image

All my changes can be seen in the latest commit of his fork:
https://github.com/AndersKlint/openrazer-add-ornata-v3-tkl

Captured packages, screenshots of Synapse and logs can be seen in attached zip.
ornata-v3-pcap-and-logs.zip

I've built the deb packages and installed them using the instruction in the wiki. Would be happy with some help getting the custom led effects working :)

@AndersKlint
Copy link

AndersKlint commented Dec 18, 2023

I figured out the issue - I had the wrong matrix dims. I though they were equivalent to the amount of keys on the keyboard, but in fact they were only 1x8.

I'll post a PR tomorrow

@AndersKlint AndersKlint linked a pull request Dec 18, 2023 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Device Support need pcap USB traffic packet captures are useful - see wiki "Reverse Engineering USB Protocol"
Development

Successfully merging a pull request may close this issue.

3 participants