demonstration of wireless 8kHz on g305.
well, logitech conveniently included test points on the g305 pcb that break out the mcu's debug port.
the mcu of the g305 is the nrf52810.
the nrf52 radio has a fast ramp-up option that allows the radio to start transmission 40us after enabling.
the radio packet size is 13 bytes (preamble:1, address:4, data:6, crc:2), corresponding to 13*8 = 104bits. at 2 Mbps, this equates 52us on-air time.
so it is easily possible to transmit packets every 100us, which is well under 125us. actually it's possible to transmit even more frequently if the radio is never disabled, but that wastes power. it is also possible to use a shorter address and/or a 1 byte crc, at the cost of lower tolerance to noise/interference.
it is necessary to use two mcu's as currently there is no mcu supporting both a wireless radio and a high-speed usb controller.
here, the receiver consists of the nrf52840 dk and stm32f723 disco boards.
they are connected with a couple jumpers for communication over SPI
| nrf52840 | stm32f7 | |
|---|---|---|
| SCLK | P0.28 | PA5 |
| MISO | P0.29 | PB4 |
| MOSI | P0.30 | PB5 |
| CS | P0.31 | PA1 |
by default the hero sensor in the g305 is configured to run at roughly 1000 frames/s, and scales up to 12000 frames/s depending on the motion speed.
apparently, register 0x20 controls the maximum frame period (and hence, the minimum framerate) and can be set such that the minimum framerate is slightly above 8000 frames/s.
both the phase and frequency of the main loop in the mouse are synchronized to the CS pin in the receiver. this is accomplished by requesting and receiving timing information at 1 second intervals, whenever the mouse is idle. (possible to increase intervals to >30s once locked in.)
packets are received by the receiver in a timing window of less than 1us. this allows the time between receiving the wireless data and putting it in the usb cable to be minimized.
will fill out details later. at 8kHz with "overclocked" sensor, roughly 3x higher consumption than stock firmware. at 1kHz, roughly 30-40% lower consumption than stock firmware.
- dpi button
- powersaving and sleep modes
- pairing with receiver
- frequency selection/hopping?
- configuration software
- firmware updates (over SPI for the receiver's wireless mcu, and over-the-air for the mouse)
- encryption (not sure if possible without compromising performance and/or power consumption)
information about g305 and its hero sensor:
https://github.com/perigoso/g305-re
https://github.com/perigoso/hero-re
receiver board using nrf52810 + atsam3u (work in progress):
https://github.com/perigoso/russian-woodpecker/
wtflood#6025 on discord
if you're interested in technical details, ask to join our group chat.