Hello everyone. This isn't exactly the place I would want to release this, but being a newb to the forum I have no choice. About the project
Yesterday a miner friend of mine was trying to get me back into mining. I started but the machine was across the room. I hated moving out of bed to check on the temps of the machine and I didn't know the IP to remote into it. So. I did some research and set aside 24 hours for me to work on this project. This is the result of my 24 hour coding challenge.
I finished it a few hours short of my allotted 24 hours, which also included 6 hours of sleep so the project itself might not be that great but the base of it is something that could definitely be expanded upon.What is it?
GpuControl is a remote control panel for monitoring your your remote machines. Notice I said, MachineS
. yes. This software supports multiple machines to be controlled and monitored all in real time. Well, semi real time. The Client program collects data every 2 seconds (can be adjusted as it is open source though). Then add onto that the time it takes for information to travel across the interwebz.How does it work?
Ok, this might turn off a lot of users but it uses VB.net (useful for rapid prototyping) and MSI Afterburner. MSI Afterburner offers an IPC (Inter Process communications) API that I can use to talk to it about the graphics cards. This makes the client have high compatibility out of the gate. So I'll build a layer of how this control panel works:
Client: This is the program that runs on your mining rigs. It gathers a list of all your GPUs and connects to the server
Server: this is a node.js server that listens to 2 ports. 1 for the client, and 1 for socket.io communication for the web browser control panel.
HTML: This is a static HTML file that connects to the server, and sends and receives requests from the server. You wouldn't need a webserver for this file.Pros vs. Cons?Pros:
- Allows for cross platform checking of GPU Temps, and allows adjustments of fan speed from remote panel (Only needs a web browser to work)
- Client to server uses SSL communications to keep things private.
- CLient to server uses simple authorization to prevent unauthorized machines from connecting to the server
- Simple server to html authentication to prevent just anyone from controlling your server
- Has high compatibility with any card MSI Afterburner supports
- Includes simple auto fan increase when approaching a certain temp. (Ie: increase fan speed 10% when reaching 90C)
- Currently the client is windows only
- Socket.io to HTML connection not secured (I'm sure its somewhat simple to implement, just didn't care enough)
- Relies on MSI Afterburner
- Security is probably not up to par of what some would expect (I'm not a security expert)
- The server is only coded to allow 1 user to view the temps at a time. This was more a lazy thing than a not possible thing.
Its a pretty straight forward panel really. Quick "how to setup" thing:
1) Compile Client
2) Install Node.js on a server
3) Install socket.io either via npm or by checking out their code from github
4) Place the html file under a web server
5) Configure host for client, and html file.
6) In the node-server.js (node server), edit the server keys. They can be anything you want really. I used a random 16-character string for mine.
7) Edit passwords list. This is for the control panel.
I apologize in advanced for the horribly non-commented code I have produced. As I said, this was a 24 hour project. I wasn't really expecting to release it but my friend said it was really good. I also had the intention of marketing it, but due to the fact that DDoS attacks tend to follow bitcoin related operations, I decided it wasn't worth it.
Ok, enough talk. You can find the code here:https://github.com/dabbers/GpuControl
If you have any questions, feel free to ask.
As for license, I don't have one. It's free for anyone to use, abuse, sell, buy, whatever. I'd appreciate some credit and/or donation if it does benefit you though. If you wish to donate, you can send a little something something here: 1KTum8RdSKE8WNbCCqgwgRgYhA3TszbUiY
If you don't have Visual Studio 2010, I can upload compiled versions of the software.
Thanks, hope you enjoy!