Show HN: KVM đa màn hình chỉ dùng USB switch
(github.com/fiddyschmitt)- SimpleKVM là một chương trình dành cho Windows, cho phép điều khiển nhiều máy tính bằng một bộ bàn phím, chuột và màn hình; đây là một lựa chọn thay thế giúp giảm chi phí so với KVM độ phân giải cao, tần số quét cao
- Người dùng chỉ cần kết nối từng máy tính với màn hình, kết nối bàn phím và chuột với USB Switch, rồi chạy SimpleKVM trên một trong các máy tính
- Có thể chuyển đổi bằng nút trên USB Switch hoặc bằng phím tắt; chương trình phát hiện việc thiết bị USB được kết nối/ngắt kết nối hoặc thao tác nhập phím tắt
- Việc chuyển ngõ vào màn hình được xử lý bằng lệnh DDC/CI mà nhiều màn hình hỗ trợ, và cũng hỗ trợ cấu hình đa màn hình
- Bản tải xuống được cung cấp trong mục releases trên GitHub, hiện chỉ có cho Windows
Vấn đề SimpleKVM giải quyết
- SimpleKVM là chương trình để điều khiển nhiều máy tính bằng một bộ bàn phím, chuột và màn hình
- KVM thông thường thường đắt, đặc biệt là các sản phẩm hỗ trợ độ phân giải cao và tần số quét cao
- SimpleKVM cho phép tạo một cấu hình tương tự khi dùng cùng USB Switch giá rẻ, mà không phải tốn hàng trăm đô la
Cấu hình cần có
- Người dùng cấu hình theo thứ tự sau
- Kết nối các máy tính với màn hình
- Kết nối chuột và bàn phím với USB Switch
- Chạy SimpleKVM trên một trong các máy tính
- Sau đó có thể chuyển đổi giữa các máy tính bằng USB Switch hoặc phím tắt
Cách hoạt động
- Chương trình phát hiện thời điểm thiết bị USB được kết nối hoặc ngắt kết nối
- Thao tác nhập phím tắt cũng có thể được dùng làm tác nhân kích hoạt chuyển đổi
- Khi chuyển đổi, chương trình gửi lệnh DDC/CI tới màn hình để thay đổi nguồn đầu vào
- DDC/CI là phương thức được nhiều màn hình hỗ trợ
Đa màn hình và môi trường chạy
- SimpleKVM hỗ trợ đa màn hình
- Có thể tải bản phát hành tại mục releases
- Bản build hiện được cung cấp là dành cho Windows
Ví dụ USB Switch
- Có thể dùng bất kỳ USB Switch nào
- README đưa ra các sản phẩm sau làm ví dụ không liên kết tiếp thị
- SABRENT 4 Port USB Switch for $29 USD: hỗ trợ 4 máy tính
- 2 port USB switch for $24 USD: hỗ trợ 2 máy tính
- 2 ports for for $3 USD: hỗ trợ 2 máy tính, có 1 cổng USB đầu vào
Thiết lập chương trình khởi động cùng hệ thống và nguồn gốc
- Để tự động chạy khi khởi động, hãy nhấp vào nút cài đặt và chọn Run at Startup
- SimpleKVM được truyền cảm hứng từ chương trình display-switch của haimgel
1 bình luận
Ý kiến trên Hacker News
Chỉ ở mức “tôi cũng đi đến cùng kết luận”, nhưng tôi nghĩ cấu hình của mình tuy phức tạp hơn một chút nhưng tốt hơn và rẻ hơn
Cách trên khó với tôi vì phải cài trên mọi máy tính, và do phụ thuộc vào việc chuyển USB nên không thể kích hoạt hoàn toàn từ xa
Thay vào đó, tôi xử lý việc chuyển đầu vào màn hình bằng lệnh DDC, USB bằng một USB KVM 25 USD chỉ có một nút, còn thao tác nhấn nút bằng macropad AliExpress giá 5–15 USD
Sản phẩm hoàn chỉnh như Stream Deck thì đắt, hơn 80 USD chỉ cho vài nút, còn macropad giá rẻ có thể lập trình bằng các dự án GitHub như https://github.com/rOzzy1987/MacroPad thay vì phần mềm đi kèm
Nút USB KVM được nhấn bằng FingerBot 16 USD hoặc Switchbot 28 USD, còn AHK theo dõi phím tắt để kích hoạt đồng thời lệnh DDC và nút USB switch
Có độ trễ vài giây, nhưng chỉ điều khiển từ một nơi và cũng có thể chạy hoàn toàn từ xa
Cuối cùng nó hơi thiếu ổn định, và những việc khác còn rối hơn nên tôi gần như đã bỏ cuộc
Macropad là một ý tưởng hay, còn việc đặt vị trí USB switch lúc nào cũng phiền
Tôi không biết phí ship đến Mỹ, nhưng ship sang châu Âu là 15 USD
Khi tìm hiểu KVM, cuối cùng tôi cũng đi đến cùng kết luận rằng DDC là lời giải
Trường hợp của tôi là hai máy Windows và cấu hình hai màn hình, dùng NirSoft ControlMyMonitor có CLI cùng Elgato Stream Deck
KVM thông thường chỉ cho cả hai màn hình hiển thị một máy tính, nhưng tôi muốn màn hình A hiển thị một máy, màn hình B hiển thị máy kia, và khi cần thì đổi chéo cho nhau
Tôi dùng kết hợp màn hình dọc/ngang, và muốn chuyển chuột với bàn phím độc lập với cấu hình màn hình
Trên mỗi máy tính chạy phần mềm Stream Deck, còn Stream Deck được nối vào USB switch
Ngay cả USB switcher đơn giản cũng khá đắt, và đôi khi còn yêu cầu driver không chạy được trên Linux
Vì vậy tôi nhanh chóng vẽ một bo mạch đơn giản có USB hub và switch, rồi nhờ các xưởng DIY như JLCPCB hoặc PCBWay lắp ráp luôn
Năm cái switch 2-vào-1 chỉ có một nút giá 25 euro, tôi không có kinh nghiệm thiết kế mạch và cũng không hàn gì, nhưng nó hoạt động hoàn hảo
Có vẻ nó cũng hợp với phần mềm này, nên có lẽ tôi sẽ thử một lần
Tôi nghĩ như vậy rẻ hơn đặt làm riêng
Việc nối đất và tránh ground loop giữa các mức điện thế khác nhau có lẽ là một phần khá lớn
Việc một số USB switcher không chạy tốt trên Linux khá thú vị
Tôi từng nghĩ vì chỉ là USB hub đơn giản nên sẽ không cần driver riêng, nhưng các sản phẩm có tính năng nâng cao như truyền tệp giữa PC hoặc chia sẻ chuột, chẳng hạn https://www.aliexpress.com/item/1005006202631772.html, thường cần phần mềm và driver đặc thù
Nó là thiết bị “ngốc” hết mức có thể; theo một bài review, nếu cắm rút quá nhiều thì cổng có thể hơi lỏng, nhưng với hai màn hình Dell P2419H của tôi thì đến giờ vẫn hoạt động hoàn hảo
Tôi chọn sản phẩm này vì mọi dây đều ở phía sau, và mẫu có điều khiển từ xa trên trang GitHub của OP trông cũng ổn
Tôi đã dùng thử vài cái và cũng tìm hiểu khi muốn cấu hình tương tự, nhưng chưa gặp sản phẩm nào cần driver
Tôi dùng udev cho mục đích này. Khi USB switch xuất hiện thì gửi lệnh DDC
ACTION=="add", SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="1a40", ENV{ID_MODEL_ID}=="0101", RUN+="/usr/bin/ddcutil --sn ABCDEFGHI setvcp 60 0x0f"KVM tốt, đặc biệt là sản phẩm của Level1Tech, giữ cho tất cả màn hình luôn ở trạng thái được kết nối ảo, nên khi chuyển qua lại giữa các máy, vị trí cửa sổ vẫn được giữ nguyên
Từ góc nhìn của PC client, thiết bị USB/DisplayPort chưa từng biến mất, nên cũng không có độ trễ do phải cắm lại thiết bị
Cũng có thể cắm hàng loạt thiết bị ngoại vi vào dock rồi chỉ chuyển upstream Thunderbolt, nhưng cách đó không hoạt động ổn
KVM dở thì dễ làm, KVM tốt thì khó
Không liên quan đến https://www.store.level1techs.com/products/hardware
Khi chuyển qua lại giữa Mac và máy Linux (Gnome), Mac đi ngủ, còn Gnome quay về cấu hình màn hình mặc định và di chuyển vị trí cửa sổ
Có KVM DP 1.2 có giả lập EDID, nhưng như vậy sẽ mất các lợi thế của DP 1.4
Diễn đàn FAQ cũng có nêu: https://forum.level1techs.com/t/official-l1techs-kvm-faq-ult...
Dùng cùng thiết bị ngoại vi không dây có receiver USB thì rất tiện vì tạo được cấu hình không dây cáp, còn laptop chỉ cần cắm một sợi cáp là kết nối được mọi thứ
Tôi chuyển qua lại giữa PC làm việc và PC cá nhân nhiều lần mỗi ngày; với hai máy Linux, cấu hình hai màn hình 4K 60Hz và 2K 144Hz đến nay vẫn hoạt động hoàn hảo
Tôi còn nối cả USB audio, micro, camera 4K, máy in, bàn phím và chuột
Trình quản lý cửa sổ tốt đủ thông minh để đưa cửa sổ về vị trí cũ khi màn hình quay lại
Chưa từng có lần nào chuyển nguồn thất bại, và độ trễ mà người khác nói chỉ là quá trình HDMI handshake của chính màn hình
Tôi cũng có chiếc TESmart đắt hơn nhiều https://www.amazon.com/gp/product/B08N494N7X, nhưng không dùng được vì có vấn đề tương thích kỳ lạ với dock Thunderbolt https://www.amazon.com/gp/product/B08HR3T837 và MBP
Tôi đã liên hệ cả đội hỗ trợ nhưng cuối cùng vẫn không tìm ra nguyên nhân
Điểm cần chú ý với các công cụ kiểu này là trên DisplayPort, thường chỉ input đang hoạt động mới cho phép gửi lệnh
Một khi chuyển sang input khác, bạn sẽ không thể quay lại nếu không chạy lệnh từ máy tính bên kia, khá phiền
Ngược lại, HDMI thường cho phép lệnh DDC cả trên các cổng không phải input đang hoạt động
Tôi không rõ có bắt buộc phải như vậy không, nhưng mọi màn hình tôi từng dùng đều như thế
Đây đúng là dự án tôi đang cần. Tôi tò mò liệu có thể chỉ chuyển dock Thunderbolt hay không
Ví dụ có bốn máy tính hỗ trợ Thunderbolt, và chỉ chuyển một cổng USB-C giữa chúng
Tôi chưa thử vì sợ ảnh hưởng đến phần cứng; sau khi được bài này truyền cảm hứng, tôi tìm Thunderbolt KVM thì thấy những thứ như https://sabrent.com/products/sb-tb4k và https://www.reddit.com/r/Thunderbolt/comments/11gos6n/kvm_sw...
Nếu chấp nhận độ trễ thì có thể nó vẫn hoạt động
Tóm lại, mỗi máy tính phải cắm cáp HDMI của mình vào từng input của màn hình
Đây không phải KVM thực sự như nhiều người nghĩ, mà là cách giúp bạn khỏi phải bấm nút chọn input trên màn hình
Ít nhất một máy phải bật và chạy Windows, nhưng có lẽ chỉ cần một máy như vậy là đủ
Khi phát hiện thiết bị USB được cắm vào, nó đổi input màn hình sang máy Windows; khi phát hiện thiết bị USB được rút ra, nó đổi sang máy Linux
Tôi đã dùng theo kiểu tương tự: bấm phím tắt để chạy script, rồi dùng xrandr đổi hướng xoay màn hình
Trước khi quay lại dùng một máy tính, tôi từng rút cắm cáp thủ công, rồi dùng USB switch Ugreen được nêu trong README, và cuối cùng chuyển hẳn sang màn hình KVM tích hợp; đó là lựa chọn tốt nhất
Vấn đề là khi muốn dùng cùng một màn hình cho công việc và chơi game
KVM switch 4K hoặc tần số quét cao rất đắt và thường kém tin cậy, nên thông thường sẽ dùng USB switch và chuyển đầu vào màn hình thủ công
Phần mềm ở đây giúp giảm việc phải bấm nút “đổi nguồn đầu vào”, nhưng có vẻ chỉ dành cho Windows, nên nếu cả hai máy không đều chạy Windows thì chỉ chuyển được một chiều, còn khi quay lại sẽ cần chuyển thủ công
Một màn hình phù hợp để chơi game, có DPI cao, tần số quét cao và KVM tích hợp là Gigabyte M28U
Chỉ với một nút, nguồn đầu vào và thiết bị ngoại vi USB sẽ cùng chuyển đổi, và hoạt động khá tốt
Cũng có M32U, nhưng DPI thấp hơn
Vì nó có thể phát hiện thiết bị USB bị gỡ ra, tức là đã chuyển sang máy tính khác, và được cắm vào, tức là đã quay lại máy tính này
Tôi cũng tự làm một thứ tương tự, và khiến nó hoạt động mà không cần USB switch hay phần cứng khác
Tôi gửi lệnh DDC tới màn hình HDMI/USB-C, và gửi bytecode HID++ tới bàn phím và chuột Logi MX
Code quá lộn xộn để chia sẻ, nhưng nếu ai muốn tự làm thì có thể cấu hình theo kiểu gửi các chuỗi byte để chuyển sang từng host cho Logi Bolt Receiver, Logitech Unified Receiver, MX Keys Mini Bluetooth, MX Anywhere 3 Bluetooth
Cấu hình hiện tại của tôi là hai màn hình Dell U2415 và desktop Linux x86_64, dùng chuột dọc Logi hỗ trợ cả Bluetooth lẫn dongle và bàn phím ATK(A.JAZZ)
Tôi muốn chia sẻ bàn phím/màn hình/chuột hoàn toàn bằng phần mềm qua Bluetooth của Raspberry Pi 5 và hai cổng micro-HDMI, và không muốn chi nhiều tiền cho KVM phần cứng