Bir bilgisayarın diğer cihazlar için sanal bir USB aygıtı gibi davranmasını sağlama


18

Bazı uygulamalar, sanal bir USB veya CD Rom sürücüsünü bilgisayara bir USB sürücüsü takılıymış gibi taklit eder.

İşletim sisteminin kendisi için değil, bir USB bağlantı noktası üzerinden USB sürücüsünü kabul eden diğer ekipmanlar için sanal bir USB sürücü sağlayan herhangi bir yapılandırma veya uygulama var mı?

Bu yüzden *.vdi, bilgisayardaki bir USB soketi aracılığıyla başka bir ekipmana (örneğin bir cep telefonu veya dizüstü bilgisayar) bir USB sürücü olarak bağlı bir sanal sabit disk (örneğin bir dosya) olacak.

Yanıtlar:


12

Birlikte geldikleri USB Ana Bilgisayar Denetleyicisinin aksine, bilgisayara bir USB Aygıtı / Çevresel denetleyici eklemeniz gerekir.

Bunun gibi bir şey: https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html

Ne yazık ki, bunu anakartınıza bağlamak için bir yol bulmanız gerekir. Teknik olarak yapılabilir. Pratik olarak, anakartı eklemek için yeniden tasarlamanız gerekir. Eklemenize izin vermek için anakartınızda bir yere maruz kalmış bir SPI veya I2C veri yolu bulabileceğiniz kadar şanslı olabilirsiniz, ancak bir dev kartı veya tekli kullanmadığınız sürece genellikle kullanıldıklarına doğrudan bağlanırlar. GPIO ve Raspberry Pi gibi diğer bağlantı noktalarına sahip kartlı bilgisayar.

Diğer seçenek bir USB On-the-Go Kontrolörü olabilir. Gömülü ve taşınabilir aygıtlar için tasarlanan anakartlarda, Ana Bilgisayar veya Aygıt denetleyicisi olarak işlev görebilen bir USB OTG (Hareket Halinde) denetleyicisi bulunur. Örneğin, yukarıda bahsedilen Raspberry Pi bir On-the-Go Kontrolörüne sahiptir, ancak bir ana bağlantı noktasına veya USB cihaz işlevselliğinin kullanımını reddeden yerleşik bir USB hub'a yeniden bağlanan Pi Zero hariç tüm modellerde. BeagleBone Black'in bir OTG bağlantı noktası vardır.

Hepsi bu kadar da değil - donanıma sahip olduğunuzda, yazılıma da ihtiyacınız olacak. Linux, cihazınızı başka bir bilgisayara bağlamanızı ve USB veya USB üzerinden seri olarak görmenizi sağlayan g_serial ve g_ethernet gibi bazı yararlı çekirdek USB Gadget sürücülerine ("USB aygıtı" USB çevre birimi / aygıtı için başka bir terimdir) sahiptir. (bir aygıtı yığın depolama aygıtı olarak kullanmanıza ve bilgisayarı yığın depolama aygıtı olarak göstermenize olanak tanıyan başka bir aygıt yığın depolama alanı olarak gösterilebilir). BeagleBone Black, varsayılan olarak bu özellik etkinleştirilmiş olarak gelir, bu yüzden USB üzerinden PC'nize takıp ağa bağlı bir cihaz olarak görebilirsiniz - ve ayrıca kompozit bir sürücü ( tek bir bağlantı üzerinden birden fazla USB aygıt türü olarak görünmesini sağlar. Pi Zero bunları kullanabilir , ancak varsayılan olarak kullanmaz. Windows veya diğer işletim sistemleri için, muhtemelen bu aygıt sürücüsünü kendiniz yazmanız gerekir.

