Tech Over Tea - OpenRGB Developer & Maintainer | CalcProgrammer1
Episode Date: July 14, 2023Today we have the developer of a program you all likely know OpenRGB on the show, CalcProgrammer1 has been in this RGB reverse engineering space for a long time but wouldn't it be nice if he didn&...#39;t need to reverse engineer. ==========Guest Links========== YouTube: https://www.youtube.com/@CalcProgrammer1 Twitter: https://twitter.com/CalcProgrammer1 GitLab: https://gitlab.com/CalcProgrammer1 GitHub: https://github.com/CalcProgrammer1 Website: https://openrgb.org/ ==========Support The Show========== ► Patreon: https://www.patreon.com/brodierobertson ► Paypal: https://www.paypal.me/BrodieRobertsonVideo ► Amazon USA: https://amzn.to/3d5gykF ► Other Methods: https://cointr.ee/brodierobertson =========Video Platforms========== 🎥 YouTube: https://www.youtube.com/channel/UCBq5p-xOla8xhnrbhu8AIAg =========Audio Release========= 🎵 RSS: https://anchor.fm/s/149fd51c/podcast/rss 🎵 Apple Podcast:https://podcasts.apple.com/us/podcast/tech-over-tea/id1501727953 🎵 Spotify: https://open.spotify.com/show/3IfFpfzlLo7OPsEnl4gbdM 🎵 Google Podcast: https://www.google.com/podcasts?feed=aHR0cHM6Ly9hbmNob3IuZm0vcy8xNDlmZDUxYy9wb2RjYXN0L3Jzcw== 🎵 Anchor: https://anchor.fm/tech-over-tea ==========Social Media========== 🎤 Discord:https://discord.gg/PkMRVn9 🐦 Twitter: https://twitter.com/TechOverTeaShow 📷 Instagram: https://www.instagram.com/techovertea/ 🌐 Mastodon:https://mastodon.social/web/accounts/1093345 ==========Credits========== 🎨 Channel Art: All my art has was created by Supercozman https://twitter.com/Supercozman https://www.instagram.com/supercozman_draws/ DISCLOSURE: Wherever possible I use referral links, which means if you click one of the links in this video or description and make a purchase we may receive a small commission or other compensation.
Transcript
Discussion (0)
Good morning, good day, and good evening.
Welcome back to Tech of a T.
I'm as always your host, Rudy Robertson.
And today, we have a very interesting guest.
Today we have a developer, the developer of OpenRGB.
Welcome to the show, Adam Hontz, better known as CalcProgrammer1.
Nice to be here.
Like, I didn't actually...
So I've known about your software for a really long time.
I feel like a lot of people knew about your software, but I don't think a lot of people
know about the person behind it.
You obviously do have the YouTube channel, but it's not a massive channel, and you do
talk about things there.
But I think everyone's heard about OpenRGB in the Linux space, but in case anyone hasn't,
just give a brief introduction
of what it actually is. So OpenRGB is trying to be like a single program to unify all the RGB
devices. So by RGB devices, I'm talking about pretty much everything in the gaming community,
the gaming PC world these days comes with RGB, programmable lights, keyboards, I've got
like mice, anything like RAM, graphics cards, yeah, you've got one there, microphone, even my headphones,
RGB. So yeah, so basically, I've kind of been into the RGB scene for a long time.
Basically, I've kind of been into the RGB scene for a long time.
I actually got into it, and that's why I have this here.
Basically, when I was learning how to program,
one of the things I wanted to do was get into microcontrollers.
Okay.
And the first project I did was in, like, 2009,
and I made this RGB PC fan.
So there were no commercially available.
Oh, wait.
Yeah.
So I've been into this for a while.
I actually made like this instructable on it.
This was like 2010 or something.
So I made my own like RGB fan and I had learned how to like write code and make it do effects and animations.
And I made like a music visualizer for it.
But then whenever like the,
the RGB craze really took off commercially and all the real products started
coming out.
Then I was still interested in this idea.
Cause I had already written all this code for RGB.
And I was like,
wouldn't it be cool if I could,
you know,
have my keyboard reactive music or my everything in my computer all like synchronized. And so I had no idea how to reverse
engineer stuff at the time. I wasn't familiar with that. I had familiarity with hardware,
but as an embedded software developer, but not in like the reverse engineering type thing.
So I kind of learned how to do that to reverse engineer,
like the first Corsair keyboard that came out,
imported my code to that.
So then several years later,
I had really built up a full PC full of RGB stuff.
And it was getting to the point where everyone was complaining,
you know,
if I buy a Corsair this, a Razer this, an Asus this, a Gigabyte this, and, you know, G.Skill RAM
and our motherboard and all this stuff, and none of it works with each other. And then you've got
these programs that require sign-in, like Razer was the ecosystem that I fell into for a while,
partly because they sponsored my Visualizer program
for a little while, sent me some free stuff.
So I was into their ecosystem, had a lot of Razer stuff.
And their program is especially bad
because you actually have to sign in.
You have to create a user account to log into Razer Synapse.
I'm guessing it's so annoying
sync it between computers is that their justification that's that's what their
stated goal is you know like we can synchronize your mouse settings or whatever right from pca
to pcb because as we all know gamers like to drag their their gaming gear between a bunch of
computers right but like they could have just put memory on the mouse. Yeah. So yeah, like every other brand did.
It probably has memory on the mouse already, doesn't it?
It probably does.
Yeah, I think it does.
But they're like, no, you've got to sign in
to be able to change the TPI on your mouse
or pick which color your mouse is.
And so I was getting increasingly fed up with their software and everyone else's software and
it wasn't all syncing together and for a while i was just doing like corsair and razor and both
of those had like an official sdk from manufacturers so you could write your own
applications that talk to those devices yeah yeah there was an official sdk still is for uh razor and corsair several of
the others as well corsair iq sdk huh i didn't know that that's actually really cool yeah
and razor had the chroma sdk for a while there too i think that's still around it's
mainly it was for like games to be able to do like game rgb effects while you're playing games
Mainly it was for like games to be able to do like game RGB effects while you're playing games.
But Razer was pushing the community stuff big whenever they started their SDK.
That's how I kind of got involved with it.
But then several years passed and more and more stuff didn't have an SDK, especially like the internal parts, like the motherboards the gpus the and those things
started becoming more and more popular as i was building a newer computer upgrading so yeah i
could sync my keyboard and my mouse but not my ram not my gpu not my motherboard and so um that kind
of i was still working on the visualizer project mainly, which was mostly focused on Windows.
But then we kind of went through this process.
It was like a 100-comment GitHub thread where we were just trying to figure out how Asus
Aura communicated with a chip on the motherboard that controlled the lights.
There was oscilloscope probing involved.
I was like poking pins on the back of the RAM socket
with an oscilloscope,
trying to find the I squared C lines and decode the data.
So we figured out that at least the RAM
was controlled by I squared C.
And then we kind of went down from there.
And after like probably a month of comments
from a whole bunch of different people
and capturing data from all these different boards,
we started to figure out the pieces
kind of falling in place of how will the interface
for Asus Aura work, which at that time it was I2C.
And the problem is on Windows,
there is no like I2C framework. Like on Linux, there's dev I2 C. And the problem is on Windows, there is no like I squared C framework.
Like on Linux, there's dev I squared C.
And yeah, slash dev slash I squared C.
If you have the module.
Sorry, I...
I2C.
So I squared C or I2C.
Oh, okay.
Now I know what this is.
Okay, yeah, yeah, yeah.
Okay, I've heard of this.
Yeah, it's like a low level interface for chips
yeah you kept saying i squared c in your video and i i had no idea what you're talking about but
no i this i have heard of okay yeah it's it's stands for inter-integrated circuit uh but it's
and you spell that i2c but everyone calls it i squared c or i've seen IIC, I2C,
I squared C or TWI two wire interface.
All of those are the same name for the same thing basically.
So yeah,
we,
we figured out that it was I squared C,
but windows doesn't have I squared C drivers.
So what we did is we use like a-level access library on Windows that you can
actually talk to low-level registers with, and then copied the Linux source code for the I2C
drivers and ported them to use that library on Windows. It worked. It was a big hack, but it
seems like that's just how you access I2ports in Windows. It's a big hack.
But from there, we were able to finally get some RGB control going on Linux, which was
pretty cool.
That was a big kind of, wow, we got this to work moment.
And so at that point, I was like, okay, I've got keyboard, mouse, and at least on Linux, keyboard and mouse,
there was already a project called OpenRazor
that got the RGB working for Razor devices.
Then there was a project called CKBnext for Courser.
When did you start doing this?
Do you remember roughly when?
The reverse engineering effort for the aura was in
like 2017 oh okay okay uh when when ryzen first gen first came out because that's when i did a
big upgrade but then i we did the reverse engineering and then i just didn't go anywhere
with it for like two years right we had figured it out but i was like i didn't know how to how i wanted to turn it into
an actual project or actual code or anything i was busy with other stuff so then i finally sat
down in 2019 and i had some windows um because i was just that
was the code that we kind of figured out but we hadn't written any actual code around yet other
than just some proof of concept so i started a project called open ara sdk and uh that was just
it was a fairly little project i got it to where you could just set
the modes for your RAM, your motherboard, just very limited scope. It was just Asus, Aura,
I squared C devices. And I, it really only worked on certain motherboards because they're like
certain motherboards had different configurations and I didn't know how under to understand how those configurations worked so i kind of i put
it on gitlab and i was like we'll see if anyone's interested so i posted on reddit a few times and
i made i don't even think i made a youtube video about it i just kind of posted it on reddit posted
on some forums and said,
you know, hey, if you're looking for, people were saying, you know, how do I control
my motherboard lights in Linux? And I said, well, you could try this. And after that,
after probably six months or so, interest had picked up and people were commenting and
people were submitting captures from their own motherboards and we were able to compare contrast these different captures and try and kind of figure out okay
this is we got a lot better picture of how this our interface worked whenever we could
see how all these different motherboards kind of interacted with it uh we got it working on
intel we got it working on amd um because they have different chip sets
for i squared c okay right that makes sense because like the the i squared c host side is
part of the chip set right like the intel or amd chip set right so even if it's basically like
equivalent like equivalent boards on amd and intel it's still going to work differently
yeah so basically because it's inter-integrated circuit,
so the RGB
controller chip was the same across
the different boards, but the
host side was like
the Intel chipset
versus the AMD chipset.
And on certain boards, they even had like the
Nuvaton Super IO
has an I2C
controller, and they were using that to communicate with the
RGB.
So there were like three different potential host interfaces that we had to figure out.
And so we kind of sorted through that mess and figured it out.
But long story short, we got it to a good working state.
And from that point, people were saying, well, what about Gigabyte?
What about Corsabyte? What about
Corsair? What about ASRock and all these other brands? And it's like, well, my project was pretty
laser focused on just Asus Aura, but I also had Razer keyboard and Corsair mouse, and I had a
Gigabyte GPU and a bunch of other parts, but that I would like to have everything integrated together.
So I thought, you know, what would it take to expand the project from just focusing on Asus
Aura to let's control everything. Why not just control everything? Because that would be the
goal is just synchronize all your lighting and make it all work from one place. So the first
kind of step there was to write kind of an API of like drill down what is an RGB device at its core?
What are the functions it can have? What are the configurations it can have? What parameters does
it take? And how can we make this interface as generic as possible and so I came up
with something I called RGB controller API okay and that's like um that's kind of an internal
thing in the OpenRGB code base um and so for a while it was I was just working that in a branch
and still focusing on the Asus RS stuff.
But the idea was then I bought some like Corsair RAM and I tried to figure out how that worked. And since we already kind of figured out how I squared C worked and we understand that I squared C is what's used to access RAM.
Well, now that we have that low level interface figured out, it was a lot easier now to reverse engineer Corsair, HyperX, a bunch of other brands of RAM because we knew kind of how it all worked. And yeah, the protocols were different, but we had written some tools to like get captures of data and kind of how to read back the registers after you've written to them
and see what the values were.
We just kind of knew the process.
So we kind of went through and added a bunch of popular components at the time,
ones that I'd just pick up as I went.
And then after that, we just kind of went into even more stuff.
We figured out how to talk to graphics cards, starting with NVIDIA.
We wrote a library to kind of capture
I squared C transfers from NVIDIA cards
that uses the NVA API API.
And so it just kind of went from there.
Just whenever like there was some new product i'd just go see oh
it's on sale at microcenter i'll buy some new rgb things to reverse engineer and so i did some
keyboards some mice some so all of it was reverse engineered so i got really good at reverse
engineering different things whether it's graphics cards usb uh i squared c, and then writing,
like figuring out the protocols and then re-implementing them.
And so as we got bigger, as we got more code,
then more and more people seemed like
they were starting to contribute their own work.
And then OpenRGB also,
especially in the early iterations,
borrowed quite heavily from like OpenRaz ckb next well yeah you might
have used the things that already exist yeah we studied a lot of that other open source projects
so there's a on the open rgb git lab read me there's a whole bunch of other projects that
i've linked to that were either directly used or like heavily inspired from. So we definitely drew on the works
of existing open source software where we could.
And that trend continued far into OpenRGB's development.
It's like an open source library
for like Phillips Hue light bulbs,
like the whole lighting ecosystem.
OpenRGB now supports that
because I leverage this other project. So yeah,
we just kind of grew from there. And then the community involvement became pretty big. Like
once the project started taking off again, I was posting on Reddit and forum threads. I made a
YouTube video showing off my setup and that drew some attention to
the project. And people started, I just started, I'd Google search OpenRGB and I'd start seeing
like people were talking about it and it's like, oh, that's cool. And so I'd jump in and talk about
it with them. And so that meant contributions to the GitLab started growing. So it got to a point where
there's a whole bunch of supported devices
now. It just seems like every day there's
new merge requests
being open to add more
devices. So that's really cool.
So when we look
at the...
Obviously, a bunch of other people
are getting
involved with the project now,
but how much, if you don't mind me asking,
how much have you spent on buying devices
that you want to get working?
Oh, I would say probably,
it's probably a few thousand at this point.
It's been picked up over probably three or four years years worth of time. I was kind of going,
you know, every day, every month I'd spend like, you know, maybe $50 to $100 on a new device,
if I could, to have something to reverse engineer, at least in the beginning.
And then there were some big purchases. We ran into some roadblocks. It wasn't all like
perfect and happy. There were some issues, especially regarding MSI motherboards.
Those RGB controllers had a tendency to brick themselves
if you sent the wrong data to them.
And in our second release,
I personally didn't have an MSI motherboard to test on.
I had just merged some other code that people submitted
and other
people said, oh, this works. But then when after release, people were saying, oh, my RGB got
bricked. So we had to, I pulled that back. I commented that out and disabled it. And then
it sat disabled for a while because we didn't want to brick boards. But I knew that I wanted
to get it working. And more importantly, I wanted to figure out how we could unbrick those boards uh so one of the first like larger
purchases i mean it was only maybe two or three hundred for a motherboard but that was more than
like the keyboards and mice that i'd been buying up to that point right um but at the same time
people had started to contribute on patreon or whatever paypal and
patreon so i had some donations coming in which i was able to go buy an msi board and rebuild my pc
with that board so that i could one test the code that um we had and figure out okay and then i
reproduced the bricking issue so So I bricked the board.
But then I noticed that the chip that was driving the RGB
was like a Nuvaton ARM microcontroller.
So I bought one of their JTAG interface dongles
and I had dumped the firmware from it.
And then I figured out where their configuration memory was
and I wiped it.
And that managed to recover the chip, get it working again.
So I was able to post some guides on our Discord about how to do that and get the board up and working again.
And then we were able to figure out what the issue was in the software that was causing the brick.
And now MSI boards are pretty well supported in OpenRGB since then.
Actually, I'm using one right now.
Have you run into any situations where something was broken,
whether it's a board or a keyboard,
and there was no way that you could work out how to recover it just
was it was just a waste at that point um there there have been some bricks that unfortunately
i don't have the hardware to reverse engineer and try and figure out at this point um one of the
things that was supported were like there's a whole bunch of low cost keyboards on the market, RGB keyboards.
And a lot of them have really terrible firmware there.
For a while, there were ones called E-Vision.
And that was like the dominant chip in that you wouldn't find any keyboard labeled E-Vision.
Right, right.
It was the chip that was being used in a lot of them.
So one's from Red Dragon.
We're using these chips.
I have a Red Dragon keyboard sitting in the cupboard
right now.
So
those actually turned out to be okay because
I actually found that some other
people were trying to port QMK to this
chip, like the open source keyboard
firmware.
Yeah, so I joined in on but some other people were trying to port QMK to this chip, like the open source keyboard firmware. Yeah.
So I joined in on that project and wrote like an LED driver to get the
backlights working and got them working in open RGB.
Once that project kind of came together,
I did a YouTube video about that,
about how to put like custom firmware on the red dragon keyboards.
And actually they went from being cheap, the red dragon keyboards and actually they went
from being cheap kind of bad keyboards to actually being at least from a software perspective very
nice keyboards once you had good firmware on them and then what did red dragon do they went and they
switched the chip out because on the same product lines uh it was i'm guessing without a rename
happened no no rename i mean it was whenever
the supply chain issues started right okay that makes sense they went to a cheaper chip and uh it
was by it was a completely different architecture and the firmware was completely different and so
for whatever reasons some of those keyboards would brick and so i had to pull the support for that
controller in open rgb just take it out so that it wasn't bricking keyboards but unfortunately i
think a lot of people who had those keyboards ran into a bricking issue with them uh and because
they're so cheap and red dragon doesn't have any documentation or firmware, we weren't able to figure it out.
I did end up eventually getting one and I got a programmer for it,
but I haven't had a chance to like dump the firmware from it.
So hopefully we can figure out a way to recover those.
But I think my,
my takeaway from that is,
is to stay away from the really cheap boards.
Get something that has decent firmware.
I mean, if it has a good, well, even if it's a bloated, ugly piece of software for Windows,
at least it has some sort of software that we can take advantage of
and some sort of firmware we can take advantage of.
That's not going to be really terrible.
Well, Red dragon's a really
interesting company i'm sure there are other ones like it but this there are yeah this is a logitech
g915 this is a really nice keyboard i like this yeah my other keyboard is a from red dragon is a
identical clone of this without the logitech logo like they know what they're doing they know the
market they're trying to get into they make these these, like this is a, you know,
at full price,
this is like a $300 keyboard in Australia.
I bought it half price,
but the red dragon one is like,
it's like $80 and it does 90% of what this does.
So if you're someone who's looking for a keyboard,
like they've managed to fit themselves into the,
like into that market without making keyboards that are so terrible,
they just fall
apart right they get most yeah their build quality is decent yeah and well whenever we have the
ability to flash the custom firmware to them i was really liking red dragon i would recommend
them any day of the week because yeah um their keyboards were like 30 to 40 dollars here in the u.s uh compared to like the 80 or 90 to 100
dollar like razors and corsairs logitechs and their build quality was pretty decent like the
k556 i had metal construction um swappable key switches uh all kinds of stuff it was a pretty
nice keyboard just i was hindered by the firmware that came on the microcontroller inside of it
if you wanted to use it for OpenRGB.
But once we put custom firmware on there, it really made a nice keyboard.
So I was really disappointed whenever they did the microcontroller swap
because now they're pretty useless for OpenRGB.
Although this keyboard is an AOC that I just picked up I didn't even know they made keyboards
but then I saw it at Micro Center and it was like a $30 $25 to $30 keyboard and I thought
you know this is just gonna be some like Red Dragon ish Chinese like well they're all chinese probably but low quality chip um and uh
from like cyano wealth is the the chip that is infamous for being bricked on uh
that particular chip like the e-vision was good the cyano wealth is bad um i thought it was just
gonna be that but no it actually turned out to be like they have their own software ecosystem.
And they have like where you can sync the different devices.
And whenever they do that, that's good for us.
Because that means it's going to have an interface to control the keys from software directly.
And it turned out to be that.
And this is actually a really good board for that price.
So I've been super happy with this board.
Yeah, it's an AOC. I think it's a gk500 or something like that um i'm not in the market for a new keyboard if someone wants to grab one
want to you know mess around with it hey it's supported open rgb now so yep i mean i have
much nicer keyboards than this but for the price i'm pretty happy with this one so so going all
the way back to the the start where you were talking about making your own rgb fan i presume
the way that you approach that is a lot more sane than the way that some of these companies
try to approach their protocols um at the time i was like just getting into microcontroller development so i wasn't super
familiar with protocols it was kind of a learning experience but i think what i ended up coming up
with was closer to what is like really being used than than i would have thought because i actually
kind of inspired my communication protocol on I squared C,
even though it's not actually I squared C it's like half duplex serial,
but I used an addressing scheme where you,
each device has a different address.
The idea was that I could have multiple of these in my computer.
I had,
I built three of these and I had three of them in my computer and then they all connected together
to one serial port.
And that scheme is very similar
to how I2C works where every
chip on the bus has its own
address and you can talk to each one
individually. So in the
end, this
early development thing
that I made as a college
project actually turned out to be kind of closer to the real
thing that is out there now than,
than I originally thought.
Huh?
So,
but.
Well,
when,
over the time you've been doing this,
what has been,
I'm going to do both sides.
What has been the easiest device you've come across?
And then what has been the hardest device you've come across and then what has been the hardest device you've come across okay um easiest obviously like i
easiest kind of difficult because you know you've gotten methods now like so it's a lot easier to do
devices than it would have been in like the early days but yeah right yeah so i i would say the
easiest device well the hardest device i mean you're right on
that is going to be the very first thing we reverse engineered because we had no idea what
we were doing right um but if i had to go for a hard device these days um knowing how to reverse
engineer stuff it would basically be i would probably say anything that had a protocol that uses some kind of CRC or checksum or other integrity message.
Because decoding, you can look for R, G, and B in a packet stream pretty easily.
And you can look for the modes changing when you change the modes or the speeds or the brightness or anything like that.
the modes or the speeds or the brightness or anything like that.
But when you see some values that just kind of randomly change every time the message updates and you don't know why, your guess is that's going to be some kind of CRC, checksum,
some kind of integrity code.
But how is that calculated?
That's the hard part.
You have to look at that and go, okay, which format is
this calculated on? Luckily, there are some online calculators where you can just paste in a string
of bytes and it'll give you like all the different types of like 20 or 30 different types of integrity
checks, like CRC 1632. There's a bunch of different algorithms like hashing algorithms that you could use to
produce some kind of integrity code a lot of them are really easy you just like add all the bytes
together and take you know the remainder of that or something like that but sometimes they're not
as easy and that was something i ran into with this particular keyboard is it had a very strange
crc and i i still don't even know if I'm actually
doing it right but it's working so. It hasn't bricked yet. Yeah it hasn't bricked and it
actually takes the update so either they ignore the CRC or I'm calculating it correctly but
we've run into some of those before where you have to calculate some kind of verification code based on the packet before you send it.
I can see why you would have a simple verification, but why you do anything more complex than that?
I don't know what the engineers would be thinking when they were designing that.
Yeah.
So that's just something I can think of running into that kind of makes you
think a little bit like,
what is this actually doing?
But then easiest thing to reverse engineer by far would have to be
anything that has documentation.
Right.
And that leads us into the next topic.
But even if it's not like official documentation this is where like going back
and using open razor or ckb next or uh there were like g801 led for logitech keyboards there were a
bunch of open source projects and liquid ctl is another one um going through and gleaning
information from these other projects um because they've already done the reverse engineering.
And a lot of them had GitHub wikis and such
that they actually documented out their protocols.
Oh, wow.
And that's something I was doing, at least for OpenRGB,
especially in the early days,
was I was maintaining the GitHub or GitLab wiki
with all the protocol documentation.
I was writing my own documentation.
I haven't been as good about that more recently,
but in the early days,
that was a big help to kind of learn how to do things.
And,
um,
having that documentation from people who had already done it was a huge
help.
So,
um,
yeah,
I would say that the easiest would be by far anything with documentation.
So. Oh, that, that feels like a cop-out answer to me, but sure, we'll go with it.
Well, okay, if I had to pick one, unfortunately, so I will give you one that the company actually
reached out and contacted me. This was actually fairly early on, and it was HyperX before they got bought out by HP or split up.
It was their RAM division. I had posted on Reddit that I was making open RGB. I think I posted on
HyperX subreddit and they reached out to me and said, oh, we find this very interesting.
We'd like to send you a kit of Fury DDR4 RAM. And they also sent me the protocol documentation for it now the problem is i had
already reverse engineered it and had it mostly working but being able to look through their
actual official documentation and confirm that i was doing the right thing right and then fill in
the gaps where i was unsure uh that made it way easier. And so that RAM became one of the well-supported,
most supported RAM that is in OpenRGB.
So that is probably the example of well-supported
because of documentation, even though they were kind of delayed.
The only other ones would be some of the like smart lighting stuff
like Philips Hue and I think LIFX
because those companies actually have like developer documentation
on their websites.
Yeah, it's almost like they want you to control the lights.
Yeah, like the lights, the smart lighting people
tend to be a little bit more open about that
because they want the third-party apps to integrate with their devices.
But the RGB PC stuff, generally, they have not been that open.
Well, I guess that does take us into OpenPleb then.
Yes, yes it does.
The initiative from Wendell and GamersNexus.
I did a video about this.
I think it's really cool.
Yeah, I saw your video.
Yeah, you did comment, didn't you?
So for anyone who may have missed that,
I guess just explain what the goal is here
and what the effect would be.
So from what I understand from their initiative,
OpenPleb is the collaboration between Wendell from Level One Text
and Steve from Gamers Nexus.
And they want to create, I think it's a company,
like a sort of a company structure, maybe a nonprofit.
I'm not 100% sure on the details.
I believe it is a nonprofit, yes.
Yeah.
And they're trying to mimic some of the ideas that are done in the professional space.
I guess in the professional space, and I'm not super in tune with that space,
but there are standards groups that try and get all the different computer companies
to open up documentation about how their components work.
I think this is very common in the server and enterprise computing space.
And that's the kind of space where you'd
expect more in house development to be running on hardware, maybe more so than you
would in the consumer level us plebs, according to that's why they call it open
us plebs, according to, that's why they call it OpenPleb, for like PC hardware and consumer level stuff. So the goal of OpenPleb would be to get that sort of documentation and openness for
community developers and end user development for us plebs down in the pc community who aren't big enterprise level
companies but so yeah the idea is to try and work with all the different manufacturers and they said
that they were starting with rgb but also like sensors uh power supplies probably like the lcd
screens that are showing up on all kinds of devices
yeah uh yeah and not only software but also hardware because now we've got like corsair
coming out with new fan connectors you've got like lian li who has those fans that connect together
everyone seems to have their own proprietary plug that has like 12 volt PWM fan and ARGB combined into some proprietary plug.
And so if you wanted standardization between like being able to choose which fans you put in your PC based on which controller it has built into the case or that you've added on, having some sort of standard there would help.
But everyone's already kind of locked into their proprietary ecosystem, it seems, already,
unfortunately.
But at very least, if they would provide us with documentation to tell us how it all works,
maybe we won't have the intercompatibility of being able to pick and choose different
parts.
But from a software perspective and as an open RGB developer,
we would have what we need to write standardized interfaces for all these
different components and then kind of get them all grouped together in one
place and open RGB or any other like common software ecosystem.
Other ones that I've thought about would be like lib rat bag for
mice yeah yeah yeah i'm a big logitech guy i've got a yeah logic mice lib rat bag works great for
that but there are a lot of other mice out there where not so much i i know i thought that they
have support for some that aren't logitech they definitely do but it's a lot yeah it's it's a lot
more hit and miss right so the the hope would
be that you know without more documentation they could expand their um exactly yeah and also uh
like lib sensors the api for accessing sensors on linux was a big point there and i know that a lot
of motherboards um because i've been buying motherboards for openRGB. I've run into this too. Not all motherboards have proper reporting of fan RPM
and voltages and temperatures
because that's often handled by a super IO chip.
And one thing that they talked about was Nuvaton.
And I said I ran into Nuvaton from the I2C
communicating with RGB controllers.
And they have some documentation,
like some of their chips have data sheets
and then some of them do not.
And so I think they might be like certain manufacturers
like request custom versions of their Super I.O. chips
that don't get documented
and some like do get public documentation
but it would be nice if all that documentation
was open because
having the ability to read the fan
speed on your motherboard is pretty nice
yeah that is pretty useful yeah
yeah so
one thing
with the whole RGB thing
is I know there's a lot of people out there who don't
like RGB like full stop but even for those people this would be useful because it gives you the ability
to disable the lights if you don't want them yes you know open rgb is nice because
i can just stop all effects and then i can just right click and I can do lights off. Exactly.
Lights off.
And if you're an anti RGB person and you want this,
well,
open RGB can give you this. If you Ram powers up and it's just rainbows.
Like I do like setting everything that I can to start up off and then
just do my effects when I want them with open RGB.
Right.
I don't like whenever i
power up my computer and it's just immediate rainbows like yeah that's not the best use of
rgb but that's what everyone goes for like the default is crazy rainbows in your face as soon
as you hit the power button and uh we can turn them off with open rgb and if we have standards
we can turn them all off well look there's another way to turn them off with open rgb and if we have standards we can turn them all off well look
there's another way to turn them off without documentation you just brick every light
well not when we did the the lot of the msi boards because they would brick and then they
just sit there and flicker constantly okay maybe not now duct tape that'll work yeah putting up black paint over the leds i've heard those as
options exactly i like my solution better oh yeah no documentation reversible yeah that would be
nice documentation would be nice um so i i did see that there was a company that uh got in contact
with other was gotten in contact with
you directly or was just post about the initiative on twitter uh they did post about the initiative
on twitter that was height yeah i'd not heard of this brand but looking at some of the stuff
they've done they actually seem like a relatively known about brand like obviously they're a small
one but even so they're a small brand from what
i've seen i had heard about them from one of steve's videos he had covered at least one of
their cases maybe a few of their cases like sometime last year um but they have done some
partnerships with some fairly uh big brands as well yeah but yeah i'd never used any of their
products and i didn't even know that they were really in the rgb
space because it looked like the cases that they do have don't have rgb but i think from the
computex coverage i think they might be starting to make some new ones that do have rgb and rgb
controllers and fans and stuff.
But the product that I saw that is on their website now that you can buy right now
is they have their own full-size desk mat.
Ah, okay.
And it actually has like full RGB.
So I have one from Razer
that it's basically just a little box at the top
that shines light around a light pipe that goes all the way around.
But theirs like actually has embedded LEDs throughout the pad.
So that was kind of interesting to see that.
How did they do that in a flexible kind of mat?
I always forget that there are RGB mouse pads now.
Yeah, there are a lot of rgb if if there's um anything computer related
someone has put rgb in it that's just there's rgb chairs there's rgb like i'm trying to think
is there anything that doesn't have does it has anyone made rgb cables
i'm pretty sure they exist but i don't know if any of the big brands have them
or if they're software controllable.
I know that there are ones that just go through
like a pre-made pattern
because you can just stick those self-changing LEDs
into a cable.
Yeah, yeah.
But yeah, there's...
Oh, no, no.
Leanne Lee made the Strimmer, Stimmer strimer whatever they are the gpu like power
cables they're like the flexible power extension cables right and they basically are just an led
matrix over the entire cable uh oh god it is okay yeah i forgot about those so yes
RGB cables
do they have software that controls that?
I'm not sure on that one
from what I've read
I think it connects to like an ARGB header
but I don't
have one of those to
experiment with
there is a cable that comes off of it
so it connects to
so it's probably
controlled by something yeah i think you have to connect it to like an external argb controller
something like that so yeah but yeah it exists yeah i can't think of anything that doesn't then then because there's yeah no well i but i guess you know no one's has anyone made a replacement
like a replacement um what do you call it like heat spreader for a cpu that has rgb because
that's the only part i think i think cpu is the only thing the heat spreader itself like the
literal cpu no but definitely coolers, water blocks.
Yeah, yeah, yeah.
I think CPUs are the only things that don't have RGB at this point.
That is true.
Like, there's RGB SSDs.
Mm-hmm.
There's RGB.
Wait, is there?
I have an external hard drive with RGB.
Well, that makes sense.
Sure.
This RGB has the best RGB we've ever seen. Okay, sure.
Thank you, Hardware Canucks.
Oh my god, there are. I didn't know that.
Yes. Look, when I'm shopping
for an SSD, I'm not looking for lighting
because, like, my SSD is probably
going to go on the back of the case between
the metal panel and the
where the motherboard sits. I'm literally
never going to see it. You're never going to see it, right. Hey, if someone the motherboards it, I'm literally never going to see it,
but never going to see it.
Right.
Hey,
if someone wants to make it,
I guess they can.
Yeah.
I have a,
an RGB,
like NVMe SSD that I just bought it for the purpose of adding it to open RGB.
Like I buy all the crazy RGB stuff,
even if it's like,
why did they ever RGB that?
Because it's like,
I want to add that to open RGB.
My NVMe drive is covered by my GPU yeah yeah and then figuring that one out was that one was
difficult because it uses NVMe admin commands to control the RGB it's weird okay that one took a
bit of luckily someone else on github figured out
like the basic interface of how that worked and then i was able to figure out the actual protocol
but i kind of had a starting point because i'm not sure i would have ever figured out how that
worked otherwise that one was weird so what are the the main obviously there's going to be some
companies that do some really weird things but what are the main interaction methods that you have for these devices
okay so there's i squared c that one is definitely going to be used for ram
because ddr slots have basically just the memory bus and then they have an I squared C bus for the SPD information.
And that's the only interface you have to that slot. So it's going to,
you can't really control RGB over the memory bus itself. So you're going to control it over.
Off of the RGB. Well, there are some that do that. Yes. I see those as kind of cheating,
but yes, they do do exist that was a joke
i didn't think they actually existed no they do exist like where they just plug into your argb
header on your motherboard um so yeah i squared c usb is the big one um whether it's external usb
like keyboards mice every any kind of peripheral or if it's like on board usb
like a lot of new motherboards they have a chip on the board for the rgb but it's connected over usb
oh okay um so a lot of the older like the first rgb boards that came out were using i squared c
to control the rgb but that runs into issues because Windows doesn't have a good standard API
for accessing I2C.
How does it not have a good API at this point?
That doesn't, that doesn't, that makes no sense to me.
It just doesn't.
Like, after...
Like, you just have to talk to the low-level registers directly.
It's, it's not a good system.
You would think that Microsoft would have, like,
worked with one of these companies,
do something by this point.
I think the idea there is that like normally the stuff that would be on I squared C or SM bus,
as it's called on like motherboards,
I squared C and SM bus are very closely related.
Okay.
I think the idea is that those kinds of devices would be like temperature sensors and like really low level stuff.
And I think a lot of it would be handled by like the BIOS or like ACPI.
But so they never really intended I squared C or SM bus to be like a user
facing interface,
like USB and serial and parallel are.
So they never made like a,
a driver standard for I2C
because they just expected it to be low level enough.
It didn't get used that way.
And then of course, here come RGB manufacturers
who are like, we're going to control I2C from user space
by poking chipset registers directly with our own DLLs.
And I remember that also being a security issue.
Like there were people talking about,
oh, you could use this to access memory that you shouldn't.
So yeah, it's not the way to do it.
It's not ideal, but that's the way that it's done.
So we have to play by their rules, unfortunately.
So a lot of newer boards are switching to USB and that's nice because USB is standardized and a lot better. And then for
GPUs, most of them also use I squared C, but because they go through the GPU vendor's library. So NV API for NVIDIA and AMD's AMD display library or ADL on AMD.
Those are I2C, but they have like actual functions to talk to the I2C through those vendor libraries.
So they're a lot better in that respect.
better in that respect. Now, we don't necessarily have as good of ways
to reverse engineer those because they're
going through proper channels.
And we can't just poke at registers.
But from an actual use perspective, that's better.
Because poking at registers is not the ideal way
to write code, at least not in user space no so so that's uh motherboards ram and gpus
most everything else is going to be usb there's of course then there are like the wi-fi devices like
um they're all your lights your light bulbs and external stuff um i just added support for dmx which is uh dmx is i searched
dmx i'm not gonna get what i'm looking for uh no not that dmx uh dmx 512 if you search dmx 512
you'll get what you're looking for it's a protocol used in like stage lighting. To control like lighting fixtures for like production. And DMX is a fairly
simple protocol. So there's like an open source DMX to USB adapter. And you can and while it is
used for like the big production expensive stuff you can buy like cheaper dmx fixtures and use at home i use them
like at halloween to light up the house or at christmas and stuff like that so i added that
to open rgb um oh i've seen some people use this there's been some like um tube lighting that uses
this i thought i recognized it okay so yeah
there's that
which is kind of a form of serial in a way
it's like an RS-485
communication
well the NVMe
for the SSDs
and then the ones that I have some devices
that are like
I have an external
NVMe enclosure that has RGB the ones that i have some devices that are like i have an external um nvme enclosure okay uh that
has rgb and then it's an external c gate hard drive that has rgb okay and those don't show up
as like a normal like usb hid device hid is like the common usb protocol that as human interface
device or anything that shows up as like a keyboard or a mouse even if it's not actually a keyboard or a mouse sometimes it'll just expose
a fake keyboard or mouse because that's like a standard interface that right you can use
so things that are like drives don't use hid and so we're not at least i'm not sure how to talk to them um so those i still need to
figure out how to talk to but yeah those are probably the common interfaces some weird things
use like serial like the this is actually supported in open rgb because i still have
one in one of my old computers so i added a controller for that and that's uses serial
So I added a controller for that and that's uses serial.
You can also one person in the world who has that fan.
And then like,
there's a bunch of different protocols that you can use with like an Arduino to control an led strip for like the DIY option that control over
serial. So like those are supported. So yeah,
a whole bunch of different interfaces, but i think those are the main ones
so one thing i do want to get to is why do you think there is this weird difference between the
consumer computer market and the like you know smart lighting market because clearly the smart
lighting guys are like please make third-party apps.
Like, their selling point is everything works together.
Why do you think there is this weird difference?
Well, I guess the point there is
it seems like not all of the smart lighting companies
think the same way.
Oh, sure, sure.
Because, like, well, Philips is the weird one
because Philips has Hue,
and Hugh is
very well documented.
They have a really good developer resource.
And then they also have whiz, which is like their wifi bulbs.
Cause Hugh uses like a Zigbee bridge and then, um, whiz just connect directly to wifi.
I think whiz might now have documentation, but when I started working on them, they did
not.
And so it seemed like, I think though it might have actually been two different products that were just acquired by the same brand.
Right.
But yeah, some of the smart lighting companies really are open to third-party development.
Nanoleaf was another one that I supported more recently.
But Nanoleaf was another one that I supported more recently.
The code was actually submitted by someone on GitLab, and it only worked for the first generation Nanoleaf.
So I ended up buying a Nanoleaf kit to test it on, but I ended up getting the second generation.
So I looked up their documentation and wrote the controller for the second generation.
And then we ended up with a controller that worked for all of them because of that because their documentation was just really good and with the work that he had done and the work i had done combined we just we ended up with
a pretty good controller that worked for all those different products and i think they might have a
new line out that we don't support but that wasn't out whenever we wrote the controller
for anyone who doesn't recognize the name dinner leaf that's the stream of light
yeah those like triangle panels that you put on your walls um yeah so those they had really good
documentation but i think those companies because they're not part of a pc so like i mentioned before like razer corsair logitech the
big names in like pc peripherals they have an sdk okay and i think their sdk is kind of what they
intend you to use instead of like talking to the hardware directly but what they don't realize is
that they're by only supporting Windows and their proprietary software,
they're excluding a big chunk of PC gamers or a chunk of PC gamers who don't want to put up with that or use a different operating system. Also Mac users. I mean, we like to talk about the Linux
community. That's where I'm most interested, but I did end up buying a Mac because of OpenRGB
to get support on Mac as well, because there were people saying, well, I'd like to be
able to control RGB on my Mac and RGB controls Windows only. And I was like, well, I mean,
we're 90% of the way there. All we have to do is get a USB interface and a serial interface and
I2C interface that work on Mac. And then that just automatically brings in support for all
these devices we've already reverse engineered so it's like why not
why not add another platform so um i think the companies are all laser focused on windows means
gaming right and if gamers are just going to download the gamer software and run that and
that they'll be happy with that and the game companies companies will use our SDK to make gamer lights happen.
And so they don't care about people who are using them for other purposes. Whereas the smart light
people, I mean, your product is standalone. It doesn't connect to a computer directly.
It's its own thing on the network. And so you have to talk to it that way.
So I think they're more open to giving you the protocol to talk to it that way.
I mean, there is still the issue of the cloud-based stuff in the smart home world, but
it's still quite an issue. I mean, I run a home assistant for a lot of the smart lights when I'm
not using OpenRGB and other smart home home stuff and the local control availability there varies greatly between devices so
yeah you say the gamers are just going to download the gamer software but my housemate
he plays with some ridiculous dpi because he refused to download razor synapse
ridiculous DPI because he refused to download razor synapse.
Yeah.
Whatever it used on the mouse.
I've seen so many sentiment online that mimic that,
but people,
even people who are just windows users are like,
I don't want to download this bloatware to change my mouse settings, especially when you have to download razors bloatware and courses bloatware
and logitics bloatware.
If you don't go and buy a Razer everything because that's the way that they tie you into
their ecosystem.
But as the end user, that's not fun.
We don't like having to run all of these different software packages.
And a lot of them you have to leave open all the time.
Some of them will even only let your settings stay active while they're open like as soon as you close them up you're back to default settings and it's a mess so yes the sdks for all
the developers out there of the software program the sdks are not enough they're not enough uh not even enough for the windows
users it seems so well one thing you did point out in the video you did i don't was it open
play no it was the open blood video we said with the the amd what was the amd cooler the
the wraith prism yeah it didn't support certain things in the software. So even if they did have, like, even if they do have whatever software they have,
it may not actually support everything the hardware physically supports.
Right.
And I've run into that quite a few times.
But the AMD Prism was kind of a notable recent example.
I thought we had this thing all figured out for two years because this
was one of the early devices I added whenever I had first renamed the project from OpenRSDK to
OpenRGB and started trying to support more devices. This was one that I knew was popular at the time.
It was low cost and I was into AMD stuff. So I bought one, reverse engineered it as best I could with the software they gave me.
And I thought we had had it completely figured out.
And then three years later, Intel releases the RK770 that uses a similar design RGB controller from Cooler Master.
They're both from Cooler Master.
RGB controller from Cooler Master. Yeah.
They're both from Cooler Master.
And we discover that it has a direct mode control protocol
that lets you access every LED.
And just for fun, I was like, does the Prism support that?
And sure enough, it does.
But that ability had gone hidden for years.
And I know there were at least one other project
trying to reverse engineer the AMD Prism.
And that project also did not have support for per LED control of individual colors.
I think they had it figured out where you could set like two different banks of colors,
like color A and color B, and then assign either color a or b to each led in the ring so you could
do like a progress bar kind of thing okay but you couldn't do like a rainbow where you could set each
one to a different color so it turns out that functional eye was there all along and because
the only documentation we had was the official software. If the official software doesn't use it,
then we can't know about it.
So yeah, that's just a problem with reverse engineering.
How did you find out they were both by Cooler Master?
I know the AMD software actually was branded Cooler Master.
Okay.
It had like by Cooler Master in it somewhere.
Right.
I think the USB,
the USB vendor IDs were also Cooler Master's vendor ID.
Ah.
So,
and then when I saw the Intel software,
it just had that same look to it as the AMD software.
Right.
Okay.
So when you're trying to,
we'll go with the USB devices first. When you're trying to reverse engineer one of these protocols, like what is the process you actually go through?
Well, so the first step would be, well, I guess the video I just recently did a series of videos on the ROG Ally, because that one, I didn't really know for sure what it was going to be like okay if it's
a a mouse you know the only interface it has the pc is usb right it's pretty obvious it's going to
be usb and likely going to be uh hid as well because it's a mouse are things different if it's
a bluetooth mouse uh yes okay bluetooth supports hid but we don't support very many Bluetooth devices. In fact, I think
the only Bluetooth device we do support
is the PS4
controller, which has RGB.
Oh, it does, doesn't it?
Yeah, it does. Usually it just uses
to show what player it is, but that's just
RGB LED.
But for the
most part, we don't support Bluetooth devices. There's nothing saying we
can't, it's just that reverse engineering them isn't as easy. And then a lot of Bluetooth devices
don't actually expose their full control set over Bluetooth. Like, I know I have some Bluetooth,
like dual mode keyboards that can work Bluetooth or wired and they expose their full control set over wired,
but they're only a basic keyboard over Bluetooth.
So I know there are some devices like that where the Bluetooth
capabilities are limited to just the primary functionality,
but yeah,
but there's nothing saying you couldn't
because HID works over Bluetooth as well.
I derailed you there.
Oh, you were talking about the rest and during process.
Yeah, yeah.
So the idea would be first to figure out what interface it is.
So we went over the different interfaces.
So that's probably going to be obvious by what type of device it is but whenever you're dealing with like something that's
rgb built into a system whether it's a motherboard a laptop uh handheld then you know it could be i
squared c it could be um it could be usb it could be i know there's some weird Asus laptops that use like
WMI for it and I think
WMI is like a
like a low level BIOS
thing and I'm not sure if it's actually a hardware
interface or not but that's
how we figured out how to talk to it is by
calling it ACPI or WMI
function
Windows also has a thing called WMI I cannot find
the one you're looking for
uh it is that it's like windows management yeah yeah okay yeah so there's like wmi methods that you call to control the rgb on some laptop um and then some older msi boards use like the super io
directly for rgb because they only do like single RGB, like just analog
12 volt RGB. And they just have like three PWM channels in the super IO that you just talk to
directly and output three voltages onto three pins. So you figure it out by kind of, well,
first of all, you look at the USB device list and see if there's any USB device on the system that could be an RGB controller.
If there are no USB devices that could be an RGB controller, then you kind of have to dig into, there's like different tools that you can use. I think there's like a process monitor
or process explorer or something like that, that shows like all the different calls to DLL files
and windows and you can break point on them. And so if you find like it's writing to some
hardware register or calling some DLL that accesses hardware, you can break point on that
and try and figure out what's being passed in.
I think that's how that person figured out NVMe for the SSD.
And that's how we originally figured out
like NVIDIA graphics cards,
which I was calling into NV API.
But you would always want to start with USB, I think,
because USB is going to be probably the most likely
and the easiest to reverse engineer
because Wireshark can capture that.
Okay.
So that's what I did on the Ally.
It looked like the controller,
the RGB was part of the built-in game controller that it had,
and that was like a USB peripheral
connected to the motherboard internally.
And so I figured out pretty quickly that it had an Asus vendor ID USB device and then uh that was
the cue to try and capture data from that and see what it was doing and then it's it's a sort of
matter of decoding what that data is yeah, so basically you just start looking at streams of bytes
and you don't know what any of them mean.
So what I always try to do is I try and set like a known value,
like red is going to be FF0000 in hex.
And then you go and you look through the bytes
and you try and look for zeros and FFs see if you find them and then if you do find
a packet usually like the first few bytes are going to be some kind of id that tells it like
which packet is what the command is so then i go and i change it to green or something and that
shifts from ff00 to oh ff00 and then i go and i look for the same packet and see, okay, did the FF move to this
other position? And then once I find where that transition is, then I write down, okay,
this is the structure of that packet and then try to figure out which byte is red, which byte is
green, which white is blue. And then like any potential modes and parameters that you can
adjust in the software just tweak those
parameters go look at the data see what changed so it's basically just make a change look for a
change and then try and figure out how to connect the two um so yeah if you're dealing with an i
squared c device how does that process change that changes. So Wireshark doesn't capture iSquared C.
So because of the way Windows accesses iSquared C
by just poking at low-level control registers,
we can take advantage of that.
And basically, I wrote a tool called iSquared C Sniffer.
And what it does is it just continuously reads the I squared C register over and over again.
And then you run the other program that tries to write to it.
And hopefully you read it fast enough that you can catch the value that was put in and read it out before the hardware changes it to a new value.
And you just probe it so fast that you can basically just decode what
was being put in to that register and then basically capture that data and then log it
to a file of like which bytes were written and like word lengths and all that that sounds like
a hack it is a huge hack but it actually most of the time works and because
every application writes to the registers in its own way at its own timing and its own everything
it doesn't work consistently or for everything it works differently on amd versus intel because the
registers are different right and then some programs it doesn't seem to capture and some programs it does.
So it's not reliable,
but it's reliable enough that we've gotten some good use out of it.
And if you can't with that,
then you either a lot of iSquared C devices are sort of treated like just a
block of memory.
Okay.
So they have their own like internal registers so if you set
ff0000 for like red for instance then you can go do a command on linux there's a command called
i squared c dump and that will read those registers out from a device right so you can like
set read set read and then look for changes that way but some devices use more like a packet structure
i squared c command where it's not just writing to memory it's sending a packet and that packet's
not stored anywhere and those are harder to diagnose or debug because they don't you can't
just read the memory back and see the packets being written.
And if that doesn't work, then you have to go the hardware route. That's when you break out the oscilloscope or the logic analyzer,
find the I squared C pin on your motherboard and try and poke it or solder a
wire to it or something like that to debug it.
I have soldered wires to motherboards before for um that kind of purpose so i'm sure
that's always uh always want to avoid that as much as possible yes that's the uh that's the
nuclear option you don't want to do that but sometimes they leave you no choice i have i
never actually did it but i was planning on because the I squared C is a bus.
So all the RAM slots are all kind of wired to the same I squared C interface.
I was planning on taking one stick of RAM and soldering like the lines to that stick of RAM.
And then you could just plug that RAM module in and you'd have a probing interface there without having to hook up to the board.
and you'd have a probing interface there without having to hook up to the board.
But sometimes the RAM and then the onboard I2C
are on two different interfaces,
so that wouldn't always work,
but it could help you in some circumstances.
Whenever I talk to people about reverse engineering,
it always starts at something kind of nice and just devolves into yeah you know just make it work somehow yeah it's it can be quite
a process to reverse engineer and that's just kind of the idea was you know i want to it's it's just a
puzzle you just look at it you go okay here's the thing. Obviously it, it somehow communication gets from point A to point B. Okay. Now what is that communication? How does it work? And what are
the tools that I have at my disposal to figure that out? And so sometimes it just, it's a puzzle.
That's how it was, at least in the beginning, when we had no idea how it worked, it was like, okay,
well, we're talking to RAM. What interfaces could it possibly use?
So you look at the pin out of the RAM slot and you go, okay,
it's got a memory bus and it's got I squared C and it's got some power.
So it has to be one of those two.
It's probably the I squared C.
I mean, my first test setup was I literally took the back panel off of my computer
and there was a hole cut in the case
behind the uh the ram slots and then i took like a i put uh helping like those helping hands used
for soldering i clipped an oscilloscope probe into one of those i put it on top of a box and
then i just nudged it forward until it was poking the right pin on the back of the board and then hooked it up to the
scope and looked at it while i was changing the rgb commands it worked it got me the data and
somehow i didn't short out my ram slot doing it so have you ever done have you ever killed any
hardware try to mess around like this actually no surprisingly not no i have bricked some
things but i haven't like permanently damaged hardware so well look if you had
right yes that's the ultimate goal is uh reverse engineering can be interesting
but it shouldn't be necessary clearly you enjoy this like as a challenge now but you
said you started with that fan project back in like university college whatever you doing at
the time yeah um had you always been interested in doing some sort of project like that or was
it just like uh i want to make an rgb fan so i've always been interested in programming and computers, but maybe not necessarily RGB.
My username calcprogrammer1 comes from, I was, I basically learned to program in freshman year of
high school by looking at code on my calculator during class, my TI-84. So yeah, that's where the
that's where the name comes from. But then I went into like learn C++, took some courses,
and I went into college for computer engineering.
And that got me into like microcontrollers.
I was on the robotics team,
and they were using microcontrollers to drive motors and such.
So I had ordered some parts to just play around with microcontrollers.
And I ordered like a servo.
I ordered like some RGB LEDs.
I ordered some like serial port stuff, an Arduino, some microcontrollers, just some
like bits and pieces to play around with and learn.
And so basically one of the starter projects for microcontroller programming is can you
blink an led and then
can you use pwm to control the brightness of an led and that goes into rgb and then at the same
time i was doing that i was upgrading my computer uh actually it was it was kind of my home server
and it was uh the one that i had shown earlier on this instructable. This was my computer at the time.
I like the
idea of the light-up fans, but
at the time, RGB wasn't a thing, so I
bought a blue LED fan
to put
in my computer. When I got
it, one of the four
LEDs was burnt out.
I was upset because the LED was burnt out.
I complained to Newe new egg they were going
to send me a new one but then i had the idea you know i like rgb lights i've got this fan that has
burnout leds and doesn't look good but i don't know something went you could take those leds
out and put rgb leds in and then you could use the microcontroller to uh drive the four leds and then you wouldn't just
have a fan you'd have a cool color changing fan that wasn't a thing at the time so i'm just
noticing the um the dvd drive you have above it as well like that just shows the age of that picture
yeah this computer was kind of old yeah i took the parts out of an
old white box case to put in this case yeah so yeah um then i built the fan by putting in the
four leds and uh just wiring like analog cables to each one held down with tape and then i made
this big board that has like 12 different pwm channels and
then it actually also drives the fan speed uh on the same board so uh that was kind of the
where i got into rgb and then since i had built that i got i was like i don't know somewhere i
found some code to like do a music visualizer um and i was like
you know i could make the fan blink to music with that and i did and then i built my next computer
i built three more of these to put three of them in my computer and link them all together and have
more rgb and then it just kind of went from there so it went from that to rgb christmas lights and then to what we have now
which is rgb everything so right now we're very ah i'm not seeing much of the b and g right now
yeah i turned off the effect we can just turn that back on
so i've never really been one for like the the RGB devices sort of thing
I have red fans in my computer
my keyboard it's just a rainbow
pattern by default my mouse is red
like I it's not the thing that I'm
super interested in
if anyone's seen my desktop they know I don't
really care about consistent theming
but I can totally understand
like why if you buy these
devices you want to have
like you know i get i get the appeal of you know all this lighting being synced up together all
this lighting you know doing the same sort of pattern or whatever it is you're trying to go for
yeah i think part of the reason that rgb interested me was like yeah it's cool that it lights up but
as a programmer i was always like it's cooler if I can control it.
And not only can you control it,
but you could actually do useful things with it.
We have an OpenRGB hardware plugin
where it reads the temperature of your CPU or something.
And you can change it from green to red
or something like that.
You could link up the lights to do more
than just be pretty lights. You could link up the lights to do more than just be pretty lights.
You could actually have them integrate,
whether it's a music visualizer or syncing up with the image on your screen
or even like notifying you of an email or a message or something like that.
The possibilities are pretty unlimited.
So that was kind of why I thought it was cool was just, you know,
now it's cool looking but
then you could do a lot of stuff with it i hadn't even thought of doing anything productive with it
huh that's like yeah no i guess you could just control your uh you could have it set up with
your nose couldn't you huh yeah yeah you could do all kinds of stuff with it like any kind of state that you would want
to possibly display not on your screen you could theoretically use rgb for whether it's using an
led strip to indicate like a product like a level or like cpu usage ram temperature anything like
that or i mean the game integrations are a thing that open rgb hasn't
focused on but there are other community projects out there there's aurora rgb and then there's
another called artemis rgb both open source projects and those projects more focused on like
making rgb effects for games so like okay i I know Aurora had one that unfortunately Aurora's windows only,
but Artemis is now available on Linux.
That's cool.
But Aurora had one for CSGO and it would display
like using the F key row at the top of your keyboard would be like your health.
And then like whenever you plant the bomb,
the number pad would start flashing in time with the counter.
And like it would turn red if you were getting low on health and flash or
stuff like that.
So there were different game integration.
That was an unofficial one that I thought was maybe more practical than just
a pretty effect.
Cause like Overwatch has an official one where it just lights up the
keyboard the color of whatever character you're playing but it doesn't do anything too like
actually useful right right right but like displaying your health bar or something like
that could be potentially useful if you're looking down at your keyboard which you're probably not but
yeah um yeah so uh let's see
what you're trying to find it's it'll be somewhere signal rgb yeah so signal rgb kind of
came out of nowhere to me i know I had heard of the creator before on the
Aurora Discord and on Reddit and stuff,
but it
seems like what they're trying to do is pretty much
the same idea as what OpenRGB is
trying to do, but proprietary
and with a software as a service
model. I see.
Yeah, it's
free to use, but
you have to pay if you want the fancy game effects and stuff.
I see, I see.
I get what they're trying to do,
but I'm all about going the open source route.
Well, actually, that's a good point.
How did you get yourself interested in this route?
Because OpenRGB is licensed under GPpl v2 later yeah yeah i think yeah
gpl yeah gpl2 why so yeah this space then oh i've always i mean in high school i got into linux and
then i found out about open source i've always been interested in open source and, you know, that whole side of things, being a Linux user.
And just I like the idea of the GPL where you make your code open and then it stays open because any fork has to be like licensed under the same equivalent license.
So that's and I knew that's what the Linux kernel used.
And so I was like, if it's good enough for the Linux kernel.
So I guess that's a similar way to get to it.
That's the route I went for OpenRGB.
So why did how did you get yourself involved in Linux then?
Like, how did that catch your attention?
Oh, in high school, my friend had mentioned Linux.
And at the time, my parents still had dial up.
So it was like, oh, Linux is had dial up so it was like oh Linux
is really cool so I was like okay fine I'll give it a try because it's cool it's free operating
system I didn't know what to expect I was just kind of getting into computers at the time
so I downloaded the smallest lightest possible Linux distro I could find at the time. And I think it was like 100 megabytes
and it took a whole week to download
every night.
I'd turn it on, download overnight,
pause it in the morning, resume.
A week later I had my Linux CD
and it was the most bare
bones thing I've ever used. I think it had
like Fluxbox as the window
manager and it had just a
tiny handful of programs.
And I was like, this is what Linux has to offer?
I was very unimpressed.
I kind of wrote the whole thing off as, you know, this isn't good.
Like, I liked Windows XP.
So like two years, maybe a year or two later,
we had upgraded the high speed internet.
And actually, I had...
What does high speed mean in this context?
Well, cable at that point.
Not dial up.
Yeah.
Not dial up.
Yeah.
Anything that wasn't dial up was high speed.
Yes.
Right.
So and that you could use without tying up the phone line during normal hours of the day.
But I had a Windows Mobile pda a dell pda
and i was looking because the windows mobile operating system was pretty terrible i was
looking for an alternate operating system and i thought well linux on this would be okay
um i ran across ubuntu at the time and uh I was like, well, this looks a lot different
than the Linux I had used before.
So I decided, well, it wasn't my original goal
of running on my PDA, but I was like, I'll try this out.
And it was a night and day difference
than the other Linux I had tried.
And I really liked it.
And so I was like, all of this for free.
And at the time, Ubuntu was really big
on the Linux for human beings and
we're a community and we're open and they were all pushing about you know being open and and
all that so i kind of got into it from that and then ubuntu started going their own ways and
i moved to debian but uh and now arch but, so that was kind of where I got into Linux.
And ever since I've dual booted,
and then more recently,
I've pretty much stopped using Windows at home entirely,
except for reverse engineering.
I'm just looking at some of these Windows PDAs.
This is a cursed looking device
what
like it's
can I send a link
how do I send a link on Jitsi let's see
here here we go
this is the one I was looking at
it's just this ugly
green interface
not quite though I have the Dell axon x50v i think okay
and uh but it was that same user interface it wasn't that ugly of a design but it was
that same interface which wasn't the most usable i didn't realize that microsoft had
mobile i i see i i'm one of these people that
just have amnesia with Windows devices
I thought their first mobile devices were the
the
Windows 8 smartphone
yeah the Windows phones
yeah no they had the Windows mobile
before that and that was what I
was into at the time
I mean that was pre-iPhone.
So, yeah, it wasn't actually a phone.
It was just a PDA.
But that also kind of got me into the mobile computing scene in general.
Got me interested in smartphones and stuff and Linux on smartphones.
And now my daily driver is this um what in the world is that thing
pine phone pro oh that's cool how's that going i've been liking it a lot um it's still rough
around the edges as a phone right but as a pocket laptop with a keyboard that you can write code and
do all kinds of stuff on uh-huh it's pretty cool oh so that got me into the uh linux smartphone
world as well so it's certainly that world is coming along you know it's it's coming along
it's definitely is i've been playing around with linux on smartphones well probably i i messed
around with it on in college too uh with the hp touchpad was a pretty popular tablet back then
um tried to run different linux on that um throughout the years i've tried like the linux
on android projects like the ch roots and stuff and stuff. And it's been kind of,
yes, it's Linux,
but it's not like full-blown Linux.
And there's always been some like
hold back, some hindrance.
But now like actually running Linux
and mainline Linux at that on smartphones
is at least more possible than it used to be.
So yeah, I enjoy playing around with that stuff so
i've been me like i've had people ask me like hey you want to try out this project you want
to try out that project like i if i get involved in the mobile space like there's there's so much
there that i've not touched like that's a whole like i can just focus on the desktop and that
already gives me enough to talk about if i get involved in right that as well i right it'll be fun for sure but there's
just so much there yeah with like there's so many different phones that can run linux whether it's
like officially like the pine phones or unofficially with post-market os and such um i i was playing with post market os on the one plus 6t which is one of their
uh better supported phones these days um yeah there's a lot there for sure lots of new interface
concepts like how to use linux and desktop apps at that on a on a mobile screen. Yeah, definitely there's a lot going on there.
One more on the top.
I was going to bring this up just before we were on the topic of Windows.
Have you been paying any attention to Windows 11
getting native RGB controls?
On and off.
And at first I was very like, this isn't great.
Windows is going to find some way to make it proprietary.
Well, I was thinking that aspect.
And then I was also thinking, how is Windows going to wrangle all these device manufacturers?
Are they just going to do what we did and reverse engineer all these devices?
Are they going to require the vendors to make windows drivers for some new windows api
um which then i'm like well it's not going to support old stuff at that point because the
vendors aren't going to go back and write support for their old devices right and is microsoft even
going to go back and write support for their old devices. And so I was kind of hesitant on what that would actually look like.
I was like, well, open RGB, we want to support everything, including the old devices.
But with it being a Windows thing, it's like, will the old stuff be supported?
And how will it be supported?
Looks like going forward, it's not going to be supported, which is kind of what I expected.
But I do at least agree with how they're
going about it okay they're not creating some new windows api from what it sounds like instead
what it sounds like is windows is going to require the device manufacturers to implement the hid lamp
array standard which is like an actual actual published USB specification standard for controlling
LEDs, which I don't think anyone uses at this point.
Everyone creates their own standard.
So Windows is going to kind of say, well, our standard RGB interface in Windows 11 is
going to work as long as your device implements this protocol.
And if everyone wants to use that,
they have to implement that protocol on their device.
And then OpenRGB could also use that protocol.
I was going to say, because that would make it standard.
That would make it simpler for you guys as well then.
It would.
And what I really like is that
the Microsoft Windows team behind that actually published a
reference implementation using an arduino okay so they actually published an arduino code that
you can load onto a an arduino that will now communicate over usb and act as this reference standard for the HID lamp array lighting protocol that will work with
Windows 11 that other vendors can use as an example for getting it working on their own devices.
Mm-hmm. So I actually ordered the parts to build one of those, but I haven't got those yet,
because I want to get that supported in OpenRGB as well.
So definitely sound like an exciting change then.
Yeah, I think that's a good change.
If anyone's going to be able to get companies
to actually do something,
it's native support in Windows.
Yeah, that is true.
And I think Windows chose possibly the best way
they could have to make that happen.
Yeah.
Push it on the manufacturers and make them adopt a real standard.
I think that's the best way they could have.
Rather than writing, like they could have said, okay, Windows now has this driver API.
Yeah, we call it direct lighting.
Right, direct lighting or, yeah.
And then every vendor would
have to write their own driver and now you're just running more vendor software it's just
behind the scenes rather than in your face but no i think using a the usb protocol that's the
way to do it so i hope this goes well then like i hope that I think what you really need
is you need a couple of companies to decide
that they're going to start supporting it
and then as they do then it becomes
part of their marketing material
we're supporting natively Windows
and then other companies they're not
then they sort of have to start getting involved with it
like with
OpenPlay you don't need every company at the start to jump on board with it but if you have you know you have
like a logitech a razor someone like that they jump on board and they make it like a big deal
they're jumping on board then that acts as sort of like a selling point and other companies might
you know if people actually start changing the devices they buy,
might actually start changing what they do.
I agree, yes.
I think it's a good thing that both of these initiatives
are happening kind of at the same time as well
with the Windows pushing their HID standard on the vendors
and then OpenPleb also coming out
backed by two fairly large, well-known YouTubers their HID standard on the vendors, and then OpenPleb also coming out,
backed by two fairly large, well-known YouTubers and players in this industry
that actually feel like they can actually get stuff done
because of their reputation, their size.
Having both of these coming out at the same time,
I think is even going to have a bigger effect just because hopefully OpenPleb gets them to publish their
standards behind their existing stuff. But then maybe the Windows 11 thing would try to also push
them all to unify towards a more standard interface to begin with, which then they would also publish documentation,
but it's already an open standard at that point.
So I think that would fulfill both sides.
Pushing towards the standard does take a long time.
I'm sure you remember back when every phone manufacturer
had their own connector for a charger,
or sometimes there would be a company that had 12 different connectors for their own connector for a charger or sometimes there'll be a company
that had 12 different connectors for their own phones and now it's just with besides besides
apple who still wants to kind of do their own thing i know they're like they had to change for
europe i believe yes yeah there was i think it was a european and EU regulation this has taken a long time to get here
a really long time
I'm glad that there is
some standardization there
the world did sort of
the non-Apple world kind of
standard around micro
and now that they're all standard around
type C which is
I like that type C is kind of just becoming
the standard for everything because
you can charge laptops with it you can power your soldering iron with it you can
charge your phone with it and your steam deck and your everything else and yeah it's just a nice
standard i think when we're still in this transitionary period between micro and C it's, it's a bit annoying.
Cause I have,
I,
I have USB,
I have micro device on my desk.
I have C device on my desk.
It's really annoying right now,
but give it another like five or so years as hopefully everything
standardized on it.
I say that,
but I have a USB mini B powered device on my desk as well.
So, like, you know, you're still going to have these weird devices that want to do their own stupid things.
But for the most part, we're going to get to a point where you legitimately can do everything on a single, maybe not a single cable.
I don't see USB-A going anywhere. But at least two cables.
That is all.
For sure.
It's gotten a lot better recently, like with everything moving to Type-C.
I still have a lot of micro USB stuff.
But I also, whenever the change started, I bought a whole bunch of USB micro to C and C to micro adapters.
So that I could just adapt everything.
So yeah.
One thing I did want to ask you,
so you said that there is a,
I think on the OpenRGB website,
that's OpenRazor,
OpenRGB,
where is it?
There's a lot of device classes,
a lot of devices now supported.
Is there any device classes that you'd want to get involved in
that you haven't been able to do yet
or maybe you've not been able to work out yet
or anything like that?
I mean, I think as far as RGB is concerned,
we've got most of the bases covered.
I mean, we've got everything from your keyboard and mouse
to like now with DMX, your stage lighting so um i think we've covered
quite the range of rgb and i don't know of anything that any like overall category that
we're really missing out on i mean we have devices manufacturers that we're missing out on but
i think maybe the next type of device that might be like RGB adjacent,
as you might call it,
would be like the LCD screens.
Right.
Like with coolers and graphics cards and cases now starting to have their own LCD screens.
I don't know that we could just represent an LCD screen as just a big RGB matrix and get away with it.
I mean,
could, but I don't know that that's the best way to do it.
But it might be possible to come up with some additional API within OpenRGB to handle LCD
screens.
And then the other one that would be interesting and that we've had a few attempts at is actually fan control.
So I know fan control and RGB control kind of get linked together in a lot of places because a lot of RGB devices have fans, whether it's graphics cards, cases, CPU coolers, all this stuff, or like water cooling pumps.
Or like water cooling pumps.
So I had an early branch called fan controller where I tried to make like a standard fan controller API, kind of like what I did for RGB controller.
And standardized like the Corsair, what was it, Commander Pro, their like RGB and fan hub box that connects with USB, and then some from NZXT that have fan and RGB combined into one box, I think one from Thermaltake.
And so it basically added an extra tab on the OpenRGB UI that just had sliders for fan
control.
I never got too in-depth depth with it like adding fan curves
and uh different modes and stuff like that but i kind of wanted to go that direction but i never
actually went that direction and then i was kind of against adding like the ability to do
synchronized effects to open rgb in the beginning okay um well not as not
just entirely against it but in the open rgb itself right and the reason was i wanted open rgb
to stay really lightweight and small and simple and just focus down on the core of let's control
hardware and as much hardware as we can with as little a memory and CPU footprint as possible.
And then I made an SDK for open RGB.
That was like a network server client based architecture where other programs
could then control the devices remotely.
But there were,
there were interests from other people in the Discord about having an effects tab in OpenRGB that had built-in software effects that you could synchronize everything with without having to run a separate program.
where the effects plugin could be a separate project that is just a DLL plugin that you can install into OpenRGB
and it adds that tab.
Well, one of the other plugins from a community developer
was the fan control plugin.
And that one's pretty cool because that one uses like,
it's called Libre Hardware Monitor.
It's a program in Windows, like a library
for accessing the motherboard fans
and such. I know there's a program
called Fan Control that gets talked about a lot.
And I think that program also uses Libre Hardware
Monitor. But the Fan Control plug-in for OpenRGB
used that Libre Hardware Monitor.
And it had the ability of fan curves and stuff.
And it was just an extra tab within OpenRGB.
So it would be cool maybe not to add things directly,
but as plug-ins that you could expand it out
to add capability for other but as plugins, that you could expand it out to add capability
for other hardware control type features.
Kind of unify it as like the central control hub
for your PC in some ways.
On the flip side of that question,
is there anything you feel like is sort of outside the scope
of OpenRGB that maybe someone could argue should be in
there but you just don't think should be included well so i think as far as you so you're already
outside of the pc so i i think as far as like rgb control goes i'm okay with does it does it take
an rgb value and control some sort of light
right if that's the case then i think it's fine to include and it should be included
but is it doing something other than that one thing that's been thrown around
is like lights that only do white or like lights that only do single color and i think the the
are kind of like should we we, or shouldn't we?
So it'd be like controlling the dimming on that,
I guess.
Right.
Yeah.
But I think we,
we do have some that are like that supported by open RGB.
And basically the idea is we're not going to change the color model or
anything to represent it as a dimming.
We're just going to represent it asgb value and then like convert that into
a brightness and apply it to the light so like take the average or the maximum or whatever of
rg and b and just produce the brightness and that way you can at least synchronize it up with your
other lights so um so that was one where i was kind of should we do this or not but i think as far as like
other features go i think there's a lot that i would say shouldn't be in open rgb because it's
not just let's control a light with a software but i would be happy with it being a plug-in or
an external program that links up with OpenRGB.
Right. When you get into the state of plugins
then they're, you know,
they're just adding on
functionality. Yep.
So. Okay.
Yeah, that way we can keep the base program
lightweight, which is kind of the goal. Yeah, you don't want to become
you know, Razer Synapse. Right.
That's been the whole idea. So like
every time someone wants to
add a big feature that's going to add crazy amounts of memory and usage and whatnot it's
like right this should be a plug-in because open rgb's goal is to stay away from becoming what it's
trying to replace um so i i'm i'm sort of genuinely impressed by the range of devices that are supported.
I didn't even know that some of these device classes had lighting.
Like, you know, normal ones like Motherboard, RAM, all that makes sense.
But then there's, you know, I always forget that mouse mats exist with color.
And then you told me there's storage.
Then there's headset stands.
What is virtual devices?
Okay, there's nothing in that list.
Okay.
Virtual devices, I think, were just a plug-in thing okay plugins to be able to register their own devices
that are just handled in software i see i see i see but like there's so much supported in here
i obviously there's still a lot a lot of things you would like to do
without a doubt
but as it stands
so much work has already been done
yeah there's been a ton of work
and I did
a lot of the early work on OpenRGB
but then it really exploded as a community
project and I got lots of
contributions and people have been really good
about just committing and we've lots of contributions and people have been really good about just committing.
And we've had a lot of people kind of seems like they've picked up the duty of
maintaining one particular brand or one particular controller class of devices.
So, I mean, the community around OpenRGB has been great.
And we've had a lot of good people contributing.
So, yeah, just really thankful for the community behind OpenRGB
and what they've allowed it to grow into.
So that device list is pretty crazy now.
On that note, before we end it off, I do want to ask,
if someone wants to get involved with OpenRGB,
how would they go about doing so?
If someone who has not approached the project before, what is a good way for them to get involved with OpenRGB, like what's like, how would they go about doing so? Like what,
what if someone who has not approached the project before,
what is a good way for them to get started?
Well,
I think probably the biggest help for OpenRGB would be adding new devices.
I think that's just kind of,
yes,
there are feature improvements that could be done.
And you could,
if you want to add effects you
could help out with the other plugins um which the developers of the plugins also uh kind of live in
our discord but if you want to help out with open rgb itself probably the biggest help is new device
support um because we're always looking to expand the list of devices and everyone always has something new
that we don't support. But unfortunately, that's also going to be the hardest one because
you have to learn reverse engineering and techniques like that. But I hope that we can
provide that information and kind of our community in general can just teach people what they need to
get into reverse engineering. I know I've heard from people who say, you know, they got into
reverse engineering or programming because of OpenRGB and that's always nice to hear. So
yeah, but if there's still other things, there's always, I mean, anything that you see in the code that you think you can improve, like merge requests are always welcome.
Unfortunately, we always said, you know, issues are welcome and they still are.
But unfortunately, the issue tracker has just grown and grown and grown more than we can
manage at this point.
The issue tracker was the way to go early on in the project.
1.3k open yeah it's
just growing so hard that we don't have the time to uh manage it anymore almost so it seems like
i spend all my time on just merge requests or adding features myself so uh or just discord
for the immediate questions but even then we can't answer every question all the time,
unfortunately.
So, so I try to, we've tried to put up documentation.
I think there is a lot we can do with the website to improve it.
I've been trying to make it better over time.
And then the wiki, which we used to be pretty big on the wiki i haven't been updating it as much
kind of pushing it off to its own repo so that other people can collaborate on it
um so the wiki on that's actually on the gitlab page itself is kind of outdated. But yeah, there's probably the best thing
if you're really interested in OpenRGB
and you want to get into reverse engineering
would be to try and get into reverse engineering.
I mean, I just published two videos
about doing the ROG Ally that you could use as guidance.
Or if you have questions about reverse rendering,
I think people in Discord would be happy to answer that.
I'm in there a lot just to learn the process.
And hopefully, sooner rather than later,
that won't be as necessary if documentation
starts being available.
But until then, learn how to use wireshark unfortunately
so yeah it's good you mentioned those two videos i was about to say those as well
check those out because i think like you you go through a lot of the process you go throughout
like doing something like that like you're not entirely sure how you would approach it from the
start you work it out and then you eventually get it you know work at least i didn't watch the second part
but at least for that first part you got the sticks like changing color yeah yeah the the
second part i just uploaded this morning so um yeah it's just basically that was just finishing
it off and figuring out all the different effect modes i think we were close but there were some uh little minor things we ran into like there's a
command you have to send to apply the changes and then after you've actually set the packet but then
i got it working and uh so definitely check those out if you're interested in learning reverse
engineering i think that it's going to be a,
it's kind of a slow and boring watch maybe,
but it's,
I think it does go through the entire process and reverse engineering,
unfortunately,
unless you're really into puzzles and like figuring things out,
it is,
it is kind of a chore.
So that's the unfortunate part about it.
But unfortunately that's also the thing that we need the most of for OpenRGB.
And I mean, it's not just OpenRGB because you talk about Linux in general.
And so much in the Linux world is reverse engineered.
I'm just thinking about all the crazy projects going on with GPU drivers these days with like, uh, the Apple M one driver and,
uh,
pan frost and so many projects and the new NVK and video stuff.
It's just reverse engineering is so crucial to Linux right now.
Absolutely.
It's not always that way,
but yeah,
you know,
look,
maybe one day, maybe one day it won't be but but now at least
i'm really happy people like you are out there doing this kind of work and trying to get this
support out there and hey i guess if you weren't doing this work it probably wouldn't there probably
wouldn't have been an open pleb in the first place if people weren't doing this reverse engineering
work there wouldn't have been this indication there was so much interest in making this happen yeah i mean i was surprised
whenever open pleb came out i watched the video and then i looked down and they had like called
out open rgb as like their example of like this is the kind of project that would benefit and it's
like well yeah we would so that's why i was like, I need to react to that.
I need to get in contact because that was something
I'd been hoping people would do all along.
But it was like, when I started the project,
it was like, I'm just some guy with some RGB.
And if I tell Corsair to give me documentation,
what are they going to say?
But if I reverse engineer it, I might make progress. So,
so, uh, I'm glad that it's getting more attention for sure.
Absolutely. Uh, I think that's as good of a place as any to end off the show. So
let people know where they can find your work, how they can get involved in OpenRGB, all that stuff.
your work, how they can get involved in OpenRGB, all that stuff?
The main thing is both our website,
HTTPSOpenRGB.org, and then the GitLab, which is linked in, well, I have it pulled up behind me.
So OpenRGB.org, there's this menu on the side.
Oh, I'm clicking on the preview, not the other screen.
I have it mirrored to my other screen.
And we have GitLab as the first link up here.
If you go to that, that takes you to our GitLab page.
This is where you can browse the code.
You should go through our readme.
We have some information on how-tos, how to contribute, so the information
about the API, the SDK, and contributing
guidelines. Awesome. I think that would be a good
starting place for anyone who wants to get into OpenRGB.
And then we also have a link to our Discord community
here, too. Unfortunately unfortunately we kind of took off on discord i
wanted to move it over to matrix but uh that was going to be a hard sell that having an established
community i did though uh i have gotten rid of the open rgb subreddit because of all the reddit drama so we are now on lemmy open rgb so that's also on our website sweet uh is that all
you want to mention uh i think as far as getting in contact that's probably the main stuff so i
think that's all okay cool um as for me if you are not subbed to the main channel that is a broody
robertson i do linux videos there six days a week uh i don't know what's going to be out by the time this comes out because i am way
ahead of schedule so i don't know maybe red hat will do something stupid again that's possible
yeah maybe if you want to go see my gaming stuff i do gaming or gaming streams two times a week on YouTube, Twitch
and Kick now as well.
I'm playing through Yakuza 0, which
may be done by the time that you guys
see this, so I'll probably be playing
Black Mesa then, and I'm also
playing through Final Fantasy 16.
If you're listening to the audio version
of this, the video version is available on
YouTube at Tech Over Tea. If you're
watching the video, you can find the audio
anywhere. You can find an audio podcast. There's an
RSS feed. Stick in your favorite app. I like
AntennaPod.
Yeah, that's going to be it for me.
So I'll give you the final word. What do you want to say?
I want to say thank you for having
me. This has been fun.
It's been interesting to talk
about my project and
do an interview like this. It's been interesting to talk about my project and do
an interview like this.
It's been great and getting the word out is
always good.
It's been a pleasure talking to you.
It's been an absolute pleasure talking to you as well.
I'm happy you decided to do this.
Yeah, for sure. I'm glad you reached out to me.
I hope OpenPleb
goes well. I hope OpenRGB goes well.
And yeah, that I think is everything then
so
I'm out