{"id":5026,"date":"2026-08-30T03:20:39","date_gmt":"2026-08-29T18:20:39","guid":{"rendered":"https:\/\/donguri3.net\/server-tech\/diy-pikvm-v1-software-2\/"},"modified":"2026-08-30T03:20:40","modified_gmt":"2026-08-29T18:20:40","slug":"diy-pikvm-v1-software","status":"publish","type":"post","link":"https:\/\/donguri3.net\/en\/diy-repair\/diy-tools-devices\/diy-pikvm-v1-software\/","title":{"rendered":"Building PiKVM with Raspberry Pi 3, Pico, and a Budget USB Capture Board \u2013 Software Setup"},"content":{"rendered":"<p>Now that the hardware assembly is complete, the next step is the software setup. This article focuses on flashing pico HID to the Raspberry Pi Pico compatible board and using Raspberry Pi Imager to write the OS image for PiKVM V1 (for HDMIUSB, RPi3). Note that the purpose of this project is to monitor an ASRock Beebox, resulting in a simple configuration that does not use a PS\/2 keyboard, mouse, or ATX controller.<\/p>\n<h2 class=\"\">Flashing pico HID to Raspberry Pi Pico<\/h2>\n<h3 class=\"\">pico HID Flashing Procedure<\/h3>\n<ol>\n<li class=\"\"><strong>Download the Image<\/strong><br \/>The flashing image for Pico, &#8220;pico-hid.uf2&#8221;, can be downloaded from <a class=\"\" href=\"https:\/\/github.com\/pikvm\/kvmd\/releases\" target=\"_new\" rel=\"noopener\">the GitHub releases page here<\/a>.<\/li>\n<li class=\"\"><strong>Flashing Steps<\/strong><br \/>Connect the Pico to your PC via USB while holding down its boot button, and it will be recognized as a USB drive.<br \/>With the drive mounted, copy the downloaded &#8220;pico-hid.uf2&#8221; file to the USB drive.<br \/>* Since we are not using a PS\/2 keyboard or mouse this time, the flashing is complete with just this step.<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/RPI-RP2-D_-2025_04_03-15_57_26.png\"><img decoding=\"async\" class=\"aligncenter wp-image-1161 size-large\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/RPI-RP2-D_-2025_04_03-15_57_26-1024x556.png\" alt=\"Flashing firmware to Pico compatible board\" width=\"1024\" height=\"556\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/RPI-RP2-D_-2025_04_03-15_57_26-1024x556.png 1024w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/RPI-RP2-D_-2025_04_03-15_57_26-300x163.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/RPI-RP2-D_-2025_04_03-15_57_26-768x417.png 768w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/RPI-RP2-D_-2025_04_03-15_57_26-530x288.png 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/RPI-RP2-D_-2025_04_03-15_57_26-565x307.png 565w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/RPI-RP2-D_-2025_04_03-15_57_26-710x385.png 710w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/RPI-RP2-D_-2025_04_03-15_57_26-725x394.png 725w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/RPI-RP2-D_-2025_04_03-15_57_26.png 1293w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/li>\n<\/ol>\n<h2 class=\"\">Flashing the PiKVM OS Image<\/h2>\n<h3 class=\"\">Selecting and Flashing the OS Image<\/h3>\n<ul>\n<li class=\"\"><strong>Flashing Tool<\/strong><br \/>Use Raspberry Pi Imager to flash the PiKVM V1 OS image (for HDMIUSB, RPi3).<br \/>* Please note that if you are not using a USB capture board or if you are using a different Raspberry Pi version, the required image will differ.<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_39_34.png\"><img decoding=\"async\" class=\"aligncenter wp-image-1164 size-full\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_39_34.png\" alt=\"Raspberry Pi Imager\" width=\"680\" height=\"450\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_39_34.png 680w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_39_34-300x199.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_39_34-530x351.png 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_39_34-565x374.png 565w\" sizes=\"(max-width: 680px) 100vw, 680px\" \/><\/a><\/li>\n<li class=\"\"><strong>Image Download Source<\/strong><br \/>The OS image can be downloaded from <a class=\"\" href=\"https:\/\/docs.pikvm.org\/flashing_os\/\" target=\"_new\" rel=\"noopener\">the official website here<\/a>.<br \/>Since downloading takes some time, I initially attempted a custom build, but gave up due to numerous errors and patiently waited for the official image to download instead.<\/li>\n<li><strong>Installing the Image<\/strong>\n<ol>\n<li>Select Raspberry Pi Device<br \/>\nSelect Raspberry Pi 3 for this project<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_39_29.png\"><img decoding=\"async\" class=\"aligncenter wp-image-1165 size-full\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_39_29.png\" alt=\"Select Raspberry Pi Device\" width=\"680\" height=\"450\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_39_29.png 680w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_39_29-300x199.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_39_29-530x351.png 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_39_29-565x374.png 565w\" sizes=\"(max-width: 680px) 100vw, 680px\" \/><\/a><\/li>\n<li>Select OS<br \/>\nSelect the downloaded custom image<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_38_35.png\"><img decoding=\"async\" class=\"aligncenter wp-image-1166 size-full\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_38_35.png\" alt=\"Select Image in Raspberry Pi Imager\" width=\"680\" height=\"450\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_38_35.png 680w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_38_35-300x199.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_38_35-530x351.png 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_38_35-565x374.png 565w\" sizes=\"(max-width: 680px) 100vw, 680px\" \/><\/a><\/li>\n<li>Select Storage<br \/>\nSelect the SD card to be inserted into the Raspberry Pi<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_38_25.png\"><img decoding=\"async\" class=\"aligncenter wp-image-1167 size-full\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_38_25.png\" alt=\"Select Storage in Raspberry Pi Imager\" width=\"680\" height=\"450\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_38_25.png 680w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_38_25-300x199.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_38_25-530x351.png 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_38_25-565x374.png 565w\" sizes=\"(max-width: 680px) 100vw, 680px\" \/><\/a><\/li>\n<li>Write OS Image<br \/>\nClick Next to start writing<br \/>\n<a href=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_48_41.png\"><img decoding=\"async\" class=\"aligncenter wp-image-1163 size-full\" src=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_48_41.png\" alt=\"Raspberry Pi Imager Write Successful\" width=\"680\" height=\"450\" srcset=\"https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_48_41.png 680w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_48_41-300x199.png 300w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_48_41-530x351.png 530w, https:\/\/donguri3.net\/wp-content\/uploads\/2025\/04\/Raspberry-Pi-Imager-v1.9.0-2025_04_01-15_48_41-565x374.png 565w\" sizes=\"(max-width: 680px) 100vw, 680px\" \/><\/a><\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<h2 class=\"\">Initial Setup After Installation<\/h2>\n<h3 class=\"\">Browser Access<\/h3>\n<ul>\n<li class=\"\">Once the OS image has been written and PiKVM has booted up, access the PiKVM via a web browser. (Do you need to connect an HDMI cable to the Raspberry Pi to check its assigned IP?)<\/li>\n<li class=\"\">Default login credentials:<br \/><strong>User ID:<\/strong> admin<br \/><strong>Password:<\/strong> admin<\/li>\n<\/ul>\n<h3 class=\"\">Troubleshooting When the Screen Does Not Display<\/h3>\n<p>If the PiKVM screen does not appear in your browser, modify the settings from the console using the following steps.<\/p>\n<ol>\n<li class=\"\"><strong>Access the Console<\/strong><br \/>Log in to the console as the root user (initial password: root).<\/li>\n<li class=\"\"><strong>Editing<br \/>\nSwitch Filesystem to RW Mode<\/strong><br \/>\n<strong>Edit \/etc\/kvmd\/override.yaml<\/strong><br \/>\n<strong>Apply Changes<\/strong><\/li>\n<\/ol>\n<pre>[root@pikvm ~]# rw\n[root@pikvm ~]# vim \/etc\/kvmd\/override.yaml\nkvmd:\n    streamer:\n        forever: true\n        cmd_append: [--slowdown]\n[root@pikvm ~]# ro\n[root@pikvm ~]# systemctl restart kvmd<\/pre>\n<p>This should allow the target server&#8217;s screen to be displayed correctly.<\/p>\n<h2 class=\"\">Initial Troubleshooting and Lessons Learned<\/h2>\n<p>In the early stages, I mistakenly connected the wiring between the Pico and Raspberry Pi 3 incorrectly, which caused continuous SPI connection errors. Re-verifying the correct wiring and resetting the HID resolved the issue, but it made me acutely realize how crucial it is to check hardware connections before setting up the software.<\/p>\n<h2 class=\"\">Conclusion<\/h2>\n<p>In this software setup, we covered flashing pico HID to the Pico compatible board, writing the PiKVM V1 OS image using Raspberry Pi Imager, and troubleshooting initial configurations. By following the official documentation (<a class=\"\" href=\"https:\/\/docs.pikvm.org\/v1\/\" target=\"_new\" rel=\"noopener\">PiKVM V1<\/a>) and GitHub release information step-by-step, we successfully completed a simple and stable PiKVM system tailored for monitoring the ASRock Beebox.<\/p>\n<p>Continued in <a href=\"https:\/\/donguri3.net\/diy-repair\/diy-pikvm-v1-case\/\">Case Creation Edition<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Now that the hardware assembly is complete, the next step is the software setup. This article focuses on flash [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":1272,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"en_US","_original_post":"https:\/\/donguri3.net\/?p=1138","footnotes":""},"categories":[1164],"tags":[9,51,464,461,468,476,277,10,275,278],"class_list":["post-5026","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-diy-tools-devices","tag-diy","tag-git","tag-hdmiusb","tag-pikvm","tag-pikvm-v1","tag-raspberry-pi-pico","tag-server","tag-275","tag-278","en-US"],"_links":{"self":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5026","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/comments?post=5026"}],"version-history":[{"count":1,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5026\/revisions"}],"predecessor-version":[{"id":5029,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/posts\/5026\/revisions\/5029"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media\/1272"}],"wp:attachment":[{"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/media?parent=5026"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/categories?post=5026"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/donguri3.net\/wp-json\/wp\/v2\/tags?post=5026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}