Yani, teorik olarak, bunu yapabilirsiniz. Masaüstü PC'nizi parçalayabilir, anakartta kullanılmayan uyumlu bir veri yolunu bir yerde (büyük olasılıkla bir denetleyici IC'sinde kullanılmayan bazı pimler) veya dahili bir I2C veya SPI veriyolunu genişletmenin bir yolunu veya yırtabileceğiniz bir şey bulmayı deneyebilir ve USB OTG veya cihaz denetleyici yongasını değiştirin ve üzerine lehimleyin. Sonra Linux'u yükleyebilir ve bir gadget sürücüsü kullanabilir veya başka bir işletim sistemi için kendi sürücünüzü yazabilirsiniz. Pratik olarak, birinci sınıf bir elektronik mühendisi değilseniz, bunu yapamazsınız. En azından, birisi bir USB portuna takılan bir cihaz veya OTG portu ile o zor adaptörle çıkana kadar (teorik olarak, bu bir Arduino'nun bir çift USB cihazı kontrolör IC'sine bağlanmış bir mikrodenetleyici ile yapılabilir), ve sürücüleri çalıştırmak için yazar.


2
harika bir açıklama, (bilginiz dahilinde) cümlenizle ilgili yeni bir şey görürseniz lütfen cevabı güncelleyebilir misiniz? 2018'de usb-c'ye sahip dizüstü bilgisayarlar var, bir çözüm olabilir mi?
Asain Kujovic

8

USB simetrik değildir: bir tarafı bir ana bilgisayar, diğer tarafı bir çevresel aygıttır. Bir çevrebirim aygıtının ana bilgisayar gibi davranmasını sağlayamaz veya tersini yapamazsınız. Bir USB bağlantı noktasının her iki taraf olarak da hareket etmesi mümkündür; buna hareket halindeyken USB denir ve bazı cep telefonlarında ve tabletlerde bulunur. Bağlantı noktaları fiziksel olarak aygıt türü bağlantı noktalarıdır, ana bilgisayar türü bağlantı noktaları değildir. Cihaz bağlantı noktasına sahip bir PC görmedim. Bu, kontrol cihazında elektronik gerektirir, her iki uca da uyan bir kablo yapmak yeterli değildir.

Yani hayır, USB aygıtına bilgisayar yapamazsınız.

Bilgisayarı USB depolama aygıtı olarak kullanmak istiyorsanız, PC kullanmak yerine USB bağlantılı bir cep telefonu veya tablet kullanabilirsiniz.


Biraz daha ayrıntı verebilir misiniz, bir cep telefonu kullanmak, bilgisayarımı başka bir bilgisayara, TV'ye veya cihaza takabileceğim bir USB depolama cihazına / ana bilgisayara dönüştürmeme nasıl yardımcı olabilir? Sanırım, bu noktayı kaçırıyorum, ancak USB OTG hakkında adil bir bilgiye sahip olduğumu düşünüyorum.
trejder

@trejder Yazdığım gibi, hiç bir cihaz bağlantı noktasına (x86 tabletler hariç “PC”) sahip bir PC görmedim.
Gilles 'SO- kötü olmayı kes'

Evet, ancak son cümlenizi yeniden dolduruyorum: " USB depolama aygıtına bilgisayar yapmak istiyorsanız, USB bağlantısı olan bir cep telefonu veya tablet kullanabilirsiniz ". Belki bir şey eksik, ama "Bilgisayarı USB depolama aygıtına dönüştürmek için cep telefonu veya tablet kullanabilirsiniz" olarak anlıyorum. Öyleyse, soru şu: Nasıl?
trejder

1
@ trejder Ah, o cümledeki “bilgisayar” “PC” değil, “bilgisayar”. Telefon / tablet bilgisayardan farklı bir bilgisayardır. Seni rahatsız eden bu mu?
Gilles 'SO- kötü olmayı bırak'

1
@trejder Hayır. Genellikle en iyi seçeneğiniz şu ya da bu şekilde bir ağ bağlantısı kurmaktır. Firewire'ı, Firewire bağlantı noktasına sahip iki bilgisayar arasında ağ bağlantısı olarak kullanabilirsiniz, ancak birçok bilgisayarda bir tane yoktur. Çoğu PC'de bir Ethernet bağlantı noktası vardır, iki PC'yi bir Ethernet kablosuyla bağlayabilirsiniz (çok eski PC'ler çapraz kablo gerektirir, ancak modern olanlar sıradan bir kablo alabilir). Bir bilgisayarın bir mobil cihaz için depolama cihazı olarak hizmet vermesini sağlamak için, genellikle bilgisayarı bir şekilde wifi'ye bağlamanız gerekir.
Gilles 'SO- kötü olmayı kes'

