Katılım
13 Temmuz 2024
Mesajlar
3.769
Makaleler
13
Çözümler
52
Beğeniler
7.039
Yer
Bolu Dağı Tüneli
Selamlar,

Kamera sürücüsü hiç bulunmamış Samsung VG STC-3000 cihazıma Windows üzerinde sürücü uyarlamaya çalışıyorum. Python'dan yapay zekayla destek alıp kodlarla ne denediysem olmadı, asla yüklemeye geçemedim. Sizce ne yapmam gerekli?

Bu arada cihazın sürücülerini libusbK, libusbwin32 olarak da denedim. Asla ve asla başaramadım.


Proje:

Lubuntu'yu UNetBootin ile kurmayı denedim ama orada da system halted alınca tadım iyice kaçtı. İşler çok uzadı. Ayrıca sistemi Windows 10 ile başlatmak istiyorum, Lubuntu ile değil. Dolayısıyla bu sorunu Ubuntu / Lubuntu'suz gidermem gerek.
 
Linux sürücüleri Windows'ta çalışmaz. Zorla da çalışmaz. Vallahi çalışmaz.

Birisi Linux Kernel diğeri NT kernel. API'ler farklı. Memory nasıl kullanacağı farklı.

Birinden diğerine uydurması bile olmuyor tabii sürücüler open Source değilse. (bkz. RX serisi ekran kartları)
 
Son düzenleyen: Moderatör:
Linux çekirdek modüllerini Windows üzerinde çalıştırmak mimari farklar nedeniyle imkansızdır. Yapabileceğin tek şey firmware yükleme kodunu Windows libusb kütüphanesiyle yeniden derleyip Zadig aracıyla cihaza erişmek olsa da, cihaz firmware'i alsa bile Windows uyumlu bir görüntü işleme sürücüsü olmadığı için muhtemelen görüntü alamayacaksın, bu yüzden cihazı rafa kaldırıp standart UVC destekli bir webcam alman akıl sağlığın için en doğrusu olur.
 
Sürücüyü Windows Subsystem for Linux (WSL) içerisine kurup GStreamer ya da FFmpeg ile WSL tarafında bir ağ akışı sağlayıp bunu Windows tarafına aktaracaksınız. Çok zor bir işlem değil, sadece biraz uğraşmak gerekiyor.
Evet, FFmpeg veya GStreamer kullanarak bu kameranın görüntüsünü WSL içerisinden Windows'a bir "ağ akışı" (network stream) olarak göndermek teknik olarak mümkündür.
Bu senaryoda WSL bir sunucu (server) gibi davranır, Windows ise bu akışı alan bir istemci (client) olur. Windows tarafında bu görüntüyü Zoom veya Skype gibi uygulamalarda kullanabilmek için bir de "Sanal Kamera" (Virtual Camera) yazılımına ihtiyacınız olacaktır.
İşte izlemeniz gereken yol haritası:
1. Aşama: WSL Tarafında Akışı Başlatma
Önceki adımda kamerayı usbipd ile bağladığınızı ve firmware'i yüklediğinizi varsayıyoruz. Kamera /dev/video0 olarak göründüğünde FFmpeg ile akış başlatabilirsiniz:
FFmpeg ile (UDP üzerinden):
ffmpeg -f v4l2 -i /dev/video0 -vcodec libx264 -preset ultrafast -tune zerolatency -f mpegts udp://127.0.0.1:1234

* Açıklama: Bu komut kamerayı alır, H.264 olarak kodlar ve Windows tarafındaki 1234 numaralı portuna çok düşük gecikmeyle gönderir.
2. Aşama: Windows Tarafında Görüntüyü Yakalama
Windows tarafında bu akışı bir kamera gibi tanıtmak için en yaygın ve ücretsiz yöntem OBS Studio kullanmaktır.
* OBS Studio'yu indirin ve kurun.
* Kaynaklar kısmında + ikonuna tıklayın ve "Ortam Kaynağı" (Media Source) seçin.
* "Yerel Dosya" tikini kaldırın.
* Giriş (Input) kısmına şunu yazın: udp://127.0.0.1:1234
* Tamam dediğinizde WSL'den gelen görüntü OBS ekranına düşecektir.
3. Aşama: Windows Uygulamalarında Kullanma (Sanal Kamera)
OBS içindeki görüntüyü diğer uygulamalara (Zoom, Meet vb.) aktarmak için:
* OBS ana ekranının sağ alt köşesindeki "Sanal Kamerayı Başlat" (Start Virtual Camera) butonuna tıklayın.
* Şimdi Zoom veya Skype ayarlarını açın ve kamera seçeneği olarak **"OBS Virtual Camera"**yı seçin.
Alternatif: GStreamer ile Daha Düşük Gecikme
Eğer gecikme (latency) çok yüksek olursa, GStreamer (RTPlib) kullanarak daha "ham" bir iletim yapabilirsiniz:
WSL Tarafı:
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc tune=zerolatency ! rtph264pay ! udpsink host=127.0.0.1 port=5000

