Comments (21)
The software I wrote will only work on Linux at the moment, due to using hidraw exclusively. Also, I'd just like to take a moment to mention that I use she/her pronouns, @Sapd :)
from headsetcontrol.
The HID Library sets the value for you. Request is always set to 0x09, RequestType always to the same bits. Index is determined by the interface number, which the library also searches for "automatically".
However you need to decide between hid_write and hid_send_feature_report. The first byte of value is 02. By looking into the hidapi source code (function hid_write and hid_send_feature_report). I noticed you need hid_write because it does a (2 << 8) for it (HID_OUTPUT).
So try it with hid_write again and also try omitting the first byte (by only sending FF 07 1A 64)
from headsetcontrol.
Yes it's possible, but I need packet data, see #2
from headsetcontrol.
Ah, I forgot something. It could be, that the packets are the same as it's likely that logitech doesn't change them for every headset.
Type lsusb in the linux command line, and note the vendor and product id of the headset. Then swap out the G930's ones here https://github.com/Sapd/HeadsetControl/blob/master/main.c#L34
recompile and try if you can set the sidetone.
from headsetcontrol.
Hello,
I tried this with my G633,
set
#define VENDOR_LOGITECH 0x046d
#define PRODUCT_G930 0x0a5c
in main.c
when I execute sudo headsetcontrol 0 I got:
$ sudo headsetcontrol 0
Headsetcontrol written by Sapd (Denis Arnst)
https://github.com/Sapd
Found Logitech G930!
Error in transfering data :(
Could you help please?
from headsetcontrol.
Likely the protocol is different after all. I need packet data to help you with implementing the G633
from headsetcontrol.
@Sapd I have a G933 and was starting to work on reverse engineering the protocol, but I've got no idea where to start. I've committed the .pcapng files to a repository so you can take a look if you've got the time. The relevant device is numbered 1.2.
from headsetcontrol.
Hello,
did you put the Sidetone down and Up with the original driver?
If yes, packet number 587 in your startup.pcapng could be such a packet. But I am not 100% sure, some of the values:
11:ff:04:0d:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
11:ff:04:3d:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
11:ff:04:ed:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
11:ff:04:3d:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
11:ff:04:2d:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00
When you look closely, one values seems to always change (the 4th one). 0d, 3d, ed.
So I would try to send packets like the first three lines of my quote. Look closely to the URB setup section of those packets in Wireshark, and use the same parameters when you send those packets over libUSB.
from headsetcontrol.
I've figured out that the protocol used for the G933 is at least very similar to HID++ 2.0 as detailed here: https://lekensteyn.nl/files/logitech/
The first byte describes the length of the packet, 0x11 for long (20 bytes)
The second byte describes the destination (0xff for the receiver or default device)
The third byte is the feature index
The fourth byte is a combination of the function ID and the application ID (first nibble and second nibble respectively)
The remaining bytes are arguments or return values
from headsetcontrol.
I've added some more packet captures to my repository with the latest commit, those might be very useful
from headsetcontrol.
Did you made further progress? My suggestion is, that you simply try to send some packets, which you may think could represent the sidetone by trial and error (like the ones I suggested). You could also try analysing with USBlyzer as I find it a little bit more clearer.
from headsetcontrol.
I've reverse engineered most of the relevant features, and implemented a library to address those features. There are also my notes, which contain detailed information about everything I've learned so far.
from headsetcontrol.
I see, it looks good. When I have time again I will rewrite a part of the software to support multiple features of multiple devices (the current architecture with the hard-coded function to the sidetone functions isn't well suited), as I already reverse engineered some more features of the corsair void.
from headsetcontrol.
@Sapd With the information you have on @ashkitten's repo, is it possible for you to implement support for the G933? If not I'll install Windows on my machine and try to get the values.
from headsetcontrol.
You'll have to test it. You could try using his software and simply modifying the device id's. If it works, it uses the same protocol.
You can btw. also sniff inside an virtual machine (with usb passthrough).
from headsetcontrol.
I've got now time and reworked the complete software. It now also uses hidraw. Hidraw is a better alternative as it in fact works in MacOS when reading values.
from headsetcontrol.
@Sapd I've captured the data necessary for the sidetone for the G633.:
Sidetone 0:
00000000 11 FF 07 1A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Sidetone 100:
00000000 11 FF 07 1A 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
RequestType 22
Request 09
Value 0211
Index 0003
I tried adding it manually: https://gist.github.com/Moosieboy/2d1ddfbc9407aa0eb6543a94b617e4d4
But it's saying Failed to set sidetone. Error: -1: (null). I couldn't find where to change the requesttype, request, value & index in the source? Many thanks.
from headsetcontrol.
Yep, it worked when switching to hid_write. I had to leave the first byte in though, otherwise it still failed. Many thanks!
So the final file:
https://gist.github.com/Moosieboy/55e09447c06e0a50088f505fa528d5a3
from headsetcontrol.
Great to hear! If you want you can make a pull request. Simply fork the repo on GitHub, make changes (and care a bit for similar code style in regards to the rest of the project), push to your repo and then under Pull Requests you can open one.
from headsetcontrol.
Done. See #18
from headsetcontrol.
Sorry, see #19
from headsetcontrol.
Related Issues (20)
- Add option to check if headset is connected HOT 3
- Failed to set/request sidetone. Error: -1: ioctl (SFEATURE): Broken pipe HOT 3
- Possibility to add shortcuts with the G733 battery button
- Help with setting up Corsair HS55 Wireless HOT 2
- SteelSeries Arctis 9 not displaying battery when charging HOT 6
- Add support for Logitech H390 HOT 1
- error: ignoring return value of ‘asprintf’ declared with attribute ‘warn_unused_result’ [-Werror=unused-result] HOT 2
- Add support for Logitech G435 HOT 9
- Not showing correct battery status HOT 2
- Can not execute any command without sudo privileges HOT 2
- Incorrect ChatMix help message HOT 1
- Integrate with D-Bus / Upower HOT 1
- Error during build HOT 1
- HyperX Cloud Core Wireless Support HOT 5
- Support for HyperX Cloud III (with wire) HOT 12
- Arctis 7 Pro - Battery Charge Level alway at 56%
- version 3.0.0 build failure in src/output.c with CMake HOT 3
- CORSAIR HS80 RGB Wireless Gaming Support HOT 2
- Add Volume Limiter Support HOT 5
- Add Eqalizer info to json output HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from headsetcontrol.