Comet X (GL-RM4PE) Quad-Port Remote KVM with PoE
.rm4pe-main-container { --rm4pe: #4a55f4; --rm4pe-bg: #0f0f0f; overflow-x: clip; } .rm4pe-main-container .product-nav { top: 0; } .bg-rm4pe { background-color: var(--rm4pe-bg); } . text-muted-dark { color: #a9b3c2; } .text-rm4pe { color: var(--rm4pe); } .text-gradient-rm4pe { background: linear-gradient(to right, #8168f5 0%, #9f81fb 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; /* For Firefox */ background-clip: text; color: transparent; } .rm4pe-main-container .btn-round-rm4pe { background-color: var(--rm4pe); color: #fff; border-radius: 50px; padding: 1rem 2rem; text-transform: uppercase; font-weight: bold; display: inline-flex; align-items: center; justify-content: center; } @media (max-width: 768px) { .rm4pe-main-container .btn-round-rm4pe { min-height: 50px; padding: 12px 2rem; } } .rm4pe-main-container .btn-round-rm4pe:hover { background-color: #fff; color: var(--rm4pe); border-color: var(--rm4pe); } .rm4pe-main-container .product-show-list { padding: 0; margin: 0; list-style: none; } .rm4pe-main-container .product-show-list > li { margin: 0; padding: 0; } .rm4pe-main-container .top-banner { position: relative; background-color: black; height: 56rem; min-height: 25rem; width: 100%; overflow: hidden; } @media (max-width: 768px) { .rm4pe-main-container .top-banner { height: 35rem; aspect-ratio: 1 / 1; } } .rm4pe-main-container .top-banner .overlay { position: absolute; top: 0; left: 0; height: 100%; width: 100%; background-color: black; opacity: 0.25; z-index: 1; } .rm4pe-main-container .top-banner video { position: absolute; top: 50%; left: 50%; min-width: 100%; min-height: 100%; width: auto; height: auto; z-index: 0; -ms-transform: translateX(-50%) translateY(-50%); -moz-transform: translateX(-50%) translateY(-50%); -webkit-transform: translateX(-50%) translateY(-50%); transform: translateX(-50%) translateY(-50%); } .rm4pe-main-container .top-banner video :focus-visible { outline: none; } .rm4pe-main-container .top-banner .container { position: relative; z-index: 2; } .rm4pe-main-container .rm4pe-highlight-grid-row { display: grid; gap: 8px; margin-bottom: 8px; } .rm4pe-main-container .rm4pe-highlight-grid-row-top { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(0, 1fr)); } .rm4pe-main-container .rm4pe-highlight-grid-row-top .rm4pe-highlight-card--1 { grid-row: 1 / 3; min-height: 384px; } .rm4pe-main-container .rm4pe-highlight-grid-row-top .rm4pe-highlight-card--2 { grid-column: 2; grid-row: 1 / 3; min-height: 384px; } .rm4pe-main-container .rm4pe-highlight-grid-row-top .rm4pe-highlight-card--3 { grid-column: 3; min-height: 188px; } .rm4pe-main-container .rm4pe-highlight-grid-row-top .rm4pe-highlight-card--4 { grid-column: 3; grid-row: 2; min-height: 188px; } .rm4pe-main-container .rm4pe-highlight-grid-row-bottom { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 0; } .rm4pe-main-container .rm4pe-highlight-grid-row-bottom .rm4pe-highlight-card { min-height: 192px; } .rm4pe-main-container .rm4pe-highlight-card { background-size: cover; background-position: center; border-radius: 16px; overflow: hidden; position: relative; } .rm4pe-main-container .rm4pe-highlight-card::before { content: ""; position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(to bottom, rgba(53, 51, 168, 0.25) 0%, transparent 100%); pointer-events: none; z-index: 0; } .rm4pe-main-container .rm4pe-highlight-card h3 { position: relative; z-index: 1; font-size: 18px; } @media (min-width: 992px) { .rm4pe-main-container .rm4pe-highlight-card h3 { font-size: 20px; } } @media (min-width: 1200px) { .rm4pe-main-container .rm4pe-highlight-card h3 { font-size: 24px; } } .rm4pe-main-container .rm4pe-highlight-card--1 { background-image: url("https://static.gl-inet.com/www/images/products/gl-rm4pe/highlight_quad-port-remote-control.jpg"); background-position: bottom center; } .rm4pe-main-container .rm4pe-highlight-card--2 { background-image: url("https://static.gl-inet.com/www/images/products/gl-rm4pe/highlight_poe-powered-setup.jpg"); } .rm4pe-main-container .rm4pe-highlight-card--3 { background-image: url("https://static.gl-inet.com/www/images/products/gl-rm4pe/highlight_at-a-glance-touchscreen.jpg"); } .rm4pe-main-container .rm4pe-highlight-card--4 { background-image: url("https://static.gl-inet.com/www/images/products/gl-rm4pe/highlight_rack_ready_design.jpg"); } .rm4pe-main-container .rm4pe-highlight-card--5 { background-image: url("https://static.gl-inet.com/www/images/products/gl-rm4pe/highlight_4k-hdmi-passthrough_mb.jpg"); background-position: top right; } @media (min-width: 576px) { .rm4pe-main-container .rm4pe-highlight-card--5 { background-position: center right; } } @media (min-width: 992px) { .rm4pe-main-container .rm4pe-highlight-card--5 { background-position: top right; } } @media (min-width: 1200px) { .rm4pe-main-container .rm4pe-highlight-card--5 { background-image: url("https://static.gl-inet.com/www/images/products/gl-rm4pe/highlight_4k-hdmi-passthrough.jpg"); background-position: center; } } .rm4pe-main-container .rm4pe-highlight-card--6 { background-image: url("https://static.gl-inet.com/www/images/products/gl-rm4pe/highlight_64gb-emmc-storage.jpg"); background-position: center right; } .rm4pe-main-container .rm4pe-highlight-card--7 { background-image: url("https://static.gl-inet.com/www/images/products/gl-rm4pe/highlight_local-control.jpg"); background-position: center right; } .rm4pe-main-container .rm4pe-highlight-card--8 { background-image: url("https://static.gl-inet.com/www/images/products/gl-rm4pe/highlight_flexible-remote-access.jpg"); background-position: center right; } @media (max-width: 800px) { .rm4pe-main-container .rm4pe-highlight-grid { display: grid; gap: 8px; grid-template-columns: repeat(2, minmax(0, 1fr)); } .rm4pe-main-container .rm4pe-highlight-grid-row { display: contents; margin-bottom: 0; } .rm4pe-main-container .rm4pe-highlight-grid .rm4pe-highlight-card { grid-row: auto; min-height: 0; } .rm4pe-main-container .rm4pe-highlight-grid-row-top .rm4pe-highlight-card--1 { grid-column: 1 / -1; height: 280px; } .rm4pe-main-container .rm4pe-highlight-grid-row-top .rm4pe-highlight-card--2, .rm4pe-main-container .rm4pe-highlight-grid-row-top .rm4pe-highlight-card--3 { grid-column: auto; height: 128px; } .rm4pe-main-container .rm4pe-highlight-grid-row-top .rm4pe-highlight-card--4 { grid-column: 1 / -1; height: 128px; } .rm4pe-main-container .rm4pe-highlight-grid-row-bottom .rm4pe-highlight-card { grid-column: auto; height: 128px; } } .rm4pe-main-container .rm4pe-compare-card { position: relative; overflow: hidden; display: flex; flex-direction: column; justify-content: flex-end; width: 100%; aspect-ratio: 4 / 3; color: #fff; background-size: cover; background-position: center; background-repeat: no-repeat; } .rm4pe-main-container .rm4pe-compare-card--before { background-image: url("https://static.gl-inet.com/www/images/products/gl-rm4pe/rm4pe_4-servers_messy.jpg"); } .rm4pe-main-container .rm4pe-compare-card--after { background-image: url("https://static.gl-inet.com/www/images/products/gl-rm4pe/rm4pe_4-servers_clean.jpg"); } .rm4pe-main-container .rm4pe-compare-card::before { content: ""; position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(to bottom, transparent 50%, rgba(15, 15, 15, 0.6) 60%, rgba(15, 15, 15, 0.8) 100%); pointer-events: none; z-index: 0; } .rm4pe-main-container .rm4pe-compare-card > * { position: relative; z-index: 1; } .rm4pe-main-container .rm4pe-compare-card__badge { display: inline-block; align-self: flex-start; background: rgba(255, 255, 255, 0.2); color: #fff; padding: 6px 10px; border: 1px solid rgba(255, 255, 255, 0.4); border-radius: 999px; font-weight: 700; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.6px; margin-bottom: 1rem; } @media (max-width: 576px) { .rm4pe-main-container .rm4pe-compare-card__badge { padding: 5px 8px; font-size: 0.7rem; } } .rm4pe-scenarios .scenarios-images .scene-images-pane { display: none; } .rm4pe-scenarios .scenarios-images .scene-images-pane.active { display: block; } .rm4pe-scenarios .scenarios-img-card { overflow: hidden; border-radius: 15px; height: 480px; padding: 0; background: transparent; display: block; line-height: 0; } @media (max-width: 768px) { .rm4pe-scenarios .scenarios-img-card { height: 320px; } } .rm4pe-scenarios .scenarios-img-card img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; } .rm4pe-scenarios .scenarios-tabs { display: flex; justify-content: center; gap: 12px; position: sticky; top: 0; z-index: 10; width: 100%; } .rm4pe-scenarios .scenarios-tabs .scenarios-tabs-bg button.tab { position: relative; z-index: 2; background: transparent; border: none; color: #888; padding: 10px 25px; font-weight: 600; transition: color 0.3s; white-space: nowrap; border-radius: 40px; outline: none; cursor: pointer; } .rm4pe-scenarios .scenarios-tabs .scenarios-tabs-bg button.tab.active { color: #fff; } .rm4pe-scenarios .scenarios-tabs .scenarios-tabs-wrapper { overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; padding: 10px 0; } .rm4pe-scenarios .scenarios-tabs .scenarios-tabs-wrapper::-webkit-scrollbar { display: none; } .rm4pe-scenarios .scenarios-tabs .scenarios-tabs-bg { position: relative; display: flex; flex-wrap: nowrap; width: max-content; background-color: #1a1a1a; border-radius: 50px; padding: 5px; margin: 0 auto; z-index: 1; } .rm4pe-scenarios .scenarios-tabs .scenarios-tabs-bg .tab-sliding-indicator { position: absolute; top: 5px; left: 0; height: calc(100% - 10px); background-color: var(--rm4pe); border-radius: 40px; z-index: 0; transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); width: var(--indicator-width, 0); transform: translateX(var(--indicator-left, 0)); } .rm4pe-scenarios .scenarios-content { text-align: center; } .rm4pe-scenarios .tab-content { display: none; } .rm4pe-scenarios .tab-content.active { display: block; } .rm4pe-main-container #youtube-playlist-container a { color: #fff; } .rm4pe-main-container #youtube-playlist-container a:hover { color: #323436; background: #fff; } .rm4pe-main-container #ytPlayListUl a { color: #fff; } .rm4pe-main-container #ytPlayListUl a:hover { color: #323436; } #ytvideoPlayer .card { background-color: black; } #ytvideoPlayer .card iframe { aspect-ratio: 16/9; width: 100%; } #ytplaylist .card { background-color: black; } #ytplaylist .card #ytListBtn { display: none; } @media screen and (max-width: 991px) { #ytplaylist .card #ytListBtn { display: inline-block; } } #ytplaylist .card #ytPlayListUl { flex: 1; overflow: auto; padding: 0.5rem 1.5rem; } @media screen and (max-width: 991px) { #ytplaylist .card #ytPlayListUl { display: none; padding: 20px; } } @media screen and (max-width: 991px) { #ytplaylist .card h5 { margin: 0; } } #youtube-playlist-container { display: flex; flex-direction: column; align-items: center; } #playlistVideo { width: 960px; margin: 0 auto; height: 520px; max-width: 100%; } @media only screen and (max-width: 767px) { #playlistVideo { width: 450px; max-width: none; margin: 0; height: 320px; } } #ytplaylist { overflow-y: auto; white-space: nowrap; display: flex; flex-direction: column; background-color: black; padding: 20px; max-height: 520px; } @media screen and (max-width: 991px) { #ytplaylist { width: 100%; padding: 0 20px; } } #ytplaylist li { list-style: none; text-align: left; margin-bottom: 10px; display: flex; align-items: center; transition: background-color 0.3s ease-in-out; } #ytplaylist li:hover { background-color: #333; border-radius: 15px; } #ytplaylist li:hover .video-title { color: #fff; } #ytplaylist img { cursor: pointer; border: 2px solid #ddd; border-radius: 8px; transition: border-color 0.3s ease-in-out; margin-right: 10px; width: 150px; } #ytplaylist img:hover { border-color: #555; } #ytplaylist .title-container { max-width: 250px; width: 100%; white-space: normal; } @media screen and (max-width: 991px) { #ytplaylist .title-container { max-width: inherit; } } #ytplaylist .video-title { font-size: 14px; color: white; transition: color 0.3s ease-in-out; text-align: left; } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review { display: flex; flex-wrap: wrap; } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review { padding: 0 1rem; vertical-align: middle; display: inline-flex; } @media (max-width: 991px) { .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review { vertical-align: top; } } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card { display: flex; height: 100%; } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row { background-color: #ffffff; margin: 0; align-items: center; } @media (max-width: 991px) { .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row { align-items: flex-start; } } @media (max-width: 768px) { .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row { margin-right: 0; } } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row .card-image { height: 100%; } @media (max-width: 991px) { .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row .card-image { height: auto; } } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row .card-image img { width: 100%; height: 100%; object-fit: cover; border-radius: 15px 0 0 15px; } @media (max-width: 991px) { .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row .card-image img { border-radius: 15px 15px 0 0; width: 100%; height: auto; } } .tiny-slider-container-beta-tester-review .tiny-slider-beta-tester-review .tiny-slider-item-beta-tester-review .tiny-slider-review-card .row p { font-size: 1.1rem; } .rm4pe-main-container .tiny-slider-controls.circle-controls a:hover { background-color: var(--rm4pe); color: #fff; } .rm4pe-main-container .rm4pe-touchscreen-scrolly, .rm4pe-main-container .rm4pe-touchscreen-scrolly .container { overflow: visible; } .rm4pe-main-container .rm4pe-touchscreen-scrolly__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 2rem; overflow: visible; } .rm4pe-main-container .rm4pe-touchscreen-scrolly__visual { align-self: stretch; min-height: 100%; overflow: visible; } .rm4pe-main-container .rm4pe-touchscreen-scrolly__sticky { position: sticky; top: 10vh; display: flex; justify-content: center; overflow: visible; } .rm4pe-main-container .rm4pe-touchscreen-scrolly__layers { position: relative; flex: 0 0 auto; height: 80vh; width: calc(80vh * 4 / 3); overflow: visible; } .rm4pe-main-container .rm4pe-touchscreen-scrolly__layers::after { content: ""; position: absolute; inset: -12%; z-index: 2; pointer-events: none; background: linear-gradient(to right, var(--rm4pe-bg) 0%, transparent 40%), linear-gradient(to left, var(--rm4pe-bg) 0%, transparent 40%), linear-gradient(to bottom, var(--rm4pe-bg) 0%, transparent 32%), linear-gradient(to top, var(--rm4pe-bg) 0%, transparent 32%), radial-gradient( ellipse 58% 52% at 50% 50%, transparent 0%, transparent 12%, rgba(15, 15, 15, 0.45) 38%, rgba(15, 15, 15, 0.88) 58%, var(--rm4pe-bg) 78% ); } .rm4pe-main-container .rm4pe-touchscreen-scrolly__layers img { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; object-fit: contain; opacity: 0; transition: opacity 0.45s ease; } .rm4pe-main-container .rm4pe-touchscreen-scrolly__layers img.is-active { opacity: 1; } .rm4pe-main-container .rm4pe-touchscreen-scrolly__step { min-height: 80vh; display: flex; flex-direction: column; justify-content: center; padding: 2rem 0; opacity: 0; will-change: opacity; } .rm4pe-main-container .rm4pe-touchscreen-slider { max-width: 640px; margin: 0 auto; } .rm4pe-main-container .rm4pe-touchscreen-slider__slide { position: relative; height: 360px; background-size: cover; background-position: center; display: flex; flex-direction: column; justify-content: flex-end; } .rm4pe-main-container .rm4pe-touchscreen-slider__slide::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0.3) 35%, transparent 45%); pointer-events: none; } .rm4pe-main-container .rm4pe-touchscreen-slider__copy { position: relative; z-index: 1; padding: 1.5rem; } .rm4pe-main-container .rm4pe-touchscreen-slider__dots { position: static; margin: 1rem 0 0; } .rm4pe-main-container .rm4pe-touchscreen-slider__dots li { width: 8px; height: 8px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.35); opacity: 1; } .rm4pe-main-container .rm4pe-touchscreen-slider__dots li.active { background-color: #fff; } @media (prefers-reduced-motion: reduce) { .rm4pe-main-container .rm4pe-touchscreen-scrolly__layers img { transition: none; } } .rm4pe-main-container .rm4pe-compare-section { background: #000; } .rm4pe-main-container .rm4pe-compare-section .model-comparison .model-comparison-detail { color: #fff; } .rm4pe-main-container .rm4pe-compare-section .model-comparison .model-comparison-detail:nth-child(odd):not(:first-child) { background-color: #1f2029; } .rm4pe-main-container .rm4pe-compare-section .model-comparison .model-comparison-detail>div { padding: 0.75rem 2rem; align-self: center; } @media (max-width: 991px) { .rm4pe-main-container .rm4pe-compare-section .model-comparison .model-comparison-detail>div { padding: 2rem 2rem; } } .rm4pe-main-container .rm4pe-compare-section .model-comparison .model-comparison-detail>div h3 { font-size: 1.25rem; } @media (max-width: 1199px) { .rm4pe-main-container .rm4pe-compare-section .model-comparison .model-comparison-detail>div h3 { font-size: 1.1rem; } } .rm4pe-main-container .rm4pe-compare-section .model-comparison .model-comparison-detail>div h4 { font-size: 1rem; display: flex; justify-content: start; align-items: center; } .rm4pe-main-container .rm4pe-compare-section .model-comparison .model-comparison-detail>div h4 img { width: 35px; filter: brightness(100); } .rm4pe-main-container .rm4pe-compare-section .model-comparison .model-comparison-detail>div h5 { color: rgba(255, 255, 255, 0.5); font-size: 0.85rem; } .rm4pe-main-container .rm4pe-compare-section .model-comparison .model-comparison-detail>div h5 img { width: 35px; filter: brightness(1.2); } .rm4pe-main-container .rm4pe-compare-section .model-comparison .model-comparison-detail>div p { margin-bottom: 0; display: inline; position: relative; } .rm4pe-main-container .rm4pe-compare-section .model-comparison .rm4pe-compare-product-img { max-width: 65%; width: 100%; display: block; } @media (max-width: 991px) { .rm4pe-main-container .rm4pe-compare-section .model-comparison .rm4pe-compare-product-img { max-width: 90%; } } Meet Comet X Quad-Port Remote KVM with PoE Support Quad-Port Remote KVM with PoE Support Quad-Port Remote Control: Control up to 4 servers from anywhere in 4K@30 FPS via browser or app. PoE-Powered Setup: Power over Ethernet simplifies installation and reduces cable clutter in your rack. Rack-Ready Design: Fits into rack-mounted setups and integrates easily with your existing server environment. Touchscreen Interface: Tap to view device IP, online/offline status, and active sessions at a glance. Local Control: Connect a keyboard, mouse, and monitor for local troubleshooting, setup, or OS installation. 64 GB eMMC Storage: Built-in image repository for ISO storage, OS deployment, and emergency recovery. View Specs Online Guide Previous Next Highlight Features Reviews Specs let currentModel = '' window.addEventListener("scroll", function () { document.querySelectorAll(".product-nav-section").forEach((section) => { let sectionTop = section.offsetTop; if (pageYOffset >= sectionTop - 100) { currentModel = section.getAttribute("id"); } }); document.querySelectorAll(".product-nav-item").forEach((li) => { if (li.classList.contains(currentModel)) { li.classList.add("active"); } else { li.classList.remove("active"); } }); }); Quad-PortRemote Control PoE-PoweredSetup At-a-Glance Touchscreen Rack-Ready Design 4K HDMIPassthrough 64 GB eMMCStorage Local Control Flexible RemoteAccess Remote Control for 4 Servers, with Less Clutter. Control up to 4 servers from a single device. Comet X reduces extra hardware and cable clutter while giving you remote access to connected servers from anywhere. Before Four Servers. Four KVMs. Separate KVM devices for each server create cable clutter and make rack management more difficult. After Four Servers. One KVM. Consolidate remote access and local console control into one compact device. Made for Every Server Setup MSP Client Sites Server Rooms & IT Setups Homelabs Support client servers remotely and reduce unnecessary site visits. Troubleshoot, maintain, and recover office servers faster with remote and local access. Manage multiple home servers from one device and keep your setup cleaner. Cleaner Setup. Fewer Cables. Power Comet X through Ethernet for a simpler, more organized rack installation. If PoE becomes unavailable, USB-C 5V backup power automatically takes over to keep Comet X powered. Rack-ready from day one. Comet X fits into rack-mounted setups and works seamlessly with your existing server environment. Built-in Touchscreen for Easier Device Management View connection status and IP address instantly. Live Screen Preview Check the display of any connected device whenever needed. System Settings Access essential Comet X controls with ease. Built-in Touchscreen for Easier Device Management View connection status and IP address instantly. Live Screen Preview Check the display of any connected device whenever needed. System Settings Access essential Comet X controls with ease. Local Control When You're There. Remote access keeps you covered when you're away. When you're nearby, connect a keyboard, mouse, and monitor to Comet X for local troubleshooting, setup, or OS installation. Press the front-panel button to quickly switch between connected servers. Keep Your Systems on Call, 24/7 Connect up to 4 ATX Boards or Fingerbots for independent remote power control. Wake on LAN (WOL) Wake your PC remotely using built-in WOL in GLKVM. Learn How ATX Board For reliable wake-up, use the included ATX board via USB. Shop Now Fingerbot A mechanical arm that presses your PC’s power button reliably. Shop Now Product Reviews from Youtubers Comet X (GL-RM4PE) Reviews Gl.iNet Comet X Multi Client KVM - OH BE STILL MY BEATING HEART!!! Comet X The Holy Grail of KVM? (GL-RM4PE) Gl.iNet Comet X - A REAL Multi-Client KVM for $202? Gl.iNet Comet X KVM $200+ KVM - MORE TESTS, TEARDOWN, POWER USE, SOFTWARE UPDATES, NOISE, PoE v USB GL.iNet Comet Q + Comet X: The Kickstarter KVM Deal You Should Know About KVM 4 en 1 GL.iNet Comet X, Sonoff Zigbee, Epomaker Remote control 4 computers, anywhere (ft Comet X) View More What Beta Testers are Saying Comet X is the product I envisioned the moment I first used the original Comet PoE. The same fast and responsive KVM experience, but now with four systems at my fingertips. No cable swapping, no compromises, just seamless control. @OzTech74L As in IT professional, it is somewhat of a pain point if your headless devices become unresponsive, and while workplaces have the ability/budget to utilise enterprise level hardware to mitigate this, it's hasn't been as feasible in a home-lab scenario from a cost perspective until the introduction of small KVMs such as the Comet RM1. The GLi-Net team has expanded its offerings in products to understand their target audience, and designed a 4-in-1 version of the original Comet RM1, called the Comet X. This has reduced my need to have multiple Comet RM1/Pro in a single rack for multiple devices, and all easily manageable in a single interface. The product is fantastic and meets the designed use case! @Clint I've been using the Comet X as part of my homelab setup, mainly for out-of-band remote management of my Proxmox server. The KVM functionality has been a game changer — being able to access the BIOS/console remotely, even when the system is unresponsive, has saved me more than once. Build quality and stability have been excellent throughout the testing period, and it's now a permanent part of my infrastructure. Really happy with the product! @ziotidus Before the Comet series was a great way to have access to servers laptops and computers, without leaving the office or home. The Comet X goes one step further and not only provides reliable and fast remote control: At my office desktop I am able to have less cables and devices and use up to 4 systems via HDMI/USB at onemonitor/mouse/keyboard. Plus the remote control via browser, when I am not at home. Power over Ethernet brings this one step further for less cables around a clean desktop. @LupusE Compare KVMs View other KVMs IT Maintenance Comet X (GL-RM4PE) Quad-Port Remote KVM with PoE Support IT Maintenance Comet PoE (GL-RM1PE) Remote KVM with PoE Display Max. Resolution Max. Resolution 4K@30 FPS Max. Resolution 4K@30 FPS Latency Latency 30-60 ms* Latency 30-60 ms* Two-way Audio Two-way Audio Two-way Audio HD Passthrough HD Passthrough HD Passthrough Display Screen Display Screen 3.69 in, touchscreen Display Screen System & Connectivity Processor Processor ARM Cortex, quad-core Processor ARM Cortex, quad-core Memory / Storage Memory / Storage DDR3L 1 GB / eMMC 64 GB Memory / Storage DDR3L 1 GB / eMMC 32 GB Wi-Fi Wi-Fi Wi-Fi Cellular Cellular Cellular LAN Port LAN Port 1 Gbps LAN Port 1 Gbps Power Input Power Input Ethernet (PoE) / Type-C, 5V/3A Power Input Ethernet (PoE) / Type-C PD, 5V/2A Dimensions Dimensions 170*90*40 mm / 560g Dimensions 102*70*22 mm / 140g * Tests conducted on a local network. Real-world speeds may differ depending on your network configuration. Power-over-Ethernet 4-ServerControl Touchscreen Display BIOS Access 4K@30 FPS HDMI Passthrough Tailscale/Zerotier/Netbird APP/BrowserAccess Self-hostedDeployment Technical Specifications Interface 3 x Front USB 2.0 Type-A Ports (For local keyboard, mouse, and USB device access) 4 x Rear USB 2.0 Type-A Ports (For connecting peripherals and other accessories) 4 x USB 2.0 Type-C Device Ports (For connection to host computers) 4 x HDMI IN 1 x HDMI OUT 1 x 1 Gbps (802.3af/at PoE support) 1 x USB-C Power Port (Optional 5V/3A, PD-compatible) 1 x Function Button Operating System Linux-6.1 CPU Quad-core ARM Cortex-A53 Memory / Storage DDR3L 1 GB / eMMC 64 GB Display Screen 3.69 inch, TFT touchscreen Ethernet Port 1 x RJ45 Ethernet Speed 10/100/1000 Mbps Resolution 4K@30 FPS Power Input Ethernet (PoE) USB-C (Optional 5V/3A, PD-compatible) Dimension 170 x 90 x 40 mm / 560g Rack Mounting Compatible with 10-inch and 19-inch racks; brackets for both sizes included Tools & Downloadables Datasheet | Firmware | App | Tutorials | Media Kit document.addEventListener("DOMContentLoaded", () => { const tabsBg = document.querySelector(".scenarios-tabs-bg"); const tabsWrapper = document.querySelector(".scenarios-tabs-wrapper"); const tabs = document.querySelectorAll(".rm4pe-scenarios .tab"); const scenePanes = document.querySelectorAll(".rm4pe-scenarios .scene-images-pane"); const tabContents = document.querySelectorAll(".rm4pe-scenarios .tab-content"); const updateTabIndicator = (activeTab) => { if (!activeTab) return; const width = activeTab.offsetWidth; const left = activeTab.offsetLeft; tabsBg.style.setProperty("--indicator-width", `${width}px`); tabsBg.style.setProperty("--indicator-left", `${left}px`); if (tabsWrapper) { const wrapperWidth = tabsWrapper.offsetWidth; const scrollLeft = left - wrapperWidth / 2 + width / 2; tabsWrapper.scrollTo({ left: scrollLeft, behavior: "smooth" }); } }; tabs.forEach((tab) => { tab.addEventListener("click", () => { const tabId = tab.getAttribute("data-tab"); tabs.forEach((item) => item.classList.remove("active")); tab.classList.add("active"); updateTabIndicator(tab); if (scenePanes.length > 0) { scenePanes.forEach((pane) => { pane.classList.toggle("active", pane.id === `${tabId}-img`); }); } tabContents.forEach((content) => { content.classList.toggle("active", content.id === tabId); }); }); }); const initialTab = document.querySelector(".rm4pe-scenarios .tab.active"); if (initialTab) setTimeout(() => updateTabIndicator(initialTab), 200); window.addEventListener("resize", () => { const activeTab = document.querySelector(".rm4pe-scenarios .tab.active"); updateTabIndicator(activeTab); }); const scrolly = document.querySelector(".rm4pe-touchscreen-scrolly"); if (!scrolly || !window.matchMedia("(min-width: 992px)").matches) return; const steps = [...scrolly.querySelectorAll(".rm4pe-touchscreen-scrolly__step")]; const images = [...scrolly.querySelectorAll(".rm4pe-touchscreen-scrolly__layers img")]; const STEP_SWITCH_HYSTERESIS = 0.1; const IMAGE_SWITCH_MIN_OPACITY = 0.18; const CENTER_BAND_TOP = 0.45; const CENTER_BAND_BOTTOM = 0.55; const FADE_RANGE_RATIO = 0.25; const STEP3_EXIT_FADE_START = 0.2; const STEP3_EXIT_FADE_END = 0.05; const STEP2_TOP_EXIT_FADE_START = 0.18; const STEP2_TOP_EXIT_FADE_END = -0.08; const STEP2_BOTTOM_ENTER_FADE_START = 0.82; const STEP2_BOTTOM_ENTER_FADE_END = 1.08; let currentImageStep = images.find((img) => img.classList.contains("is-active"))?.dataset.step ?? "0"; let imageSwitchToken = 0; let lastScrollY = window.scrollY; const setActiveImage = (step) => { if (step === currentImageStep) return; const nextImg = images.find((img) => img.dataset.step === step); if (!nextImg) return; const token = ++imageSwitchToken; nextImg.classList.add("is-active"); const completeSwitch = () => { if (token !== imageSwitchToken) return; images.forEach((img) => { if (img !== nextImg) img.classList.remove("is-active"); }); currentImageStep = step; }; const onTransitionEnd = (event) => { if (event.target !== nextImg || event.propertyName !== "opacity") return; nextImg.removeEventListener("transitionend", onTransitionEnd); completeSwitch(); }; nextImg.addEventListener("transitionend", onTransitionEnd); requestAnimationFrame(() => { if (token !== imageSwitchToken) return; const style = window.getComputedStyle(nextImg); if (style.transitionDuration === "0s" || parseFloat(style.opacity) >= 0.99) { nextImg.removeEventListener("transitionend", onTransitionEnd); completeSwitch(); } }); }; const getBaseOpacity = (centerY, viewportHeight) => { const bandTop = viewportHeight * CENTER_BAND_TOP; const bandBottom = viewportHeight * CENTER_BAND_BOTTOM; const fadeRange = viewportHeight * FADE_RANGE_RATIO; if (centerY >= bandTop && centerY { const isVisible = rect.bottom > 0 && rect.top < viewportHeight; if (!isVisible) return 0; const bandTop = viewportHeight * CENTER_BAND_TOP; const bandBottom = viewportHeight * CENTER_BAND_BOTTOM; const fadeRange = viewportHeight * FADE_RANGE_RATIO; // Step 1: starts opaque; fades only when scrolling downward past center area. if (stepIndex === 0) { if (scrollDirection === "up") return 1; if (centerY >= bandTop) return 1; return Math.max(0, 1 - (bandTop - centerY) / fadeRange); } // Step 3: symmetric position-driven fade to avoid direction seams. if (stepIndex === 2) { const exitStart = viewportHeight * STEP3_EXIT_FADE_START; const exitEnd = viewportHeight * STEP3_EXIT_FADE_END; // Fade out near section exit edge regardless of scroll direction. if (rect.bottom < exitStart) { const t = (rect.bottom - exitEnd) / (exitStart - exitEnd); return Math.max(0, Math.min(1, t)); } // Keep fully visible once center reaches the central zone. if (centerY bottomEnterStart) { const t = (bottomEnterEnd - rect.top) / (bottomEnterEnd - bottomEnterStart); return Math.max(0, Math.min(1, t)); } // Keep original center-band profile in the middle viewport. return getBaseOpacity(centerY, viewportHeight); } return 0; }; const updateScrolly = () => { const viewportHeight = window.innerHeight; const currentScrollY = window.scrollY; const scrollDirection = currentScrollY >= lastScrollY ? "down" : "up"; lastScrollY = currentScrollY; let dominantStep = null; let dominantOpacity = 0; let currentStepOpacity = 0; steps.forEach((step, index) => { const rect = step.getBoundingClientRect(); const centerY = rect.top + rect.height / 2; const opacity = getStepOpacity(index, rect, centerY, viewportHeight, scrollDirection); step.style.opacity = String(opacity); if (step.dataset.step === currentImageStep) currentStepOpacity = opacity; if (opacity > dominantOpacity) { dominantOpacity = opacity; dominantStep = step.dataset.step; } }); const shouldSwitch = dominantStep && dominantOpacity > IMAGE_SWITCH_MIN_OPACITY && (dominantStep === currentImageStep || dominantOpacity - currentStepOpacity > STEP_SWITCH_HYSTERESIS || currentStepOpacity < 0.1); if (shouldSwitch) setActiveImage(dominantStep); }; let ticking = false; const scheduleUpdate = () => { if (ticking) return; ticking = true; requestAnimationFrame(() => { updateScrolly(); ticking = false; }); }; window.addEventListener("scroll", scheduleUpdate, { passive: true }); window.addEventListener("resize", scheduleUpdate); updateScrolly(); });