Windows Tarafı (Yine OBS ile):
OBS içinde bir "GStreamer Source" eklentisi kullanabilir veya FFmpeg ile bu UDP paketlerini birleştirip OBS'e yönlendirebilirsiniz. Ancak genel kullanıcı için FFmpeg + OBS kombinasyonu en sorunsuz çalışan yöntemdir.
Özet Akış Diyagramı
* Donanım: Samsung Kamera -> Windows USB.
* Bağlantı: usbipd -> Kamerayı WSL'ye gönderir.
* Yazılım: samsung-tvcam-fwloader -> Kamerayı çalışır hale getirir.
* İletim: FFmpeg -> Görüntüyü ağ üzerinden Windows'a basar.
* Sonuç: OBS Virtual Cam -> Görüntüyü sisteme kamera olarak tanıtır.
Bu yöntem biraz dolambaçlı görünse de, Samsung TV kameraları gibi özel donanımları Windows'ta çalıştırmanın en profesyonel "hack" yöntemidir.
Denemeye başladığınızda takıldığınız bir komut olursa yardımcı olabilirim.
Hangi adımda başlamak istersiniz?
 
Linux çekirdek modüllerini Windows üzerinde çalıştırmak mimari farklar nedeniyle imkansızdır. Yapabileceğin tek şey Firmware yükleme kodunu Windows libusb kütüphanesiyle yeniden derleyip zadig aracıyla cihaza erişmek olsa da, cihaz Firmware'i alsa bile Windows uyumlu bir görüntü işleme sürücüsü olmadığı için muhtemelen görüntü alamayacaksın, bu yüzden cihazı rafa kaldırıp standart uvc destekli bir webcam alman akıl sağlığın için en doğrusu olur.

Ben de bunu yaptim zaten. Ayrıca webcam halihazırda uvc destekli. Yaptığım çoğu şeyi yazmışsınız. Zadig ile libusb yaptım, kamera halihazırda uvc destekli. Şu an sadece handshake kısmında patlıyor gibime geliyor.
Ayrıca teşekkür ediyorum, dediklerime en çok siz yaklaşmışsınız.

Linux sürücüleri Windows'ta çalışmaz. Zorla da çalışmaz. Vallahi çalışmaz.

Birisi Linux Kernel diğeri NT kernel. API'ler farklı. Memory nasıl kullanacağı farklı.

Birinden diğerine uydurması bile olmuyor tabii sürücüler open Source değilse. (bkz. RX serisi ekran kartları)

Proje biraz farklı, cihazın kendi RAM'ine FW yükleyerek çalışıyor. Bir inceleyin isterseniz, belki bir yol gözükür.

Sürücüyü Windows subsystem for Linux (WSL) içerisine kurup gstreamer ya da FFmpeg ile WSL tarafında bir ağ akışı sağlayıp bunu Windows tarafına aktaracaksınız. Çok zor bir işlem değil, sadece biraz uğraşmak gerekiyor.
Evet, FFmpeg veya gstreamer kullanarak bu kameranın görüntüsünü WSL içerisinden Windows'a bir "ağ akışı" (network stream) olarak göndermek teknik olarak mümkündür.
Bu senaryoda WSL bir sunucu (server) gibi davranır, Windows ise bu akışı alan bir istemci (Client) olur. Windows tarafında bu görüntüyü Zoom veya Skype gibi uygulamalarda kullanabilmek için bir de "sanal kamera" (Virtual camera) yazılımına ihtiyacınız olacaktır.
İşte izlemeniz gereken yol haritası:
1. aşama: WSL tarafında akışı başlatma.
Önceki adımda kamerayı usbipd ile bağladığınızı ve Firmware'i yüklediğinizi varsayıyoruz. Kamera /dev/video0 olarak göründüğünde FFmpeg ile akış başlatabilirsiniz:
FFmpeg ile (UDP üzerinden):
FFmpeg -f V4L2 -i /dev/video0 -vcodec LIBX264 -preset ultrafast -Tune zerolatency -f mpegts UDP://127.0.0.1:1234

