[HN Gopher] Show HN: TinyPilot - Build a KVM over IP using a Ras...
       ___________________________________________________________________
        
       Show HN: TinyPilot - Build a KVM over IP using a Raspberry Pi
        
       Author : mtlynch
       Score  : 493 points
       Date   : 2020-07-23 13:56 UTC (9 hours ago)
        
 (HTM) web link (mtlynch.io)
 (TXT) w3m dump (mtlynch.io)
        
       | cmer wrote:
       | This is a game-changer! Thanks for all your work on this.
       | 
       | Do you have any plans to allow controlling more than 1 computer
       | remotely? I'd love to implement this in my homelab.
        
         | mtlynch wrote:
         | > _This is a game-changer! Thanks for all your work on this._
         | 
         | Thanks for reading!
         | 
         | > _Do you have any plans to allow controlling more than 1
         | computer remotely? I 'd love to implement this in my homelab._
         | 
         | Right now, I can't think of a way to do this. The Pi only has
         | one USB OTG port, so I don't know of a way to share that among
         | multiple machines.
         | 
         | A friend suggested an interesting solution of chaining
         | TinyPilot together with a "dumb" multi-machine KVM that
         | supports switching via hotkey. So it would go:
         | 
         | TinyPilot -> legacy KVM -> server1, server 2, ...
         | 
         | You could still use a web interface and hop between servers
         | using keyboard shortcuts that the legacy KVM understands.
        
           | cmer wrote:
           | That's a really great and simple idea, actually. I might give
           | this a try.
        
       | dukoid wrote:
       | I have given up on KVMs altogether and I am using the following
       | approach now:
       | 
       | - Most monitors have multiple digital inputs. Connect each
       | computer to one of them
       | 
       | - Use a USB switch keyboard and mouse
       | 
       | - Before switching the USB switch, press the "lock screen" key
       | combination and make sure locking the screen drops the video
       | signal
       | 
       | - After switching the USB switch, pressing shift should bring up
       | the login dialog and re-activate video output. Since the monitor
       | has just lost the signal in the previous step, it will scan the
       | inputs and switch to the desired signal.
        
         | jbob2000 wrote:
         | I did this for a while, the problem is that there's really no
         | such thing as a high-quality USB switch. They are all garbage
         | and mess with USB devices in some way (at least at the consumer
         | level).
        
           | btgeekboy wrote:
           | I have an old Belkin USB 2.0 switch from god-knows when that
           | works beautifully. I use it to share a hub with a keyboard
           | and mouse attached. I've given up trying to find a 4K60 x2
           | DisplayPort KVM that doesn't suck.
        
             | stamps wrote:
             | I have this one[0] that works great.
             | 
             | Wendell at Level1Techs does good work and there's even
             | newer ones that can do 8k30.
             | 
             | [0] https://store.level1techs.com/products/kvm-switch-dual-
             | monit...
        
               | ajford wrote:
               | I couldn't find the details on their site, but do you
               | know whether the 3.5mm audio jack is 3 or 4 pole? I've
               | found that most KVMs have the 3 pole jack, meaning it
               | just supports audio out, but I need 4-pole so my headset
               | microphone works.
        
             | bombita wrote:
             | I have been using this at 4k60 (but 1 monitor) flawlessly
             | for 8 months.
             | 
             | https://www.startech.com/Server-Management/KVM-
             | Switches/2-po...
        
               | duskwuff wrote:
               | Seconding a recommendation for Startech's KVMs. They have
               | an _excellent_ USB stack which handles complex USB
               | hierarchies flawlessly -- I 've successfully used mine
               | with chained hubs, weird HID devices like Apple
               | keyboards, and non-HID devices like disks, audio
               | interfaces, and even stranger things.
        
           | GordonS wrote:
           | I switched from a KVM to a USB switch a few years back, and
           | haven't had any real issues with it. I don't think it was
           | expensive either, just a standard USB 3 switch with only 2
           | ports. Occasionally it takes more than a few seconds after
           | pressing the button for the switch to happen, but that's
           | about it.
        
             | BoysenberryPi wrote:
             | This is my experience as well. I currently use a USB switch
             | that I got off of Amazon for about 15 bucks. It typically
             | "just works." Press the button, wait 2 seconds and my input
             | devices have switched.
        
               | TacticalTable wrote:
               | Care to share it? The one I have will work for a few
               | switches, then both Windows/Mac will eventually stop
               | recognizing the port its connected to until a reboot.
        
               | HEHENE wrote:
               | I have been using one from IOGEAR (SKU GUS432CA1KIT) for
               | the last 6 months and I haven't had a single problem with
               | it.
               | 
               | I use it to switch all of my peripherals (keyboard,
               | mouse, wireless headset dongle, webcam, and mixer)
               | between my desktop and my MacBook several times per day
               | and have not had a single failure yet.
        
           | JeremyNT wrote:
           | > _I did this for a while, the problem is that there 's
           | really no such thing as a high-quality USB switch. They are
           | all garbage and mess with USB devices in some way (at least
           | at the consumer level)._
           | 
           | A lot of these things seem to "help" by inserting their own
           | USB host device that acts as a proxy for attached USB
           | peripherals. This allows them to do (ostensibly) useful
           | useful things such as intercepting keypresses and responding
           | to them (e.g. by switching to another input).
           | 
           | Don't get one of those, get a _physical_ switch that just
           | connects the leads to the correct port when pressed. I got
           | this USB 2.0 switch (all you need for input devices) for $12
           | [0]. I 'm sure there are others available with more ports,
           | but this is all I needed.
           | 
           | [0] https://www.amazon.com/gp/product/B01HV1N674
        
             | weaksauce wrote:
             | Yeah I second this. I have a physical usb switch to move
             | keyboard and mouse over. It works flawlessly.
             | 
             | Though, I also use a KVM to switch over the video but it's
             | separate.
        
         | tyingq wrote:
         | That's handy for the KVM part, but this is mostly about KVM
         | over IP.
        
         | TaylorGood wrote:
         | I just bought a PiBookPro (1) that I discovered on Twitter.
         | It's a laptop shell for RPi at $80. Kind of a wild backstory
         | but hard to beat that $
         | 
         | 1) Http://pibookpro.com
        
         | derefr wrote:
         | I feel like the ideal here would be for there to be a
         | Thunderbolt/USB4 display which has multiple Thunderbolt
         | "source" ports, and _also_ USB-C connectors for peripherals,
         | where the display itself is acting as a USB controller
         | available over Thunderbolt-PCIe, with the USB-C sockets
         | attached to said USB controller. Change the input on the
         | monitor, and the USB-controller PCIe card in the display would
         | be hotplugged out of one computer and into the other.
         | 
         | Even more ideally, the display would _also_ have a built-in
         | Bluetooth controller that stays active regardless of the USB
         | controller 's attach state, such that Bluetooth peripherals
         | could be paired _to the display itself_ rather than to the OS
         | (i.e. you 'd manage the pairings through the OSD of the
         | display); and then these devices would be presented through the
         | display's USB controller as always-on direct-attached USB
         | devices -- much like VM hypervisors present host-attached
         | Bluetooth HID devices to their VM guests. (As a side-benefit of
         | that, as long as the computer's BIOS understood Thunderbolt
         | well-enough to display anything during boot, then even
         | Bluetooth peripherals would also work during boot.)
        
           | monadic2 wrote:
           | I've just given up on Bluetooth for rapid device switching.
           | It's too time consuming to be figuring out which device your
           | headphones are attached to & disconnecting/reconnecting to
           | resolve, especially e.g. when someone calls you. Wires are
           | very, very easy to read and debug.
           | 
           | I have AirPods but will only pair them to my phone.
        
             | ryanar wrote:
             | AirPods are the first blutooth type device that I switch
             | all the time. If I am hooked up to my phone and connect on
             | my Mac, instantly switches, if I am paired to my Mac and
             | get a call on my phone and accept it, it opens a menu
             | asking if I want to use airpods, tap that, instant audio /
             | mic. The switching is so seamless and it makes the tech
             | phenomenal for me.
        
           | philippantoni wrote:
           | The LG ultrawide monitor with Thunderbolt that I have from a
           | couple years ago (34UC97) mostly does this -- It has a two-
           | port USB hub which I use for my mouse and keyboard, which it
           | routes either through the Thunderbolt interface to my MacBook
           | or a separate USB cable to my PC, depending on whether
           | Thunderbolt or one of the DisplayPort/HDMI display inputs is
           | selected.
           | 
           | (I'd guess their newer models work similarly but I haven't
           | confirmed.)
        
       | burnte wrote:
       | Oy! I've been designing a HAT for a year to do this, but it would
       | take VGA rather than HDMI. You've done well! :D
        
       | RealStickman_ wrote:
       | Funnily enough I'm waiting for my hdmi to usb capture card to
       | arrive so I can play on my PS3 while also having the option of
       | switching back to the desktop instantly.
        
         | swiley wrote:
         | That has to add a lot of latency.
         | 
         | Although honestly I think some of the latency complaints by
         | gamers are a little much. Personally I have a Bluetooth
         | mouse/keyboard connected to my desktop with a super duper cheap
         | projector pointed into the living room and can play FPS games
         | on it just fine.
        
           | RealStickman_ wrote:
           | It probably won't work. Though I think it could still be a
           | fun project. Maybe I'll use it in the same way the author
           | does in the end.
        
           | ctas wrote:
           | It has a lot of latency indeed. I tried the raspberry as a
           | Steam Link alternative, but as far as I know the ethernet
           | port is not suitable (?). I've also read that it actually
           | gets worse if you plug in any USB peripherals. Correct me if
           | I'm wrong though.
        
             | swiley wrote:
             | Yes the Ethernet port is on USB so you're sharing (the
             | already small) bandwidth between that and all the
             | peripherals.
             | 
             | This may have changed with the pi4 though.
        
       | yetanta wrote:
       | Using a timer on a screen to SEE latency. Why did I not think of
       | that?!
        
         | mtlynch wrote:
         | Thanks for reading!
         | 
         | I got the idea from danman, but his setup is much cooler than
         | mine:
         | 
         | https://blog.danman.eu/new-version-of-lenkeng-hdmi-over-ip-e...
        
       | cerberusss wrote:
       | Fantastic project. Amazing how you overcame each obstacle, and
       | very well written to boot. Kudos.
       | 
       | Quite funny how you brought 1000 ms latency down to 200 ms. I
       | wonder how this compares to iDRAC and that Raritan device.
        
         | mtlynch wrote:
         | Thanks for reading!
         | 
         | Yeah, it was kind of like the perfect difficulty level for this
         | kind of project. If it was two months of work to get it working
         | at all, I probably would have gotten discouraged, but it worked
         | out that every couple weeks I was rewarded with a breakthrough
         | that substantially improved the latency until it was finally a
         | practical tool.
        
         | cm2187 wrote:
         | I don't know about iDRAC but I used raritan a bit for some home
         | projects and it's not super fun. I couldn't connect it on HDMI
         | when the server was already running, it had to be connected
         | before the boot. For both VGA and HDMI, it sort of works, there
         | is a clunky but functional java desktop application, the screen
         | is often off by a dozen pixels (part of the screen hidden) and
         | the pointer too.
         | 
         | For new servers, I just buy a supermicro motherboard with IPMI
         | and stop worrying. You can set up an IP based firewall within
         | IPMI, so that only a handful of IPs can even connect, plus a
         | very strong password, and I am not too worried about exposing
         | it to the WAN (I know it's not a great idea but I don't know
         | any alternative that doesn't require another U in a
         | datacentre)..
        
         | EvanAnderson wrote:
         | I've used virtually all of the iDRACs. They're probably in that
         | 200ms area (based on my gut feeling w/ no empirical
         | measurements). They've been fairly responsive in my experience.
        
         | tinco wrote:
         | I manage a machine that has an AST2500 (competitor to iDRAC in
         | smaller vendors like Gigabyte, it rocks), and I didn't notice
         | latency, so it's probably under 200ms.
        
           | numpad0 wrote:
           | Most iDRAC type products actually use that same Aspeed
           | ASTxxxx with vendor firmwares. If a server reports "Matrox
           | G200e" as display adapter it's it.
        
       | captn3m0 wrote:
       | Was stuck with latency issues on a unrelated streaming project,
       | thanks for writing about ustreamer - going to try that out.
        
       | znpy wrote:
       | the best thing in this article is the immediate link named "I
       | don't want your life story; just tell me how to build it "
        
         | mtlynch wrote:
         | Haha, that was inspired by my experience of searching cooking
         | recipes online.
        
           | erikig wrote:
           | Which begs the question - which cooking recipes start off
           | with a biography of the author? Now I want to see those!
        
       | jbj wrote:
       | I use barrier on my raspberry pi, and have a keyboard shortcut to
       | pick wich machine receives the keystrokes and mouse movement.
       | Additionally to this keyboard shortcut, I also need to click a
       | button on my monitor since it can receive hdmi from multiple
       | machines.
       | 
       | It works great, If I could get it done with only a keyboard
       | shortcut, I would only pick this solution if it does not induce
       | additional lag.
        
       | naggie wrote:
       | Brilliant idea. I have an idea to extend this!
       | 
       | 1. A relay to reset the PC like iDRAC/iLO
       | 
       | 2. 2 dual pole relay to move a USB flash drive to and from the PC
       | it's connected to, in combination with (1) you could then boot
       | ISOs remotely by dd-ing the ISO to the flash drive and then
       | connecting it to the host PC with a relay
        
         | [deleted]
        
         | agwa wrote:
         | It should be possible for the Raspberry Pi to emulate a USB
         | flash drive using the OTG connection, though I'm not sure if it
         | can emulate a keyboard and a mass storage device at the same
         | time. It would be a very valuable feature for sure.
        
           | Nexxxeh wrote:
           | Alternatively, just use a microcontroller for the USB HID
           | stuff, and talk to it via BT/WiFi/40-pin header.
        
           | tmzt wrote:
           | The kernel at least supports that, through the gadgetfs
           | filesystem.
        
         | bronco21016 wrote:
         | The GPIO should easily be able to handle doing a reset by
         | connecting with jumpers directly to the motherboard. I guess
         | there may be some circuitry required... I'm not positive on how
         | the standard motherboard pins work.
        
       | tmikaeld wrote:
       | Raspberry 3B is too slow for this?
        
         | Nexxxeh wrote:
         | More likely the lack of OTG being an issue, as elsewhere in the
         | comments the author showed the CPU usage of the Pi 4. It's not
         | even making a dent. It's super low overhead. I'd be surprised
         | if it maxed out a 3B.
        
       | Jaruzel wrote:
       | I have a similar solution in place. For _reasons_ ... I have a
       | machine that is 100% locked down by the client. I cannot install
       | software on it, nor does it have any sort of remote access tools
       | installed on it. To keep my work space clear, and negate the need
       | for second monitor (as I need to be able to see the screen of
       | this machine AND my main machine at the same time), I use an
       | Elgato CamLink HDMI dongle[1] to capture the video output of the
       | machine, and I use VLC to display it in a window on my main
       | desktop. I use a bluetooth keyboard and mouse combo to control
       | it. The latency on the video capture is very low (it doesn 't
       | feel any more laggy than a normal remote sesson), and as an added
       | bonus I can screen capture the video stream, which is really
       | useful for documentation. The CamLink is locked at 1080p, so as
       | long as the machines desktop resolution matches that, I get a
       | very crisp picture. I've been using this setup for almost two
       | years now, on a daily basis with no issues.
       | 
       | --
       | 
       | [1] https://www.elgato.com
        
       | lxe wrote:
       | Oh man, the video latency woes. I've been going through the same
       | motions trying to get minimal-latency stream-to-browser from an
       | Amcrest (Dahua) IP camera. Their app and cloud services leaves
       | much to be desired, so I tried to roll my own. They cameras send
       | h264-encoded stream over rtmp but also through some kind of
       | custom HTTP protocol which their browser app (requiring a scary
       | binary native plugin) decodes, but it's challenging to reverse-
       | engineer.
        
       | louwrentius wrote:
       | I respect this effort, I think it's a great accomplishment.
       | 
       | I think most people are better off building their own home (lab)
       | server with a motherboard that supports IPMI (KVM over IP)
       | natively.
       | 
       | Supermicro (only brand I've experience with) or other brands that
       | build server motherboards all include IPMI with HTML5 support.
       | 
       | Doing so will save you a lot of trouble. Maybe you may not be
       | able to run the kind of hardware you want, but it's all a
       | tradeoff. You have to choose.
       | 
       | I have HP Microservers (quiet) and a Proliant (loud) all with ILo
       | (HP IMPI) and it's awesome.
        
       | grosswait wrote:
       | I just finished building a Pi KVM about a month ago using project
       | https://github.com/pikvm. Has been great so far.
        
         | mtlynch wrote:
         | Yeah, I'm really impressed with that project and love Max's
         | work! There's a bit of a barrier to entry though, as it
         | requires you to compile the OS yourself. My goal with TinyPilot
         | was to create something that's easier for newcomers to install
         | and simpler for me to reason about.
        
       | pdimitar wrote:
       | I'll use the opportunity to ask for a KVM switch help here if
       | that's not breaking the board's rules (and I feel it's related to
       | the topic):
       | 
       | I got a company laptop recently and bought an Aten CS782DP KVM
       | switch so I can reuse my gaming PC's monitor on it (using
       | DisplayPort 1.4 cables). But when using my gaming PC the display
       | now flickers very often when gaming and it's driving me crazy.
       | Some people said it's the length of the DP 1.4 cables (they are
       | very short though, <1m), some even say gas spring chairs
       | introduce signal disturbance (wtf?), others say make sure the DP
       | 1.4 cables don't touch any other cables.
       | 
       | In any case: would a KVM switch like the one in the post help? I
       | suspected NVIDIA's G-Sync but turning it off for several days
       | made no difference. :(
       | 
       | For the record, the display runs at 144Hz in both Win10 and
       | Ubuntu. But it only flickers in Win10. The only thing that comes
       | to mind is that the miniDP-to-DP cable that runs from my PC's
       | videocard to the KVM switch is no good -- but not sure. I sadly
       | can't use the KVM switch's DP-to-DP cable because my videocard
       | only has miniDP on its rear.
       | 
       | Anybody had similar struggles in the past?
        
         | techntoke wrote:
         | Have you tried lowering to 60Hz in Windows to see if it helps?
         | What about another switch?
        
           | pdimitar wrote:
           | In the very few games I play 60Hz is way too low so I haven't
           | attempted it at all -- I want the maximum Hz/FPS.
           | 
           | As for another switch, I am open to ideas if you have them.
           | In my local market I was only able to find like 2-3 of them
           | [that support DP 1.4] and they are all north of $250 -- which
           | I don't mind but it would be non-pleasant to buy 5+ of them
           | just to experiment.
           | 
           | Maybe my requirement for DP 1.4 is silly though. Maybe HDMI
           | would be fine.
        
             | techntoke wrote:
             | My guess is that switch simply doesn't support 144Hz, so if
             | it works at 60Hz then you have your answer.
        
               | pdimitar wrote:
               | They advertise 4K@60Hz and my display is at 2560x1080 @
               | 144Hz. Math says my case should be supported but yeah,
               | computer standards are often non-intuitive. I'll try with
               | 120Hz and then 60Hz just to ascertain limits as you
               | suggest. Thanks.
        
       | systemBuilder wrote:
       | This guy has apparently never heard of lynx browser. He wasted
       | $40 and a lot of time because of that!
        
       | x87678r wrote:
       | This looks awesome. I was looking for a solution like this last
       | year. I budgeted a few hundred bucks but couldn't find anything.
       | Ideally would have a way to handle a few different boxes.
       | 
       | I did see something called Intel AMT, part of Intel vPro.
       | https://www.howtogeek.com/56538/how-to-remotely-control-your...
       | Does anyone have experience with this? (I have AMD box so doesn't
       | help me) - actually looks like AMD has similar
       | https://developer.amd.com/tools-for-dmtf-dash/
        
         | mixmastamyk wrote:
         | Is it trustworthy, or full of backdoors?
        
         | Haemm0r wrote:
         | It works, however you need a non-free special client called VNC
         | Viewer Plus [1]. Afaik it is Windows only. You can enable
         | regular VNC protocol capabilities for AMT[2], but then you
         | can't use the interesting stuff anymore.
         | 
         | [1] https://www.realvnc.com/en/products/viewerplus/ [2]
         | https://blog.michael.kuron-germany.de/2011/10/using-intel-am...
         | 
         | //edit: link [2] added.
        
           | tyingq wrote:
           | This seems to show a reasonable option from Linux:
           | https://www.cyberciti.biz/faq/remotely-access-intel-amt-
           | kvm-...
        
           | vetinari wrote:
           | You can use meshcommander[1], which has a nodejs version that
           | runs under linux and mac.
           | 
           | Then you just have to pay attention to your certs (if you are
           | using https), because browser policy will apply.
           | 
           | [1] https://www.meshcommander.com/meshcommander
        
         | an_opabinia wrote:
         | I just set up AMT for a bunch of servers.
         | 
         | It is possible but extremely tricky to set up AMT headless on a
         | self built Intel. You basically need to press keyboard keys at
         | the right time. Too challenging without a display.
         | 
         | Devices don't load AMT configuration from USB by default unless
         | a vendor configured them to. In which case the vendor just
         | ships you AMT enabled in the first place.
         | 
         | Better to just image the disk on a different computer.
        
         | wolfhumble wrote:
         | If a machine/server doesn't have built in IPMI, I am using an
         | Adderlink Digital ipeps and control it that way 1). Apart from
         | the built in RealVNC server, it also has HDMI video, USB and
         | virtual media support among other things. I have no
         | relationship with Adderlink, but I am a happy user of this
         | product. Not cheap, but worth the price IMHO.
         | 
         | 1) https://www.adder.com/en/kvm-solutions/adderlink-digital-
         | ipe...
        
         | cr3ative wrote:
         | AMT is great. I use it with https://www.meshcommander.com/ -
         | though learning how to provision the machine correctly in Admin
         | Mode so it doesn't pop up a pin-entry screen on the remote end
         | is "fun"!
        
         | R0b0t1 wrote:
         | vPro is error prone and may require multiple setup attempts. If
         | you want to use it on anything but the same LAN there is a
         | built-in VPN. If you can find anything about the AMD version
         | I'd be interested, they don't seem to publish anything unless
         | you are a partner.
        
           | close04 wrote:
           | Here are some AMD tools, docs are thin on the ground. [0]
           | 
           | I have a boatload of Intel vPro machines spread throughout
           | multiple countries (or the basement) and connect to them both
           | via internet (mutual TLS authentication) and VPN. Never had
           | any reliability issues at provisioning or operating. I had an
           | old AMT v2.1 machine that was a bit unreliable, needed to be
           | manually powered on once in a while or the remote connection
           | wouldn't work.
           | 
           | I wholeheartedly recommend Meshcommander [1] for this.
           | 
           | [0] https://developer.amd.com/tools-for-dmtf-dash/
           | 
           | [1] https://www.meshcommander.com/meshcommander
        
       | wjdp wrote:
       | Not tried anything like this before: looking at TinyPilot and Pi-
       | KVM which one should I use?
       | 
       | I'm happy doing some soldering. Is there anything that TinyPilot
       | has that Pi-KVM doesn't?
       | 
       | Has Pi-KVM added support for the HDMI dongle you used?
        
         | mtlynch wrote:
         | Thanks for reading!
         | 
         | I'd say, in short, Pi-KVM is more feature rich, while TinyPilot
         | is simpler and more approachable with less functionality.
         | 
         | Pi-KVM has several nice features that TinyPilot doesn't yet
         | have, including power management, mouse support,
         | authentication, TLS, and USB storage mounting.
         | 
         | TinyPilot has a quicker install. Pi-KVM requires you to compile
         | the OS locally, which takes about an hour. If you've got a
         | Raspberry Pi OS system (aka Raspbian) already, you can
         | configure it for TinyPilot with two commands, and the install
         | takes 5-10 minutes.
         | 
         | One of my goals with TinyPilot was to avoid a requirement for
         | soldering/jumper cables, but if you don't mind soldering, that
         | might not matter much to you. Pi-KVM works without soldering as
         | well, but the documentation assumes soldering/breadboards.
         | 
         | I hope that there's space for both projects, and Max and I have
         | talked about ways to potentially collaborate.
        
         | mdevaev wrote:
         | Pi-KVM can do all the same, and it also supports IPMI, VNC, and
         | Mass Storage Device emulation. The only difficulty is that for
         | the USB dongle to work, you need to add a couple of options to
         | the config, because it's not yet supported out of the box.
         | Everything else will work on its own.
        
       | cptnapalm wrote:
       | I tried something like this, but instead of a KVM, a remote
       | "terminal" for multiseat in Linux. usbip worked fine, but I
       | couldn't get video to work for a damn. The idea was to have the
       | main computer stream video from one seat to the RP and act as a
       | client for the keyboard and mouse attached to the RP using usbip.
       | Had I been able to get the video portion to work, then next step
       | would have been setting the RP to boot to a fullscreen vlc (or
       | what have you) which displayed the gdm login screen from the main
       | computer.
        
       | rglover wrote:
       | This is great, Michael :) One question before I buy...
       | 
       | I'd like to use these to do development work like you suggested,
       | too. Is the Hacker option the build with the best latency/least
       | issues (set it and forget it)?
        
         | mtlynch wrote:
         | Thanks for reading!
         | 
         | Honestly, the overhead from TinyPilot is so small that it's
         | just a question of how powerful you want the device for other
         | activities.
         | 
         | Here's a screenshot I took earlier today on a Pi 4 with 2 GB of
         | RAM. TinyPilot is streaming video over WiFi, and top shows that
         | it's only using ~4% of CPU and ~2% of RAM:
         | 
         | https://imgur.com/GadzDOr
        
       | [deleted]
        
       | ape4 wrote:
       | Sorry to ask but what's it cost to buy a KVM over IP device?
        
         | EvanAnderson wrote:
         | You're not going to find a decent one sub $500. Used devices
         | can be had for less, but most of the older ones I've seen use
         | terrible Java-based clients that are a major pain to get
         | running on modern browsers. For multi-device KVMs you usually
         | have to figure in the prices for the individual interface
         | module dongles that plug into each computer, too.
         | 
         | StarTech makes a USB-to-KVM that looked promising to me, but
         | it's still >$400: https://www.startech.com/Server-
         | Management/KVM-Switches/Port...
        
           | ape4 wrote:
           | Thanks and that StarTech doesn't have HDMI. Maybe its cloud
           | VMs that are removing the need for KVM over IP. I still want
           | it.
        
             | AaronFriel wrote:
             | I wouldn't say cloud VMs have removed the need, they've
             | just made infra admins have to live without it. For the
             | most part it's fine on well supported and tested OSes but
             | before the container/kubernetes revolution I managed some
             | personal VMs with esoteric distros in various clouds and so
             | many things have to go right for that to work. A bad update
             | or install of grub, initrd, dhclient, a handful of system
             | services and maybe systemd, or sshd and the machine is
             | effectively dead. You have to attach the disk to another
             | machine to debug it.
             | 
             | A more extreme example was when I went down the rabbit hole
             | of trying to set up remotely unlocked full disk encryption
             | on a cloud, just to see what was possible. This was maybe
             | 4-5 years ago. This involved a pre-boot environment that
             | would run from memory only, packaged into an initramfs and
             | used dropbear as an ssh server to accept a connection.
             | 
             | I really, really wish cloud VMs had virtual KVMs. It turns
             | out, it's really easy to mess this up, and when you do
             | recovery is Non Trivial.
             | 
             | The best I found was that Azure's cloud allows you to
             | connect (read/write!) a virtual serial port via web
             | interface so you can use the Linux serial console to
             | recover. That was a game changer for playing with this. If
             | dropbear failed to come up, I _at least_ got a shell into
             | the pre-boot environment.
        
               | rob-olmos wrote:
               | Google Cloud also provides read/write serial ports over
               | SSH: https://cloud.google.com/compute/docs/instances/inte
               | racting-... -- but I think AWS still doesn't.
               | 
               | One thing I've ran into was root not having a password
               | since the cloud images are typically SSH key auth only.
               | That was annoying when trying to fix something simple
               | like iptables or entering maintenance mode for a disk
               | check.
        
               | AaronFriel wrote:
               | Thank you! I wasn't aware this was possible back then.
               | I'm glad they implemented this.
        
       | ed25519FUUU wrote:
       | I can't tell if the USB port that usually delivers power is the
       | only one that supports "USB Device Mode" (USB OTG). Can someone
       | confirm? If I could use _any_ port, then there would be no need
       | for powering the pi with a serial USB adapter.
        
         | radiowave wrote:
         | From memory, this is correct. It's only the USB-C port that
         | allows OTG operation. I remember a while back seeing someone
         | selling a special splitter cable for the rpi4 which provided 2
         | separate USB connectors, one for powering the rpi and one for
         | attaching the pi as a gadget to a USB host port. But I can't
         | remember where I saw it, and haven't been able to turn up a
         | link to it.
        
       | bsharitt wrote:
       | Nice, I had thought about an HDMI capture device but plugged it
       | in, played with it for about 5 minutes trying to tune out the
       | latency(I'm not exactly and ffmpeg pro) and didn't make much head
       | way. I was also using either a pi 2 or 3, so that maybe have been
       | part of the problem too. I'm glad someone actually had the time
       | to see it through and put together a solution. Having one of
       | these would have been super useful the past few days when I was
       | having kernel panics due to a failing root disk on my home
       | server, but I had any spare monitors stored away because I'm in
       | the middle of moving. I'll have to give this a look once I get
       | all settled in again.
        
       | martinmunk wrote:
       | I've long considered creating a KVM IP thingie for VGA video with
       | a BeagleBone Black. IIRC the PRUs (200mhz coprocessors) and the
       | on-chip ADC should be fast enough to sample the video as-is, and
       | have DMA access into main-cpu ram.
        
       | dannyw wrote:
       | Hey OP, I was reading your linked HomeLab article and you
       | mentioned you'd rather have gotten a mobo with integrated GPUs
       | next time.
       | 
       | Actually, motherboards do not include integrated graphics, it's
       | all in the CPU/APU. The mobo you linked would not provide
       | graphics either.
       | 
       | AMD unfortunately does not have a high end APU released to
       | consumers right now (there are some 4000 series, but only to OEMs
       | I believe). However, for a HomeLab setup, you might find a cheap
       | GPU to be useful for many things (including hardware video
       | transcoding).
        
         | mtlynch wrote:
         | Thanks for reading and for the note! I didn't realize that
         | about display not being available on motherboards generally.
         | 
         | I just built a new homelab server and ended up buying a
         | separate GPU again. My new mobo is the SuperMicro
         | MBD-X10DAL[0], which has no onboard display.
         | 
         | [0] https://www.supermicro.com/en/products/motherboard/X10DAL-i
        
         | cptskippy wrote:
         | > Actually, motherboards do not include integrated graphics,
         | it's all in the CPU/APU.
         | 
         | You should probably qualify that as current generation. There's
         | plenty of last gen Intel and AMD solutions with onboard
         | dedicated graphics.
         | 
         | I think the advent of GPU acceleration in servers and APUs for
         | low end machines has impacted demand for these motherboards in
         | current gen products.
        
         | PaulKeeble wrote:
         | I have MSI 450 MITX board and a Ryzen 3600 that is doing
         | NAS/homeserver duty and it refused to POST without a GPU
         | plugged in. Given its MITX and it only has a single slot
         | needing it for PCI-E is a real pain, I intended to use it for
         | SATA ports so it hurt my plans quite a bit.
         | 
         | Its motherboard dependent but its definitely something to check
         | with AMD Ryzen motherboards.
        
         | dsr_ wrote:
         | For years and years, many motherboards _did_ have graphics sets
         | integrated in. These days, you 'll still see that on a lot of
         | server-class motherboards.
         | 
         | e.g.
         | https://www.supermicro.com/en/products/motherboard/M11SDV-4C...
         | -- the line about AST2500 BMC graphics? That runs a VGA port.
        
           | btown wrote:
           | I'm guessing the rationale for this is that even if the
           | server's CPU can support onboard graphics, you wouldn't want
           | to change the CPU's load profile just by plugging in a
           | monitor to debug something? Or even to support CPUs that have
           | no onboard graphics support?
        
             | dsr_ wrote:
             | Mostly the second -- the high end Intel and AMD CPUs don't
             | have integrated graphics, and nobody wants to spend
             | precious PCIe slots on a graphics card that won't be used
             | except at install time and emergencies... or is more useful
             | as a GPU slot that never produces video output.
        
       | numpad0 wrote:
       | That MacroSilicon MS2109 capture is super interesting! $11
       | shipped for 1080p30 capture is unbeatable. I wonder what kind of
       | host SBC is going to be necessary to build a clone BlackMagic
       | ATEM Mini without choking up USB bandwidth.
        
         | mmastrac wrote:
         | A USB 2.0 device can use up to 480Mbps and MJPEG is on the
         | order of 10s of Mbps (estimated), so I don't think you're
         | anywhere near needing to worry about bandwidth.
         | 
         | Your biggest complication will be real-time re-encoding and
         | compositing with effects.
        
           | numpad0 wrote:
           | I can't believe it until I see it. I've seen USB EHCI choke
           | up from just three webcams.
        
         | mtlynch wrote:
         | Ah! That's the name of it. Thanks! I didn't know how to tie it
         | to any kind of identifier.
        
       | devwastaken wrote:
       | Are there any projects that can do similar but on a VPS? Used to
       | be a group video service called rabb.it where you could get a
       | streamed Ubuntu desktop for groups that you can control through
       | the browser.
        
         | tfolbrecht wrote:
         | Check out Apache Guacamole! "clientless remote desktop gateway"
         | basically VNC/RDP through a browser
         | 
         | https://guacamole.apache.org/
        
       | nanomonkey wrote:
       | KVM = Keyboard, Video and Mouse
       | 
       | For those, like me, who were ignorant of this particular use of
       | KVM, and couldn't find it in the article or comments.
        
       | superkuh wrote:
       | The hardest part of this seems to be the V in the KVM and the
       | solution of the author's is pretty neat. But I think things could
       | still be improved by dropping his keyboard/mouse setup and just
       | switching to the standard: barrier/synergy,
       | https://github.com/debauchee/barrier
        
         | jseutter wrote:
         | While Barrier works well, TinyPilot is more capable. TinyPilot
         | gives you full control of the remote machine, including BIOS
         | screens. With Barrier you rely on having Barrier running on
         | both machines, so you can't use it for things like reinstalling
         | an operating system. Or fixing a machine that won't boot.
        
         | mtlynch wrote:
         | Thanks for reading!
         | 
         | I'm not familiar with Barrier, but is my understanding correct
         | that it requires software running on the target computer? If
         | that's true, it wouldn't work for things like installing a new
         | OS or managing BIOS because you'd have to wait for the computer
         | to boot up fully before you're able to enter keyboard or mouse
         | input.
        
       | Neil44 wrote:
       | I got a cheap Lantronix Spider KVM from eBay, it works quite
       | well. Mine was an older VGA model but you can use it with a DP or
       | HDMI to VGA adapter.
        
       | somethingwitty1 wrote:
       | Awesome! I could have built this with what I have at home, but I
       | purchased because this is something worth supporting.
        
         | mtlynch wrote:
         | Thanks for reading and for purchasing!
        
       | mudkip wrote:
       | This is pretty cool (for managing servers cheaply), but I remain
       | disappointed that remotely controlling computers over a network
       | with low latency is still a difficult task. I've been trying to
       | find a way to use a bunch of machines remotely over my LAN (for
       | gaming / media playback on multiple devices), and have been
       | somewhat disappointed at the quality / latency of the various
       | options I've played around with. It's especially disappointing
       | when you have 10gbps networking, and sending uncompressed 1080p60
       | video over over the network with a couple ms of latency should be
       | trivial, from a bandwidth perspective. Obviously this is a
       | different problem than what you're trying to solve (remote
       | management, so you have to do HDMI + USB stuff in hardware,
       | adding some latency), but it's still annoying that there aren't
       | great lower latency software options.
        
         | xiao_haozi wrote:
         | Steam link does it, and fast enough to play games with no
         | noticeable latency.
         | 
         | Not sure what the magic is, though.
        
           | baq wrote:
           | the latency is absolutely noticeable, the human brain adapts
           | quite well though. i've switched mid-playthrough of ori and
           | the blind forest (highly recommended btw) from a link to
           | native 144hz and was blown away how easy the game has become
           | :)
           | 
           | the point still stands: most games are very playable via a
           | steam link.
        
           | mudkip wrote:
           | I haven't tried Steam Link yet, but I might give it a shot. I
           | was originally looking for purely remote desktop stuff for a
           | combination of managing computers and gaming, so I was mostly
           | testing stuff not specifically marketed to gamers. Ideally
           | I'd also like something that does software<->hardware (at
           | higher latency obviously), so I can stream older computers or
           | game consoles to a variety of devices as well.
           | 
           | I did end up trying Parsec, since I saw some people
           | recommending it, and that was terrible. Latency was fine
           | (~10ms software <-> software) and video quality was alright,
           | but audio quality was terrible despite being set to the
           | highest option - which is especially bad, because there's no
           | option to send uncompressed audio, and whatever "optimization
           | work" they were doing to reduce bandwidth made their entire
           | product unusable, despite the fact that there's no need to
           | try saving 1mbps over a wired LAN.
        
             | fock wrote:
             | the cool thing about this solution seems also, that it
             | conveniently alleviates the "need a screen"-problem of the
             | windows-screencapture-approach.
        
         | mindslight wrote:
         | SPICE (virt-viewer) performs well enough for my every day web
         | browsing with VMs. The performance is annoying but adequate
         | over wifi/WAN.
        
           | mudkip wrote:
           | I'm curious how well this works over a LAN - over a WAN, my
           | expectations are way lower because of actual limitations from
           | going over the internet, so I'm fine with some latency /
           | quality loss.
        
             | mindslight wrote:
             | Sorry, I was trying to imply that it does work great over a
             | wired LAN. I run my everyday browsers on a separate
             | physical machine, communicating over gigabit ethernet.
             | Videos with sound generally play fine, although I often
             | youtube-dl longer ones for usability's sake. The main
             | source of flakiness I've had is from opening too many tabs
             | in low-memory VMs.
        
         | SparkyMcUnicorn wrote:
         | Have you tried out https://github.com/moonlight-
         | stream/moonlight-qt ?
         | 
         | If all your host machines are Windows 8+, then Parsec is
         | fantastic and has clients for every major OS other than iOS.
        
           | mudkip wrote:
           | I looked into Moonlight, but don't have any nVidia cards
           | laying around here to test with.
           | 
           | I tried Parsec on one machine and was super disappointed.
           | Video quality and latency were fine, but audio sounded like
           | crap, despite streaming at 512kbps. Since there's no option
           | to stream uncompressed audio, and no debug options to figure
           | out why it sounded so terrible, I had to write off their
           | entire product as unusable.
        
       | ed25519FUUU wrote:
       | Really neat project. Small optimization, you can use the RPI's
       | gpu accelerated h264 decoding and free up a lot of CPU:
       | 
       | Change:                   ffmpeg -vcodec libxh264
       | 
       | To:                   ffmpeg -vcodec h264_mmal
        
         | mtlynch wrote:
         | Thanks, good tip! I ended up not using ffmpeg after I
         | discovered uStreamer, but this is a good trick to have in my
         | back pocket.
        
       | fowl2 wrote:
       | Interesting! I wonder if it'd be possible to skip the capture
       | card and have the pi act as a USB graphics adaptor.
       | 
       | Most firmware environments probably don't support them I guess.
        
       | twicetwice wrote:
       | There was another approach to the same problem posted on HN just
       | yesterday[0], which took a very different route! Very interesting
       | to compare/contrast the two appraches. That one doesn't do video,
       | just gets you a terminal. (Not sure if it would let you mess with
       | the BIOS or install a new OS like this one does? Not familiar
       | enough with serial ports to assess.)
       | 
       | But anyway, TinyPilot is super cool! I'd love to get it set up
       | one day. And the "life story" as to how it came to be was really
       | neat, and made me feel like I understood the whole solution.
       | Great article!
       | 
       | [0] https://news.ycombinator.com/item?id=23915777
        
       | vidanay wrote:
       | I'm all in favor of cool projects, and I have done my fair share
       | of useless experiments. But wouldn't it just be simpler to attach
       | a dumpster-sourced monitor and keyboard to the server in question
       | for the 3-4 times a year you brick it? To me the idea of a
       | locally placed 1:1 KVM "switch" (huh? it's not switching anything
       | if it's 1:1) is crazy. It makes sense if it is remotely located,
       | but not if it's within your own home.
        
         | CyberDildonics wrote:
         | Remote monitors like this are occasionally used in offices so
         | that powerful workstations can be put in racks. I'm not
         | completely convinced it is a great idea, even for that
         | application, but it does get used in those instances quite a
         | bit.
        
         | toomuchtodo wrote:
         | Makes sense if you want the flexibility to do it from anywhere
         | over IP, even across the house.
        
         | cm2187 wrote:
         | Every time I update windows and reboot, I never know if the
         | server is bricked or if it is just windows taking ages to
         | update.
         | 
         | Also if you use TPM / full disk encryption for a server in
         | colocation, it only takes a firmware update for TPM to request
         | to reenter the key on reboot.
        
         | mtlynch wrote:
         | Thanks for reading!
         | 
         | > _But wouldn 't it just be simpler to attach a dumpster-
         | sourced monitor and keyboard to the server in question for the
         | 3-4 times a year you brick it?_
         | 
         | Maybe it's just personal preference, but I'd much rather plug
         | in a Raspberry Pi than a whole monitor and keyboard. My server
         | is tucked away in the corner without a good desk surface to
         | place a keyboard and monitor.
         | 
         | With the Pi, I can just plug it and go back to my desk and do
         | everything through the browser. It's also nice for when I have
         | to Google things about why it's not booting, I can just do it
         | from another browser tab rather than physically walking back
         | and forth between computers.
        
         | detaro wrote:
         | not sure why you talk about "switch"? The word never appears in
         | the article?
         | 
         | And at such a no-brainer price (especially if you already have
         | a Pi), kind of worth it just to avoid the hassle of moving a
         | screen around.
        
           | vidanay wrote:
           | https://mtlynch.io/tinypilot/raritan-kvm.png
        
             | mtlynch wrote:
             | I think the confusion is that the original comment was
             | worded as if _I_ called TinyPilot a switch, but I think you
             | 're actually saying you think it's strange that Raritan
             | calls _their_ device a switch, despite the fact that it 's
             | only 1-port.
        
         | dewey wrote:
         | Of course it would be simpler, but it's also addressed multiple
         | times in the blog post why he decided to do it anyway.
         | 
         | I'm glad he did because it looks like a fantastic project.
        
       | Naac wrote:
       | This is a great writeup.
       | 
       | I wonder if this can be extended to connect multiple servers to a
       | single Pi.
        
       | EvanAnderson wrote:
       | This looks great. To be useful in the datacenter environments I
       | work in such a device would need VGA capture, though. Most
       | servers don't have HDMI ports in my experience.
       | 
       | Anybody know of a good, cheap V4L2 USB-based VGA capture dongle?
        
         | louwrentius wrote:
         | Most servers have built-in IPMI.
        
         | diabeetusman wrote:
         | Could always add another dongle with something like this:
         | https://www.amazon.com/dp/B07BKYBKGP maybe?
        
           | bserge wrote:
           | Most obvious choice, but the USB port might not be able to
           | provide enough power. You could splice in an external adapter
           | with a bit of work, though :)
        
           | Nexxxeh wrote:
           | I've used one of these a couple of time and they work great,
           | not yet hooked up into the HDMI cap device but can test if
           | anyone is interested.
        
         | Nextgrid wrote:
         | Not sure if they are still easily available but look into
         | https://blog.benjojo.co.uk/post/userspace-usb-drivers.
        
       | crypt1d wrote:
       | KVMs have been a the bane of my existence over the last 10 years.
       | Almost 99% of the time they come with some ancient Java
       | dependency that breaks on any modern OS and is barely usable. Not
       | to mention the nightmare-ish KVM experience big players like OVH
       | and Hetzner provide.
       | 
       | This is a superior solution to all of them.
        
         | louwrentius wrote:
         | No. Modern IPMI is HTML5 based. Lightyears better than the old
         | java/.net clients or this (awesome) hobby project.
        
       | Severian wrote:
       | You could also probably add power/reset functionality by hacking
       | something like this:
       | 
       | https://www.amazon.com/SilverStone-Technology-Wireless-Compu...
       | 
       | Or possibly just wiring up a transistor to the power button pin
       | (not sure if it sources or sinks) between motherboard and the Pi,
       | and just hold it high until it boots.
        
       | fuzzy2 wrote:
       | Very nice. I've been looking into the same thing, with a
       | different video grabbing method though: A HDMI-to-CSI bridge
       | (Auvidea B101/B102). Hopefully, this could somehow work with a
       | Raspberry Pi Zero W, which is very compact and also supports USB-
       | OTG. Unlike the Raspberry Pi 4, a single USB port can easily
       | power it.
       | 
       | Unfortunately, the much more powerful B102 bridge isn't
       | available. :(
        
       | bronco21016 wrote:
       | Because of COVID my work on the road has come to a screeching
       | halt. I was always using my iPad with an external keyboard for
       | nearly everything and became really accustomed to having iMessage
       | always a key command away.
       | 
       | Now I work at home at a desktop with Ubuntu. It's a huge
       | disruption to use iMessage now as I have to switch
       | devices/keyboards.
       | 
       | I had the thought of doing almost exactly this with the
       | Ligthning-> HDMI adapter and some form of Bluetooth keyboard
       | emulation. I can't wait to build one of these and start
       | experimenting.
        
         | rjeli wrote:
         | oh, i wrote software that does this over airplay wifi mirroring
         | and a bluetooth dongle as a mouse. i gave up because I couldn't
         | convince my phone to take a tablet hid profile for seamless
         | mouse capture. it's messy but I'll throw it on github in a bit
        
       | annoyingnoob wrote:
       | A cool solution to a common problem.
        
       | bserge wrote:
       | This is some great timing, I might need a KVMoIP setup soon and I
       | couldn't find anything cheap. Very nicely written article,
       | thanks!
        
         | mtlynch wrote:
         | Awesome, glad it was helpful! Thanks for reading.
        
       | mtlynch wrote:
       | Author here. Happy to answer any questions or take any feedback
       | about this post.
        
         | simlevesque wrote:
         | How would you remotely connect to something like this ? using
         | something like ngrok ?
        
           | mtlynch wrote:
           | Yeah, I haven't looked into that much because everything is
           | on my local network. ngrok looks like it would work. One of
           | my users is looking into remote.it, which seems like a
           | similar service.
        
             | gyrgtyn wrote:
             | zerotier
        
             | jimatremoteit wrote:
             | I work for remote.it. If you or your users need any help
             | setting up remote access to the TinyPilot let us know. This
             | looks like a great application. We can make ssh/VNC/http on
             | the Pi available remotely over internet as a free service
             | no problem.
        
               | mtlynch wrote:
               | Oh, that's awesome. Thank you!
        
           | fock wrote:
           | or VPN on your router? or just get a VPS and run wireguard.
        
         | ghaberek wrote:
         | Would a Pi Zero W work for this, or do you need a full-size Pi
         | 4? I would think that with the HDMI dongle doing the hardware
         | MJPEG encoding, a Pi Zero might suffice. It'd be really neat to
         | A) bring the cost down another $30 and B) be able to package
         | everything into a tiny 3D printed case.
        
           | Nexxxeh wrote:
           | The immediate issue would be the Pi Zero W only has one
           | usable (micro)USB port, the other port is Power In only. If
           | you run it for OTG, you can't use it for the dongle.
           | 
           | There would be ways around this though, perhaps using a cheap
           | microcontroller for the USB HID stuff.
        
             | ghaberek wrote:
             | Yeah I forgot that only one of the USB ports actually does
             | data. I guess you could use a Teensy that interfaces
             | through the GPIO pins and pretends to be the keyboard and
             | mouse.
        
               | Nexxxeh wrote:
               | That's what I'm thinking, or worst case, one that
               | communicated via USB to TTL adaptors. Or an ESP-based
               | board that connects over WiFi. Or BT-enabled board.
               | 
               | Combined with a HDMI switch, you could then control
               | multiple devices with just one Pi+Cap device.
               | 
               | I've been looking to do something similar for a while,
               | albeit possibly with Windows as that's where I've (very
               | rusty Delphi) programming experience.
        
           | mtlynch wrote:
           | Thanks for reading!
           | 
           | > _Would a Pi Zero W work for this, or do you need a full-
           | size Pi 4?_
           | 
           | I tested Key Mime Pi (the keyboard-only version) on the Pi
           | Zero W and it worked great. I haven't tested TinyPilot on the
           | Pi Zero W, but I _think_ it will work. The video encoding is
           | happening in the HDMI dongle, so it doesn 't hammer resources
           | much. I don't have a USB to microUSB adaptor on hand, but
           | I'll order one now and see if it works.
           | 
           | > _be able to package everything into a tiny 3D printed
           | case._
           | 
           | Yeah, that would be neat! One of the biggest issues I have
           | with TinyPilot's setup right now is that it looks kind of
           | like a bunch of random hobbyist parts stuck together. A 3D
           | printed case would be good and wouldn't have the heat issues
           | that Pi 4 has.[0]
           | 
           | [0] https://www.jeffgeerling.com/blog/2019/best-way-keep-
           | your-co...
        
             | cricalix wrote:
             | You might also be able to use the "standard" radio kit
             | metal boxes - tap some standoffs, carefully drill some
             | holes for wires etc. Dunno which works out better for the
             | world - ordering a pre-fab metal box that you have to do
             | some work on (or perhaps use
             | https://www.frontpanelexpress.com/ to get a customised
             | enclosure), or printing something from plastic. Might
             | depend on production volume, metal used etc.
        
             | trm42 wrote:
             | Do you happen to have any idea, whether older RPIs like 1
             | or 2 could work for this fast enough? Have some of those
             | laying around.
        
               | mtlynch wrote:
               | The video capture part should work, but I don't believe
               | they support USB OTG, so they wouldn't be able to
               | impersonate the keyboard.
               | 
               | The official documentation[0] says all Pi devices have
               | USB OTG, but I'm not sure if there's something else about
               | the Pi 4 and Pi Zero W that allows USB gadget mode
               | because I've never found anyone talking about using it
               | before recent generations of Pi. This StackExchange
               | answer says the A and the A+ had it, but that the 2
               | doesn't.[1]
               | 
               | [0] https://www.raspberrypi.org/documentation/hardware/ra
               | spberry... [1] https://raspberrypi.stackexchange.com/ques
               | tions/71613/how-to...
        
               | Scaevolus wrote:
               | I'd expect the Pi Zero W to be fast enough to pass
               | through the MJPEG stream and impersonate the keyboard,
               | which should cut the cost by $20+ plus however much you
               | save on not needing a fancy case.
        
               | [deleted]
        
               | mtlynch wrote:
               | Yeah that's true. I stopped thinking about the Pi Zero W
               | early in the project because I assumed it would choke on
               | video encoding. When I discovered that the HDMI dongle
               | was doing the heavy lifting, I forgot to revisit that
               | assumption. I'm going to order an USB to micro-USB
               | adaptor to test it out because it would slim things down
               | significantly.
        
           | Deathmax wrote:
           | I think you might run into a lack of connectivity on the Pi
           | Zero W. Since the only data USB port has to run in device
           | mode, I would assume you can't connect the HDMI capture
           | device.
        
         | wojciii wrote:
         | Cool project, but what about power management? What happens if
         | the PC being controlled crashes and does not let you reboot it
         | using keyboard shortcut?
         | 
         | I'm might be damaged by testing and working with embedded
         | development.
        
           | zyx321 wrote:
           | If you need access to the power and reset, you can replace
           | the respective buttons with a cheap relay switch controlled
           | by GPIO. If you know what you're doing you can also solder
           | your own circuit using opto-isolators instead of relays, to
           | reduce the power draw on the Pi.
        
             | hedora wrote:
             | This isn't a bad choice:
             | 
             | https://wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SK
             | U...
             | 
             | It's $17 for four relays, expandable to 16. If you wire it
             | "normal closed" then the relays will only draw power while
             | it's resetting the other machine.
             | 
             | However, the relays are only rated for 3 amps. (360W at
             | 120V). Also, the board is labeled backwards so, the NO port
             | is normal closed, and NC is normal open.
             | 
             | Has anyone found something that's similarly plug and play
             | with a higher amperage rating?
             | 
             | Edit: this would work as a switched AC outlet (to replace a
             | four outlet PDU) or for hot wiring the power / reset
             | buttons. You could do both buttons and the AC line and have
             | a relay left over.
             | 
             | I'd feel funny running AC that close to the lower button
             | wires though (if cross those wires, it will certainly let
             | the magic smoke out of your motherboard).
        
           | fanatic2pope wrote:
           | Plug it into a smart outlet running tasmota.
        
           | mtlynch wrote:
           | Thanks for reading!
           | 
           | > _Cool project, but what about power management? What
           | happens if the PC being controlled crashes and does not let
           | you reboot it using keyboard shortcut?_
           | 
           | Yeah, that's one of the limitations. TinyPilot can't control
           | power for the target computer.
           | 
           | I don't know of any way to manage power without connecting
           | the Pi to the target machine's motherboard, but that
           | increases complexity significantly. I'm using this for a
           | homelab, so it's easy for me to walk over and cycle power if
           | that ever comes up, but for this to support more remote
           | scenarios, I'd need to address this.
        
             | baq wrote:
             | hook up a gpio pin to a reset switch jumper somehow?
        
             | davidzweig wrote:
             | Wake-on-Lan can handle powering on. It should be possible
             | to directly connect a RPi GPIO pin directly to the 0.1"
             | headers on the motherboard.. the power and reset buttons
             | are just closing a circuit to pull high/pull low an input
             | pin. Use a 1k resistor between the Rpi and motherboard
             | headers for protection.
        
             | oakwhiz wrote:
             | Perhaps a fake USB device that issues power or sleep button
             | requests could work. I had limited success with this on
             | Linux using an HID keyboard emulator. However this won't
             | work on a machine that's too far gone to respond to USB,
             | and that's also an issue with the physical power button as
             | well. Perhaps an AC latching relay would work to cut power.
        
             | wojciii wrote:
             | APC produces (or rebranded) power control modules you can
             | control over Ethernet. They are probably expensive.
             | 
             | There are most likely cheaper products which would work.
             | You should probably implement some kind of power control
             | interface that could be used. Calling a shell script would
             | be enough and some example implementations provided by your
             | users. :) It doesn't need to be complicated.
        
             | Nexxxeh wrote:
             | A horrible way would be to set the target to power on after
             | power loss. Plug the target into a WiFi-controlled smart
             | plug, like the Belkin Wemo. In the event of catastrophic
             | hard lock, power cycle it at the wall.
             | 
             | A better way would be a relay and microcontroller, which
             | you could also potentially use for the USB HID stuff too.
             | 
             | In theory, you could have a HDMI switch, a single Pi and
             | HDMI grabber, and just a microcontroller board for each
             | target machine that could have power button control,
             | keyboard emulation etc built in.
        
           | FatalException wrote:
           | If the motherboard of the PC being controlled supports Wake-
           | on-Lan that may be a viable option to send a packet from the
           | local subnet to boot up the computer.
           | https://en.wikipedia.org/wiki/Wake-on-LAN
        
           | swsieber wrote:
           | If you can plug stuff into it, just use the KVM from a laptop
           | and sit by it.
        
         | tootie wrote:
         | If this just requires USB and HDMI, it should theoretically
         | work identically a for Mac Mini or even something like a Fire
         | TV, yes? Is there an upper limit on resolution and frame rate
         | for the dongle?
        
           | mtlynch wrote:
           | > _If this just requires USB and HDMI, it should
           | theoretically work identically a for Mac Mini or even
           | something like a Fire TV, yes?_
           | 
           | I believe so, but with the caveat that I haven't tested it.
           | Does Fire TV take USB keyboard input?
           | 
           | I have successfully captured video from a Roku Premiere[0],
           | even though it's HDCP protected. The LKV373A couldn't capture
           | anything out of it, but the $11 dongle did just fine. But
           | that was just video capture. I didn't have a way of sending
           | input to the Roku.
           | 
           | > _Is there an upper limit on resolution and frame rate for
           | the dongle?_
           | 
           | Yes, the limit is 1280x720px @ 30FPS.
           | 
           | [0]
           | https://twitter.com/tinypilotkvm/status/1277994838210875392
        
         | Uhhrrr wrote:
         | I love how this is a project which puts together several
         | different projects which are themselves the product of
         | significant amounts of effort: RPi, the HDMI-USB dongle, the
         | browser, and uStreamer. I think we are in for an interesting
         | decade or so of people plugging things together like this.
         | 
         | I'm curious why you use the browser instead of ffplay for
         | decoding and display. I'd guess ffplay would be faster - but
         | maybe not?
        
           | mixmastamyk wrote:
           | For one, it wraps the screen and input into one window. Using
           | two would be unwieldy.
        
         | fock wrote:
         | and today I was wondering how to solve the video problem!
         | that's great timing.
        
         | tlamponi wrote:
         | Really nice, exactly what I need just now as I'm setting up a
         | remote workstation/part-time server at my families farm, but
         | did not have a motherboard with IPMI/iKVM at hand.
         | 
         | Oh, and thanks for using Proxmox VE! Was positively surprised
         | when I saw our installer flash up out of nowhere :)
        
           | mtlynch wrote:
           | Wow, thank YOU for making Proxmox! I'm switching over after
           | three years of Kimchi[0], and Proxmox does everything so much
           | better.
           | 
           | [0] https://github.com/kimchi-project/kimchi
        
         | silverp1 wrote:
         | Any thoughts on how this could work with VGA for example?
        
           | mtlynch wrote:
           | I believe it should work with a VGA to HDMI adaptor, as
           | another commenter suggested[0], though I haven't tested this
           | personally.
           | 
           | [0] https://news.ycombinator.com/item?id=23928401
        
         | da39a3ee wrote:
         | This isn't an area I know anything about but I really enjoyed
         | your write-up (I still don't know what KVM stands for! But I
         | get that you wanted to act as a physical keyboard and display
         | over IP). From a quick skim of your site it looks like you've
         | worked at large companies and now are doing some independent
         | projects. Do you think you'll go back to working for a company
         | (perhaps a smaller one?), or do you see yourself working
         | independently for many years? I ask because (a) I'm also
         | casting about at a similar point in my career doing independent
         | projects, but (b) I've never worked at a truly large company,
         | and (c) (someone like) you seem(s) like you'd be a great
         | colleague to work with, and (d) my vague ambition is to work
         | for a small company with skilled colleagues that I can learn
         | from and to work on "technical" projects as opposed to product
         | development but (e) I guess, when I see talented people such as
         | yourself apparently rejecting the conventional job market, I
         | partly infer that they've looked at what's on offer and
         | declined and thus that I'm deluding myself in thinking that
         | I'll find something in the conventional job market that I
         | really want.
        
           | mtlynch wrote:
           | Thanks for reading!
           | 
           | > _I still don 't know what KVM stands for!_
           | 
           | Oh, keyboard, video, mouse. The article does define it, but
           | it's a little buried.
           | 
           | > _From a quick skim of your site it looks like you 've
           | worked at large companies and now are doing some independent
           | projects. Do you think you'll go back to working for a
           | company (perhaps a smaller one?), or do you see yourself
           | working independently for many years?_
           | 
           | I'd love to continue working for myself forever. My ideal
           | would be if I could find a business sustainable enough that I
           | can hire 2-5 developers and other teammates to work with me.
           | If I did have to go back to being an employee, I'd probably
           | lean toward something smaller.
           | 
           | It's very much about your temperament, what type of work you
           | enjoy, and how much you value flexibility and autonomy. A
           | good way to test the waters is by building a side business
           | and see if you enjoy it more than your job. You can also
           | read/hear more about the lifestyle in places like Indie
           | Hackers[0], Starter Story[1], and WIP[2].
           | 
           | But I agree with you that you pass up certain kinds of growth
           | by working on your own. I'm happy that I had ~10 years of
           | experience with big companies before doing my own thing. I
           | learn a lot on my own, but I don't think I could have learned
           | a lot of my software "craftsmanship" kind of skills (e.g.,
           | designing for maintainability, creating repeatable, well-
           | documented processes) had I not worked for Google and
           | Microsoft.
           | 
           | [0] https://indiehackers.com
           | 
           | [1] https://starterstory.com
           | 
           | [2] https://wip.chat
        
         | PaulKeeble wrote:
         | Have you looked at a solution for controlling the power on/off
         | yet? This was something I was considering to do with a
         | Raspberry PI and a relay and I figure it is the final part of
         | the solution for when the machine inevitably crashes.
         | Admittedly if its just across the room it was less of a concern
         | but I have had the need to restart while I was away before and
         | it would be nice to be part of the solution.
        
           | MayeulC wrote:
           | This is a pretty simple thing to achieve electrically, just
           | plug something instead of the power button inside the
           | computer. You likely just need one mosfet. If soldering is
           | too uncomfortable, you can find relays to control the main
           | power supply (requires screwing a power supply cable and a
           | couple dupont connectors).
           | 
           | If you don't want to touch anything related to electronics,
           | you could rely on enabling a watchdog on boot-up. Or control
           | if from a smart power supply (you likely have a UPS plugged
           | in, for instance). Use the power after power loss BIOS
           | feature, or WoL to wake it up.
        
         | pdevine wrote:
         | Dude, thanks so much for this. I have a loud machine I'm using
         | for ML stuff and I've been reluctant to move it to the basement
         | as I didn't want to have to run downstairs with a monitor for
         | the odd issue. I also looked at KVMs and was annoyed at the
         | prices. I have a R Pi sitting here I was looking to do a
         | project with. This is perfect!
        
           | mtlynch wrote:
           | Oh, that's great! So glad it was helpful!
        
         | tinco wrote:
         | This is epic, I run a small computer cluster using workstation
         | hardware (AMD 3970X's) and no IPMI boards exist. If I get some
         | time I might build 7 of your little system to manage them all.
         | Thanks!
        
           | mtlynch wrote:
           | Awesome! I'd love to hear how it turns out.
        
       | C1sc0cat wrote:
       | Oh nice I will have to look into this as I was considering Using
       | a dual pc set up for streaming and this would be great for
       | controlling the second pc (mac mini)
       | 
       | I want to have main pc for running ROLLd20 and a daw - then use a
       | mac mini to run the processed audio from my DAW into hangouts.
       | 
       | This is so I can properly play in audio and , music cues as well
       | as altering my voice to suit the character eg a galdos style for
       | a robot
        
         | lukevp wrote:
         | You could probably do this with the loopback features of a
         | podcast style interface and not need a second computer. The one
         | I use is the MOTU M4, the M2 is a little cheaper.
         | 
         | https://m.youtube.com/watch?v=IKjKymjc_R8
        
           | C1sc0cat wrote:
           | Yes I have looked at virtual loop back like Voicemeeter and
           | might be able to do it with the routing aspects of the
           | focusrite software.
           | 
           | It is of course the sort of thing that should be baked into
           | the OS.
        
         | mtlynch wrote:
         | Thanks for reading!
         | 
         | I'm not an audio guy, so I can't comment on how well it would
         | suit that scenario, but it sounds like a neat pipeline, and I'd
         | love to hear about it if you end up building it.
        
           | C1sc0cat wrote:
           | I was more a better way of remote controlling the mac vnc
           | works but its a bit crap.
           | 
           | The main idea was for GM's to use mood music to set the tone
           | or for audio effects the classic red alert should for a sf
           | based game.
           | 
           | What I wanted it for was real time voice changing for
           | character voices - basically the flanged goa'uld or the
           | glados formant shifting robot voice or the classic Dalek
           | voice
        
       | babuloseo wrote:
       | great blog post! will try to watch the video at some point.
        
       | NietTim wrote:
       | Great little project! I had no idea capture cards got that cheap
        
         | mtlynch wrote:
         | Thanks for reading! Yeah, my understanding is that these
         | capture cards are fairly recent. I think my timing was pretty
         | lucky because a lot of earlier projects had to do HDMI->S-Video
         | and S-Video->USB[0] to keep costs down because there weren't
         | any inexpensive HDMI->USB options at the time.
         | 
         | [0] https://github.com/Fmstrat/diy-ipmi#setting-up-the-hardware
        
         | jwatzman wrote:
         | If you're looking to buy the card in the article, I just got
         | one of these https://www.aliexpress.com/item/4000958505670.html
         | which looks to be exactly the same card, and doesn't require
         | scouring eBay. I haven't done much with it yet, but can confirm
         | that it arrived to me in the UK with no issues, and seems to
         | work from a quick test.
        
       | fulafel wrote:
       | A major con of the enterprisey ilom systems (such as the idrac)
       | is their atrocious security track record. You are basically
       | giving up your "the network is untrusted, I can survive its
       | compromise" badge if you plug in one of those.
        
         | parliament32 wrote:
         | Well those ports should never face the internet anyway. Most
         | servers will have a dedicated (physical) port you use for IPMI
         | or whatever -- vlan that and only allow access from your VPN.
         | If you're extra secure you can full on disable the switchport
         | until you need it.
        
           | fulafel wrote:
           | This fail-open "should" is bad besides for the obvious
           | reasons, also because it'll be extra ops complexity compared
           | to a secure kvm widget that you don't have to handle with kid
           | gloves.
           | 
           | (And thirdly because of the sibling comment noted footgun..
           | or silent foot-boobytrap more properly)
        
             | parliament32 wrote:
             | The problem is BMC has an astounding array of features[1]
             | that are worth the operational complexity. This isn't just
             | KVM like in OP's post... being able to remote mount images
             | is a godsend when you're provisioning a server or
             | diagnosing hardware issues or doing a BIOS update on the
             | other side of the globe (with your other alternative being
             | shipping a flash drive[2], then paying $200/hr for DC
             | remote hands to plug it in for you).
             | 
             | [1] https://www.supermicro.com/en/solutions/management-
             | software/...
             | 
             | [2] don't even try to talk about PXE booting if you've
             | never tried to get DHCP+BOOTP to work over a WAN
        
           | extrapickles wrote:
           | Make sure in the BIOS to disable fallback to one of the other
           | ethernet ports. Quite a few IPMIs will listen on eth0 if it
           | looses the dedicated IPMI port link by default.
        
       | iron2disulfide wrote:
       | This is cool. Any chance this would scale for many machines? I
       | have a ~15 machine lab with no KVM setup right now, and could
       | really use something like this if it works for a large number of
       | devices.
        
         | mtlynch wrote:
         | Thanks for reading!
         | 
         | I don't think there's a way to get the Pi to capture video or
         | impersonate keyboards for more than one computer at a time.
         | 
         | A neat idea a friend proposed to me was to buy a "dumb" KVM
         | that supports switching through keyboard hotkeys and use that
         | to scale it to multiple machines. See my comment here:
         | https://news.ycombinator.com/item?id=23928251
        
         | jolmg wrote:
         | I'm not really into electronics, but I imagine it wouldn't be
         | that difficult to control the switch of a cheap KVM-switch with
         | the GPIO pins of the RPi. One might even control multiple KVM-
         | switches and daisy-chain them.
        
           | iron2disulfide wrote:
           | Haha, I am kind of the opposite: I work on electronics, and
           | am not much of a sys admin. One of the problems I've run into
           | is that I haven't found a single switch solution with enough
           | connections. I _could_ build a multi-level multiplexer with
           | many switches, but that 's too much effort. If TinyPilot can
           | support multiple KVM-over-IP connections, it would be a
           | perfect fit for me.
        
             | jolmg wrote:
             | > If TinyPilot can support multiple KVM-over-IP
             | connections, it would be a perfect fit for me.
             | 
             | RPis only have 1 OTG port, though. A device that could get
             | it to handle more machines with that single port would
             | functionally be a KVM-switch. I don't think there's a way
             | around that.
        
       ___________________________________________________________________
       (page generated 2020-07-23 23:00 UTC)