2

Bazen "USB ağ kabloları" olarak adlandırılan özel "USB-USB köprülü kablolardan" birini kullanmayı düşünebilirsiniz. Bu makalelerde bahsedildiği gibi:

İki bilgisayar arasında dosya aktarmanıza izin verir. Bu tür kabloları on yıl önce kullanıyorum (Windows XP zamanlarında) ve o zamanlar piyasada bulunan tüm bu kablolar özel bir sürücü ve yazılım gerektiriyordu. Dosyaları yalnızca bir kurulum diskindeki kablo sürücüleri ile birlikte gelen ve bu nedenle bir bilgisayarın diğerine saf USB harici aygıt olarak davranmasına izin vermeyen özel dosya komutanı aracılığıyla aktarmanıza izin verir.

Emin değilim, o zamandan beri bir şey değiştiyse ve yeni çözümler sadece özel yazılım kullanarak dosyaları aktarmanıza izin veriyorsa ve - bir PC'yi harici bir cihaz olarak başka bir PC'ye hareket etmeye zorlayabilirseniz.


2

Matt Thomson tarafından verilen cevapta açıklandığı gibi, USB slave denetleyicisi eksik olduğu için, bir PC bilgisayarının fiziksel bir USB portunun USB slave cihazı gibi davranmasını sağlamak mümkün değildir.

Bu, bağımlı mod USB (Raspberry Pi Zero gibi) sağlayabilen bir adaptör kartımız varsa, bunu kablolu PC gibi farklı bir kanalla ana PC'nize bağlamak zorunda olduğumuz anlamına gelir. Bu Ethernet bağlantısı üzerinden hangi protokolü çalıştırabileceğiniz konusunda iki farklı teklifim var:

(1) USB bağlantı noktasını IP ağı üzerinden gösterin.

Raspberry Pi Zero'nun USB slave modu bağlantı noktasını PC'nize sanal bir USB aygıtı olarak göstermek için yazılımı kullanın. USB / IP projesi, IP ağları üzerinden USB taşıyabilir bir sürücü vasıtasıyla, bu sağlar. İşte bir bilgisayara benzetilmiş bir USB cihazı sağlamak için USB / IP kullanımına bir örnek - burada bilgisayarınız olabilir.

Bu önerilen çözümde bilmediğim şey, USB / IP yazılımının zaten bir USB slave bağlantı noktasını IP ağı üzerinden veya yalnızca normal bir USB ana bilgisayar bağlantı noktasını gösterebilmesidir.

Ancak bu işe yarasa bile, PC'nizdeki aygıt sürücülerini (1) gelen USB / IP bağlantısını bir USB bağlantısı olarak kabul edecek, (2) yerine USB slave modu sağlayacak şekilde ayarlamanız veya uyarlamanız gerekir. USB ana makine modu, (3) atanan konumdan ( .vdidosyanız) veri sunarak bir USB yığın depolama aygıtını simüle eder .

Genel olarak, bunu yapmanın karmaşık bir yolu.

(2) Dosyayı IP ağı üzerinden gösterin.

Bu, Raspberry Pi Zero'ya Ethernet bağlantısının nasıl kullanılacağının çok daha basit bir yoludur: Raspberry Pi Zero'da, bilgisayarınızda saklanan verileri bir ağ dosya sistemi aracılığıyla bağlayın. Bu dosyalar daha sonra Pi Zero'nun dosya sisteminin bir parçası olarak mantıksal olarak görünür ve Raspberry Pi'nin bağlı cihazlara bir USB yığın depolama aygıtı gibi görünmesini sağlamak için Linux USB gadget sürücüsü ile sunabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.