* Açıklama: Bu komut kamerayı alır, H.264 olarak kodlar ve Windows tarafındaki 1234 numaralı portuna çok düşük gecikmeyle gönderir.
2. aşama: Windows tarafında görüntüyü yakalama.
Windows tarafında bu akışı bir kamera gibi tanıtmak için en yaygın ve ücretsiz yöntem OBS Studio kullanmaktır.
* OBS Studio'yu indirin ve kurun.
* Kaynaklar kısmında + ikonuna tıklayın ve "ortam kaynağı" (Media Source) seçin.
* "Yerel dosya" tikini kaldırın.
* Giriş (ınput) kısmına şunu yazın: UDP://127.0.0.1:1234
* Tamam dediğinizde WSL'den gelen görüntü OBS ekranına düşecektir.
3. aşama: Windows uygulamalarında kullanma (sanal kamera)
OBS içindeki görüntüyü diğer uygulamalara (Zoom, meet vb.) Aktarmak için:
* OBS ana ekranının sağ alt köşesindeki "sanal kamerayı başlat" (start Virtual camera) butonuna tıklayın.
* Şimdi Zoom veya Skype ayarlarını açın ve kamera seçeneği olarak **"OBS Virtual camera"**yı seçin.
Alternatif: Gstreamer ile daha düşük gecikme.
Eğer gecikme (latency) çok yüksek olursa, gstreamer (rtplib) kullanarak daha "ham" bir iletim yapabilirsiniz:
WSL tarafı:
Gst-launch-1.0 v4l2src device=/dev/video0! Videoconvert! X264enc Tune = zerolatency! RtPH264PAY! Udpsink host=127.0.0.1 port = 5000.

Windows tarafı (yine OBS ile):
OBS içinde bir "gstreamer Source" eklentisi kullanabilir veya FFmpeg ile bu UDP paketlerini birleştirip OBS'e yönlendirebilirsiniz. Ancak genel kullanıcı için FFmpeg + OBS kombinasyonu en sorunsuz çalışan yöntemdir.
Özet akış diyagramı.
* Donanım: Samsung kamera -> Windows USB.
* Bağlantı: Usbipd -> kamerayı WSL'ye gönderir.
* Yazılım: Samsung-tvcam-fwloader -> kamerayı çalışır hale getirir.
* İletim: FFmpeg -> görüntüyü ağ üzerinden Windows'a basar.
* Sonuç: OBS Virtual cam -> görüntüyü sisteme kamera olarak tanıtır.
Bu yöntem biraz dolambaçlı görünse de, Samsung TV kameraları gibi özel donanımları Windows'ta çalıştırmanın en profesyonel "hack" yöntemidir?
Denemeye başladığınızda takıldığınız bir komut olursa yardımcı olabilirim.
Hangi adımda başlamak istersiniz?

Kamera her çalıştığında WSL de mi çalışacak yani?

Burada da benzer sorunu yaşayan var mış ancak cihaz TV donanımı olduğundan dolayı hiçbir şekilde Windows işletim sistemi uyumlu değil. Yani yapmaya çalıştığınız şeyin imkanı yok.


Biz de onu yapmaya çalışıyoruz zaten, Linux için 3. parti yapılmış bir sürücüyü/firmware'ı Windows'a uyarlamaya çalışıyoruz. Görülmemiş olanı yaptığımız yok yani.
 
Aslında karmaşık bir şey değil. Yanlış bilmiyorsam libusb'nin windowsu da var. Onu kullanarak direkt bu kodu windowsta çalıştırmayı deneyebilirsin.

Bu olmazsa aslında usbye direkt datayı basıyor. Gerçi iki modu var eğer cam type CAM_MAX ise bütün firmwarei tek seferde atıyor değilse parçalara bölüp atıyor.