Tech Over Tea - OpenRGB Developer & Maintainer | CalcProgrammer1

Episode Date: July 14, 2023

Today 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)
Starting point is 00:00:00 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...
Starting point is 00:00:22 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
Starting point is 00:00:54 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.
Starting point is 00:01:35 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.
Starting point is 00:01:53 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.
Starting point is 00:02:20 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,
Starting point is 00:02:53 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,
Starting point is 00:03:25 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
Starting point is 00:03:49 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
Starting point is 00:04:17 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
Starting point is 00:05:04 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.
Starting point is 00:05:52 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.
Starting point is 00:06:19 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,
Starting point is 00:06:44 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.
Starting point is 00:06:59 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.
Starting point is 00:07:30 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
Starting point is 00:08:01 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.
Starting point is 00:08:38 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
Starting point is 00:09:30 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
Starting point is 00:10:22 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
Starting point is 00:11:05 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
Starting point is 00:11:33 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.
Starting point is 00:11:52 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
Starting point is 00:12:33 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.
Starting point is 00:13:32 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.
Starting point is 00:14:27 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,
Starting point is 00:15:06 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
Starting point is 00:15:32 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
Starting point is 00:16:03 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
Starting point is 00:16:48 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
Starting point is 00:17:04 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,
Starting point is 00:17:32 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
Starting point is 00:18:04 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
Starting point is 00:18:45 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
Starting point is 00:19:24 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,
Starting point is 00:20:00 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.
Starting point is 00:20:42 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
Starting point is 00:21:00 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,
Starting point is 00:21:20 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
Starting point is 00:21:58 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,
Starting point is 00:22:41 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
Starting point is 00:23:05 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,
Starting point is 00:23:30 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
Starting point is 00:24:06 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
Starting point is 00:24:49 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.
Starting point is 00:25:36 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
Starting point is 00:26:18 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.
Starting point is 00:27:00 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
Starting point is 00:27:17 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,
Starting point is 00:27:35 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
Starting point is 00:27:51 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.
Starting point is 00:28:43 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
Starting point is 00:29:18 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.
Starting point is 00:30:08 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.
Starting point is 00:30:36 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.
Starting point is 00:31:13 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,
Starting point is 00:31:28 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,
Starting point is 00:31:40 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
Starting point is 00:32:34 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
Starting point is 00:33:14 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.
Starting point is 00:33:38 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.
Starting point is 00:34:00 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.
Starting point is 00:34:23 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
Starting point is 00:35:08 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.
Starting point is 00:36:10 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
Starting point is 00:36:52 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
Starting point is 00:37:32 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,
Starting point is 00:38:08 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
Starting point is 00:38:29 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
Starting point is 00:38:50 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.
Starting point is 00:39:24 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
Starting point is 00:39:57 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
Starting point is 00:40:45 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
Starting point is 00:41:30 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.
Starting point is 00:41:54 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
Starting point is 00:42:30 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
Starting point is 00:42:54 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
Starting point is 00:43:19 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
Starting point is 00:44:01 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?
Starting point is 00:44:17 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
Starting point is 00:44:36 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,
Starting point is 00:44:48 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,
Starting point is 00:45:00 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
Starting point is 00:45:36 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
Starting point is 00:46:26 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?
Starting point is 00:47:09 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.
Starting point is 00:47:25 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,
Starting point is 00:47:59 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.
Starting point is 00:48:25 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.
Starting point is 00:49:11 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
Starting point is 00:49:40 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
Starting point is 00:50:52 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
Starting point is 00:51:19 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
Starting point is 00:51:56 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
Starting point is 00:52:38 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
Starting point is 00:53:15 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.
Starting point is 00:53:28 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.
Starting point is 00:54:04 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
Starting point is 00:54:48 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
Starting point is 00:55:45 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
Starting point is 00:56:33 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
Starting point is 00:57:23 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.
Starting point is 00:57:44 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
Starting point is 00:58:33 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
Starting point is 00:59:11 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
Starting point is 00:59:50 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,
Starting point is 01:00:19 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.
Starting point is 01:01:01 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,
Starting point is 01:01:15 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
Starting point is 01:01:57 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.
Starting point is 01:02:22 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,
Starting point is 01:03:02 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.
Starting point is 01:03:22 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
Starting point is 01:03:55 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
Starting point is 01:04:34 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.
Starting point is 01:05:31 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.
Starting point is 01:05:52 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
Starting point is 01:06:29 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
Starting point is 01:07:05 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
Starting point is 01:07:52 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
Starting point is 01:08:35 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,
Starting point is 01:09:15 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
Starting point is 01:09:52 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
Starting point is 01:10:40 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,
Starting point is 01:11:13 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?
Starting point is 01:12:05 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
Starting point is 01:12:38 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
Starting point is 01:13:31 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,
Starting point is 01:14:15 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
Starting point is 01:14:45 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
Starting point is 01:15:15 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
Starting point is 01:15:48 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
Starting point is 01:16:41 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
Starting point is 01:17:28 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
Starting point is 01:17:44 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
Starting point is 01:18:14 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.
Starting point is 01:18:37 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
Starting point is 01:19:21 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.
Starting point is 01:20:01 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
Starting point is 01:20:26 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
Starting point is 01:21:09 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.
Starting point is 01:21:30 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.
Starting point is 01:22:07 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.
Starting point is 01:22:41 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,
Starting point is 01:23:11 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?
Starting point is 01:23:28 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.
Starting point is 01:23:51 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.
Starting point is 01:24:03 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
Starting point is 01:24:36 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.
Starting point is 01:25:08 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
Starting point is 01:25:30 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
Starting point is 01:25:56 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
Starting point is 01:26:19 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
Starting point is 01:26:48 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,
Starting point is 01:27:46 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
Starting point is 01:28:08 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.
Starting point is 01:29:08 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.
Starting point is 01:29:29 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?
Starting point is 01:30:17 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.
Starting point is 01:30:55 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.
Starting point is 01:31:20 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.
Starting point is 01:32:09 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.
Starting point is 01:32:28 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
Starting point is 01:32:57 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
Starting point is 01:33:21 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
Starting point is 01:33:55 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,
Starting point is 01:34:26 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,
Starting point is 01:35:04 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
Starting point is 01:35:34 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
Starting point is 01:35:57 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
Starting point is 01:36:19 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.
Starting point is 01:36:50 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,
Starting point is 01:37:15 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
Starting point is 01:37:31 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,
Starting point is 01:38:06 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
Starting point is 01:38:38 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.
Starting point is 01:39:43 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.
Starting point is 01:40:29 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.
Starting point is 01:41:18 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
Starting point is 01:41:47 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
Starting point is 01:42:14 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
Starting point is 01:42:50 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,
Starting point is 01:43:10 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
Starting point is 01:43:55 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
Starting point is 01:44:18 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.
Starting point is 01:44:50 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
Starting point is 01:45:12 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
Starting point is 01:45:38 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.
Starting point is 01:46:04 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,
Starting point is 01:46:28 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
Starting point is 01:46:45 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
Starting point is 01:47:36 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
Starting point is 01:48:23 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
Starting point is 01:49:07 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.
Starting point is 01:49:36 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
Starting point is 01:50:10 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,
Starting point is 01:50:49 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.
Starting point is 01:51:15 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,
Starting point is 01:51:42 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
Starting point is 01:52:16 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?
Starting point is 01:52:42 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.
Starting point is 01:53:20 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
Starting point is 01:53:50 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
Starting point is 01:54:42 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
Starting point is 01:55:15 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.
Starting point is 01:55:31 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.
Starting point is 01:55:47 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.
Starting point is 01:56:04 And yeah, that I think is everything then so I'm out

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.