3

Я прошел Лучший способ сделать TCP/IP через USB на Linux? и хотел бы узнать больше о технико-экономическом обосновании / процедуре для того, чтобы два Linux-бокса IP общались друг с другом через USB. Я сделал это несколько лет назад легко через Serial Link, и он был достаточно стабильным и зрелым.

Идея состоит в том, чтобы иметь соответствующее именованное сетевое устройство (eth0 , usb0 , wlan0 , ..) в /sys/class/net а затем иметь возможность поиграться с командами ifconfig/route , как и любое другое сетевое устройство для назначения IP-адресов. , маршрутизация, пинг, ... но это простая заключительная часть.

Чтобы достичь этого, я вижу разные проблемы / шаги:

  1. HW: кабель. Я полагаю, что на 2 компьютерах есть только «ведущие» USB-разъемы типа A, в то время как обычный USB-кабель имеет один разъем типа A и один тип B: кабель должен быть тщательно подготовлен, чтобы предотвратить обмен электропитанием, но разрешать только передачу данных. Правильный? (Я рассматриваю только протокол USB <= 2.0, так как я знаю, что USB 3.x может выполнять полнодуплексную проводку)

    Конечно, если я хочу подключить ПК (хост /USB) к «устройству» (rasbpi, mini2440, arduino, ..,), у меня фактически будет конец типа B, и можно использовать «тупой» USB-кабель , Правильный?

  2. Ядро / Драйвер: что присутствует в ядре для назначения сетевого устройства USB-порту? Похож на IP over /dev/ttySxx? Что делать, если драйвер ядра USB не готов на другой стороне?

  3. Идентификация порта / разъема: как ядро узнает, какой порт я на самом деле использую (особенно, если проводка питания отключена на выделенном кабеле)? Как мне определить мой порт?

  4. Наконец, с точки зрения сетевого уровня, чего мне ожидать? простой мост для Ethernet? или каждая сторона USB будет иметь назначенный IP-адрес?

Надеюсь, это не слишком смущает, и вы получите то, чего я пытаюсь достичь. Но так как раньше было так просто сделать IP (Ethernet?) через последовательную связь, я надеюсь, что это также относится и к USB.

1 ответ1

0

1) Проблема с USB - это протокол master/slave. ПК являются мастерами, и вы не можете соединить два мастера напрямую, поэтому прямой немой кабель не будет работать.

Вы можете использовать что-то вроде https://www.amazon.co.uk/Ethernet-Network-Adapter-Converter-Connection/dp/B003Q85EEA, но тогда вы можете просто использовать ethernet. Любое другое аппаратное решение будет похоже:

pc <--usb--> usb slave ic/microcontroller <--common protocol--> usb slave ic/microcontroller <--usb--> pc

2) Для чего-то вроде вышеприведенного сетевого адаптера usb у него уже должен быть драйвер ядра, который настроит для вас сетевое устройство, с которым вы можете взаимодействовать так же, как с eth0 или wlan0, но у вас может быть другое имя.

Правильно спроектированная микросхема (как в упомянутом выше устройстве), которая работает со встроенным модулем ядра, не будет заботиться о том, готово ли устройство на другом конце, просто будет отключен кабель Ethernet.

3) Устройство должно быть доступно как любой другой сетевой адаптер, ip addr или ifconfig должны перечислить его после подключения.

4) Вы должны ожидать, что сетевое устройство, как и любое другое устройство, вы можете рассматривать его как кабель Ethernet непосредственно от одного компьютера к другому.

Вы не можете использовать Raspberry Pi для этого, это хост-устройство, как ПК.

Arduino может работать, но вам потребуется два. Leonardo лучше, он имеет встроенную поддержку USB, так что даст вам лучшую скорость. Но у Arduino нет программного обеспечения для поддержки USB-сетей, поэтому вам придется написать это самостоятельно (не тривиально). То же самое будет верно для многих микроконтроллеров. Лучше всего найти один с поддержкой подчиненных сетей, я думаю, что mbed может сделать это, но вам все равно нужно будет написать код для соединения двух микроконтроллеров.

Но самый простой / дешевый способ - использовать два типа:https://www.amazon.co.uk/Ethernet-Network-Adapter-Converter-Connection/dp/B003Q85EEA. Затем снимите корпус, припаяйте коллекторы и припаяйте кабель Ethernet непосредственно к портам. Но это не даст большого преимущества по сравнению с использованием только кабеля Ethernet, если что-нибудь сделает его немного менее гибким решением (хотя, возможно, менее громоздким). Вы можете создать свою собственную плату с встроенными микросхемами и соединить их на одной печатной плате, но это будет немного больше работы без реальной выгоды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .