Yeni bir dizüstü bilgisayar satın aldıktan sonra, Pierre Couy önemli bir özelliğin eksik olduğunu fark etti: USB-C üzerinden DisplayPort. Bu, Guoy’u bir Raspberry Pi 3B tarafından desteklenen kendi sanal ekran akış çözümünü oluşturmaya sevk etti.
Önerme basittir, ekran verilerini Ethernet kullanarak Raspberry Pi’ye aktarın ve ardından Pi’nin HDMI bağlantı noktası aracılığıyla ekranın çıktısını alın. Ancak bu proje, birçok farklı süreç ve beceri gerektiriyordu.
Couy’nin önceki dizüstü bilgisayarı aynı anda VGA ve HDMI üzerinden çıkış verebiliyordu. Bununla birlikte, en yeni satın alımları için yalnızca HDMI mevcuttu ve Couy’un eski bir Raspberry Pi 3B’nin tozunu almasına ve ek bir ekran akışı sağlamak için onu hizmetlere sıkıştırmasına neden oldu. Raspberry Pi ücretsiz olduğu için seçim basitti, ancak 100 m Ethernet bağlantı noktası ve dört çekirdekli CPU göz önüne alındığında, resim kalitesi, gecikme süresi ve çerçeve hızı dengesini tam olarak doğru bir şekilde elde etmeyi içeren bazı tavizler vardı.
Couy’nin belirlediği hedefler basitti:
- Gecikme, fareyi kaydırırken veya hareket ettirirken fark edilmemelidir.
- Resim kalitesi küçük metinleri okuyabilecek kadar yüksek olmalıdır.
- Bunu esas olarak statik metin içeriği için kullanmayı planladığım için, 10 FPS gibi düşük bir hedef belirleyerek kendime yüklenmeye karar verdim.
- Akışın alıcı tarafı geride kalırsa, mümkün olan en kısa sürede yaşamak için onu yakalamalıdır.
- Kullanmak Doğrudan Oluşturma Yöneticisi akışı bir X sunucusuna bağlı olmak yerine Pi’de görüntülemek için.
- Uzaktan oynatma araçlarını ve VNC’yi inceledim çünkü düşük gecikmeli çözümler kullanımı kolay görünüyorlardı. Ancak, Pi’den dizüstü bilgisayara geri akış girişleriyle ilgilenmiyordum.
Ek olarak Couy, Raspberry Pi’de bir DHCP sunucusu kurmak, önyükleme sırasında gerekli yazılımı başlatmak ve dizüstü bilgisayarı ekran verilerinin akışını başlatacak şekilde yapılandırmak istedi. Bu son hedef, kullanımını gerektiriyordu. xrandr sanal bir monitör oluşturmak için.
Couy’un ilk görevi video ardışık düzenini oluşturmaktı ve dizüstü bilgisayarlarında ffmpeg kullanmayı seçti. Bir DHCP sunucusu kurduktan sonra (udhcpd), Cuoy iki makineyi birbiriyle konuşacak şekilde yapılandırdı. Bağlantı onaylandığında, ilk gerçek test, Ethernet üzerinden optimize edilmemiş bir akıştı. Test başarılıydı, ancak tüm hedeflerde başarısız oldu. Couy yılmadan devam etti. Son olarak, bir dizi yineleme yoluyla Couy, akışı hedeflere ulaşacak bir noktaya kadar optimize edebildi.
Nihai hedef, Couy’un ihtiyaçlarını karşılamak üzere yapılandırılmış ve Raspberry Pi’nin IP adresine akışla aktarılan bir sanal monitör oluşturacak özel bir bash betiği kullanarak dizüstü bilgisayar ekranını genişletmekti. Pi’de, başka bir komut dosyası akışı durdurur ve oynatmayı HDMI bağlantı noktası üzerinden verir.
Elbette, bunların hepsi aşırıya kaçıyor; bir USB DisplayLink bağdaştırıcısı da çok az çalışmayla veya hiç çalışmadan aynı şekilde çalışır. Ancak, tüm süreç büyüleyici. Ucuz donanım, biraz Linux bilgisi ve çok sayıda yineleme ile nelerin başarılabileceğini gösteriyor.
Couy’un bir tam blog yazısı süreçte ve tüm yapılandırma dosyaları ilgili bulunabilir GitHub deposu.