Что такое rndis usb ethernet
Обновлено: 21.11.2024
В этом примечании по применению объясняется, как настроить i.MX RT1050 в качестве USB-гаджета Ethernet, подключенного к USB-ПК через высокоскоростное соединение USB OTG.
Для реализации этой функции используется стандартный драйвер Linux Ethernet Gadget с включенной поддержкой CDC Ethernet. Чтобы обеспечить поддержку USB-хостов Microsoft Windows, драйвер гаджета реализует вторую конфигурацию устройства с поддержкой протокола «Remote NDIS» (RNDIS).
В практических встроенных приложениях гаджет Ethernet можно использовать для организации связи на основе TCP/IP с i.MX RT1050 по физическому каналу USB.
Конфигурация и сборка
Чтобы включить функциональность гаджета Ethernet в проекте rootfs, выполните следующие действия:
-
Активируйте среду кросс-разработки:
[[электронная почта защищена] linux-cortexm-2.5.0]$ . ACTIVATE.sh
[[email protected] linux-cortexm-2.5.0]$ cdprojects/rootfs
[[email protected] rootfs]$
[[email protected] rootfs]$ make kmenuconfig
Запустите полученный файл rootfs.uImage на целевом устройстве. Обратите внимание на соответствующие сообщения ядра, указывающие на то, что USB-гаджет запущен:
MAC-адреса, используемые по умолчанию, генерируются драйвером случайным образом. Вы можете установить фиксированные значения, добавив соответствующие переменные в командную строку ядра Linux в U-Boot:
- g_ether.host_addr= (например, g_ether.host_addr=02:00:00:00:02:02 ), чтобы указать MAC-адрес интерфейса на стороне хоста;
- g_ether.dev_addr= (например, g_ether.dev_addr=04:00:00:00:04:04 ), чтобы указать MAC-адрес интерфейса на стороне гаджета.
Подключиться к хосту Linux
Если хост-компьютер работает под управлением Linux, сообщения, подобные показанным ниже, будут отображаться в консоли i.MX RT1050 при подключении к хосту:
Главный ПК обнаружит i.MX RT1050 как Ethernet-устройство CDC:
Подключиться к хосту Windows
Процедура установки драйвера RNDIS/Ethernet Gadget зависит от версии ОС Windows. Вот инструкции для разных версий:
После завершения установки хост-драйвера i.MX RT1050 выведет на консоль следующую информацию:
TCT/IP-связь
Настройте IP-адрес интерфейса USB Ethernet на стороне USB-устройства (i.MX RT1050). Выберите адрес, который не будет конфликтовать с другими сетевыми подсетями в системе (если они есть):
Настройте IP-адрес интерфейса USB Ethernet на стороне USB-хоста (ПК) (разумеется, выберите адрес из той же подсети, что и гаджет):
-
Пример хоста Linux:
[[email protected] ~]$ sudo ifconfig usb0 192.168.2.1
Проверьте связь между i.MX RT1050 и хостом через USB с помощью команды ping:
[[email protected] ~]$ ping 192.168.2.2-c 3
PING 192.168.2.2 (192.168.2.2) 56 (84) байт данных.
64 байта из 192.168.2.2: icmp_seq=1 ttl=64 time=0,504 мс
64 байта из 192.168.2.2: icmp_seq=2 ttl=64 time=0,370 мс
64 байта из 192.168 .2.2: icmp_seq=3 ttl=64 время=0,360 мс
--- Статистика пинга 192.168.2.2 ---
3 пакета передано, 3 получено, 0% потери пакетов, время 1998 мс
rtt min/avg/max/mdev = 0,360/0,411/0,504 /0,067 мс
RNDIS (спецификация интерфейса удаленного сетевого драйвера) – это протокол Ethernet через USB, используемый некоторыми высокоскоростными USB-модемами/донглами.
Он также используется многими USB3.0-GigabitEthernet-адаптерами, такими как TP-Link UE300, и всеми недорогими китайскими адаптерами, которые я купил на ebay. Это один из способов, которым эти гигабитные сетевые ключи работают по принципу «подключи и работай» или «без драйверов», поскольку они соответствуют стандарту RNDIS, поэтому им не нужен специальный драйвер только для себя. В этих ключах отсутствует какой-либо интерфейс или настройки, это просто адаптеры USB-to-Ethernet, не более того.
Для получения дополнительной информации о различных используемых протоколах:
Настройка ключей на основе RNDIS
(Этот раздел основан на опыте использования Bleeding Edge r47548 от декабря 2015 года на wt3020 и подключении к Alcatel Onetouch L850.)
Для устройств rndis требуется только ограниченный набор пакетов (помимо базовых пакетов USB, которые, скорее всего, уже содержатся в базовом образе):
kmod-usb-net-rndis также установит kmod-mii, kmod-usb-net, kmod-usb-net-cdc-ether и kmod-usb-net-rndis в качестве зависимостей.
После установки пакетов и подключения флешки в dmesg должно появиться следующее:
Вы можете проверить сведения об интерфейсе нового сетевого интерфейса usb0, запустив ifconfig usb0 .
(после этого необходимо перезагрузить или перезапустить сетевую подсистему с /etc/init.d/network restart)
Если автоматическое подключение отключено или на 4G-модуле включен запрос PIN-кода, возможно, вам придется посетить веб-интерфейс администратора ключа (обычно 192.168.1.1), чтобы ввести PIN-код или инициировать подключение 4G. Вы можете сделать это со своего ПК, подключенного к Wi-Fi OpenWRT.
Устранение неполадок RNDIS
Если вы видите только сообщения usb, но не сообщения rndis_host, возможно, проблема в настройке режима.
Проверив /sys/kernel/debug/usb/devices , устройство должно выглядеть так:
а не так:
Примечание по безопасности RNDIS
Теперь, если вам нужен доступ к веб-интерфейсу вашего ключа, войдите в свой ящик OpenWRT с помощью:
- Последнее изменение: 28.03.2021, 04:51.
- от mwynn
Самостоятельная регистрация на вики отключена.
Если вы хотите внести свой вклад в вики OpenWrt, напишите ЗДЕСЬ на форуме или запросите доступ в IRC.
Если не указано иное, содержимое этой вики предоставляется по следующей лицензии:
CC Attribution-Share Alike 4.0 International
Спецификация интерфейса удаленного сетевого драйвера USB (RNDIS) обеспечивает IP-подключение через USB. Это позволяет разработчикам писать приложения на основе IP, которые работают через USB, а также через существующие каналы IP, такие как WiFi, Bluetooth и 3G.
Цель
Спецификация интерфейса удаленного сетевого драйвера USB (RNDIS) позволяет разработчикам создавать IP-приложения, работающие через USB.
Необходимый фон
Если вы хотите использовать RNDIS на платформе Symbian, вам необходимо ознакомиться со спецификацией RNDIS
Ключевые понятия и термины
Чтобы убедиться, что подключенный компьютер в частной сети имеет правильный IP-адрес, функция DHCP-сервера используется для назначения ПК с Windows IP-адреса при установлении сетевого подключения RNDIS.
Возможность переадресации между двумя разными интерфейсами в стеке IP. Переадресация IP должна быть включена, чтобы NAPT мог пересылать данные между внутренней и внешней сетями.
Общий механизм добавления функций в стек IP.
Приложение управления RNDIS
Управляющее приложение, которое предоставляет создатель устройства. Его основная функция заключается в запуске и остановке IAP восходящей линии связи. Он также может использовать уведомления для принятия более обоснованных решений.
Вместе с приложением управления RNDIS обеспечивает функции IP через USB.
Линия связи из внутренней сети во внешнюю сеть. В случае RNDIS канал связи использует GPRS. Создателям устройств необходимо настроить IAP исходящего канала.
Приложение управления USB
Определяет подключение или отсоединение USB-кабеля. Создатели устройств могут взять это для справки и добавить запуск и остановку приложения управления RNDIS.
Уведомление об авторизации исходящего канала RNDIS
Получает авторизацию пользователя по восходящему каналу для службы RNDIS.
Уведомление об отказе в сетевом подключении RNDIS
Уведомление, уведомляющее пользователя устройства о невозможности запуска службы RNDIS, поскольку PAN NAP уже запущен.
Ключ P&S требования RNDIS
Уведомления от службы RNDIS о требованиях к восходящему каналу.
Архитектура
RNDIS — это спецификация USB. Реализация Symbian RNDIS поддерживается в рамках USB. Он взаимодействует с несколькими сетевыми компонентами.
На приведенной ниже диаграмме показаны основные компоненты реализации RNDIS для платформы Symbian. Компоненты, окрашенные в синий цвет, являются специфическими компонентами RNDIS.
Рис. 1. Рис. 1. Компоненты RNDIS
Сводка USB RNDIS
USB RNDIS обеспечивает следующее:
Контроллер класса RNDIS
Контроллер класса RNDIS представляет собой подключаемый модуль ECOM для USB Manager. Он запускает RNDIS IAP (точка доступа в Интернет) для подключения к ПК. Диспетчер USB запускает контроллер класса RNDIS при запуске личности RNDIS.
Агент RNDIS
Агент RNDIS работает с пакетным драйвером RNDIS ( rndispkt.drv ). Он выдает уведомление об авторизации восходящего канала и уведомления о требованиях к восходящему каналу (доступно только в сценарии с IP-модемом), а также загружает IP-ловушку доступа к восходящему каналу.
Пакетный драйвер RNDIS
Драйвер пакетов RNDIS представляет собой полиморфный подключаемый модуль DLL для Ethernet NIF (Ethint.NIF). Он обеспечивает подключение к подсистеме связи.
Создание ПЗУ, включая RNDIS
Для использования RNDIS необходимо включить двоичные файлы в ПЗУ. Это можно сделать, указав макрос SYMBIAN_INCLUDE_USB_RNDIS. Кроме того, необходимо включить usbman.iby.
Типичное использование
RNDIS позволяет ПК и мобильным устройствам устанавливать сетевые подключения на базе Ethernet. Мобильное устройство с поддержкой RNDIS может выполнять одно из следующих действий:
В этом примечании по применению объясняется, как настроить STM32F7 в качестве USB-гаджета Ethernet, подключенного к USB-ПК через высокоскоростное соединение USB OTG.
Для реализации этой функции используется стандартный драйвер Linux Ethernet Gadget с включенной поддержкой CDC Ethernet.Чтобы обеспечить поддержку USB-хостов Microsoft Windows, драйвер гаджета реализует вторую конфигурацию устройства с поддержкой протокола «Remote NDIS» (RNDIS).
В практических встроенных приложениях гаджет Ethernet можно использовать для организации связи на основе TCP/IP с STM32F7 по физическому каналу USB.
Конфигурация и сборка
Чтобы включить функциональность гаджета Ethernet в проекте rootfs, выполните следующие действия:
-
Активируйте среду кросс-разработки:
[[электронная почта защищена] linux-cortexm-2.1.0]$ . ACTIVATE.sh
[[email protected] linux-cortexm-2.1.0]$ cdprojects/rootfs
[[email protected] rootfs]$
[[email protected] rootfs]$ vi rootfs.dts.STM32F7
.
&usb_hs status = "хорошо";
dr_mode = "периферия";
pinctrl-names = "по умолчанию";
.
[[email protected] rootfs]$ make kmenuconfig
Запустите полученный файл rootfs.uImage на целевом устройстве. Обратите внимание на соответствующие сообщения ядра, указывающие на то, что USB-гаджет запущен:
MAC-адреса, используемые по умолчанию, генерируются драйвером случайным образом. Вы можете установить фиксированные значения, добавив соответствующие переменные в командную строку ядра Linux в U-Boot:
- g_ether.host_addr= (например, g_ether.host_addr=02:00:00:00:02:02 ), чтобы указать MAC-адрес интерфейса на стороне хоста;
- g_ether.dev_addr= (например, g_ether.dev_addr=04:00:00:00:04:04 ), чтобы указать MAC-адрес интерфейса на стороне гаджета.
Подключиться к хосту Linux
Если хост-компьютер работает под управлением Linux, сообщения, подобные показанным ниже, будут отображаться в консоли STM32F7 при подключении к хосту:
Хост-компьютер обнаружит STM32F7 как Ethernet-устройство CDC:
[[email protected] ~]$ ifconfig usb0
usb0 Link encap:Ethernet HWaddr 02:5e:48:43:be:47
inet6 addr: fe80::5e:48ff:fe43: be47/64 Scope: Link
UP BROADCAST MULTICAST MTU: 1500 Метрика: 1
Пакеты RX: 0 ошибки: 0 отброшены: 0 переполнения: 0 кадр: 0
пакеты TX: 0 ошибки: 0 отброшено:0 переполнение:0 носитель:0
коллизий:0 txqueuelen:1000
байт RX:0 (0,0 Б) байт TX:0 (0,0 Б)
Подключиться к хосту Windows
Если хост-компьютер работает под управлением Windows, сообщения, подобные показанным ниже, будут отображаться в консоли STM32F7 при подключении к хосту:
Процедура установки драйвера RNDIS/Ethernet Gadget зависит от версии ОС Windows. Вот инструкции для разных версий:
После завершения установки драйвера хоста STM32F7 выведет на консоль следующую информацию:
TCT/IP-связь
Настройте IP-адрес интерфейса USB Ethernet на стороне USB-устройства (STM32F7). Выберите адрес, который не будет конфликтовать с другими сетевыми подсетями в системе (если они есть):
Настройте IP-адрес интерфейса USB Ethernet на стороне USB-хоста (ПК) (разумеется, выберите адрес из той же подсети, что и гаджет):
-
Пример хоста Linux:
[[email protected] ~]$ sudo ifconfig usb0 192.168.2.1
Проверьте связь между STM32F7 и хостом через USB с помощью ping:
[[email protected] ~]$ ping 192.168.2.2
PING 192.168.2.2 (192.168.2.2) 56 (84) байт данных.
64 байта из 192.168.2.2: icmp_seq=1 ttl=64 time=134 мс
64 байта из 192.168.2.2: icmp_seq=2 ttl=64 time=1,96 мс
64 байта из 192.168 .2.2: icmp_seq=3 ttl=64 time=2,09 мс
64 байта из 192.168.2.2: icmp_seq=4 ttl=64 time=2,11 мс
64 байта из 192.168.2.2: icmp_seq=5 ttl= 64 время=2.00 мс
^C
--- Статистика пинга 192.168.2.2 ---
5 пакетов передано, 5 получено, 0% потери пакетов, время 4008мс
rtt min /avg/max/mdev = 1,968/28,529/134,472/52,971 мс
Читайте также: