Glorious Model O- Wireless

Glorious Model O- Wireless gaming mouse.

back to gadgets page.

Links

Glorious Gaming Model O- Wireless mouse, mxw - Cross platform CLI for configuring Glorious wireless mice,

local links

c2,

History

2024-08-19: c2 - mxw now works

tingo@kg-core2:~ $ mxw report firmware
0.3.8.0
tingo@kg-core2:~ $ mxw report battery
(asleep)

2024-08-19: c2 - I created a devd file

root@kg-core2:~ # !1452
cat /usr/local/etc/devd/gloriousominus.conf
# allow non-root users to have access to the Glorious Model O- Wireless mouse
#
# wired
notify 100 {
    match "system" "USB";
    match "subsystem" "DEVICE";
    match "type" "ATTACH";
    match "vendor" "0x258a";
    match "product" "0x2013";
# Please uncomment the line below and change the group name to suit
# your own needs.
    action "chgrp operator /dev/$cdev && chmod 660 /dev/$cdev";
};
# wireless
notify 100 {
    match "system" "USB";
    match "subsystem" "DEVICE";
    match "type" "ATTACH";
    match "vendor" "0x258a";
    match "product" "0x2024";
# Please uncomment the line below and change the group name to suit
# your own needs.
    action "chgrp operator /dev/$cdev && chmod 660 /dev/$cdev";
};

and after restarting devd, sudo isn't required anymore.

2024-08-19: c2 - after a bit of searching, I found mxw, cloned the repositoruy and built it

tingo@kg-core2:/zt/t2/doc/Glorious_Gaming/mice/Model_O-_Wireless/mxw $ cargo build
    Updating crates.io index
  Downloaded anstream v0.6.14
  Downloaded is_terminal_polyfill v1.70.0
  Downloaded anstyle-query v1.0.3
  Downloaded colorchoice v1.0.1
  Downloaded anstyle v1.0.7
  Downloaded anstyle-parse v0.2.4
  Downloaded clap_lex v0.7.0
  Downloaded clap_derive v4.5.4
  Downloaded clap v4.5.4
  Downloaded hidapi v2.6.1
  Downloaded cc v1.0.98
  Downloaded clap_builder v4.5.2
  Downloaded strum_macros v0.26.3
  Downloaded 13 crates (585.3 KB) in 0.93s
   Compiling proc-macro2 v1.0.85
   Compiling unicode-ident v1.0.12
   Compiling utf8parse v0.2.1
   Compiling colorchoice v1.0.1
   Compiling libc v0.2.155
   Compiling heck v0.5.0
   Compiling anstyle-query v1.0.3
   Compiling is_terminal_polyfill v1.70.0
   Compiling cc v1.0.98
   Compiling pkg-config v0.3.30
   Compiling anstyle v1.0.7
   Compiling rustversion v1.0.17
   Compiling anstyle-parse v0.2.4
   Compiling anyhow v1.0.86
   Compiling clap_lex v0.7.0
   Compiling strsim v0.11.1
   Compiling cfg-if v1.0.0
   Compiling lazy_static v1.4.0
   Compiling colored v2.1.0
   Compiling anstream v0.6.14
   Compiling strum v0.26.2
   Compiling clap_builder v4.5.2
   Compiling hidapi v2.6.1
   Compiling quote v1.0.36
   Compiling syn v2.0.66
   Compiling clap_derive v4.5.4
   Compiling strum_macros v0.26.3
   Compiling clap v4.5.4
   Compiling mxw v0.1.2 (/zt/t2/doc/Glorious_Gaming/mice/Model_O-_Wireless/mxw)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 13.54s

testing

tingo@kg-core2:/zt/t2/doc/Glorious_Gaming/mice/Model_O-_Wireless/mxw $ target/debug/mxw
Cross platform CLI tool for Glorious' wireless mice.

Originally reverse engineered using USB packet logs sniffed with
WireShark and USBPcap, as well as a decompilation of the official
Windows program (Glorious Core).


Usage: mxw <COMMAND>

Commands:
  report  Retrieve information about the device
  config  Change the device's various settings

Options:
  -h, --help     Print help
  -V, --version  Print version
tingo@kg-core2:/zt/t2/doc/Glorious_Gaming/mice/Model_O-_Wireless/mxw $ target/debug/mxw --version
mxw 0.1.2

see if it finds the mouse

tingo@kg-core2:/zt/t2/doc/Glorious_Gaming/mice/Model_O-_Wireless/mxw $ target/debug/mxw report battery
error: no matching device found

