The Corsair User Forums  

Go Back   The Corsair User Forums > Corsair Product Discussion > Keyboards and Mice

Notices

Reply
 
Thread Tools Rating: Thread Rating: 541 votes, 5.00 average. Display Modes
  #1  
Old 10-06-2014, 11:29 PM
Digital.Zilla Digital.Zilla is offline
Registered User
 
Join Date: Oct 2014
Posts: 22
POST ID # = 733512
Digital.Zilla Reputation: 13
Default K70 RGB keyboard incapable of displaying full color range

Hey Corsair,

I just received my k70 RGB and am having a bit of a problem with the lighting capabilities. As the title would suggest, my keyboard is short a few colors. It was immediately obvious as I set up some slow color transitions. At first, I set my keys jump to a color on press and fade back to the background color over 4 seconds. I then set up my keys to slowly cycle through the rainbow over a period of 20 seconds. What I see is color stepping/popping instead of a smooth transition from one color to another.

As someone who works with arduino LED projects I'm very familiar with the software and the hardware going on under the hood. I figured I'd test this systematically just to make sure I had some hard data. For those reading this thread that aren't aware, you can generate any color of the spectrum with the three primary light colors - red, green and blue. "True color", what we use in computers, is 24 bit color; that is to say each light has to produce a value between 0 and 255 (8 bits) giving us a total of 24 bits for all three channels. Thus, 256 * 256 * 256 = 16,777,216 or the 16.8 million colors advertised on the box.

Testing each color was a matter of clearing every key (turning their background color to off) then making a simple fade from 255 of that color (0 on the other channels) to 0, running it over 10 seconds and counting the unique steps of brightness it produced. If a light could produce a full 256 levels of brightness I shouldn't be able to count them in real time. I could.

Testing each channel produced the same results: 8 steps of brightness each. 8 * 8 * 8 = 512 colors. That leaves us a whole 16,776,704 colors short of the advertised color range.

Now, either I'm doing something terribly wrong in CUE or the proverbial ball was dropped on this product. I really hope that I'm just missing something in CUE but assuming I'm not... IF this is indeed a limitation of the product (software or hardware)... I find it impossible to believe that the engineers building the keyboard and software didn't notice it and, if that's the case, how could you release the product like this? How can you put a giant label on the side of the box touting 16.8 million colors when it can only produce five hundred and twelve?

Please Corsair, I want to love this product. I love my standard k70 at work and have been holding out months on buying a second one for home so I get this bitchin' RGB version. I want to do smooth color fades and cycles over long periods of time. Sadly though, as it currently stands, that's impossible.

Am I doing something wrong?
If not, is this something that can (and will) be fixed in software or firmware updates?
If not... I'm sadly going to be returning this *almost* amazing product... and that makes me very sad.


Here's the test

All keys cleared


Simple fade from 255 to 0 over 10 seconds.


Anyone can run the same test to verify it yourself. If you want video proof, i can put some together, even next to one of my arduino projects that is capable of producing true color. But really, it'll take you a few seconds to set this up and see it in person; no possibility of lag or video compression or anything to taint what your eyes see.




UPDATE POSTED BY CORSAIR JAMES

Quote:
Originally Posted by Corsair James View Post
During development of the keyboard and prior to the release of the RGB keyboard, we came across an issue regarding the possible color combinations. In an effort to get the product out to our customers as committed, we made the tough decision to resolve the issue in a future software release as we believe our customers would enjoy the product as-is.

Here are the specifics that detail the issue:
Due to USB stack size and performance issues, we had to reduce MCU processing overhead in the best and quickest manner. The LED controller gives us greater than 8 bits of color depth but we use the 8 bits that give us what we believe to be the best color granularity. Our controller architecture provides for over 100 million color combinations out of which we select 16.8 million to display. We devised a color palette scheme to encode and compress the RGB color data and the data to select and control the “current sources” that drive the LED array. An unfortunate side effect is that it prevented us from utilizing the full color depth available from the LED controller.

We are in the process of making the necessary improvements so that we can send the uncompressed RGB data to the keyboard. Additionally, we are optimizing the data protocol and LED driver/display algorithms through the display control firmware to handle the uncompressed data, and to more efficiently program the “current sources” that drive the LED array. This should give our most “resourceful” customers an easy way to identify the data and be able to easily send standard RGB 8 bit values.
This enhancement had already been planned and will be implemented in a few weeks by the release of a software update, which will be announced and be made available to download here and at Corsair.com.

