Het PiKVM-project en de ervaringen van de ontwikkelaar: Een interview met Maxim Devaev
op
PiKVM draait op een Raspberry Pi 4 en geeft op afstand toegang tot een PC, een server of een ander apparaat via een netwerkverbinding. De ontwikkelaar van PiKVM, Maxim Devaev, over dit project en over zijn ervaringen.
Wat is PiKVM
De PiKVM software maakt van een Raspberry Pi 4 een goedkope afstandsbediening voor andere computers. De Raspberry Pi wordt rechtstreeks aangesloten op de computer die moet worden bediend. Hij registreert het beeld op het scherm en emuleert een USB muis, toetsenbord en flash-drive. De signalen zijn via Internet toegankelijk door de PiKVM-software op de Raspberry Pi. Alles wat nodig is op de besturende computer is een webbrowser. Het PiKVM-project (de gebruikersinterface is te zien in figuur 1) is open source en de kosten van de hardware zijn minder dan €100, dat is veel minder dan de prijs van commerciële producten. We wilden er graag meer over weten, dus hebben we de ontwikkelaar, Maxim Devaev, geïnterviewd.
Het idee
Claußen: Vertel eerst eens iets over jezelf. Hoe begon jouw interesse voor elektronica? Heb je elektrotechniek gestudeerd aan een universiteit?
Devaev: Ik ben heus geen elektronicaspecialist. Ik weet hoe je een soldeerbout moet vasthouden natuurlijk, en ik kan een eenvoudige schakeling ontwerpen en in elkaar zetten zonder dat die in rook opgaat. Maar ik ben eigenlijk een software engineer. Elektronica is een bijkomende zaak, daar weet ik veel minder van.
Als kind raakte ik al geïnteresseerd in techniek en ik heb veel technische en wetenschappelijke literatuur gelezen. Vanaf het moment dat ik mijn eerste PC kreeg, begon ik me meer en meer in software te verdiepen in plaats van in hardware.
Enkele jaren later, toen ik een studierichting moest gaan kiezen, koos ik voor information security, maar die studie beviel me niet. Het hoger onderwijs in Rusland is erg formeel: vaak is het belangrijker dat je niet zakt voor allerlei bijkomende humanitaire vakken.
Dus ik besloot om het vak in de praktijk te gaan leren en ging werken als softwareontwikkelaar. Ik werkte, werkte en werkte en ik werd steeds beter. Zo belandde ik bij Yandex (de Russische “Google”). Daar heb ik negen volle jaren gewerkt. Ik ontwikkelde gedistribueerde systemen, waar veel besturing en controle van grote infrastructuursystemen aan te pas kwam. Het klinkt niet zo interessant, maar het is wel nodig.
Claußen: Hoe kwam je op het idee voor dit PiKVM-project?
Devaev: Dat is wel een grappig verhaal. Op een keer ging ik op bezoek bij mijn ouders, die 1400 kilometer bij mij vandaan wonen. En terwijl ik daar was, crashte thuis mijn server, die ik altijd aan laat staan. Dat was heel vervelend. Ik moest een vriend vragen om naar mijn huis te gaan om het ding opnieuw op te starten. Dus ik besloot dat ik een internet-KVM nodig had. Ik ging op het Internet naar zo’n ding op zoek, en zag dat dat $500 kostte. Echt waar? Wat zit er in dat $500 moet kosten? Ik las de reviews en ik begreep dat je voor die $500 veel te dure hardware kreeg, in combinatie met afschuwelijke, onbetrouwbare, closed source software met licentiebeperkingen. En een goed apparaat was nergens te koop: ze waren allemaal even slecht. Ik werd er kwaad van. Ik besloot dat ik er principieel tegen was om zo’n hoge prijs te betalen voor die kwaliteit. Als ik iets goeds wilde, zou ik het zelf moeten bouwen. En de rest is geschiedenis.
Claußen: Waarom heb je gekozen voor een Raspberry Pi in dit project?
Devaev: Een Raspberry Pi is gewoon heel handig. Hij was net op de markt en was perfect voor een klein embedded systeem. In feite zou ook een willekeurige andere ARM-computer geschikt zijn geweest, maar de prijs, verkrijgbaarheid en de goede ondersteuning van de fabrikant hebben een belangrijke rol gespeeld. Ik wilde geen tijd verspillen aan het debuggen van apparaten van een onbekend merk, aanpassingen doen aan de kernel en dat soort dingen. Met de Raspberry Pi kon ik me concentreren op het eigenlijke werk.
Naast de Raspberry Pi had ik een video capture-apparaat nodig en een manier om een toetsenbord te emuleren (op dat moment dacht ik nog niet aan een muis). Er waren toen nog geen goedkope VGA-capture-devices verkrijgbaar, dus ik verzon een list: Ik gebruikte een RCA/USB-dongle, die bedoeld was voor het digitaliseren van oude VHS-tapes, in combinatie met een goedkope VGA-RCA-converter (zie figuur 2). De beeldkwaliteit was afschuwelijk, maar goed genoeg om de BIOS in te stellen en op de commandline te werken. Voor het keyboard kocht ik een PS/2-naar-USB-converter en emuleerde ik de PS/2-signalen met I/O-lijnen. Het was goedkoop en primitief, maar het werkte. Uiteindelijk heb ik al die hardware overboord gegooid en koos ik voor een populaire HDMI-converter. De PS/2-converter verruilde ik voor een Arduino met aangepaste software.
Claußen: Wat deed de introductie van de Raspberry Pi 4 voor het project?
Devaev: Naast betere prestatie en een betere beeldkwaliteit, had de Pi 4 twee USB-controllers. Ik kon er één gebruiken om het toetsenbord en de muis te emuleren en zo werd de Arduino overbodig. Ik kon nu ook een virtuele CD-drive implementeren, zodat ik op afstand een nieuw OS op de server kon installeren. Daarmee kreeg de PiKVM een echte voorsprong in prijs en functionaliteit op de concurrentie.
Claußen: Was de PiKVM een deeltijdproject of een hobby?
Devaev: Ik zag het een beetje als mijn persoonlijke speeltje. Ik deed het voor mijn plezier, op mijn eigen, perfectionistische manier. Ik had nooit gedacht dat iemand anders er behoefte aan zou hebben, totdat ik op GitHub een soortgelijk, half vergeten, project tegenkwam (DIY-IPMI). De auteur had dezelfde weg gevolgd, maar had het project laten vallen na de proof-of-concept-fase. Mijn belangstelling was gewekt. Ik begon mijn project onder de aandacht te brengen en ging driftig aan het committen. Ik loste de ene bug na de andere op, voegde steeds meer functies toe en besteedde duizenden uren aan het project. Ik genoot ervan, dat steeds meer mensen mijn software gingen gebruiken. Tot dan toe had ik alleen kleine scripts en zware bedrijfssoftware ontwikkeld.
Wat heb je geleerd?
Claußen: Heb je bij dit project dingen geleerd, die je met andere ontwikkelaars zou willen delen?
Devaev: Nou, ik had wel een interessante ervaring. PiKVM werkt normaal gesproken via een webinterface, maar als alternatief is er ook een zelf-ontwikkelde VNC-server. Dat is gaaf, toch? Een VNC-client gebruiken om een BIOS in te stellen! Ik gebruikte, zowel voor het web als voor VNC, MJPEG om de video over te dragen. Dat is een simpel format, maar het gebruikt erg veel bandbreedte. Voor de browser zou ik H.264 en WebRTC kunnen gebruiken, maar voor VNC kon ik geen volwassen differentiële codering gebruiken.
Ik raapte mijn moed bij elkaar en schreef naar de beheerder van RFBProto (de de-facto beschrijving van de VNC-standaard) en van de TigerVNC-repository met een voorstel: Laten we een nieuwe codering ontwikkelen. Dat is fijn voor gebruikers met een kleine bandbreedte. We hebben lang gediscussieerd over de details en uiteindelijk vonden we een formaat, dat we allemaal geschikt vonden. Daarna ben ik naar IANA gegaan en ik heb gevraagd of ze deze nieuwe VNC-extensie wilden registreren. Ik vreesde dat ze dat zouden afwijzen, want ze hadden al een geregistreerd formaat, zonder documentatie, maar ze gingen ervoor en vertelden me dat dat formaat een overblijfsel was van een samenwerking met een klant uit het verleden. Dus nu ontwikkelen we een officiële TigerVNC-patch voor de allereerste open source H.264 via VNC-extensie! De bètaversie werkt al goed. Het is nog heel nieuw, maar er zijn al VNC-clients en -servers geïnteresseerd om dit te gaan implementeren.
De moraal van het verhaal is: Wees niet bang om met andere projecten te communiceren, hoe monumentaal die ook lijken. En nog iets: Zelfs één persoon kan de ontwikkeling van het hele protocol opstuwen; je moet alleen groot durven denken.
Claußen: Heeft de verschijning van de USB/HDMI-dongle van $10 het PiKVM-project gestimuleerd?
Devaev: Die heeft voor- en nadelen. Vóór de USB-dongle gebruikte ik een HDMI-CSI-bridge (figuur 3) en die had veel voordelen.
Natuurlijk heeft de USB-dongle (figuur 4) een grote rol gespeeld bij het populariseren van PiKVM, want hij is echt goedkoop, maar ik raad het gebruik ervan toch af, vanwege hardwareproblemen: hij is niet erg stabiel
Ik heb van veel mensen gehoord dat ze hem hebben gekocht en er toch spijt van hadden. Vaak zagen ze een blanco scherm en konden niets doen om dat te verhelpen. Een USB-dongle is een black box: je hebt geen idee hoe hij werkt, en als er iets misgaat, kun je het niet oplossen. De bridge, daarentegen, is veel meer open en bijna alle videoverwerking wordt gedaan door de kernel en door mijn software.
Claußen: De PiKVM is een open source project dat (op dit moment) gratis te gebruiken is. Hoe wordt de ontwikkeling gefinancierd? Het lijkt erop, dat je er nu fulltime aan werkt.
Devaev: Eerlijk gezegd had ik geen plan voor de lange termijn en geen inzicht in de markt. Het begon allemaal vorig jaar, toen ik stopte met mijn werk om na te denken over mijn carrière. Ik bleef aan PiKVM werken als een hobby. De community groeide en het leek me geweldig als PiKVM mijn dagtaak zou zijn. Ik heb wel open source projecten gezien, die voor de auteurs hun broodwinning werden. Het was een win-winsituatie: ik zou kunnen doen wat ik echt interessant vind, en gebruikers zouden software van hoge kwaliteit krijgen voor een bescheiden donatie. Bij wijze van test heb ik een Patreon-account gemaakt en aangekondigd dat ik donaties ging accepteren. Ik had geen baan meer en was klaar om PiKVM op verzoek te verbeteren (als iemand snel bepaalde functionaliteit nodig had). Tot mijn verbazing begon ik na een paar maanden winst te maken. Het was veel minder dan mijn vroegere salaris, maar ik hoefde niet meer naar het werk te reizen, ik kreeg eindelijk slaap, en ik ben zelfs wat afgevallen. Het beviel me wel. En ook de gebruikers waren blij. Soms kon ik een bug in een halfuur oplossen, en nieuwe features voegde ik toe in een paar dagen.
Claußen: En krijg je, naast de financiële compensatie, nog meer steun vanuit de community?
Devaev: Ik ben niet zo goed in het schrijven van documentatie, dus veel mensen helpen daarbij. Sommigen schrijven recepten en scripts, of ze komen met nieuwe manieren om functies van PiKVM te gebruiken. Anderen maken bug reports en geven me toegang-op-afstand tot hun hardware, zodat ik problemen kan debuggen. En het allerbelangrijkste: Toen het aantal gebruikers erg groot werd, kon ik niet meer iedereen zelf te woord staan op Discord, dus actieve gebruikers helpen me om nieuwe gebruikers wegwijs te maken. Ze doen nu alleen een beroep op me als ze problemen niet zelf kunnen oplossen. Ik ben die mensen heel dankbaar, want ik kan nu al mijn tijd besteden aan het schrijven van software.
Soms komen mensen met patches voor nieuwe functies of bugfixes, maar dat doen nog niet veel mensen. Ik ben op dit moment praktisch de enige PiKVM-ontwikkelaar. Ik ben wel van plan om mensen in dienst te nemen om fulltime aan de software te werken, als we apparaten gaan verkopen. Dus als je onze hardware koopt, ondersteun je de ontwikkeling van open source software.
Claußen: Hoe kunnen mensen je werk het beste ondersteunen?
Devaev: Naast donaties is praktische hulp altijd welkom. Mensen kunnen helpen door te werken aan onze GitHub-issues.
Claußen: Zijn er ook plannen om commercieel te gaan?
Devaev: Op dit moment zijn de donaties mijn belangrijkste bron van inkomsten. Ik hoor vaak dat ik een commerciële versie van de PiKVM-software met geavanceerde features zou kunnen uitbrengen, maar dat wil ik niet om twee redenen. Ten eerste heeft PiKVM rechtstreeks toegang tot de hardware. Ik zou dat zelf niet vertrouwen bij een apparaat dat niet open source is. Ten tweede zou een paywall ertoe leiden dat iemand een fork van de open software zou gaan maken en gratis professionele features zou gaan maken, waarmee een deel van de community zou weglopen.
De andere manier om het project te gelde te maken, die nu wordt voorbereid, is mijn eigen hardware te verkopen (PiKVM v3 HAT) (figuur 5). Die zal in vergelijking met de zelfbouwversie meer stabiliteit en extra hardware functionaliteit krijgen. Maar ik ben niet van plan de zelfbouw-PiKVM in de steek te laten en gebruikers te dwingen de v3 te kopen. Ik ben er niet op uit om rijk te worden, als ik maar genoeg geld heb om eten te kopen voor mezelf en voor mijn kat.
Claußen: Kun je iets vertellen over je eigen hardware, de PiKVM v3 HAT?
Devaev: Om zelf een PiKVM te bouwen, moet je je handen en misschien zelfs een soldeerbout gebruiken. Ik heb besloten het wat gemakkelijker te maken voor de gebruiker, en de stabiliteit van de hardware te verbeteren bij deze versie. Daarnaast heb ik wat features toegevoegd, die moeilijk zelf te bouwen zijn. Dit nieuwe apparaat is mijn idee, maar ik ben niet in staat om zelf een compleet eigen kaart te ontwikkelen. Dus heb ik een vriend met hardwarekennis uitgenodigd om samen aan dit project te werken. Onze PiKVM v3 HAT heeft een ingebouwde voedingsbesturing, een video capture device, een USB-switch (om het aansluiten van kabels te emuleren, dat is soms nuttig), en een seriële poort (om met een server of terminal in een rack te verbinden), en een klokfunctie voor nauwkeurig loggen, alles op één kaart. In feite is het een oplossing die beter en goedkoper is dan alle types van $500 die er op de markt zijn. Je hoeft me niet op mijn woord te geloven: Kijk maar naar de reviews van de v3 op YouTube. En binnenkort kan iedereen hem kopen.
Claußen: Er is ook een metalen behuizing voor de Raspberry Pi 4 en jouw toevoeging. Waarom heb je niet voor plastic gekozen? We lazen op Discord dat het in Rusland gemakkelijker is iets te bouwen van metaal dan plastic.
Devaev: Dat is ook zo. De metalen behuizing bleek zwaarder, robuuster en veel goedkoper dan een versie van plastic. De mensen die de v3 HAT hebben gekocht op Kickstarter, kregen de behuizing er gratis bij. Hij zal binnenkort online te koop zijn. En we hebben ook een gratis tekening om de kast te 3D-printen, voor wie hem graag zelf wil maken.
Claußen: Wordt de kit ook verkrijgbaar in online winkels buiten Rusland?
Devaev: De eerste batch is binnenkort verkrijgbaar in de Verenigde Staten. De tweede batch zal wereldwijd verkrijgbaar zijn in de herfst van 2021.
PiKVM in de toekomst
Claußen: Wat zijn de toekomstplannen voor de PiKVM?
Devaev: We gaan door met het ontwikkelen van de software en de hardware. We willen een 1080p 60Hz capture implementeren. (Dat kan nu niet vanwege de beperkingen van de Pi 4.) En we willen een veilige oplossing voor cloudtoegang voor gebruikers zonder een open publiek IP-adres.
Claußen: Heb je ook nog andere projecten in ontwikkeling? Kun je iets vertellen over waar je aan werkt?
Devaev: uStreamer, denk ik. Dat is ontwikkeld voor PiKVM, maar het is een losse component die veel mensen gebruiken als een server voor webcam-video. (In PiKVM wordt hij gebruikt als capture-device.) Ik heb dat geschreven als een alternatief voor MJPG-Streamer, om de prestaties te verbeteren. uStreamer is nu de snelste MJPEG/H.264 video service, en daar ben ik erg trots op.
Claußen: Maxim Devaev, dank je wel voor dit interview. We hebben goed nieuws voor de mensen die nu naar de Kickstarter-campagne gaan. De campagne was meer dan geslaagd. Dat betekent dat u de PiKVM v3 HAT binnenkort in een webshop kunt bestellen. Kijk ook in de Elektor Store, want ons inkoopteam werkt eraan om ook enkele PiKVM v3 HAT’s te kunnen gaan leveren.
vertaling: Evelien Snel
Vragen over PiKVM of over dit interview?
Als u technische vragen of opmerkingen hebt over dit artikel, stuur dan een email naar de auteur via mathias.claussen@elektor.com of neem contact op met Elektor via editor@elektor.com.
Discussie (0 opmerking(en))