tingo@kg-core2:/zt/t2/doc/Glorious_Gaming/mice/Model_O-_Wireless/mxw $ target/debug/mxw report firmware
error: no matching device found

ok, with sudo then

tingo@kg-core2:/zt/t2/doc/Glorious_Gaming/mice/Model_O-_Wireless/mxw $ sudo target/debug/mxw report battery
100%
tingo@kg-core2:/zt/t2/doc/Glorious_Gaming/mice/Model_O-_Wireless/mxw $ sudo target/debug/mxw report firmware
0.3.8.0

yes.

2024-08-19: c2 - using the dongle, I connected the mouse via wireless. usbconfig reports

root@kg-core2:~ # usbconfig -d ugen1.5
ugen1.5: <Glorious Model O- Wireless> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

device description

root@kg-core2:~ # usbconfig -d ugen1.5 dump_device_desc
ugen1.5: <Glorious Model O- Wireless> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0000  <Probed by interface class>
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x258a 
  idProduct = 0x2024 
  bcdDevice = 0x0100 
  iManufacturer = 0x0001  <Glorious>
  iProduct = 0x0002  <Model O- Wireless>
  iSerialNumber = 0x0003  <000000000000>
  bNumConfigurations = 0x0001 

current config description

root@kg-core2:~ # usbconfig -d ugen1.5 dump_curr_config_desc
ugen1.5: <Glorious Model O- Wireless> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)


 Configuration index 0

    bLength = 0x0009 
    bDescriptorType = 0x0002 
    wTotalLength = 0x0054 
    bNumInterfaces = 0x0003 
    bConfigurationValue = 0x0001 
    iConfiguration = 0x0004  <Default configuration>
    bmAttributes = 0x00e0 
    bMaxPower = 0x0032 

    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0001 
      bInterfaceClass = 0x0003  <HID device>
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0002 
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x11
       RAW dump: 
       0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x5b, 
       0x08 | 0x00

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0001 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


    Interface 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0001 
      bInterfaceClass = 0x0003  <HID device>
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0001 
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x11
       RAW dump: 
       0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0xa3, 
       0x08 | 0x00

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0082  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0001 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


    Interface 2
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0002 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0001 
      bInterfaceClass = 0x0003  <HID device>
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0001 
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x11
       RAW dump: 
       0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x14, 
       0x08 | 0x00

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0083  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0001 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

2024-08-19: c2 - connected the mouse with the usb cable to my workstation. Default the mouse comes with a light effect enabled, I must figure out how to turn it off. usbconfig reports

root@kg-core2:~ # usbconfig -d ugen1.5
ugen1.5: <Glorious Model O- Wireless> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)

device description

root@kg-core2:~ # usbconfig -d ugen1.5 dump_device_desc
ugen1.5: <Glorious Model O- Wireless> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0000  <Probed by interface class>
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x258a 
  idProduct = 0x2013 
  bcdDevice = 0x0101 
  iManufacturer = 0x0001  <Glorious>
  iProduct = 0x0002  <Model O- Wireless>
  iSerialNumber = 0x0003  <000000000000>
  bNumConfigurations = 0x0001 

current config description

root@kg-core2:~ # usbconfig -d ugen1.5 dump_curr_config_desc
ugen1.5: <Glorious Model O- Wireless> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)


 Configuration index 0

    bLength = 0x0009 
    bDescriptorType = 0x0002 
    wTotalLength = 0x0054 
    bNumInterfaces = 0x0003 
    bConfigurationValue = 0x0001 
    iConfiguration = 0x0004  <Default configuration>
    bmAttributes = 0x00e0 
    bMaxPower = 0x00fa 

    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0001 
      bInterfaceClass = 0x0003  <HID device>
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0002 
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x11
       RAW dump: 
       0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x5b, 
       0x08 | 0x00

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0001 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


    Interface 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0001 
      bInterfaceClass = 0x0003  <HID device>
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0001 
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x11
       RAW dump: 
       0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0xa3, 
       0x08 | 0x00

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0082  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0001 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


    Interface 2
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0002 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0001 
      bInterfaceClass = 0x0003  <HID device>
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0001 
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x11
       RAW dump: 
       0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x14, 
       0x08 | 0x00

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0083  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0001 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

2024-08-19: I created this page.

2024-08-19: At around 12:56 local time, I got a pickup message (SMS) on my phone. At around 16:03, I fetched the package at Instabox Extra Birkelunden.

2024-08-16: From Maxgaming.no, I ordered a Glorious Model O- Wireless mouse. Prices was NOK 690.-, shipping was NOK 59.- a total of NOK 749.- The package was shipped on the same day.