- Corsair Team

Last edited by Yellowbeard; 10-20-2014 at 03:11 PM.
Reply With Quote


1 members found this post helpful.
  #2  
Old 10-07-2014, 02:13 AM
chrisgzy chrisgzy is offline
Registered User
 
Join Date: Oct 2014
Posts: 6
POST ID # = 733536
chrisgzy Reputation: 10
Default

I too was curious about this. Whatever the restriction is would definitely be beyond the profile level. I programmed a quick gradient as seen below with one step per color and it had about 7 color transitions.

Turns out the only difference between an exported lighting and one created by the software is like one outer "lightings" tag. Don't really get why they aren't the same, but whatever.



Beyond this, also found the Corsair software attempting to access "FAKE" and "FAKE.jpg", etc. files in the logged-in user folder. Kind of weird, integration debug code not removed? Calls into the Qt libraries are also being spammed generating tons of "color out of bounds" exceptions.

If I get a chance to check out the I/O messaging, it might give a good idea as to if the problem is a hardware or software limitation.
Reply With Quote


  #3  
Old 10-07-2014, 03:22 AM
Flyman Flyman is offline
Registered User
Flyman's PC Specs
 
Join Date: Sep 2014
Posts: 24
POST ID # = 733547
Flyman Reputation: 10
Default

Huh, interesting. I was able to replicate what both of you reported -about 8 levels of brightness, some with bigger jumps than others - at least, that's what it looked like to me.

I won't be returning my keyboard, i don't think, since i simply like being able to change to general colors for different things and am not so much into animation and whatnot, but certainly disappointing for the price they're charging.

Maybe it'll be fixed with an update to the firmware and software, since in their current states both are extremely buggy. ****ing crashes. So annoying.
Reply With Quote


  #4  
Old 10-07-2014, 11:58 AM
Digital.Zilla Digital.Zilla is offline
Registered User
 
Join Date: Oct 2014
Posts: 22
POST ID # = 733656
Digital.Zilla Reputation: 13
Default

Just to be clear up any possible confusion, each LED can actually display 7 (not 8 as I said above) levels of brightness. I was including 'off' as a brightness above because you use it to calculate the total range (e.g. purple is R:max, G:off, B: max). Therefore, the total range is still 512 colors, but the levels of *brightness* each LED can generate is only 7, not 8.
Reply With Quote


1 members found this post helpful.
  #5  
Old 10-07-2014, 01:15 PM
mysticc mysticc is offline
Registered User
 
Join Date: Apr 2010
Posts: 88
POST ID # = 733680
mysticc Reputation: 10
Default

Some comment from Corsair on that would be highly appreciated.
Reply With Quote


  #6  
Old 10-07-2014, 06:18 PM
emiljensen2 emiljensen2 is offline
Registered User
 
Join Date: Oct 2014
Posts: 106
POST ID # = 733754
emiljensen2 Reputation: 10
Default

Based on some reverse engineering (credit to poster on reddit) the CUE software apparently spams LED data to the keyboard, so it might be the software.

Also a bit odd how the lua52.dll is loaded into CUE, yet there isn't any lua functionality (as far as we can see, but maybe the xml is translated into lua)

In addition to the lua dll there is also these commands.
sub_561AE0(&a2, "Lua source editor", 0, -1);
sub_561AE0(&a2, "Execute", 0, -1);
execute is a button and the "lua source editor" is the title of the window.

Hopefully a corsair dev will pop in here.
Reply With Quote


  #7  
Old 10-08-2014, 01:09 AM
Flyman Flyman is offline
Registered User
Flyman's PC Specs
 
Join Date: Sep 2014
Posts: 24
POST ID # = 733831
Flyman Reputation: 10
Default

Quote:
Originally Posted by emiljensen2 View Post
Based on some reverse engineering (credit to poster on reddit) the CUE software apparently spams LED data to the keyboard, so it might be the software.
Well that would probably explain some of the instability between the keyboard and the software. Would love to hear some dev input.


