Uma interface Linux de código aberto para iCUE LINK Hub e outros AIOs, Hubs da Corsair. Gerencie iluminação RGB, velocidades de ventiladores, métricas do sistema, bem como teclados, mouses, headsets via painel web.
- Interface web acessível em
http://localhost:27003 - Controle coolers AIO, ventiladores, hubs, bombas, LCDs e iluminação RGB
- Gerencie teclados, mouses e headsets
- Suporte para memória DDR4 e DDR5
- Perfis de ventiladores personalizados, sensores de temperatura e editor RGB
- Se precisar de menu na bandeja do sistema - https://github.com/jurkovic-nikola/openlinkhub-tray
- Lista de dispositivos suportados
- Este projeto foi criado por necessidade própria para controlar ventiladores e bombas em computadores após migrar tudo para Linux.
- Não assumo nenhuma responsabilidade por este código. Use por sua conta e risco.
- A maioria dos dispositivos foi testada em hardware real.
- Tenha cuidado e divirta-se!
- Este projeto não é um produto oficial da Corsair.
- Baixe o pacote .deb ou .rpm da versão mais recente, dependendo da sua distribuição Linux
- Abra o terminal
- Navegue para a pasta onde o pacote foi baixado
# Baseado em Debian (deb)
$ sudo apt install ./OpenLinkHub_?.?.?_amd64.deb
# Baseado em RPM (rpm)
$ sudo dnf install ./OpenLinkHub-?.?.?-1.x86_64.rpm$ sudo add-apt-repository ppa:jurkovic-nikola/openlinkhub
$ sudo apt update
$ sudo apt-get install openlinkhub$ sudo dnf copr enable jurkovic-nikola/OpenLinkHub
$ sudo dnf install OpenLinkHub- libudev-dev
- usbutils
- go 1.23.8 - https://go.dev/dl/
# Pacotes necessários (deb)
$ sudo apt-get install libudev-dev
$ sudo apt-get install usbutils
# Pacotes necessários (rpm)
$ sudo dnf install libudev-devel
$ sudo dnf install usbutilsVocê também pode usar o devcontainer fornecido para o VScode. Isso é útil para distribuições imutáveis.
$ git clone https://github.com/jurkovic-nikola/OpenLinkHub.git
$ cd OpenLinkHub/
$ go build .
$ chmod +x install.sh
$ sudo ./install.sh# Baixe o build mais recente de https://github.com/jurkovic-nikola/OpenLinkHub/releases/latest
$ wget "https://github.com/jurkovic-nikola/OpenLinkHub/releases/latest/download/OpenLinkHub_$(curl -s https://api.github.com/repos/jurkovic-nikola/OpenLinkHub/releases/latest | jq -r '.tag_name')_amd64.tar.gz"
$ tar xf OpenLinkHub_?.?.?_amd64.tar.gz
$ cd /home/$USER/OpenLinkHub/
$ chmod +x install.sh
$ sudo ./install.sh# Não instale pacotes RPM ou DEB em distribuições imutáveis, eles não funcionarão.
# O mesmo procedimento pode ser seguido para atualizar uma instalação existente.
# Baixe o tar.gz mais recente da página de Release, ou use o seguinte comando para baixar a versão mais recente.
$ wget "https://github.com/jurkovic-nikola/OpenLinkHub/releases/latest/download/OpenLinkHub_$(curl -s https://api.github.com/repos/jurkovic-nikola/OpenLinkHub/releases/latest | jq -r '.tag_name')_amd64.tar.gz"
# Extraia o pacote para seu diretório home
$ tar xf OpenLinkHub_?.?.?_amd64.tar.gz -C /home/$USER/
# Vá para a pasta extraída
$ cd /home/$USER/OpenLinkHub
# Torne install-immutable.sh executável
$ chmod +x install-immutable.sh
# Execute install-immutable.sh. Digite sua senha para sudo quando solicitado para copiar o arquivo 99-openlinkhub.rules
$ ./install-immutable.sh
# Reinicie
$ systemctl rebootsudo systemctl start OpenLinkHub.service
xdg-open http://127.0.0.1:27003/opt/OpenLinkHub/config.json
{
"debug": false,
"listenPort": 27003,
"listenAddress": "127.0.0.1",
"cpuSensorChip": "k10temp",
"manual": false,
"frontend": true,
"metrics": true,
"resumeDelay": 15000,
"memory": false,
"memorySmBus": "i2c-0",
"memoryType": 4,
"exclude": [],
"decodeMemorySku": true,
"memorySku": "",
"logFile": "",
"logLevel": "info",
"enhancementKits": [],
"temperatureOffset": 0,
"amdGpuIndex": 0,
"amdsmiPath": "",
"cpuTempFile": "",
"graphProfiles": false,
"ramTempViaHwmon": false,
"nvidiaGpuIndex": [0],
"defaultNvidiaGPU": 0
}- listenPort: Porta do servidor HTTP.
- listenAddress: Endereço para o servidor HTTP escutar.
- cpuSensorChip: Chip sensor de CPU para temperatura.
k10tempouzenpowerpara AMD ecoretemppara Intel - manual: defina como true se quiser usar sua própria interface para controle de dispositivos. Definir como true desabilitará monitoramento de temperatura e ajustes automáticos de velocidade de dispositivos.
- frontend: defina como false se não precisar do console WebUI, e estiver fazendo seu próprio app de interface.
- metrics: habilitar ou desabilitar métricas Prometheus
- resumeDelay: quantidade de tempo em milissegundos para o programa reinicializar todos os dispositivos após suspensão / retomada
- memory: Habilitar visão geral / controle sobre a memória
- memorySmBus: id do sensor smbus i2c
- memoryType: 4 para DDR4. 5 para DDR5
- exclude: lista de ids de dispositivos em formato uint16 para excluir do controle do programa
- decodeMemorySku: defina como false para definir manualmente o valor
memorySku. - memorySku: Número da peça da memória, ex. (CMT64GX5M2B5600Z40)
- Você pode encontrar o número da peça da memória executando o comando:
sudo dmidecode -t memory | grep 'Part Number' - logFile: localização personalizada para logging. Padrão é vazio.
- Definir
-para logFile enviará todos os logs para saída padrão do console. - Se alterar a localização do logging, certifique-se de que o nome de usuário da aplicação tenha permissão para escrever nessa pasta.
- Definir
- logLevel: nível de log para logar no console ou arquivo.
- enhancementKits: Endereços dos Kits de Aprimoramento de Luz DDR4/DDR5.
- Se seu kit estiver instalado no primeiro e terceiro slot, o valor seria:
"enhancementKits": [80,82],. Este valor é o valor byte convertido da saída hexadecimal emi2cdetect- Quando kits são usados, você precisa definir
decodeMemorySkucomofalsee definirmemorySku
- Quando kits são usados, você precisa definir
- temperatureOffset: Deslocamento de temperatura para CPUs AMD Threadripper
- amdGpuIndex: Índice do dispositivo GPU. Você pode encontrar o índice da sua GPU via
amd-smi static --asic --json - amdsmiPath: Caminho manual para binário amd-smi (não recomendado). Melhor forma é definir o caminho
amd-smina variável$PATHse estiver faltando. - cpuTempFile: arquivo de entrada de temperatura hwmon personalizado, ex. tempX_input. Use em combinação com
cpuSensorChip. - graphProfiles: Definir este valor como
truehabilitará perfis de temperatura baseados em gráfico no endpoint/temperaturee habilitará interpolação de temperatura. - ramTempViaHwmon: Mude para true se quiser monitorar a temperatura da RAM via sistema hwmon. Com esta opção, você não precisa descarregar módulos para obter temperatura. (Requer kernel 6.11+)
- nvidiaGpuIndex: Configuração multi GPU NVIDIA.
- defaultNvidiaGPU: índice padrão da GPU NVIDIA, padrão é 0.
- Se usar vfio-pci/pass-through, você tem que definir como -1 para evitar conflitos com módulos nvidia.
A interface web suporta instalação como aplicativo web progressivo (PWA). Com um navegador suportado, isso permite que a interface apareça como um aplicativo independente. Navegadores baseados em Chromium suportam PWAs, Firefox atualmente não. GNOME 'Web,' também conhecido como 'Epiphany' é uma boa opção para PWAs em sistemas GNOME.
# Pare o serviço
sudo systemctl stop OpenLinkHub.service
# Remova o diretório da aplicação
sudo rm -rf /opt/OpenLinkHub/
# Remova o arquivo systemd (localização do arquivo pode ser encontrada executando sudo systemctl status OpenLinkHub.service)
sudo rm /etc/systemd/system/OpenLinkHub.service
# ou
sudo rm /usr/lib/systemd/system/OpenLinkHub.service
# Recarregue systemd
sudo systemctl daemon-reload
# Remova regras udev
sudo rm -f /etc/udev/rules.d/99-openlinkhub.rules
sudo rm -f /etc/udev/rules.d/98-corsair-memory.rules
# Recarregue udev
sudo udevadm control --reload-rules
sudo udevadm triggerComo alternativa, OpenLinkHub pode ser executado no Docker, usando o Dockerfile neste repositório para compilá-lo localmente. Um arquivo de configuração deve ser montado em /opt/OpenLinkHub/config.json
$ docker build . -t openlinkhub
$ # Para compilar uma versão específica você pode usar o argumento de build GIT_TAG
$ docker build --build-arg GIT_TAG=0.1.3-beta -t openlinkhub .
$ docker run --privileged openlinkhub
# Para acesso WebUI, rede é necessária
$ docker run --network host --privileged openlinkhub- Imagens / animações LCD estão localizadas em
/opt/OpenLinkHub/database/lcd/images/
- Painel de Dispositivo é acessível pelo navegador via link
http://127.0.0.1:27003/ - Painel de Dispositivo permite controlar seus dispositivos.
- Configuração RGB está localizada no arquivo
database/rgb/seu-dispositivo-serial.json - RGB pode ser configurado via Editor RGB no Painel
- OpenLinkHub vem com servidor HTTP integrado para visão geral e controle de dispositivos.
- Documentação está disponível em
http://127.0.0.1:27003/docs
