Coder Social home page Coder Social logo

decrazyo / unifying Goto Github PK

View Code? Open in Web Editor NEW
47.0 5.0 1.0 28.15 MB

FOSS re-implementation of the Logitech Unifying protocol

License: GNU General Public License v3.0

Makefile 0.25% C 99.64% C++ 0.12%
keyboard logitech mouse nrf24 nrf24l01 nrf51 nrf52 reverse-engineering reversing unifying

unifying's Introduction

Logitech Unifying Protocol Implementation

Arduino nano and nRF24L01+ on breadboard

This project is an attempt to re-implement the proprietary Logitech Unifying protocol as a free and open C library. The library is intended to be Arduino compatible while remaining compiler and hardware agnostic. The goal of this project is to enable people to create custom keyboards and mice that are compatible with Logitech Unifying receivers.

Example

The provided Arduino example is dependent on the RF24 library. https://github.com/nRF24/RF24

TODO

  • Add proper HID++ response payloads
  • Add more examples
  • General code cleanup

Done

  • Timing-critical packet transmission
  • Pairing with a receiver
  • HID++ error response payloads
  • Encrypted keystroke payloads
  • Add documentation
  • Add mouse payloads
  • Add multimedia payloads
  • Add wake up payloads

See also

Hacking Logitech Unifying DC612 talk
nRF24 pseudo-promiscuous mode
KeySweeper
MouseJack
KeyJack
KeySniffer
Of Mice And Keyboards
Logitech HID++ Specification
Official Logitech Firmware

unifying's People

Contributors

decrazyo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

scruper

unifying's Issues

I have a question.

First of all, I am not good at English. Please understand.

I start pairing on Unifying software and when I connect the device, it works well until the device presses the key.

But when I disconnect and reconnect the device, it doesn't work.

Every time I reconnect the device, I have to make a new pairing to make the device work.

I want the device to work without pairing when I reconnect the device if it's already paired.

What should I do?

I have a question.

I am not familiar with English, so please understand.

First of all, thank you for your great library.

I confirmed that my model name is C-U0007.

I used Uno board and nrf24l01.
I connected it like this.

Uno - NRF24L01

VCC- 3.3V
GND- GND
SCK- D13
MISO- D12
MOSI- D11
CSN- D7
CE- D8

However, these messages are repeated infinitely.

23:09:30.573 -> Channel: 20
23:09:30.573 -> Transmit: [0x00, 0x50, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x63]
23:09:30.664 -> Channel: 23
23:09:30.664 -> Transmit: [0x00, 0x50, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x63]
23:09:30.754 -> Channel: 26
23:09:30.754 -> Transmit: [0x00, 0x50, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x63]
23:09:30.844 -> Channel: 29
23:09:30.844 -> Transmit: [0x00, 0x50, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x63]
23:09:30.965 -> Channel: 32
23:09:30.965 -> Transmit: [0x00, 0x50, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x63]
23:09:31.054 -> Channel: 35
23:09:31.054 -> Transmit: [0x00, 0x50, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x63]
23:09:31.144 -> Channel: 38
23:09:31.144 -> Transmit: [0x00, 0x50, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x63]
.
.
.

There is no response to pairing in the unifying software.
How can I connect it?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.