Projects STRLCPY pikvm Commits 561ac140
🤬
  • Deployed 3486e77 with MkDocs version: 1.4.3

  • Loading...
  • committed 10 months ago
    561ac140
Showing first 8 files as there are too many
  • ■ ■ ■ ■ ■
    .nojekyll
     1 + 
  • ■ ■ ■ ■ ■ ■
    3d_printing/index.html
     1 + 
     2 +<!doctype html>
     3 +<html lang="en" class="no-js">
     4 + <head>
     5 +
     6 + <meta charset="utf-8">
     7 + <meta name="viewport" content="width=device-width,initial-scale=1">
     8 +
     9 + <meta name="description" content="Open and cheap DIY IP-KVM on Raspberry Pi">
     10 +
     11 +
     12 + <meta name="author" content="Maxim Devaev">
     13 +
     14 +
     15 + <link rel="canonical" href="https://pikvm.github.io/pikvm/3d_printing/">
     16 +
     17 +
     18 + <link rel="prev" href="../prometheus/">
     19 +
     20 +
     21 + <link rel="next" href="../building_os/">
     22 +
     23 + <link rel="icon" href="../_assets/favicon.ico">
     24 + <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.14">
     25 +
     26 +
     27 +
     28 + <title>Cases for 3D printing - PiKVM Handbook</title>
     29 +
     30 +
     31 +
     32 + <link rel="stylesheet" href="../assets/stylesheets/main.85bb2934.min.css">
     33 +
     34 +
     35 + <link rel="stylesheet" href="../assets/stylesheets/palette.a6bdf11c.min.css">
     36 +
     37 +
     38 + 
     39 +
     40 +
     41 +
     42 +
     43 +
     44 +
     45 + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
     46 + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=arial,+sans-serif:300,300i,400,400i,700,700i%7Cmonospace:400,400i,700,700i&display=fallback">
     47 + <style>:root{--md-text-font:"arial, sans-serif";--md-code-font:"monospace"}</style>
     48 +
     49 +
     50 +
     51 + <link rel="stylesheet" href="../_assets/user.css">
     52 +
     53 + <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
     54 +
     55 +
     56 + 
     57 +
     58 +
     59 +
     60 + </head>
     61 +
     62 +
     63 +
     64 +
     65 +
     66 +
     67 +
     68 + <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="pink">
     69 +
     70 +
     71 +
     72 + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
     73 + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
     74 + <label class="md-overlay" for="__drawer"></label>
     75 + <div data-md-component="skip">
     76 +
     77 +
     78 + <a href="#cases-for-3d-printing" class="md-skip">
     79 + Skip to content
     80 + </a>
     81 +
     82 + </div>
     83 + <div data-md-component="announce">
     84 +
     85 + </div>
     86 +
     87 +
     88 +
     89 + 
     90 +
     91 + 
     92 +<header class="md-header md-header--shadow" data-md-component="header">
     93 + <nav class="md-header__inner md-grid" aria-label="Header">
     94 + <a href=".." title="PiKVM Handbook" class="md-header__button md-logo" aria-label="PiKVM Handbook" data-md-component="logo">
     95 +
     96 + <img src="../_assets/logo.png" alt="logo">
     97 + 
     98 + </a>
     99 + <label class="md-header__button md-icon" for="__drawer">
     100 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
     101 + </label>
     102 + <div class="md-header__title" data-md-component="header-title">
     103 + <div class="md-header__ellipsis">
     104 + <div class="md-header__topic">
     105 + <span class="md-ellipsis">
     106 + PiKVM Handbook
     107 + </span>
     108 + </div>
     109 + <div class="md-header__topic" data-md-component="header-topic">
     110 + <span class="md-ellipsis">
     111 +
     112 + Cases for 3D printing
     113 +
     114 + </span>
     115 + </div>
     116 + </div>
     117 + </div>
     118 +
     119 +
     120 +
     121 +
     122 +
     123 + <label class="md-header__button md-icon" for="__search">
     124 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
     125 + </label>
     126 + <div class="md-search" data-md-component="search" role="dialog">
     127 + <label class="md-search__overlay" for="__search"></label>
     128 + <div class="md-search__inner" role="search">
     129 + <form class="md-search__form" name="search">
     130 + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
     131 + <label class="md-search__icon md-icon" for="__search">
     132 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
     133 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
     134 + </label>
     135 + <nav class="md-search__options" aria-label="Search">
     136 +
     137 + <a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
     138 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7 0-.24-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91 1.61 0 2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08Z"/></svg>
     139 + </a>
     140 +
     141 + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
     142 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
     143 + </button>
     144 + </nav>
     145 +
     146 + <div class="md-search__suggest" data-md-component="search-suggest"></div>
     147 +
     148 + </form>
     149 + <div class="md-search__output">
     150 + <div class="md-search__scrollwrap" data-md-scrollfix>
     151 + <div class="md-search-result" data-md-component="search-result">
     152 + <div class="md-search-result__meta">
     153 + Initializing search
     154 + </div>
     155 + <ol class="md-search-result__list" role="presentation"></ol>
     156 + </div>
     157 + </div>
     158 + </div>
     159 + </div>
     160 +</div>
     161 +
     162 +
     163 + <div class="md-header__source">
     164 + <a href="https://github.com/pikvm/pikvm" title="Go to repository" class="md-source" data-md-component="source">
     165 + <div class="md-source__icon md-icon">
     166 +
     167 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
     168 + </div>
     169 + <div class="md-source__repository">
     170 + pikvm/pikvm
     171 + </div>
     172 +</a>
     173 + </div>
     174 +
     175 + </nav>
     176 +
     177 +</header>
     178 +
     179 + <div class="md-container" data-md-component="container">
     180 +
     181 +
     182 +
     183 +
     184 +
     185 +
     186 + <main class="md-main" data-md-component="main">
     187 + <div class="md-main__inner md-grid">
     188 +
     189 +
     190 +
     191 + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
     192 + <div class="md-sidebar__scrollwrap">
     193 + <div class="md-sidebar__inner">
     194 +
     195 + 
     196 + 
     197 +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
     198 + <label class="md-nav__title" for="__drawer">
     199 + <a href=".." title="PiKVM Handbook" class="md-nav__button md-logo" aria-label="PiKVM Handbook" data-md-component="logo">
     200 +
     201 + <img src="../_assets/logo.png" alt="logo">
     202 + 
     203 + </a>
     204 + PiKVM Handbook
     205 + </label>
     206 +
     207 + <div class="md-nav__source">
     208 + <a href="https://github.com/pikvm/pikvm" title="Go to repository" class="md-source" data-md-component="source">
     209 + <div class="md-source__icon md-icon">
     210 +
     211 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
     212 + </div>
     213 + <div class="md-source__repository">
     214 + pikvm/pikvm
     215 + </div>
     216 +</a>
     217 + </div>
     218 +
     219 + <ul class="md-nav__list" data-md-scrollfix>
     220 +
     221 +
     222 +
     223 +
     224 + 
     225 +
     226 +
     227 +
     228 +
     229 +
     230 +
     231 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     232 +
     233 +
     234 +
     235 +
     236 +
     237 +
     238 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_1" >
     239 +
     240 +
     241 +
     242 +
     243 +
     244 +
     245 +
     246 +
     247 +
     248 +
     249 +
     250 +
     251 +
     252 +
     253 +
     254 + <label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="0">
     255 + Getting started
     256 + <span class="md-nav__icon md-icon"></span>
     257 + </label>
     258 +
     259 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
     260 + <label class="md-nav__title" for="__nav_1">
     261 + <span class="md-nav__icon md-icon"></span>
     262 + Getting started
     263 + </label>
     264 + <ul class="md-nav__list" data-md-scrollfix>
     265 +
     266 +
     267 +
     268 +
     269 +
     270 +
     271 + <li class="md-nav__item">
     272 + <a href="../v4/" class="md-nav__link">
     273 + PiKVM V4 Mini & Plus guide
     274 + </a>
     275 + </li>
     276 +
     277 + 
     278 +
     279 +
     280 +
     281 +
     282 +
     283 +
     284 +
     285 + <li class="md-nav__item">
     286 + <a href="../v3/" class="md-nav__link">
     287 + PiKVM V3 HAT guide
     288 + </a>
     289 + </li>
     290 +
     291 + 
     292 +
     293 +
     294 +
     295 +
     296 +
     297 +
     298 +
     299 + <li class="md-nav__item">
     300 + <a href="../first_steps/" class="md-nav__link">
     301 + First steps
     302 + </a>
     303 + </li>
     304 +
     305 + 
     306 +
     307 +
     308 +
     309 +
     310 +
     311 +
     312 +
     313 + <li class="md-nav__item">
     314 + <a href="../auth/" class="md-nav__link">
     315 + Authentication
     316 + </a>
     317 + </li>
     318 +
     319 + 
     320 +
     321 +
     322 +
     323 +
     324 +
     325 +
     326 +
     327 + <li class="md-nav__item">
     328 + <a href="../faq/" class="md-nav__link">
     329 + FAQ
     330 + </a>
     331 + </li>
     332 +
     333 + 
     334 +
     335 +
     336 + </ul>
     337 + </nav>
     338 + </li>
     339 +
     340 + 
     341 +
     342 +
     343 +
     344 +
     345 + 
     346 +
     347 +
     348 +
     349 +
     350 +
     351 +
     352 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     353 +
     354 +
     355 +
     356 +
     357 +
     358 +
     359 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
     360 +
     361 +
     362 +
     363 +
     364 +
     365 +
     366 +
     367 +
     368 +
     369 +
     370 +
     371 + <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
     372 + Networking
     373 + <span class="md-nav__icon md-icon"></span>
     374 + </label>
     375 +
     376 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
     377 + <label class="md-nav__title" for="__nav_2">
     378 + <span class="md-nav__icon md-icon"></span>
     379 + Networking
     380 + </label>
     381 + <ul class="md-nav__list" data-md-scrollfix>
     382 +
     383 +
     384 +
     385 +
     386 +
     387 +
     388 +
     389 + <li class="md-nav__item md-nav__item--nested">
     390 +
     391 +
     392 +
     393 +
     394 +
     395 +
     396 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_1" >
     397 +
     398 +
     399 +
     400 +
     401 +
     402 +
     403 +
     404 +
     405 +
     406 +
     407 +
     408 + <label class="md-nav__link" for="__nav_2_1" id="__nav_2_1_label" tabindex="0">
     409 + Internet access
     410 + <span class="md-nav__icon md-icon"></span>
     411 + </label>
     412 +
     413 + <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_1_label" aria-expanded="false">
     414 + <label class="md-nav__title" for="__nav_2_1">
     415 + <span class="md-nav__icon md-icon"></span>
     416 + Internet access
     417 + </label>
     418 + <ul class="md-nav__list" data-md-scrollfix>
     419 +
     420 +
     421 +
     422 +
     423 +
     424 +
     425 + <li class="md-nav__item">
     426 + <a href="../port_forwarding/" class="md-nav__link">
     427 + Port forwarding
     428 + </a>
     429 + </li>
     430 +
     431 + 
     432 +
     433 +
     434 +
     435 +
     436 +
     437 +
     438 +
     439 + <li class="md-nav__item">
     440 + <a href="../tailscale/" class="md-nav__link">
     441 + Tailscale VPN
     442 + </a>
     443 + </li>
     444 +
     445 + 
     446 +
     447 +
     448 +
     449 +
     450 +
     451 +
     452 +
     453 + <li class="md-nav__item">
     454 + <a href="../cloudflared/" class="md-nav__link">
     455 + Cloudflare Tunnel
     456 + </a>
     457 + </li>
     458 +
     459 + 
     460 +
     461 +
     462 + </ul>
     463 + </nav>
     464 + </li>
     465 +
     466 + 
     467 +
     468 +
     469 +
     470 +
     471 +
     472 +
     473 +
     474 + <li class="md-nav__item">
     475 + <a href="../wifi/" class="md-nav__link">
     476 + Setting up Wi-Fi
     477 + </a>
     478 + </li>
     479 +
     480 + 
     481 +
     482 +
     483 +
     484 +
     485 +
     486 +
     487 +
     488 + <li class="md-nav__item">
     489 + <a href="../letsencrypt/" class="md-nav__link">
     490 + Let's Encrypt certificates
     491 + </a>
     492 + </li>
     493 +
     494 + 
     495 +
     496 +
     497 + </ul>
     498 + </nav>
     499 + </li>
     500 +
     501 + 
     502 +
     503 +
     504 +
     505 +
     506 + 
     507 +
     508 +
     509 +
     510 +
     511 +
     512 +
     513 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     514 +
     515 +
     516 +
     517 +
     518 +
     519 +
     520 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
     521 +
     522 +
     523 +
     524 +
     525 +
     526 +
     527 +
     528 +
     529 +
     530 +
     531 +
     532 +
     533 +
     534 + <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
     535 + Video
     536 + <span class="md-nav__icon md-icon"></span>
     537 + </label>
     538 +
     539 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
     540 + <label class="md-nav__title" for="__nav_3">
     541 + <span class="md-nav__icon md-icon"></span>
     542 + Video
     543 + </label>
     544 + <ul class="md-nav__list" data-md-scrollfix>
     545 +
     546 +
     547 +
     548 +
     549 +
     550 +
     551 + <li class="md-nav__item">
     552 + <a href="../webrtc/" class="md-nav__link">
     553 + H.264 / WebRTC
     554 + </a>
     555 + </li>
     556 +
     557 + 
     558 +
     559 +
     560 +
     561 +
     562 +
     563 +
     564 +
     565 + <li class="md-nav__item">
     566 + <a href="../video/" class="md-nav__link">
     567 + Working with video
     568 + </a>
     569 + </li>
     570 +
     571 + 
     572 +
     573 +
     574 +
     575 +
     576 +
     577 +
     578 +
     579 + <li class="md-nav__item">
     580 + <a href="../edid/" class="md-nav__link">
     581 + Tuning HDMI EDID
     582 + </a>
     583 + </li>
     584 +
     585 + 
     586 +
     587 +
     588 +
     589 +
     590 +
     591 +
     592 +
     593 + <li class="md-nav__item">
     594 + <a href="../audio/" class="md-nav__link">
     595 + HDMI audio
     596 + </a>
     597 + </li>
     598 +
     599 + 
     600 +
     601 +
     602 + </ul>
     603 + </nav>
     604 + </li>
     605 +
     606 + 
     607 +
     608 +
     609 +
     610 +
     611 + 
     612 +
     613 +
     614 +
     615 +
     616 +
     617 +
     618 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     619 +
     620 +
     621 +
     622 +
     623 +
     624 +
     625 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
     626 +
     627 +
     628 +
     629 +
     630 +
     631 +
     632 +
     633 +
     634 +
     635 +
     636 +
     637 +
     638 +
     639 +
     640 +
     641 + <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
     642 + Peripheral devices
     643 + <span class="md-nav__icon md-icon"></span>
     644 + </label>
     645 +
     646 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
     647 + <label class="md-nav__title" for="__nav_4">
     648 + <span class="md-nav__icon md-icon"></span>
     649 + Peripheral devices
     650 + </label>
     651 + <ul class="md-nav__list" data-md-scrollfix>
     652 +
     653 +
     654 +
     655 +
     656 +
     657 +
     658 +
     659 + <li class="md-nav__item md-nav__item--nested">
     660 +
     661 +
     662 +
     663 +
     664 +
     665 +
     666 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4_1" >
     667 +
     668 +
     669 +
     670 +
     671 +
     672 +
     673 +
     674 +
     675 +
     676 +
     677 +
     678 + <label class="md-nav__link" for="__nav_4_1" id="__nav_4_1_label" tabindex="0">
     679 + Keyboard & mouse
     680 + <span class="md-nav__icon md-icon"></span>
     681 + </label>
     682 +
     683 + <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_1_label" aria-expanded="false">
     684 + <label class="md-nav__title" for="__nav_4_1">
     685 + <span class="md-nav__icon md-icon"></span>
     686 + Keyboard & mouse
     687 + </label>
     688 + <ul class="md-nav__list" data-md-scrollfix>
     689 +
     690 +
     691 +
     692 +
     693 +
     694 +
     695 + <li class="md-nav__item">
     696 + <a href="../mouse/" class="md-nav__link">
     697 + Mouse modes
     698 + </a>
     699 + </li>
     700 +
     701 + 
     702 +
     703 +
     704 +
     705 +
     706 +
     707 +
     708 +
     709 + <li class="md-nav__item">
     710 + <a href="../bluetooth_hid/" class="md-nav__link">
     711 + Bluetooth HID
     712 + </a>
     713 + </li>
     714 +
     715 + 
     716 +
     717 +
     718 +
     719 +
     720 +
     721 +
     722 +
     723 + <li class="md-nav__item">
     724 + <a href="../arduino_hid/" class="md-nav__link">
     725 + Arduino HID (USB, PS/2)
     726 + </a>
     727 + </li>
     728 +
     729 + 
     730 +
     731 +
     732 + </ul>
     733 + </nav>
     734 + </li>
     735 +
     736 + 
     737 +
     738 +
     739 +
     740 +
     741 +
     742 +
     743 +
     744 + <li class="md-nav__item">
     745 + <a href="../msd/" class="md-nav__link">
     746 + Mass Storage Drive
     747 + </a>
     748 + </li>
     749 +
     750 + 
     751 +
     752 +
     753 +
     754 +
     755 +
     756 +
     757 +
     758 + <li class="md-nav__item">
     759 + <a href="../usb_ethernet/" class="md-nav__link">
     760 + Ethernet-over-USB
     761 + </a>
     762 + </li>
     763 +
     764 + 
     765 +
     766 +
     767 +
     768 +
     769 +
     770 +
     771 +
     772 + <li class="md-nav__item">
     773 + <a href="../usb_serial/" class="md-nav__link">
     774 + Serial-over-USB
     775 + </a>
     776 + </li>
     777 +
     778 + 
     779 +
     780 +
     781 +
     782 +
     783 +
     784 +
     785 +
     786 + <li class="md-nav__item">
     787 + <a href="../gpio/" class="md-nav__link">
     788 + GPIO (pins, relays, lamps, etc)
     789 + </a>
     790 + </li>
     791 +
     792 + 
     793 +
     794 +
     795 + </ul>
     796 + </nav>
     797 + </li>
     798 +
     799 + 
     800 +
     801 +
     802 +
     803 +
     804 + 
     805 +
     806 +
     807 +
     808 +
     809 +
     810 +
     811 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     812 +
     813 +
     814 +
     815 +
     816 +
     817 +
     818 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
     819 +
     820 +
     821 +
     822 +
     823 +
     824 +
     825 +
     826 +
     827 +
     828 +
     829 +
     830 +
     831 +
     832 +
     833 +
     834 +
     835 +
     836 + <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
     837 + Advanced usage
     838 + <span class="md-nav__icon md-icon"></span>
     839 + </label>
     840 +
     841 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
     842 + <label class="md-nav__title" for="__nav_5">
     843 + <span class="md-nav__icon md-icon"></span>
     844 + Advanced usage
     845 + </label>
     846 + <ul class="md-nav__list" data-md-scrollfix>
     847 +
     848 +
     849 +
     850 +
     851 +
     852 +
     853 + <li class="md-nav__item">
     854 + <a href="../vnc/" class="md-nav__link">
     855 + Using VNC
     856 + </a>
     857 + </li>
     858 +
     859 + 
     860 +
     861 +
     862 +
     863 +
     864 +
     865 +
     866 +
     867 + <li class="md-nav__item">
     868 + <a href="../multiport/" class="md-nav__link">
     869 + Multiport KVM-over-IP
     870 + </a>
     871 + </li>
     872 +
     873 + 
     874 +
     875 +
     876 +
     877 +
     878 +
     879 +
     880 +
     881 + <li class="md-nav__item">
     882 + <a href="../wol/" class="md-nav__link">
     883 + Wake-on-LAN the server
     884 + </a>
     885 + </li>
     886 +
     887 + 
     888 +
     889 +
     890 +
     891 +
     892 +
     893 +
     894 +
     895 + <li class="md-nav__item">
     896 + <a href="../ipmi/" class="md-nav__link">
     897 + IPMI & Redfish integration
     898 + </a>
     899 + </li>
     900 +
     901 + 
     902 +
     903 +
     904 +
     905 +
     906 +
     907 +
     908 +
     909 + <li class="md-nav__item">
     910 + <a href="../pst/" class="md-nav__link">
     911 + Persistent storage
     912 + </a>
     913 + </li>
     914 +
     915 + 
     916 +
     917 +
     918 +
     919 +
     920 +
     921 +
     922 +
     923 + <li class="md-nav__item">
     924 + <a href="../prometheus/" class="md-nav__link">
     925 + Prometheus monitoring
     926 + </a>
     927 + </li>
     928 +
     929 + 
     930 +
     931 +
     932 + </ul>
     933 + </nav>
     934 + </li>
     935 +
     936 + 
     937 +
     938 +
     939 +
     940 +
     941 + 
     942 +
     943 +
     944 +
     945 +
     946 +
     947 +
     948 +
     949 +
     950 + <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
     951 +
     952 +
     953 +
     954 +
     955 + <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" checked>
     956 +
     957 +
     958 +
     959 +
     960 +
     961 +
     962 +
     963 +
     964 +
     965 +
     966 +
     967 + <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
     968 + Development
     969 + <span class="md-nav__icon md-icon"></span>
     970 + </label>
     971 +
     972 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="true">
     973 + <label class="md-nav__title" for="__nav_6">
     974 + <span class="md-nav__icon md-icon"></span>
     975 + Development
     976 + </label>
     977 + <ul class="md-nav__list" data-md-scrollfix>
     978 +
     979 +
     980 +
     981 +
     982 +
     983 +
     984 +
     985 +
     986 + <li class="md-nav__item md-nav__item--active">
     987 +
     988 + <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
     989 +
     990 +
     991 +
     992 +
     993 +
     994 + <label class="md-nav__link md-nav__link--active" for="__toc">
     995 + Cases for 3D printing
     996 + <span class="md-nav__icon md-icon"></span>
     997 + </label>
     998 +
     999 + <a href="./" class="md-nav__link md-nav__link--active">
     1000 + Cases for 3D printing
     1001 + </a>
     1002 +
     1003 +
     1004 + 
     1005 +<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
     1006 +
     1007 +
     1008 +
     1009 +
     1010 +
     1011 +
     1012 + <label class="md-nav__title" for="__toc">
     1013 + <span class="md-nav__icon md-icon"></span>
     1014 + Table of contents
     1015 + </label>
     1016 + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
     1017 +
     1018 + <li class="md-nav__item">
     1019 + <a href="#pikvm-v3-hat-cases" class="md-nav__link">
     1020 + PiKVM V3 HAT cases
     1021 + </a>
     1022 +
     1023 +</li>
     1024 +
     1025 + <li class="md-nav__item">
     1026 + <a href="#diy-cases" class="md-nav__link">
     1027 + DIY cases
     1028 + </a>
     1029 +
     1030 +</li>
     1031 +
     1032 + </ul>
     1033 +
     1034 +</nav>
     1035 +
     1036 + </li>
     1037 +
     1038 + 
     1039 +
     1040 +
     1041 +
     1042 +
     1043 +
     1044 +
     1045 +
     1046 + <li class="md-nav__item">
     1047 + <a href="../building_os/" class="md-nav__link">
     1048 + Building PiKVM OS
     1049 + </a>
     1050 + </li>
     1051 +
     1052 + 
     1053 +
     1054 +
     1055 +
     1056 +
     1057 +
     1058 +
     1059 +
     1060 + <li class="md-nav__item">
     1061 + <a href="../api/" class="md-nav__link">
     1062 + HTTP API reference
     1063 + </a>
     1064 + </li>
     1065 +
     1066 + 
     1067 +
     1068 +
     1069 + </ul>
     1070 + </nav>
     1071 + </li>
     1072 +
     1073 + 
     1074 +
     1075 + </ul>
     1076 +</nav>
     1077 + </div>
     1078 + </div>
     1079 + </div>
     1080 +
     1081 +
     1082 +
     1083 + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
     1084 + <div class="md-sidebar__scrollwrap">
     1085 + <div class="md-sidebar__inner">
     1086 +
     1087 + 
     1088 +<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
     1089 +
     1090 +
     1091 +
     1092 +
     1093 +
     1094 +
     1095 + <label class="md-nav__title" for="__toc">
     1096 + <span class="md-nav__icon md-icon"></span>
     1097 + Table of contents
     1098 + </label>
     1099 + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
     1100 +
     1101 + <li class="md-nav__item">
     1102 + <a href="#pikvm-v3-hat-cases" class="md-nav__link">
     1103 + PiKVM V3 HAT cases
     1104 + </a>
     1105 +
     1106 +</li>
     1107 +
     1108 + <li class="md-nav__item">
     1109 + <a href="#diy-cases" class="md-nav__link">
     1110 + DIY cases
     1111 + </a>
     1112 +
     1113 +</li>
     1114 +
     1115 + </ul>
     1116 +
     1117 +</nav>
     1118 + </div>
     1119 + </div>
     1120 + </div>
     1121 +
     1122 +
     1123 +
     1124 + <div class="md-content" data-md-component="content">
     1125 + <article class="md-content__inner md-typeset">
     1126 +
     1127 +
     1128 + 
     1129 + 
     1130 +<div><h1 id="cases-for-3d-printing">Cases for 3D printing<a class="headerlink" href="#cases-for-3d-printing" title="Permanent link">¶</a></h1>
     1131 +<h2 id="pikvm-v3-hat-cases">PiKVM V3 HAT cases<a class="headerlink" href="#pikvm-v3-hat-cases" title="Permanent link">¶</a></h2>
     1132 +<ul>
     1133 +<li><a href="../stl/v3.3/"><strong>v3.3 model (Kickstarter, Store)</strong></a></li>
     1134 +<li><a href="https://www.printables.com/model/218724-pikvm-case-mod-for-silent-noctua-40mm-fan">Unofficial but great v3.3 case mod for Noctua fan</a></li>
     1135 +<li><a href="../stl/v3.2/">v3.2 model (Pre-release)</a></li>
     1136 +</ul>
     1137 +<h2 id="diy-cases">DIY cases<a class="headerlink" href="#diy-cases" title="Permanent link">¶</a></h2>
     1138 +<table>
     1139 +<thead>
     1140 +<tr>
     1141 +<th>Model</th>
     1142 +<th>Notes</th>
     1143 +</tr>
     1144 +</thead>
     1145 +<tbody>
     1146 +<tr>
     1147 +<td><a href="https://www.thingiverse.com/thing:4799094">https://www.thingiverse.com/thing:4799094</a></td>
     1148 +<td>Case for the <a href="https://www.tindie.com/products/8086net/usb-cpwr-splitter/">USB-C/PWR Splitter without Barrel jack</a></td>
     1149 +</tr>
     1150 +<tr>
     1151 +<td><a href="https://www.thingiverse.com/thing:4931970">https://www.thingiverse.com/thing:4931970</a></td>
     1152 +<td>Case for the <a href="https://www.tindie.com/products/8086net/usb-cpwr-splitter/">USB-C/PWR Splitter without Barrel jack</a></td>
     1153 +</tr>
     1154 +<tr>
     1155 +<td><a href="https://www.thingiverse.com/thing:4862304">https://www.thingiverse.com/thing:4862304</a></td>
     1156 +<td>Case for PiKVM (LCD + ATX)</td>
     1157 +</tr>
     1158 +<tr>
     1159 +<td><a href="https://www.thingiverse.com/thing:4868258">https://www.thingiverse.com/thing:4868258</a></td>
     1160 +<td>R4C3R - Low Profile PCIe bracket for PiKVM based on Raspberry Pi Zero + Lusya + ATX controls</td>
     1161 +</tr>
     1162 +<tr>
     1163 +<td><a href="https://www.thingiverse.com/thing:4866005">https://www.thingiverse.com/thing:4866005</a></td>
     1164 +<td>R4C3R - Full Profile PCIe bracket for PiKVM based on Raspberry Pi Zero + Lusya + ATX controls</td>
     1165 +</tr>
     1166 +<tr>
     1167 +<td><a href="https://www.thingiverse.com/thing:4832248">https://www.thingiverse.com/thing:4832248</a></td>
     1168 +<td>Case for the <a href="https://www.tindie.com/products/8086net/usb-cpwr-splitter/">USB-C/PWR Splitter without Barrel jack</a> and HDMI-CSI bridge</td>
     1169 +</tr>
     1170 +<tr>
     1171 +<td><a href="https://www.thingiverse.com/thing:4916230">https://www.thingiverse.com/thing:4916230</a></td>
     1172 +<td>A very compact case without internal power splitter</td>
     1173 +</tr>
     1174 +<tr>
     1175 +<td><a href="https://www.thingiverse.com/thing:4915627">https://www.thingiverse.com/thing:4915627</a></td>
     1176 +<td>ZeroW + CSI case</td>
     1177 +</tr>
     1178 +<tr>
     1179 +<td><a href="https://www.thingiverse.com/thing:4950281">https://www.thingiverse.com/thing:4950281</a></td>
     1180 +<td>PiKVM RETRO Case for CSI-2 C779 Bridge w/ OLED Display Screen</td>
     1181 +</tr>
     1182 +<tr>
     1183 +<td><a href="https://www.thingiverse.com/thing:4950280">https://www.thingiverse.com/thing:4950280</a></td>
     1184 +<td>USB Power Blocker Case</td>
     1185 +</tr>
     1186 +<tr>
     1187 +<td><a href="https://www.thingiverse.com/thing:4642116">https://www.thingiverse.com/thing:4642116</a></td>
     1188 +<td>Conix's PI-KVM case for v2</td>
     1189 +</tr>
     1190 +</tbody>
     1191 +</table></div>
     1192 + 
     1193 + 
     1194 + 
     1195 + 
     1196 + 
     1197 +
     1198 + </article>
     1199 + </div>
     1200 +
     1201 +
     1202 + </div>
     1203 +
     1204 + <button type="button" class="md-top md-icon" data-md-component="top" hidden>
     1205 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
     1206 + Back to top
     1207 + </button>
     1208 +
     1209 + </main>
     1210 +
     1211 + <footer class="md-footer">
     1212 +
     1213 + <div class="md-footer-meta md-typeset">
     1214 + <div class="md-footer-meta__inner md-grid">
     1215 + <div class="md-copyright">
     1216 +
     1217 + <div class="md-copyright__highlight">
     1218 + Copyright &copy; 2018-2022 Maxim Devaev
     1219 + </div>
     1220 +
     1221 +
     1222 + Made with
     1223 + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
     1224 + Material for MkDocs
     1225 + </a>
     1226 +
     1227 +</div>
     1228 +
     1229 + </div>
     1230 + </div>
     1231 +</footer>
     1232 +
     1233 + </div>
     1234 + <div class="md-dialog" data-md-component="dialog">
     1235 + <div class="md-dialog__inner md-typeset"></div>
     1236 + </div>
     1237 +
     1238 + <script id="__config" type="application/json">{"base": "..", "features": ["navigation.indexes", "navigation.sections", "navigation.top", "navigation.tracking", "navigation.expand", "search.highlight", "search.share", "search.suggest"], "search": "../assets/javascripts/workers/search.208ed371.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
     1239 +
     1240 +
     1241 + <script src="../assets/javascripts/bundle.b4d07000.min.js"></script>
     1242 +
     1243 +
     1244 + </body>
     1245 +</html>
  • ■ ■ ■ ■ ■ ■
    404.html
     1 + 
     2 +<!doctype html>
     3 +<html lang="en" class="no-js">
     4 + <head>
     5 +
     6 + <meta charset="utf-8">
     7 + <meta name="viewport" content="width=device-width,initial-scale=1">
     8 +
     9 + <meta name="description" content="Open and cheap DIY IP-KVM on Raspberry Pi">
     10 +
     11 +
     12 + <meta name="author" content="Maxim Devaev">
     13 +
     14 +
     15 +
     16 +
     17 + <link rel="icon" href="/pikvm/_assets/favicon.ico">
     18 + <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.14">
     19 +
     20 +
     21 +
     22 + <title>PiKVM Handbook</title>
     23 +
     24 +
     25 +
     26 + <link rel="stylesheet" href="/pikvm/assets/stylesheets/main.85bb2934.min.css">
     27 +
     28 +
     29 + <link rel="stylesheet" href="/pikvm/assets/stylesheets/palette.a6bdf11c.min.css">
     30 +
     31 +
     32 + 
     33 +
     34 +
     35 +
     36 +
     37 +
     38 +
     39 + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
     40 + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=arial,+sans-serif:300,300i,400,400i,700,700i%7Cmonospace:400,400i,700,700i&display=fallback">
     41 + <style>:root{--md-text-font:"arial, sans-serif";--md-code-font:"monospace"}</style>
     42 +
     43 +
     44 +
     45 + <link rel="stylesheet" href="/pikvm/_assets/user.css">
     46 +
     47 + <script>__md_scope=new URL("/pikvm/",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
     48 +
     49 +
     50 + 
     51 +
     52 +
     53 +
     54 + </head>
     55 +
     56 +
     57 +
     58 +
     59 +
     60 +
     61 +
     62 + <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="pink">
     63 +
     64 +
     65 +
     66 + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
     67 + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
     68 + <label class="md-overlay" for="__drawer"></label>
     69 + <div data-md-component="skip">
     70 +
     71 + </div>
     72 + <div data-md-component="announce">
     73 +
     74 + </div>
     75 +
     76 +
     77 +
     78 + 
     79 +
     80 + 
     81 +<header class="md-header md-header--shadow" data-md-component="header">
     82 + <nav class="md-header__inner md-grid" aria-label="Header">
     83 + <a href="/pikvm/." title="PiKVM Handbook" class="md-header__button md-logo" aria-label="PiKVM Handbook" data-md-component="logo">
     84 +
     85 + <img src="/pikvm/_assets/logo.png" alt="logo">
     86 + 
     87 + </a>
     88 + <label class="md-header__button md-icon" for="__drawer">
     89 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
     90 + </label>
     91 + <div class="md-header__title" data-md-component="header-title">
     92 + <div class="md-header__ellipsis">
     93 + <div class="md-header__topic">
     94 + <span class="md-ellipsis">
     95 + PiKVM Handbook
     96 + </span>
     97 + </div>
     98 + <div class="md-header__topic" data-md-component="header-topic">
     99 + <span class="md-ellipsis">
     100 +
     101 +
     102 +
     103 + </span>
     104 + </div>
     105 + </div>
     106 + </div>
     107 +
     108 +
     109 +
     110 +
     111 +
     112 + <label class="md-header__button md-icon" for="__search">
     113 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
     114 + </label>
     115 + <div class="md-search" data-md-component="search" role="dialog">
     116 + <label class="md-search__overlay" for="__search"></label>
     117 + <div class="md-search__inner" role="search">
     118 + <form class="md-search__form" name="search">
     119 + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
     120 + <label class="md-search__icon md-icon" for="__search">
     121 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
     122 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
     123 + </label>
     124 + <nav class="md-search__options" aria-label="Search">
     125 +
     126 + <a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
     127 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7 0-.24-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91 1.61 0 2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08Z"/></svg>
     128 + </a>
     129 +
     130 + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
     131 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
     132 + </button>
     133 + </nav>
     134 +
     135 + <div class="md-search__suggest" data-md-component="search-suggest"></div>
     136 +
     137 + </form>
     138 + <div class="md-search__output">
     139 + <div class="md-search__scrollwrap" data-md-scrollfix>
     140 + <div class="md-search-result" data-md-component="search-result">
     141 + <div class="md-search-result__meta">
     142 + Initializing search
     143 + </div>
     144 + <ol class="md-search-result__list" role="presentation"></ol>
     145 + </div>
     146 + </div>
     147 + </div>
     148 + </div>
     149 +</div>
     150 +
     151 +
     152 + <div class="md-header__source">
     153 + <a href="https://github.com/pikvm/pikvm" title="Go to repository" class="md-source" data-md-component="source">
     154 + <div class="md-source__icon md-icon">
     155 +
     156 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
     157 + </div>
     158 + <div class="md-source__repository">
     159 + pikvm/pikvm
     160 + </div>
     161 +</a>
     162 + </div>
     163 +
     164 + </nav>
     165 +
     166 +</header>
     167 +
     168 + <div class="md-container" data-md-component="container">
     169 +
     170 +
     171 +
     172 +
     173 +
     174 +
     175 + <main class="md-main" data-md-component="main">
     176 + <div class="md-main__inner md-grid">
     177 +
     178 +
     179 +
     180 + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
     181 + <div class="md-sidebar__scrollwrap">
     182 + <div class="md-sidebar__inner">
     183 +
     184 + 
     185 + 
     186 +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
     187 + <label class="md-nav__title" for="__drawer">
     188 + <a href="/pikvm/." title="PiKVM Handbook" class="md-nav__button md-logo" aria-label="PiKVM Handbook" data-md-component="logo">
     189 +
     190 + <img src="/pikvm/_assets/logo.png" alt="logo">
     191 + 
     192 + </a>
     193 + PiKVM Handbook
     194 + </label>
     195 +
     196 + <div class="md-nav__source">
     197 + <a href="https://github.com/pikvm/pikvm" title="Go to repository" class="md-source" data-md-component="source">
     198 + <div class="md-source__icon md-icon">
     199 +
     200 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
     201 + </div>
     202 + <div class="md-source__repository">
     203 + pikvm/pikvm
     204 + </div>
     205 +</a>
     206 + </div>
     207 +
     208 + <ul class="md-nav__list" data-md-scrollfix>
     209 +
     210 +
     211 +
     212 +
     213 + 
     214 +
     215 +
     216 +
     217 +
     218 +
     219 +
     220 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     221 +
     222 +
     223 +
     224 +
     225 +
     226 +
     227 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_1" >
     228 +
     229 +
     230 +
     231 +
     232 +
     233 +
     234 +
     235 +
     236 +
     237 +
     238 +
     239 +
     240 +
     241 +
     242 +
     243 + <label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="0">
     244 + Getting started
     245 + <span class="md-nav__icon md-icon"></span>
     246 + </label>
     247 +
     248 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
     249 + <label class="md-nav__title" for="__nav_1">
     250 + <span class="md-nav__icon md-icon"></span>
     251 + Getting started
     252 + </label>
     253 + <ul class="md-nav__list" data-md-scrollfix>
     254 +
     255 +
     256 +
     257 +
     258 +
     259 +
     260 + <li class="md-nav__item">
     261 + <a href="/pikvm/v4/" class="md-nav__link">
     262 + PiKVM V4 Mini & Plus guide
     263 + </a>
     264 + </li>
     265 +
     266 + 
     267 +
     268 +
     269 +
     270 +
     271 +
     272 +
     273 +
     274 + <li class="md-nav__item">
     275 + <a href="/pikvm/v3/" class="md-nav__link">
     276 + PiKVM V3 HAT guide
     277 + </a>
     278 + </li>
     279 +
     280 + 
     281 +
     282 +
     283 +
     284 +
     285 +
     286 +
     287 +
     288 + <li class="md-nav__item">
     289 + <a href="/pikvm/first_steps/" class="md-nav__link">
     290 + First steps
     291 + </a>
     292 + </li>
     293 +
     294 + 
     295 +
     296 +
     297 +
     298 +
     299 +
     300 +
     301 +
     302 + <li class="md-nav__item">
     303 + <a href="/pikvm/auth/" class="md-nav__link">
     304 + Authentication
     305 + </a>
     306 + </li>
     307 +
     308 + 
     309 +
     310 +
     311 +
     312 +
     313 +
     314 +
     315 +
     316 + <li class="md-nav__item">
     317 + <a href="/pikvm/faq/" class="md-nav__link">
     318 + FAQ
     319 + </a>
     320 + </li>
     321 +
     322 + 
     323 +
     324 +
     325 + </ul>
     326 + </nav>
     327 + </li>
     328 +
     329 + 
     330 +
     331 +
     332 +
     333 +
     334 + 
     335 +
     336 +
     337 +
     338 +
     339 +
     340 +
     341 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     342 +
     343 +
     344 +
     345 +
     346 +
     347 +
     348 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
     349 +
     350 +
     351 +
     352 +
     353 +
     354 +
     355 +
     356 +
     357 +
     358 +
     359 +
     360 + <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
     361 + Networking
     362 + <span class="md-nav__icon md-icon"></span>
     363 + </label>
     364 +
     365 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
     366 + <label class="md-nav__title" for="__nav_2">
     367 + <span class="md-nav__icon md-icon"></span>
     368 + Networking
     369 + </label>
     370 + <ul class="md-nav__list" data-md-scrollfix>
     371 +
     372 +
     373 +
     374 +
     375 +
     376 +
     377 +
     378 + <li class="md-nav__item md-nav__item--nested">
     379 +
     380 +
     381 +
     382 +
     383 +
     384 +
     385 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_1" >
     386 +
     387 +
     388 +
     389 +
     390 +
     391 +
     392 +
     393 +
     394 +
     395 +
     396 +
     397 + <label class="md-nav__link" for="__nav_2_1" id="__nav_2_1_label" tabindex="0">
     398 + Internet access
     399 + <span class="md-nav__icon md-icon"></span>
     400 + </label>
     401 +
     402 + <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_1_label" aria-expanded="false">
     403 + <label class="md-nav__title" for="__nav_2_1">
     404 + <span class="md-nav__icon md-icon"></span>
     405 + Internet access
     406 + </label>
     407 + <ul class="md-nav__list" data-md-scrollfix>
     408 +
     409 +
     410 +
     411 +
     412 +
     413 +
     414 + <li class="md-nav__item">
     415 + <a href="/pikvm/port_forwarding/" class="md-nav__link">
     416 + Port forwarding
     417 + </a>
     418 + </li>
     419 +
     420 + 
     421 +
     422 +
     423 +
     424 +
     425 +
     426 +
     427 +
     428 + <li class="md-nav__item">
     429 + <a href="/pikvm/tailscale/" class="md-nav__link">
     430 + Tailscale VPN
     431 + </a>
     432 + </li>
     433 +
     434 + 
     435 +
     436 +
     437 +
     438 +
     439 +
     440 +
     441 +
     442 + <li class="md-nav__item">
     443 + <a href="/pikvm/cloudflared/" class="md-nav__link">
     444 + Cloudflare Tunnel
     445 + </a>
     446 + </li>
     447 +
     448 + 
     449 +
     450 +
     451 + </ul>
     452 + </nav>
     453 + </li>
     454 +
     455 + 
     456 +
     457 +
     458 +
     459 +
     460 +
     461 +
     462 +
     463 + <li class="md-nav__item">
     464 + <a href="/pikvm/wifi/" class="md-nav__link">
     465 + Setting up Wi-Fi
     466 + </a>
     467 + </li>
     468 +
     469 + 
     470 +
     471 +
     472 +
     473 +
     474 +
     475 +
     476 +
     477 + <li class="md-nav__item">
     478 + <a href="/pikvm/letsencrypt/" class="md-nav__link">
     479 + Let's Encrypt certificates
     480 + </a>
     481 + </li>
     482 +
     483 + 
     484 +
     485 +
     486 + </ul>
     487 + </nav>
     488 + </li>
     489 +
     490 + 
     491 +
     492 +
     493 +
     494 +
     495 + 
     496 +
     497 +
     498 +
     499 +
     500 +
     501 +
     502 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     503 +
     504 +
     505 +
     506 +
     507 +
     508 +
     509 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
     510 +
     511 +
     512 +
     513 +
     514 +
     515 +
     516 +
     517 +
     518 +
     519 +
     520 +
     521 +
     522 +
     523 + <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
     524 + Video
     525 + <span class="md-nav__icon md-icon"></span>
     526 + </label>
     527 +
     528 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
     529 + <label class="md-nav__title" for="__nav_3">
     530 + <span class="md-nav__icon md-icon"></span>
     531 + Video
     532 + </label>
     533 + <ul class="md-nav__list" data-md-scrollfix>
     534 +
     535 +
     536 +
     537 +
     538 +
     539 +
     540 + <li class="md-nav__item">
     541 + <a href="/pikvm/webrtc/" class="md-nav__link">
     542 + H.264 / WebRTC
     543 + </a>
     544 + </li>
     545 +
     546 + 
     547 +
     548 +
     549 +
     550 +
     551 +
     552 +
     553 +
     554 + <li class="md-nav__item">
     555 + <a href="/pikvm/video/" class="md-nav__link">
     556 + Working with video
     557 + </a>
     558 + </li>
     559 +
     560 + 
     561 +
     562 +
     563 +
     564 +
     565 +
     566 +
     567 +
     568 + <li class="md-nav__item">
     569 + <a href="/pikvm/edid/" class="md-nav__link">
     570 + Tuning HDMI EDID
     571 + </a>
     572 + </li>
     573 +
     574 + 
     575 +
     576 +
     577 +
     578 +
     579 +
     580 +
     581 +
     582 + <li class="md-nav__item">
     583 + <a href="/pikvm/audio/" class="md-nav__link">
     584 + HDMI audio
     585 + </a>
     586 + </li>
     587 +
     588 + 
     589 +
     590 +
     591 + </ul>
     592 + </nav>
     593 + </li>
     594 +
     595 + 
     596 +
     597 +
     598 +
     599 +
     600 + 
     601 +
     602 +
     603 +
     604 +
     605 +
     606 +
     607 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     608 +
     609 +
     610 +
     611 +
     612 +
     613 +
     614 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
     615 +
     616 +
     617 +
     618 +
     619 +
     620 +
     621 +
     622 +
     623 +
     624 +
     625 +
     626 +
     627 +
     628 +
     629 +
     630 + <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
     631 + Peripheral devices
     632 + <span class="md-nav__icon md-icon"></span>
     633 + </label>
     634 +
     635 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
     636 + <label class="md-nav__title" for="__nav_4">
     637 + <span class="md-nav__icon md-icon"></span>
     638 + Peripheral devices
     639 + </label>
     640 + <ul class="md-nav__list" data-md-scrollfix>
     641 +
     642 +
     643 +
     644 +
     645 +
     646 +
     647 +
     648 + <li class="md-nav__item md-nav__item--nested">
     649 +
     650 +
     651 +
     652 +
     653 +
     654 +
     655 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4_1" >
     656 +
     657 +
     658 +
     659 +
     660 +
     661 +
     662 +
     663 +
     664 +
     665 +
     666 +
     667 + <label class="md-nav__link" for="__nav_4_1" id="__nav_4_1_label" tabindex="0">
     668 + Keyboard & mouse
     669 + <span class="md-nav__icon md-icon"></span>
     670 + </label>
     671 +
     672 + <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_1_label" aria-expanded="false">
     673 + <label class="md-nav__title" for="__nav_4_1">
     674 + <span class="md-nav__icon md-icon"></span>
     675 + Keyboard & mouse
     676 + </label>
     677 + <ul class="md-nav__list" data-md-scrollfix>
     678 +
     679 +
     680 +
     681 +
     682 +
     683 +
     684 + <li class="md-nav__item">
     685 + <a href="/pikvm/mouse/" class="md-nav__link">
     686 + Mouse modes
     687 + </a>
     688 + </li>
     689 +
     690 + 
     691 +
     692 +
     693 +
     694 +
     695 +
     696 +
     697 +
     698 + <li class="md-nav__item">
     699 + <a href="/pikvm/bluetooth_hid/" class="md-nav__link">
     700 + Bluetooth HID
     701 + </a>
     702 + </li>
     703 +
     704 + 
     705 +
     706 +
     707 +
     708 +
     709 +
     710 +
     711 +
     712 + <li class="md-nav__item">
     713 + <a href="/pikvm/arduino_hid/" class="md-nav__link">
     714 + Arduino HID (USB, PS/2)
     715 + </a>
     716 + </li>
     717 +
     718 + 
     719 +
     720 +
     721 + </ul>
     722 + </nav>
     723 + </li>
     724 +
     725 + 
     726 +
     727 +
     728 +
     729 +
     730 +
     731 +
     732 +
     733 + <li class="md-nav__item">
     734 + <a href="/pikvm/msd/" class="md-nav__link">
     735 + Mass Storage Drive
     736 + </a>
     737 + </li>
     738 +
     739 + 
     740 +
     741 +
     742 +
     743 +
     744 +
     745 +
     746 +
     747 + <li class="md-nav__item">
     748 + <a href="/pikvm/usb_ethernet/" class="md-nav__link">
     749 + Ethernet-over-USB
     750 + </a>
     751 + </li>
     752 +
     753 + 
     754 +
     755 +
     756 +
     757 +
     758 +
     759 +
     760 +
     761 + <li class="md-nav__item">
     762 + <a href="/pikvm/usb_serial/" class="md-nav__link">
     763 + Serial-over-USB
     764 + </a>
     765 + </li>
     766 +
     767 + 
     768 +
     769 +
     770 +
     771 +
     772 +
     773 +
     774 +
     775 + <li class="md-nav__item">
     776 + <a href="/pikvm/gpio/" class="md-nav__link">
     777 + GPIO (pins, relays, lamps, etc)
     778 + </a>
     779 + </li>
     780 +
     781 + 
     782 +
     783 +
     784 + </ul>
     785 + </nav>
     786 + </li>
     787 +
     788 + 
     789 +
     790 +
     791 +
     792 +
     793 + 
     794 +
     795 +
     796 +
     797 +
     798 +
     799 +
     800 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     801 +
     802 +
     803 +
     804 +
     805 +
     806 +
     807 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
     808 +
     809 +
     810 +
     811 +
     812 +
     813 +
     814 +
     815 +
     816 +
     817 +
     818 +
     819 +
     820 +
     821 +
     822 +
     823 +
     824 +
     825 + <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
     826 + Advanced usage
     827 + <span class="md-nav__icon md-icon"></span>
     828 + </label>
     829 +
     830 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
     831 + <label class="md-nav__title" for="__nav_5">
     832 + <span class="md-nav__icon md-icon"></span>
     833 + Advanced usage
     834 + </label>
     835 + <ul class="md-nav__list" data-md-scrollfix>
     836 +
     837 +
     838 +
     839 +
     840 +
     841 +
     842 + <li class="md-nav__item">
     843 + <a href="/pikvm/vnc/" class="md-nav__link">
     844 + Using VNC
     845 + </a>
     846 + </li>
     847 +
     848 + 
     849 +
     850 +
     851 +
     852 +
     853 +
     854 +
     855 +
     856 + <li class="md-nav__item">
     857 + <a href="/pikvm/multiport/" class="md-nav__link">
     858 + Multiport KVM-over-IP
     859 + </a>
     860 + </li>
     861 +
     862 + 
     863 +
     864 +
     865 +
     866 +
     867 +
     868 +
     869 +
     870 + <li class="md-nav__item">
     871 + <a href="/pikvm/wol/" class="md-nav__link">
     872 + Wake-on-LAN the server
     873 + </a>
     874 + </li>
     875 +
     876 + 
     877 +
     878 +
     879 +
     880 +
     881 +
     882 +
     883 +
     884 + <li class="md-nav__item">
     885 + <a href="/pikvm/ipmi/" class="md-nav__link">
     886 + IPMI & Redfish integration
     887 + </a>
     888 + </li>
     889 +
     890 + 
     891 +
     892 +
     893 +
     894 +
     895 +
     896 +
     897 +
     898 + <li class="md-nav__item">
     899 + <a href="/pikvm/pst/" class="md-nav__link">
     900 + Persistent storage
     901 + </a>
     902 + </li>
     903 +
     904 + 
     905 +
     906 +
     907 +
     908 +
     909 +
     910 +
     911 +
     912 + <li class="md-nav__item">
     913 + <a href="/pikvm/prometheus/" class="md-nav__link">
     914 + Prometheus monitoring
     915 + </a>
     916 + </li>
     917 +
     918 + 
     919 +
     920 +
     921 + </ul>
     922 + </nav>
     923 + </li>
     924 +
     925 + 
     926 +
     927 +
     928 +
     929 +
     930 + 
     931 +
     932 +
     933 +
     934 +
     935 +
     936 +
     937 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     938 +
     939 +
     940 +
     941 +
     942 +
     943 +
     944 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
     945 +
     946 +
     947 +
     948 +
     949 +
     950 +
     951 +
     952 +
     953 +
     954 +
     955 +
     956 + <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
     957 + Development
     958 + <span class="md-nav__icon md-icon"></span>
     959 + </label>
     960 +
     961 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
     962 + <label class="md-nav__title" for="__nav_6">
     963 + <span class="md-nav__icon md-icon"></span>
     964 + Development
     965 + </label>
     966 + <ul class="md-nav__list" data-md-scrollfix>
     967 +
     968 +
     969 +
     970 +
     971 +
     972 +
     973 + <li class="md-nav__item">
     974 + <a href="/pikvm/3d_printing/" class="md-nav__link">
     975 + Cases for 3D printing
     976 + </a>
     977 + </li>
     978 +
     979 + 
     980 +
     981 +
     982 +
     983 +
     984 +
     985 +
     986 +
     987 + <li class="md-nav__item">
     988 + <a href="/pikvm/building_os/" class="md-nav__link">
     989 + Building PiKVM OS
     990 + </a>
     991 + </li>
     992 +
     993 + 
     994 +
     995 +
     996 +
     997 +
     998 +
     999 +
     1000 +
     1001 + <li class="md-nav__item">
     1002 + <a href="/pikvm/api/" class="md-nav__link">
     1003 + HTTP API reference
     1004 + </a>
     1005 + </li>
     1006 +
     1007 + 
     1008 +
     1009 +
     1010 + </ul>
     1011 + </nav>
     1012 + </li>
     1013 +
     1014 + 
     1015 +
     1016 + </ul>
     1017 +</nav>
     1018 + </div>
     1019 + </div>
     1020 + </div>
     1021 +
     1022 +
     1023 +
     1024 + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
     1025 + <div class="md-sidebar__scrollwrap">
     1026 + <div class="md-sidebar__inner">
     1027 +
     1028 + 
     1029 +<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
     1030 +
     1031 +
     1032 +
     1033 +
     1034 +</nav>
     1035 + </div>
     1036 + </div>
     1037 + </div>
     1038 +
     1039 +
     1040 +
     1041 + <div class="md-content" data-md-component="content">
     1042 + <article class="md-content__inner md-typeset">
     1043 +
     1044 + <h1>404 - Not found</h1>
     1045 + 
     1046 + </article>
     1047 + </div>
     1048 +
     1049 +
     1050 + </div>
     1051 +
     1052 + <button type="button" class="md-top md-icon" data-md-component="top" hidden>
     1053 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
     1054 + Back to top
     1055 + </button>
     1056 +
     1057 + </main>
     1058 +
     1059 + <footer class="md-footer">
     1060 +
     1061 + <div class="md-footer-meta md-typeset">
     1062 + <div class="md-footer-meta__inner md-grid">
     1063 + <div class="md-copyright">
     1064 +
     1065 + <div class="md-copyright__highlight">
     1066 + Copyright &copy; 2018-2022 Maxim Devaev
     1067 + </div>
     1068 +
     1069 +
     1070 + Made with
     1071 + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
     1072 + Material for MkDocs
     1073 + </a>
     1074 +
     1075 +</div>
     1076 +
     1077 + </div>
     1078 + </div>
     1079 +</footer>
     1080 +
     1081 + </div>
     1082 + <div class="md-dialog" data-md-component="dialog">
     1083 + <div class="md-dialog__inner md-typeset"></div>
     1084 + </div>
     1085 +
     1086 + <script id="__config" type="application/json">{"base": "/pikvm/", "features": ["navigation.indexes", "navigation.sections", "navigation.top", "navigation.tracking", "navigation.expand", "search.highlight", "search.share", "search.suggest"], "search": "/pikvm/assets/javascripts/workers/search.208ed371.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
     1087 +
     1088 +
     1089 + <script src="/pikvm/assets/javascripts/bundle.b4d07000.min.js"></script>
     1090 +
     1091 +
     1092 + </body>
     1093 +</html>
  • ■ ■ ■ ■ ■ ■
    CNAME
     1 +docs.pikvm.org
     2 + 
  • _assets/favicon.ico
  • _assets/logo.png
  • ■ ■ ■ ■ ■ ■
    _assets/user.css
     1 +/*.md-header__button.md-logo img {
     2 + width: unset;
     3 +}*/
     4 + 
     5 +.md-main__inner {
     6 + margin-top: unset;
     7 +}
     8 + 
     9 +.md-nav__title {
     10 + display: none;
     11 +}
     12 + 
     13 +/*.md-header,*/ .md-footer {
     14 + background-color: #333333;
     15 +}
     16 + 
     17 +.md-footer__inner.md-grid {
     18 + display: none;
     19 +}
     20 + 
     21 +.md-sidebar {
     22 + padding-top: 0px;
     23 +}
     24 + 
     25 +/*.md-sidebar.md-sidebar--primary {
     26 + position: unset;
     27 +}*/
     28 + 
     29 +.md-sidebar.md-sidebar--secondary {
     30 + padding-top: 10px;
     31 +}
     32 + 
     33 +.md-sidebar.md-sidebar--primary .md-sidebar__scrollwrap {
     34 + /*overflow-y: unset;*/
     35 + padding-right: 1px;
     36 + border-right: 1px solid #adadad;
     37 +}
     38 + 
     39 +.md-sidebar.md-sidebar--primary .md-sidebar__inner {
     40 + /*border-right: 1px solid #adadad;*/
     41 + padding-bottom: 30px;
     42 +}
     43 +.md-sidebar.md-sidebar--secondary .md-sidebar__inner {
     44 + border-left: 1px solid #adadad;
     45 +}
     46 + 
     47 +.md-nav__item .md-nav__list {
     48 + padding-left: 10px;
     49 +}
     50 + 
     51 +.md-content {
     52 + margin-top: 25px;
     53 + /*border-left: 1px solid #adadad;
     54 + border-right: 1px solid #adadad;*/
     55 +}
     56 + 
     57 +.md-top {
     58 + display: none;
     59 +}
     60 + 
     61 +.md-typeset hr {
     62 + border-bottom: 1px solid #adadad;
     63 +}
     64 + 
     65 +.md-typeset h1,
     66 +.md-typeset h2,
     67 +.md-typeset h3,
     68 +.md-typeset h4,
     69 +.md-typeset h5 {
     70 + font-weight: bold;
     71 +}
     72 + 
     73 +.md-typeset table:not([class]) td:not(:last-child),
     74 +.md-typeset table:not([class]) th:not(:last-child) {
     75 + border-right: .05rem solid var(--md-typeset-table-color);
     76 +}
     77 + 
     78 +ol li::marker {
     79 + font-weight: bold;
     80 +}
     81 + 
  • ■ ■ ■ ■ ■ ■
    _usb_limits/index.html
     1 + 
     2 +<!doctype html>
     3 +<html lang="en" class="no-js">
     4 + <head>
     5 +
     6 + <meta charset="utf-8">
     7 + <meta name="viewport" content="width=device-width,initial-scale=1">
     8 +
     9 + <meta name="description" content="Open and cheap DIY IP-KVM on Raspberry Pi">
     10 +
     11 +
     12 + <meta name="author" content="Maxim Devaev">
     13 +
     14 +
     15 + <link rel="canonical" href="https://pikvm.github.io/pikvm/_usb_limits/">
     16 +
     17 +
     18 +
     19 + <link rel="icon" href="../_assets/favicon.ico">
     20 + <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.14">
     21 +
     22 +
     23 +
     24 + <title>usb limits - PiKVM Handbook</title>
     25 +
     26 +
     27 +
     28 + <link rel="stylesheet" href="../assets/stylesheets/main.85bb2934.min.css">
     29 +
     30 +
     31 + <link rel="stylesheet" href="../assets/stylesheets/palette.a6bdf11c.min.css">
     32 +
     33 +
     34 + 
     35 +
     36 +
     37 +
     38 +
     39 +
     40 +
     41 + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
     42 + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=arial,+sans-serif:300,300i,400,400i,700,700i%7Cmonospace:400,400i,700,700i&display=fallback">
     43 + <style>:root{--md-text-font:"arial, sans-serif";--md-code-font:"monospace"}</style>
     44 +
     45 +
     46 +
     47 + <link rel="stylesheet" href="../_assets/user.css">
     48 +
     49 + <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
     50 +
     51 +
     52 + 
     53 +
     54 +
     55 +
     56 + </head>
     57 +
     58 +
     59 +
     60 +
     61 +
     62 +
     63 +
     64 + <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="pink">
     65 +
     66 +
     67 +
     68 + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
     69 + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
     70 + <label class="md-overlay" for="__drawer"></label>
     71 + <div data-md-component="skip">
     72 +
     73 + </div>
     74 + <div data-md-component="announce">
     75 +
     76 + </div>
     77 +
     78 +
     79 +
     80 + 
     81 +
     82 + 
     83 +<header class="md-header md-header--shadow" data-md-component="header">
     84 + <nav class="md-header__inner md-grid" aria-label="Header">
     85 + <a href=".." title="PiKVM Handbook" class="md-header__button md-logo" aria-label="PiKVM Handbook" data-md-component="logo">
     86 +
     87 + <img src="../_assets/logo.png" alt="logo">
     88 + 
     89 + </a>
     90 + <label class="md-header__button md-icon" for="__drawer">
     91 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
     92 + </label>
     93 + <div class="md-header__title" data-md-component="header-title">
     94 + <div class="md-header__ellipsis">
     95 + <div class="md-header__topic">
     96 + <span class="md-ellipsis">
     97 + PiKVM Handbook
     98 + </span>
     99 + </div>
     100 + <div class="md-header__topic" data-md-component="header-topic">
     101 + <span class="md-ellipsis">
     102 +
     103 + usb limits
     104 +
     105 + </span>
     106 + </div>
     107 + </div>
     108 + </div>
     109 +
     110 +
     111 +
     112 +
     113 +
     114 + <label class="md-header__button md-icon" for="__search">
     115 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
     116 + </label>
     117 + <div class="md-search" data-md-component="search" role="dialog">
     118 + <label class="md-search__overlay" for="__search"></label>
     119 + <div class="md-search__inner" role="search">
     120 + <form class="md-search__form" name="search">
     121 + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
     122 + <label class="md-search__icon md-icon" for="__search">
     123 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
     124 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
     125 + </label>
     126 + <nav class="md-search__options" aria-label="Search">
     127 +
     128 + <a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
     129 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7 0-.24-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91 1.61 0 2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08Z"/></svg>
     130 + </a>
     131 +
     132 + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
     133 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
     134 + </button>
     135 + </nav>
     136 +
     137 + <div class="md-search__suggest" data-md-component="search-suggest"></div>
     138 +
     139 + </form>
     140 + <div class="md-search__output">
     141 + <div class="md-search__scrollwrap" data-md-scrollfix>
     142 + <div class="md-search-result" data-md-component="search-result">
     143 + <div class="md-search-result__meta">
     144 + Initializing search
     145 + </div>
     146 + <ol class="md-search-result__list" role="presentation"></ol>
     147 + </div>
     148 + </div>
     149 + </div>
     150 + </div>
     151 +</div>
     152 +
     153 +
     154 + <div class="md-header__source">
     155 + <a href="https://github.com/pikvm/pikvm" title="Go to repository" class="md-source" data-md-component="source">
     156 + <div class="md-source__icon md-icon">
     157 +
     158 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
     159 + </div>
     160 + <div class="md-source__repository">
     161 + pikvm/pikvm
     162 + </div>
     163 +</a>
     164 + </div>
     165 +
     166 + </nav>
     167 +
     168 +</header>
     169 +
     170 + <div class="md-container" data-md-component="container">
     171 +
     172 +
     173 +
     174 +
     175 +
     176 +
     177 + <main class="md-main" data-md-component="main">
     178 + <div class="md-main__inner md-grid">
     179 +
     180 +
     181 +
     182 + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
     183 + <div class="md-sidebar__scrollwrap">
     184 + <div class="md-sidebar__inner">
     185 +
     186 + 
     187 + 
     188 +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
     189 + <label class="md-nav__title" for="__drawer">
     190 + <a href=".." title="PiKVM Handbook" class="md-nav__button md-logo" aria-label="PiKVM Handbook" data-md-component="logo">
     191 +
     192 + <img src="../_assets/logo.png" alt="logo">
     193 + 
     194 + </a>
     195 + PiKVM Handbook
     196 + </label>
     197 +
     198 + <div class="md-nav__source">
     199 + <a href="https://github.com/pikvm/pikvm" title="Go to repository" class="md-source" data-md-component="source">
     200 + <div class="md-source__icon md-icon">
     201 +
     202 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
     203 + </div>
     204 + <div class="md-source__repository">
     205 + pikvm/pikvm
     206 + </div>
     207 +</a>
     208 + </div>
     209 +
     210 + <ul class="md-nav__list" data-md-scrollfix>
     211 +
     212 +
     213 +
     214 +
     215 + 
     216 +
     217 +
     218 +
     219 +
     220 +
     221 +
     222 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     223 +
     224 +
     225 +
     226 +
     227 +
     228 +
     229 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_1" >
     230 +
     231 +
     232 +
     233 +
     234 +
     235 +
     236 +
     237 +
     238 +
     239 +
     240 +
     241 +
     242 +
     243 +
     244 +
     245 + <label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="0">
     246 + Getting started
     247 + <span class="md-nav__icon md-icon"></span>
     248 + </label>
     249 +
     250 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
     251 + <label class="md-nav__title" for="__nav_1">
     252 + <span class="md-nav__icon md-icon"></span>
     253 + Getting started
     254 + </label>
     255 + <ul class="md-nav__list" data-md-scrollfix>
     256 +
     257 +
     258 +
     259 +
     260 +
     261 +
     262 + <li class="md-nav__item">
     263 + <a href="../v4/" class="md-nav__link">
     264 + PiKVM V4 Mini & Plus guide
     265 + </a>
     266 + </li>
     267 +
     268 + 
     269 +
     270 +
     271 +
     272 +
     273 +
     274 +
     275 +
     276 + <li class="md-nav__item">
     277 + <a href="../v3/" class="md-nav__link">
     278 + PiKVM V3 HAT guide
     279 + </a>
     280 + </li>
     281 +
     282 + 
     283 +
     284 +
     285 +
     286 +
     287 +
     288 +
     289 +
     290 + <li class="md-nav__item">
     291 + <a href="../first_steps/" class="md-nav__link">
     292 + First steps
     293 + </a>
     294 + </li>
     295 +
     296 + 
     297 +
     298 +
     299 +
     300 +
     301 +
     302 +
     303 +
     304 + <li class="md-nav__item">
     305 + <a href="../auth/" class="md-nav__link">
     306 + Authentication
     307 + </a>
     308 + </li>
     309 +
     310 + 
     311 +
     312 +
     313 +
     314 +
     315 +
     316 +
     317 +
     318 + <li class="md-nav__item">
     319 + <a href="../faq/" class="md-nav__link">
     320 + FAQ
     321 + </a>
     322 + </li>
     323 +
     324 + 
     325 +
     326 +
     327 + </ul>
     328 + </nav>
     329 + </li>
     330 +
     331 + 
     332 +
     333 +
     334 +
     335 +
     336 + 
     337 +
     338 +
     339 +
     340 +
     341 +
     342 +
     343 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     344 +
     345 +
     346 +
     347 +
     348 +
     349 +
     350 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
     351 +
     352 +
     353 +
     354 +
     355 +
     356 +
     357 +
     358 +
     359 +
     360 +
     361 +
     362 + <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
     363 + Networking
     364 + <span class="md-nav__icon md-icon"></span>
     365 + </label>
     366 +
     367 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
     368 + <label class="md-nav__title" for="__nav_2">
     369 + <span class="md-nav__icon md-icon"></span>
     370 + Networking
     371 + </label>
     372 + <ul class="md-nav__list" data-md-scrollfix>
     373 +
     374 +
     375 +
     376 +
     377 +
     378 +
     379 +
     380 + <li class="md-nav__item md-nav__item--nested">
     381 +
     382 +
     383 +
     384 +
     385 +
     386 +
     387 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_1" >
     388 +
     389 +
     390 +
     391 +
     392 +
     393 +
     394 +
     395 +
     396 +
     397 +
     398 +
     399 + <label class="md-nav__link" for="__nav_2_1" id="__nav_2_1_label" tabindex="0">
     400 + Internet access
     401 + <span class="md-nav__icon md-icon"></span>
     402 + </label>
     403 +
     404 + <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_1_label" aria-expanded="false">
     405 + <label class="md-nav__title" for="__nav_2_1">
     406 + <span class="md-nav__icon md-icon"></span>
     407 + Internet access
     408 + </label>
     409 + <ul class="md-nav__list" data-md-scrollfix>
     410 +
     411 +
     412 +
     413 +
     414 +
     415 +
     416 + <li class="md-nav__item">
     417 + <a href="../port_forwarding/" class="md-nav__link">
     418 + Port forwarding
     419 + </a>
     420 + </li>
     421 +
     422 + 
     423 +
     424 +
     425 +
     426 +
     427 +
     428 +
     429 +
     430 + <li class="md-nav__item">
     431 + <a href="../tailscale/" class="md-nav__link">
     432 + Tailscale VPN
     433 + </a>
     434 + </li>
     435 +
     436 + 
     437 +
     438 +
     439 +
     440 +
     441 +
     442 +
     443 +
     444 + <li class="md-nav__item">
     445 + <a href="../cloudflared/" class="md-nav__link">
     446 + Cloudflare Tunnel
     447 + </a>
     448 + </li>
     449 +
     450 + 
     451 +
     452 +
     453 + </ul>
     454 + </nav>
     455 + </li>
     456 +
     457 + 
     458 +
     459 +
     460 +
     461 +
     462 +
     463 +
     464 +
     465 + <li class="md-nav__item">
     466 + <a href="../wifi/" class="md-nav__link">
     467 + Setting up Wi-Fi
     468 + </a>
     469 + </li>
     470 +
     471 + 
     472 +
     473 +
     474 +
     475 +
     476 +
     477 +
     478 +
     479 + <li class="md-nav__item">
     480 + <a href="../letsencrypt/" class="md-nav__link">
     481 + Let's Encrypt certificates
     482 + </a>
     483 + </li>
     484 +
     485 + 
     486 +
     487 +
     488 + </ul>
     489 + </nav>
     490 + </li>
     491 +
     492 + 
     493 +
     494 +
     495 +
     496 +
     497 + 
     498 +
     499 +
     500 +
     501 +
     502 +
     503 +
     504 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     505 +
     506 +
     507 +
     508 +
     509 +
     510 +
     511 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
     512 +
     513 +
     514 +
     515 +
     516 +
     517 +
     518 +
     519 +
     520 +
     521 +
     522 +
     523 +
     524 +
     525 + <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
     526 + Video
     527 + <span class="md-nav__icon md-icon"></span>
     528 + </label>
     529 +
     530 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
     531 + <label class="md-nav__title" for="__nav_3">
     532 + <span class="md-nav__icon md-icon"></span>
     533 + Video
     534 + </label>
     535 + <ul class="md-nav__list" data-md-scrollfix>
     536 +
     537 +
     538 +
     539 +
     540 +
     541 +
     542 + <li class="md-nav__item">
     543 + <a href="../webrtc/" class="md-nav__link">
     544 + H.264 / WebRTC
     545 + </a>
     546 + </li>
     547 +
     548 + 
     549 +
     550 +
     551 +
     552 +
     553 +
     554 +
     555 +
     556 + <li class="md-nav__item">
     557 + <a href="../video/" class="md-nav__link">
     558 + Working with video
     559 + </a>
     560 + </li>
     561 +
     562 + 
     563 +
     564 +
     565 +
     566 +
     567 +
     568 +
     569 +
     570 + <li class="md-nav__item">
     571 + <a href="../edid/" class="md-nav__link">
     572 + Tuning HDMI EDID
     573 + </a>
     574 + </li>
     575 +
     576 + 
     577 +
     578 +
     579 +
     580 +
     581 +
     582 +
     583 +
     584 + <li class="md-nav__item">
     585 + <a href="../audio/" class="md-nav__link">
     586 + HDMI audio
     587 + </a>
     588 + </li>
     589 +
     590 + 
     591 +
     592 +
     593 + </ul>
     594 + </nav>
     595 + </li>
     596 +
     597 + 
     598 +
     599 +
     600 +
     601 +
     602 + 
     603 +
     604 +
     605 +
     606 +
     607 +
     608 +
     609 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     610 +
     611 +
     612 +
     613 +
     614 +
     615 +
     616 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
     617 +
     618 +
     619 +
     620 +
     621 +
     622 +
     623 +
     624 +
     625 +
     626 +
     627 +
     628 +
     629 +
     630 +
     631 +
     632 + <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
     633 + Peripheral devices
     634 + <span class="md-nav__icon md-icon"></span>
     635 + </label>
     636 +
     637 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
     638 + <label class="md-nav__title" for="__nav_4">
     639 + <span class="md-nav__icon md-icon"></span>
     640 + Peripheral devices
     641 + </label>
     642 + <ul class="md-nav__list" data-md-scrollfix>
     643 +
     644 +
     645 +
     646 +
     647 +
     648 +
     649 +
     650 + <li class="md-nav__item md-nav__item--nested">
     651 +
     652 +
     653 +
     654 +
     655 +
     656 +
     657 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4_1" >
     658 +
     659 +
     660 +
     661 +
     662 +
     663 +
     664 +
     665 +
     666 +
     667 +
     668 +
     669 + <label class="md-nav__link" for="__nav_4_1" id="__nav_4_1_label" tabindex="0">
     670 + Keyboard & mouse
     671 + <span class="md-nav__icon md-icon"></span>
     672 + </label>
     673 +
     674 + <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_1_label" aria-expanded="false">
     675 + <label class="md-nav__title" for="__nav_4_1">
     676 + <span class="md-nav__icon md-icon"></span>
     677 + Keyboard & mouse
     678 + </label>
     679 + <ul class="md-nav__list" data-md-scrollfix>
     680 +
     681 +
     682 +
     683 +
     684 +
     685 +
     686 + <li class="md-nav__item">
     687 + <a href="../mouse/" class="md-nav__link">
     688 + Mouse modes
     689 + </a>
     690 + </li>
     691 +
     692 + 
     693 +
     694 +
     695 +
     696 +
     697 +
     698 +
     699 +
     700 + <li class="md-nav__item">
     701 + <a href="../bluetooth_hid/" class="md-nav__link">
     702 + Bluetooth HID
     703 + </a>
     704 + </li>
     705 +
     706 + 
     707 +
     708 +
     709 +
     710 +
     711 +
     712 +
     713 +
     714 + <li class="md-nav__item">
     715 + <a href="../arduino_hid/" class="md-nav__link">
     716 + Arduino HID (USB, PS/2)
     717 + </a>
     718 + </li>
     719 +
     720 + 
     721 +
     722 +
     723 + </ul>
     724 + </nav>
     725 + </li>
     726 +
     727 + 
     728 +
     729 +
     730 +
     731 +
     732 +
     733 +
     734 +
     735 + <li class="md-nav__item">
     736 + <a href="../msd/" class="md-nav__link">
     737 + Mass Storage Drive
     738 + </a>
     739 + </li>
     740 +
     741 + 
     742 +
     743 +
     744 +
     745 +
     746 +
     747 +
     748 +
     749 + <li class="md-nav__item">
     750 + <a href="../usb_ethernet/" class="md-nav__link">
     751 + Ethernet-over-USB
     752 + </a>
     753 + </li>
     754 +
     755 + 
     756 +
     757 +
     758 +
     759 +
     760 +
     761 +
     762 +
     763 + <li class="md-nav__item">
     764 + <a href="../usb_serial/" class="md-nav__link">
     765 + Serial-over-USB
     766 + </a>
     767 + </li>
     768 +
     769 + 
     770 +
     771 +
     772 +
     773 +
     774 +
     775 +
     776 +
     777 + <li class="md-nav__item">
     778 + <a href="../gpio/" class="md-nav__link">
     779 + GPIO (pins, relays, lamps, etc)
     780 + </a>
     781 + </li>
     782 +
     783 + 
     784 +
     785 +
     786 + </ul>
     787 + </nav>
     788 + </li>
     789 +
     790 + 
     791 +
     792 +
     793 +
     794 +
     795 + 
     796 +
     797 +
     798 +
     799 +
     800 +
     801 +
     802 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     803 +
     804 +
     805 +
     806 +
     807 +
     808 +
     809 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
     810 +
     811 +
     812 +
     813 +
     814 +
     815 +
     816 +
     817 +
     818 +
     819 +
     820 +
     821 +
     822 +
     823 +
     824 +
     825 +
     826 +
     827 + <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
     828 + Advanced usage
     829 + <span class="md-nav__icon md-icon"></span>
     830 + </label>
     831 +
     832 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
     833 + <label class="md-nav__title" for="__nav_5">
     834 + <span class="md-nav__icon md-icon"></span>
     835 + Advanced usage
     836 + </label>
     837 + <ul class="md-nav__list" data-md-scrollfix>
     838 +
     839 +
     840 +
     841 +
     842 +
     843 +
     844 + <li class="md-nav__item">
     845 + <a href="../vnc/" class="md-nav__link">
     846 + Using VNC
     847 + </a>
     848 + </li>
     849 +
     850 + 
     851 +
     852 +
     853 +
     854 +
     855 +
     856 +
     857 +
     858 + <li class="md-nav__item">
     859 + <a href="../multiport/" class="md-nav__link">
     860 + Multiport KVM-over-IP
     861 + </a>
     862 + </li>
     863 +
     864 + 
     865 +
     866 +
     867 +
     868 +
     869 +
     870 +
     871 +
     872 + <li class="md-nav__item">
     873 + <a href="../wol/" class="md-nav__link">
     874 + Wake-on-LAN the server
     875 + </a>
     876 + </li>
     877 +
     878 + 
     879 +
     880 +
     881 +
     882 +
     883 +
     884 +
     885 +
     886 + <li class="md-nav__item">
     887 + <a href="../ipmi/" class="md-nav__link">
     888 + IPMI & Redfish integration
     889 + </a>
     890 + </li>
     891 +
     892 + 
     893 +
     894 +
     895 +
     896 +
     897 +
     898 +
     899 +
     900 + <li class="md-nav__item">
     901 + <a href="../pst/" class="md-nav__link">
     902 + Persistent storage
     903 + </a>
     904 + </li>
     905 +
     906 + 
     907 +
     908 +
     909 +
     910 +
     911 +
     912 +
     913 +
     914 + <li class="md-nav__item">
     915 + <a href="../prometheus/" class="md-nav__link">
     916 + Prometheus monitoring
     917 + </a>
     918 + </li>
     919 +
     920 + 
     921 +
     922 +
     923 + </ul>
     924 + </nav>
     925 + </li>
     926 +
     927 + 
     928 +
     929 +
     930 +
     931 +
     932 + 
     933 +
     934 +
     935 +
     936 +
     937 +
     938 +
     939 + <li class="md-nav__item md-nav__item--section md-nav__item--nested">
     940 +
     941 +
     942 +
     943 +
     944 +
     945 +
     946 + <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
     947 +
     948 +
     949 +
     950 +
     951 +
     952 +
     953 +
     954 +
     955 +
     956 +
     957 +
     958 + <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
     959 + Development
     960 + <span class="md-nav__icon md-icon"></span>
     961 + </label>
     962 +
     963 + <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
     964 + <label class="md-nav__title" for="__nav_6">
     965 + <span class="md-nav__icon md-icon"></span>
     966 + Development
     967 + </label>
     968 + <ul class="md-nav__list" data-md-scrollfix>
     969 +
     970 +
     971 +
     972 +
     973 +
     974 +
     975 + <li class="md-nav__item">
     976 + <a href="../3d_printing/" class="md-nav__link">
     977 + Cases for 3D printing
     978 + </a>
     979 + </li>
     980 +
     981 + 
     982 +
     983 +
     984 +
     985 +
     986 +
     987 +
     988 +
     989 + <li class="md-nav__item">
     990 + <a href="../building_os/" class="md-nav__link">
     991 + Building PiKVM OS
     992 + </a>
     993 + </li>
     994 +
     995 + 
     996 +
     997 +
     998 +
     999 +
     1000 +
     1001 +
     1002 +
     1003 + <li class="md-nav__item">
     1004 + <a href="../api/" class="md-nav__link">
     1005 + HTTP API reference
     1006 + </a>
     1007 + </li>
     1008 +
     1009 + 
     1010 +
     1011 +
     1012 + </ul>
     1013 + </nav>
     1014 + </li>
     1015 +
     1016 + 
     1017 +
     1018 + </ul>
     1019 +</nav>
     1020 + </div>
     1021 + </div>
     1022 + </div>
     1023 +
     1024 +
     1025 +
     1026 + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
     1027 + <div class="md-sidebar__scrollwrap">
     1028 + <div class="md-sidebar__inner">
     1029 +
     1030 + 
     1031 +<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
     1032 +
     1033 +
     1034 +
     1035 +
     1036 +</nav>
     1037 + </div>
     1038 + </div>
     1039 + </div>
     1040 +
     1041 +
     1042 +
     1043 + <div class="md-content" data-md-component="content">
     1044 + <article class="md-content__inner md-typeset">
     1045 +
     1046 +
     1047 + 
     1048 + 
     1049 + <h1> usb limits</h1>
     1050 + 
     1051 +<details class="warning">
     1052 +<summary>USB limitations</summary>
     1053 +<p><strong>TL;DR: By default, you can add only one additional device to choose from, such as USB Ethernet, or USB Serial, or an extra Mass Storage Drive.</strong></p>
     1054 +<p>There is a hardware limit on the number of devices that can be emulated at the same time.
     1055 +Each USB device uses so-called endpoints to communicate with the host.
     1056 +Depending on the type, the device consumes a different number of endpoints,
     1057 +while their total number is limited by the capabilities of the chip, <strong>for Raspberry Pi it is 8</strong>.</p>
     1058 +<p>It is quite difficult to calculate the number of endpoints used, but in the case of PiKVM,
     1059 +you can focus on the following numbers:</p>
     1060 +<table>
     1061 +<thead>
     1062 +<tr>
     1063 +<th>Device</th>
     1064 +<th>Endpoints</th>
     1065 +</tr>
     1066 +</thead>
     1067 +<tbody>
     1068 +<tr>
     1069 +<td>Keyboard, mouse</td>
     1070 +<td>1 for each</td>
     1071 +</tr>
     1072 +<tr>
     1073 +<td>Mass Storage Drive</td>
     1074 +<td>2 for each</td>
     1075 +</tr>
     1076 +<tr>
     1077 +<td>USB Ethernet, USB Serial</td>
     1078 +<td>3 for each</td>
     1079 +</tr>
     1080 +</tbody>
     1081 +</table>
     1082 +<p>V2 and V3 emulates one mouse by default, V4 emulates two mouses. Thus, V2 and V3 use 4 endpoints, and V4 uses 5 by default.</p>
     1083 +<p>Creating an axtra Mass Storage Drive consumes additional endpoints, as well as USB Serial and USB Ethernet,
     1084 +so only a limited number of devices can be selected for the final configuration, for example, one USB Ethernet.</p>
     1085 +<p>If you need something more non-standard, you can <a href="../msd/#disable-msd">disable the regular Mass Storage Drive</a>
     1086 +and the additional mouse (on V4) to free up some extra endpoints.</p>
     1087 +<p>The <code>kvmd-otg</code> service is responsible for setting up USB emulation. If the endpoint limit is exceeded,
     1088 +the service will not be able to start and no emulated USB device will work.</p>
     1089 +<p>In the log it looks something like this:</p>
     1090 +<div class="highlight"><pre><span></span><code># journalctl -u kvmd-otg
     1091 +...
     1092 +kvmd-otg[382]: kvmd.apps.otg INFO --- ===== Preparing complete =====
     1093 +kvmd-otg[382]: kvmd.apps.otg INFO --- Enabling the gadget ...
     1094 +kvmd-otg[382]: kvmd.apps.otg INFO --- WRITE --- /sys/kernel/config/usb_gadget/kvmd/UDC
     1095 +kvmd-otg[382]: OSError: [Errno 524] Unknown error 524
     1096 +kvmd-otg[382]: During handling of the above exception, another exception occurred:
     1097 +kvmd-otg[382]: Traceback (most recent call last):
     1098 +kvmd-otg[382]: File "/usr/bin/kvmd-otg", line 9, in &lt;module&gt;
     1099 +kvmd-otg[382]: main()
     1100 +kvmd-otg[382]: File "/usr/lib/python3.10/site-packages/kvmd/apps/otg/__init__.py", line 348, in main
     1101 +kvmd-otg[382]: options.cmd(config)
     1102 +kvmd-otg[382]: File "/usr/lib/python3.10/site-packages/kvmd/apps/otg/__init__.py", line 278, in _cmd_start
     1103 +kvmd-otg[382]: _write(join(gadget_path, "UDC"), udc)
     1104 +kvmd-otg[382]: File "/usr/lib/python3.10/site-packages/kvmd/apps/otg/__init__.py", line 83, in _write
     1105 +kvmd-otg[382]: with open(path, "w") as file:
     1106 +kvmd-otg[382]: OSError: [Errno 524] Unknown error 524
     1107 +systemd[1]: kvmd-otg.service: Main process exited, code=exited, status=1/FAILURE
     1108 +systemd[1]: kvmd-otg.service: Failed with result 'exit-code'.
     1109 +systemd[1]: Failed to start PiKVM - OTG setup.
     1110 +</code></pre></div>
     1111 +<p>In this case, you need to disable some of the previously enabled devices and restart PiKVM.</p>
     1112 +</details>
     1113 + 
     1114 + 
     1115 + 
     1116 + 
     1117 + 
     1118 +
     1119 + </article>
     1120 + </div>
     1121 +
     1122 +
     1123 + </div>
     1124 +
     1125 + <button type="button" class="md-top md-icon" data-md-component="top" hidden>
     1126 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
     1127 + Back to top
     1128 + </button>
     1129 +
     1130 + </main>
     1131 +
     1132 + <footer class="md-footer">
     1133 +
     1134 + <div class="md-footer-meta md-typeset">
     1135 + <div class="md-footer-meta__inner md-grid">
     1136 + <div class="md-copyright">
     1137 +
     1138 + <div class="md-copyright__highlight">
     1139 + Copyright &copy; 2018-2022 Maxim Devaev
     1140 + </div>
     1141 +
     1142 +
     1143 + Made with
     1144 + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
     1145 + Material for MkDocs
     1146 + </a>
     1147 +
     1148 +</div>
     1149 +
     1150 + </div>
     1151 + </div>
     1152 +</footer>
     1153 +
     1154 + </div>
     1155 + <div class="md-dialog" data-md-component="dialog">
     1156 + <div class="md-dialog__inner md-typeset"></div>
     1157 + </div>
     1158 +
     1159 + <script id="__config" type="application/json">{"base": "..", "features": ["navigation.indexes", "navigation.sections", "navigation.top", "navigation.tracking", "navigation.expand", "search.highlight", "search.share", "search.suggest"], "search": "../assets/javascripts/workers/search.208ed371.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
     1160 +
     1161 +
     1162 + <script src="../assets/javascripts/bundle.b4d07000.min.js"></script>
     1163 +
     1164 +
     1165 + </body>
     1166 +</html>
Please wait...
Page is in error, reload to recover