Wish they'd release the source code so we could have a crack at fixing what they've apparently failed to fix.
Reply With Quote


  #8  
Old 10-08-2014, 01:54 AM
emiljensen2 emiljensen2 is offline
Registered User
 
Join Date: Oct 2014
Posts: 106
POST ID # = 733836
emiljensen2 Reputation: 10
Default

Quote:
Originally Posted by Flyman View Post
Well that would probably explain some of the instability between the keyboard and the software. Would love to hear some dev input.


Wish they'd release the source code so we could have a crack at fixing what they've apparently failed to fix.
Well it does allow a lot of customization with really fast lights. (Though it is limited in the software currently)
Though it isn't very effective when the keyboard is just a static color.
The usb port itself should keep up fine with the bandwidth.

Yeah I also wish they gave their sdk, api, lua, or even gave sourcecode.

Guy on reddit are now able to send packets on linux:
There's also a link to his reddit thread in the video description.

Last edited by emiljensen2; 10-08-2014 at 02:02 AM.
Reply With Quote


  #9  
Old 10-08-2014, 02:08 AM
CalcProgrammer1 CalcProgrammer1 is offline
Registered User
CalcProgrammer1's PC Specs
 
Join Date: Oct 2014
Posts: 119
POST ID # = 733844
CalcProgrammer1 Reputation: 20
Default

Yeah, my reverse engineering shows 3 bits per LED, i.e. 8 brightness steps including off. OP is thus right in saying 8*8*8 = 512 possible colors. I haven't tested to see if the global brightness setting (or the hardware brightness key) can generate more than these 8 levels but from what I found in the protocol, there is not 16.8 million colors per key like the box claims. That would require 8 bits per LED. Considering the framing is 72 bytes per color total, that is room for 144 LEDs at 4 bits a piece, but for some reason they only appear to use 3 of those bits (0111 as full off and 0000 as full bright).
Reply With Quote


  #10  
Old 10-08-2014, 02:42 AM
mysticc mysticc is offline
Registered User
 
Join Date: Apr 2010
Posts: 88
POST ID # = 733856
mysticc Reputation: 10
Default

If not fixable by SW this will get a real issue - think on all the packages they have to redesign stating "with 512 colors".
Of course severe lack of reputation might be the bigger issue.

Just out of curiosity - maybe other RGBs suffer from the same - might be some technical specs of the LEDs not allowing more than 8 states.
Reply With Quote


  #11  
Old 10-08-2014, 07:11 AM
Schwinni Schwinni is offline
Registered User
Schwinni's PC Specs
 
Join Date: Oct 2014
Posts: 79
POST ID # = 733901
Schwinni Reputation: 11
Default

Although I haven't seen it myself the keyboard has the "Rainbow Demo" built in:
http://forum.corsair.com/v3/showthread.php?t=132995
http://forum.corsair.com/v3/showthread.php?t=133143

I saw this demo mode also in several promotion and preview videos. It seemed like the full color range was used. Together with Corsairs' statement that the rainbow demo cannot be replicated with CUE at the moment, the restriction to 512 colors could be a software problem (or missing feature).

Last edited by Schwinni; 10-08-2014 at 07:16 AM.
Reply With Quote


  #12  
Old 10-08-2014, 09:07 AM
CalcProgrammer1 CalcProgrammer1 is offline
Registered User
CalcProgrammer1's PC Specs
 
Join Date: Oct 2014
Posts: 119
POST ID # = 733917
CalcProgrammer1 Reputation: 20
Default

That's my guess as well, the controller on the keyboard most likely can physically drive 8 bits per LED but the USB protocol was cut down to 3-bits for size reasons. As they're stuffing the entire LED array into 64-byte USB control messages they already have to use 5 messages in rotation, going up to 8-bit levels would double that and use double the bandwidth. Perhaps there is a second method of setting the LEDs that supports full 8-bit samples that CUE hasn't implemented yet, or it could require a firmware update as well.
Reply With Quote


  #13  
Old 10-08-2014, 10:08 AM
emiljensen2 emiljensen2 is offline
Registered User
 
Join Date: Oct 2014
Posts: 106
POST ID # = 733927
emiljensen2 Reputation: 10
Default

