Coder Social home page Coder Social logo

bilogic / logitech-unifying-device Goto Github PK

View Code? Open in Web Editor NEW
203.0 16.0 24.0 78 KB

Use ESP8266 and NRF24L01+ as a wireless Logitech Unifying keyboard/mouse

License: GNU General Public License v3.0

C++ 96.16% C 3.84%
board platformio dongles firmware

logitech-unifying-device's Introduction

Library to build Logitech Unifying compatible devices

I have always wanted an 84 key standard layout, wireless, mechanical keyboard with RGB backlight and rotary knobs plus media control buttons near the spacebar. Anyway, it did not take long for me to realize that bluetooth keyboards are notoriously unreliable, intermittently disconnecting every so often. However, Unifying ones are much better.

I never planned to publish this code, thus it is not the cleanest. But since I'm stuck, I thought someone might put it to good use and maybe figure out the problem. If you can make a more secured Unifying compatible protocol, all the better.

C-U0007 mitigation effort from firmware 012.010.00032 onwards

In an effort to prevent keys injection, the receiver's firmware will reject packets that start with a full buffer of 6 keystrokes, so start by filling the buffer slowly (like a human). If you know exactly how the receiver rejects these packets, feel free to PR a write up.

Many thanks to:

Hardware

  • Logitech C-U0007 dongle
  • ESP8266, NRF24L01+ and a 5v power board for the NRF24L01+ module, connect them as follows:
    • WEMOS D1 mini D3 <-> power board CS
    • WEMOS D1 mini D4 <-> power board CE
    • WEMOS D1 mini D5 <-> power board SCK
    • WEMOS D1 mini D6 <-> power board MISO
    • WEMOS D1 mini D7 <-> power board MOSI
    • WEMOS D1 mini 5V <-> power board VCC
    • WEMOS D1 mini GND <-> power board GND

Software

  • Open logitech-unifying-device.code-workspace in VSCode with PlatformIO installed
  • Press ctrl + alt + u to compile
  • If it is your first time using PlatformIO, wait until the icon appears on the activity bar at the left of VSCode before compiling, it should just work

logitech-unifying-device's People

Contributors

bilogic 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

logitech-unifying-device's Issues

DIYing a unify receiver

Hi,
Thanks for your efforts into this. I am thinking about implementing a Unify receiver using a nrf24 module. Since I dont have one its really hard for me to reverse engineer it. Can I pick your brains to how you went about doing one? Thanks a lot for any inputs you might have.

I have a question.

Thank you for the great library.
I am not good at English. I ask for your understanding.
When I reconnect the device, the mouse-related packets work well.
However, the keyboard device must be re-paired.
Otherwise, keyboard command is not possible.
Can I get your email address? I want to send you my full source code.

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.