MatMoul / g810-led

Linux led controller for Logitech G213, G410, G413, G512, G513, G610, G810, g815, G910 and GPRO Keyboards
GNU General Public License v3.0
1.39k stars 184 forks source link

Does not set all keys at once #4

Closed ghost closed 8 years ago

ghost commented 8 years ago

When using -an FFFFFF, some keys will stay the previous color; running the command multiple times will solve the problem, and it always happens in a VERY predictable way.

Using US layout keyboard on Arch.

MatMoul commented 8 years ago

-an is breaked and seem not possible with the current code... At this time, I remove the no commit feature, but the code stay here for futur work. I just have mapped -an to -a, -gn to -g and -kn to -k and removed commented text in -h.

ghost commented 8 years ago

It happens regardless of an or a. Any logs I can get you that will help?

On Aug 9, 2016 2:44 PM, "matmoul" notifications@github.com wrote:

-an is breaked and seem not possible with the current code... At this time, I remove the no commit feature, but the code stay here for futur work. I just have mapped -an to -a, -gn to -g and -kn to -k and removed commented text in -h.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/MatMoul/g810-led/issues/4#issuecomment-238668557, or mute the thread https://github.com/notifications/unsubscribe-auth/AO_naoircrHkPEKhToEFjKdwM3yILorVks5qeNizgaJpZM4Jfop9 .

MatMoul commented 8 years ago

It's very hard, I can not reproduce. how is it going? it's always the same keys that problem? or more random?

ghost commented 8 years ago

It's a general pattern, but I was mistaken that it's perfectly predictable. About 75% of the keys will set. Run it again, 75% if the remaining keys set. If I run the command repeatedly, it will eventually set them all. One time took around 20 tries though.

On Aug 9, 2016 2:55 PM, "matmoul" notifications@github.com wrote:

It's very hard, I can not reproduce. how is it going? it's always the same keys that problem? or more random?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/MatMoul/g810-led/issues/4#issuecomment-238671323, or mute the thread https://github.com/notifications/unsubscribe-auth/AO_nagpBAMwNSq10i8dzuaGnCnY6rrQYks5qeNslgaJpZM4Jfop9 .

MatMoul commented 8 years ago

With reference to the issue #2, what's your CPU?

ghost commented 8 years ago

Off hand, it's some mobile version of the i5. I'm not sure the exact clock speed.

On Aug 9, 2016 3:16 PM, "matmoul" notifications@github.com wrote:

With reference to the issue #2 https://github.com/MatMoul/g810-led/issues/2, what's your CPU?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/MatMoul/g810-led/issues/4#issuecomment-238677136, or mute the thread https://github.com/notifications/unsubscribe-auth/AO_navPflSYBrB2IwH9rZ9BnfssqICrUks5qeOA1gaJpZM4Jfop9 .

MatMoul commented 8 years ago

I need test on a best PC as my old core 2 duo... Can you test by removing the -O2 in makefile at line 2 : CFLAGS=-Wall -std=gnu++11

ghost commented 8 years ago

Doesn't seem to have helped at all, unfortunately. Same rough patterns. Any commands I should run?

MatMoul commented 8 years ago

Thank you for your tests.

I will test the next week on my work PC (a xeon cpu and a new G810 wait me)

andrey-str commented 8 years ago

Confirm on my laptop(CPU is i7-6820HQ)

johandc commented 8 years ago

I can confirm this bug on i7-6600U, Linux 4.4.0-31-generic #50-Ubuntu x86_64. I have added the following to main.cpp that fixes the issue (when setting profiles):

diff --git a/src/main.cpp b/src/main.cpp
index 04d69a8..ac5eef9 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -5,6 +5,7 @@
 #include <algorithm>
 #include <fstream>
 #include <string>
+#include <unistd.h>
 #include "classes/Keyboard.h"

 using namespace std;
@@ -139,7 +140,7 @@ int loadProfile(string profileFile) {

     while (!file.eof()) {
       getline(file, line);
-      
+      usleep(100);
       if (line.substr(0, 3) == "var") {
         line = line.substr(4);
         ind = line.find(" ");
MatMoul commented 8 years ago

I just tested on my workstation and I also have the problem. I fixed the code with "usleep" in Keyboard.cpp I also increased the variable "maxKeyValueCount" to 12. Now, it works on my Xeon CPU. Without negative feedback from you, I will close the tiquet

MatMoul commented 8 years ago

following return on #2, I close the ticket

MatMoul commented 8 years ago

And thank you to johandc for the usleep

MatMoul commented 8 years ago

I just reactivated no commit feature : -an -gn -kn -c All work very well !