Quote:
Originally Posted by CalcProgrammer1 View Post
That's my guess as well, the controller on the keyboard most likely can physically drive 8 bits per LED but the USB protocol was cut down to 3-bits for size reasons. As they're stuffing the entire LED array into 64-byte USB control messages they already have to use 5 messages in rotation, going up to 8-bit levels would double that and use double the bandwidth. Perhaps there is a second method of setting the LEDs that supports full 8-bit samples that CUE hasn't implemented yet, or it could require a firmware update as well.
The onboard memory saving function doesn't seem to work correctly yet, so it might be to save the profile to the memory and get the keyboard to run it instead of sending constant packets to the keyboard.
You can see the rainbow if you only plug the power usb in and wait a bit, but that doesn't seem overly smooth to me either.
Reply With Quote


  #14  
Old 10-08-2014, 02:38 PM
Digital.Zilla Digital.Zilla is offline
Registered User
 
Join Date: Oct 2014
Posts: 22
POST ID # = 734001
Digital.Zilla Reputation: 13
Default

Quote:
Originally Posted by Schwinni View Post
Although I haven't seen it myself the keyboard has the "Rainbow Demo" built in:
http://forum.corsair.com/v3/showthread.php?t=132995
http://forum.corsair.com/v3/showthread.php?t=133143

I saw this demo mode also in several promotion and preview videos. It seemed like the full color range was used. Together with Corsairs' statement that the rainbow demo cannot be replicated with CUE at the moment, the restriction to 512 colors could be a software problem (or missing feature).
Nah, you can definitely replicate that rainbow demo on the keyboard. The trick is it's going quick enough so you don't notice the stepping. It's all about number of color values over a range of time.

We watch video at 30 frames per second (24 fps in cinema) and prefer to play games at 60 fps. Anything in that range generally looks smooth to our eyes.

When doing a full-saturation rainbow wipe you have 7 key frames:

red -> red+green (orange) -> green -> green+blue (cyan) -> blue -> blue+red (magenta) -> red.
(See chart below)

Fading between those key frames is a simple linear transition, which means one channel starts at full brightness and the other starts at zero brightness, then you swap the colors. Thus, the number of steps you have per channel * 6 gives you the number of unique colors in the full rainbow cycle. At 24 bit color (8 bits per channel) that's 256 per transition. 256 * 6 = 1536 unique colors to display. Thus, at 30 Hz (30 'frames' per second), we could run that color transition over 51 seconds and the steps would be happening smoothly enough.

You can reverse this math too. Since we seem to only have have 9 bit color on our keyboard (3 bits per channel) or 8 steps per channel, that means instead of 256 between keyframe, we have 8. 8 * 6 = 48 unique colors per rainbow cycle. Thus, if we wanted 30 fps, we'd have to do a transition 1.6 seconds. If you look closely at that video, look closely at one key, it's going red to red in about one second. Which means it's actually running at about 48 Hz (or 48 fps in common terms). That's plenty fast to look good. However, if you slow that down to, say, 10 seconds. 9 bits (48 colors) / 10 seconds is 4.8 Hz, or 4.8 frames per second. Or worse, that 50 second transition that 8 bit color could do at 30 Hz would be 0.96 Hz on this keyboard... Less than one color step per second!

24 bit rainbow - This is what we should have


9 bit rainbow - This is what we actually have...
Reply With Quote


  #15  
Old 10-08-2014, 05:46 PM
Corsair James's Avatar
Corsair James Corsair James is offline
CUE Product Manager
 
Join Date: Oct 2013
Location: Fremont, CA
Posts: 4,110
POST ID # = 734059
Corsair James Reputation: 41
Default

Hi all,

In the picture with the green slope:



It is not displaying a gradient from green to black. What you're actually setting it up for is 1 single color green to go down in brightness over a duration of 10 seconds. The X axis is the time line for duration and Y axis is the intensity (brightness). If you want to test the entire range of green as a gradient you should add all 255 variations of green as a color at full intensity and then have it be done over 10 seconds (to mirror the original duration you tested the single color at).

It should look like this:

First color:
R:0
B:0
G:0

Second Color:
R:0
B:0
G:1

Third Color:
R:0
B:0
G:2

and up to 255.
Reply With Quote


Reply

Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 05:23 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, vBulletin Solutions, Inc.