Чи можлива передача даних USB-USB між двома ОС Linux?


26

Я хочу створити систему передачі даних USB-USB в Linux (бажано Ubuntu). Для цього я хочу використовувати жодне зовнішнє обладнання або комутатор ( крім цього кабелю ). Це буде схоже на встановлення USB-накопичувача до системи, але в цьому сценарії одна з систем Linux буде встановлена ​​на іншій. Як я можу це створити?

Чи є якісь модулі ядра, враховуючи, що мій досвід програмування ядра є дуже базовим?


6
"Для цього я не хочу використовувати зовнішнє обладнання або комутатор." Це не можна робити в будь-який системний період, якщо ви хочете використовувати звичайний USB-кабель для з'єднання. USB не є симетричним відношенням. Насправді ви можете фізично пошкодити будь-яку машину, з'єднавши їх таким чином, оскільки там задіяно напруга.
goldilocks

2
Однак ви можете використовувати спеціальний кабель "хост-хост", і в такому випадку, так, є драйвери ядра, тому якщо ви збираєтеся придбати його, переконайтеся, що є драйвери для цього конкретного кабелю.
goldilocks

4
Це, безумовно, не спрацює, і це кабель, який може обсмажити ваш комп'ютер, якщо ви підключите його безпосередньо до іншого комп'ютера.
zhongfu

2
@Thorongil Ні, це не те, що я маю на увазі. Схоже, на цьому веб-сайті Amazon не знайшлося жодного - це щось незвичайне. Ось один . Не плутайте це з кабелем OTG ("в дорозі"), які набагато частіше зустрічаються. В основному цього просто не варто переслідувати - зауважте, що це кабель 2.0, що означає, що ви мали б швидші передачі за допомогою Ethernet-кабелю, якщо вони обоє мають гігабітний ethernet (і ви можете використовувати звичайне програмне забезпечення).
goldilocks

2
Я просто займаюся мережею ... мої комп’ютери, тому я знаю, що я вже маю ... LAN-over-USB to LAN-over-USB, що б я шукав
Skaperen

Відповіді:


24

Так , це можливо, але це НЕ можливо, скорочуючи два USB кабелі з роз'ємами USB-A (що зазвичай збирається в USB на материнській платі) і перетинають підключення кабелів даних. Якщо ви підключите лінії живлення USB на такому саморобному кабелі, ви, швидше за все, обсмажите ваш вбудований мікросхем USB . Не спробуйте цього вдома!

На більшості плат комп'ютерів чіпи, що обробляють USB, є лише хостом. Мало того, але він також обробляє багато комунікацій низького рівня, щоб прискорити роботу та зменшити навантаження на процесор. Це не так, як якщо б ви могли запрограмувати комп’ютер на обробку шпильками на порту USB, щоб діяти так, ніби не хазяїн. Пристрої, здатні на рівні чіпів перемикатися між виступаючими хостом та підключатись до хоста, небагато, оскільки для цього потрібен значно дорожчий чіп¹. Ось, наприклад, чому такі інтелектуальні пристрої, як мій смарт-телефон, GPS та електронна книга, хоча всі вони працюють під управлінням Linux або щось подібне, не дозволяють мені використовувати sshспілкування, коли підключено через звичайний USB-кабель.

Ці пристрої переходять у якийсь тупий режим при підключенні, де хост (моя робоча система) може використовувати його сховище як USB-диск. Після відключення пристрою використовується той же інтерфейс, що і хост, як і для доступу до даних (хоча кабельне підключення не потрібно, це відбувається всередині). З таким пристроєм, навіть якщо Linux працює на обох, немає зв'язку між системами, тобто linuxes . Це незалежно від звичайного мікро- або міні-кабелю USB, що підключає їх до мого робочого столу.

Між двома настільними ПК, описаного вище, як правило, неможливо зробити так, як вам потрібен був би кабель USB-A до USB-A, що зустрічається нечасто (так як це не працюватиме із звичайними мікросхемами, які так чи інакше керують з'єднаннями).

Будь-яке рішення, що робить USB-USB із двома роз'ємами USB-A, базується на кабелі, який має електроніку між ними. (приблизно як USB → серійний підключений до послідовного → USB-кабелю, але все це цілком). Зазвичай вони вимагають, щоб драйвери виконували передачу, хоча ви, можливо, зможете використовувати UUCP або щось інше через такий кабель, як, наприклад, через "звичайний" послідовний порт. Це, ймовірно, вимагає inetd та належної конфігурації для входу на інший комп'ютер.

¹ Єдиний у мене пристрій, який змінює програмне забезпечення таким чином, це плата Arduino з точно такою спеціальною мікросхемою. Саме цей чіп зробив плату вдвічі дорожче звичайної плати Arduino.


"не дозволяйте мені використовувати sshзв'язок під час з'єднання за допомогою звичайного USB-кабелю". Можливо, я вас нерозумію, але я можу ssh ввійти в свій встромлений iPhone
Cole Johnson,

@ColeJohnson Я не знайомий з iphone. Чи дозволяє це бачити внутрішню пам'ять як привід USB на будь-якому хост-комп'ютері з USB? Якщо це можливо, він повинен запустити повну емуляцію сторони, що не приймає. Якщо він не може, то, ймовірно, потрібна спеціальна програма для завантаження даних на телефон.
Антон

Якщо ви встановите opensshна пристрій, ви можете sshввімкнути (через Wi-Fi), і якщо ви встановите afc2(Apple File Conduit) на пристрій, ви зможете переглядати файлову систему через USB (без цього ви "ув'язнені" "до /var/mobile)
Коул Джонсон

1
Це все добре, окрім бітів про телефони. Той факт, що багато пристроїв обмежують те, що можна зробити, не перешкоджає тому, що мікросхеми USB, які використовуються у всіх, окрім кількох пристроїв, можуть працювати в клієнтському режимі, а деякі також можуть працювати в хост-режимі.
Калеб

6

Так, USB 3.0 робить можливим повну дуплексну передачу даних з використанням кабелю 3.0. Характеристики наведені в розділі 5.5.2 специфікацій USB. Посилання на ці характеристики наведено раніше в іншій відповіді. http://www.gaw.ru/pdf/interface/usb/USB%203%200_english.pdf

Кабелі все простіше знайти - їх можна придбати в Amazon, наприклад, за $ 8,00. не забудьте придбати DATA TRANSFER, чоловічі кабелі від A до чоловічого типу A. Новіші версії Linux підтримують передачу.

Я сподіваюсь, що це комусь допоможе - я відповідь довго шукав.


будь-яка установка, необхідна для роботи цього кабелю? це буде монтаж або мережеве моделювання?
mpapis

що цікаво, у мене простий кабель usb 3.0 (тільки чоловічі кінці та простий кабель між ними), і мені цікаво, чи не буду я смажити свій порт ноутбука usb 2.0, підключивши його до мого робочого порту usb 3.0? Я підключився протягом декількох секунд, і нічого не сталося на dmesg, тому я негайно відключився, як це зазвичай роблю з тим, що не працює оперативно.
Сила Водолія

2
Розділ 5.5.2 "Збірка кабелю USB 3.0 від стандартного типу A до USB 3.0 Standard-A" у Специфікаціях визначає лише кабель і говорить "Збір кабелю визначений для налагодження операційної системи та інших програм з'єднання" хост-хост ". Ви впевнені, що кабель usb3 a-to-a дозволяє не тільки налагоджувати ( kernel.org/doc/html/v4.16/driver-api/usb/usb3-debug-port.html - потребує можливості налагодження xHCI DbC, яка є необов'язково для хост-контролерів xHCI usb3), але також передача файлів? Для передачі файлів є активні кабелі (з контролером посередині), деякі перелічені за адресою: ghisler.com/cables
osgx

Я ніколи не бачив робочої установки з цим. Хочете поділитися будь-якими деталями?
dirkt

3

Ви можете використовувати пристрій USB-мосту, який доступний у формі-фактора кабелю, як цей ... http://www.usbgear.com/link/ (відео-попередження про автоматичне відтворення)


3
нічого НЕ підключати USB - порти безпосередньо
Skaperen

це може бути специфічно для Windows
Skaperen

3
Я б дуже насторожено ставився до "жодного водія не потрібен". Насправді AFAIK їм потрібні водії. linux-usb.org/usbnet/#t-host
Золотоволоска

@goldilocks Так, на платі, мабуть, є якийсь код Windows ... жоден драйвер не повинен встановлюватись з компакт-диска користувачем
Skaperen

1

Технічно можливо, якщо один з пристроїв підтримує USB OTG , в якому порт може виступати як головний або як підлеглий. Ви можете налаштувати пристрій OTG як підлеглий, і дозволити йому функціонувати як привід жорсткого диска USB (так що вам навіть не потрібен спеціальний драйвер для майстра).

Це те, що робить багато телефонів і деяких камер. Якщо ви підключите їх до принтера, вони стають головними; якщо вони підключені до ПК, вони стають невільними.


1
USB OTG просто перемикається між хостом USB та режимом USB пристрою. Хоча це звичайно для телефонів, я не знаю жодного ПК з цією функцією. Чи справді ці ПК існують?
Лекенштейн

@Lekensteyn: Це не рідкість для планшетів, і деякі планшети дійсно є повноцінними ПК. Однак, мабуть, велика кореляція між USB-портами, що приймаються лише для хостів, та повним ПК.
Бен Войгт

@lekensteyn відредагував відповідь лише одним із двох пристроїв, це не важливо, відправник чи одержувач. Я думаю, що все ще не вистачає OGG на стороні ПК. Це ганьба.
Лесто

Я вважаю, що це також називається подвійними даними про роль . Деякі нові материнські плати підтримують цю функцію - див., Наприклад, цю сторінку . Це задокументовано у таблиці даних чіпсетів, але обов'язково включено на всіх материнських платах.
Лучано

0

Я б це зробив - це використовувати 2 USB-послідовних кабелю та нульове з'єднання між ними. Тоді ви можете використовувати xmodem, zmodem, kermit тощо для передачі файлів, або використовувати ppp або ковзання для мережі між двома машинами. Старомодно, але буде працювати.

Тад


1
Під "USB-послідовними кабелями" ви маєте на увазі кабелі, які перетворюють з USB на якийсь серійний штекер і стандартні, як RS232, через DE-9? Так це в основному два перетворювачі і кабель для послідовного зв'язку? Крім того, було б непогано трохи більше інформації про те, як користуватися цими протоколами або де знайти гарну допомогу в них.
phk

phk правильно, ви поясніть, що таке нульове з'єднання. Відповідь є самодостатньою. Крім того, будь ласка, використовуйте "ви" замість "у", знову ж таки відповідь має бути власним прикладом, а не повідомленням на форумі
grochmal

Це займе вашу швидкість передачі USB 3 (5-10 Гбіт / с) і зменшить її до приблизно 0,001 Гбіт / с, приблизно в 1000 разів повільніше, ніж у стандартного гігабітного Ethernet. Навряд чи варто докладати зусиль! Особливо, якщо вам подобається ОП, ви хочете поділитися дисками через з'єднання.
Malvineous
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.