Jump to content

    

Recommended Posts

Добрый день!

Возникла трудность следующего характера. У меня есть одноплатный компьютер с Linux, не коммерческий, но пусть для примера-- Raspberry pi или Beaglebone. Назовём его Девайс. Необходимо, чтобы после подключения Девайса по USB к любому ПК с доступом в сеть у Девайса тоже появлялся этот доступ.

Существует множество решений такой задачи, однако они все требуют от пользователя "ручного" внесения каких-то изменений в конфигурацию ПК. Я же хочу, чтобы эти изменения вносились автоматически после подключения Девайса по USB, например, с помощью программы, сохранённой в Девайсе. Участие пользователя нужно свести к минимуму.

 

Один из подходящих способов -- Девайс должен притвориться компакт-диском, на который записан Autorun, но дальше этого понимания я пока что не ушёл и не знаю, как это реализовать.

 

Вопрос мой в том, есть ли ещё какие-то варианты решения задачи? Возможно будут какие-либо советы по идее с компакт-диском и Autorun-ом.

Share this post


Link to post
Share on other sites
22 минуты назад, dmt0768 сказал:

к любому ПК

Ой. А если на ПК Mac OS или Linux (куча различных версий) или Windows (тут тоже версий немало)? Чисто технически как вы хотели бы угодить всем ПК и всем ОСям? Чисто теоретически тот же RNDIS, о котором вам выше сказали, может и не поддерживаться пок какой-то причине ПК. Вам придётся держать десятки различных драйверов... Но даже если вы и с этим справитесь, доверится ли пользователь установке вашего ПО в свою систему?

Share this post


Link to post
Share on other sites
1 hour ago, dmt0768 said:

Существует множество решений такой задачи

А можно увидеть хоть один такой способ? Чтоб юсб слейв взял и получил ip.

Share this post


Link to post
Share on other sites
1 час назад, rkit сказал:

А можно увидеть хоть один такой способ? Чтоб юсб слейв взял и получил ip

Да этого-то как раз как грязи. Проблема в том, что компьютер сможет залезть на ваше устройство и устройство сможет залезть на компьюьер, но вот дальше, во внешний интернет, компьютер без настройки шлюза или NAT ваше устройство не выпустит. А настройка эта должна выполняться пользователем.

Добавлено: видимо я неправильно понял вопрос. В этом и подобном примерах USB-устройство не получает IP, а само присваивает его виртуальной сетевой карте, появляющейся в компьютере.

Share this post


Link to post
Share on other sites
8 hours ago, Сергей Борщ said:

Да этого-то как раз как грязи.

Ну это как раз корявый способ. Человеку пришлось лезть в дивайсы и руками править настройки драйвера. 
У него неправильный дескриптор, поэтому винды автоматически и не подхватывают этот RNDIS

Надо так как указано здесь - https://www.usb.org/defined-class-codes#anchor_BaseClassEFh

Share this post


Link to post
Share on other sites
8 hours ago, AlexandrY said:

Ну это как раз корявый способ. Человеку пришлось лезть в дивайсы и руками править настройки драйвера. 
У него неправильный дескриптор, поэтому винды автоматически и не подхватывают этот RNDIS

Надо так как указано здесь - https://www.usb.org/defined-class-codes#anchor_BaseClassEFh

Тоже везде обратное написано - "Connecting a host to the Internet"

Share this post


Link to post
Share on other sites
02.03.2021 в 21:30, rkit сказал:

Это обратное - слейв выдает ip хосту. Доступа в интернет через хост у него нет.

Эти две вещи абсолютно не связаны. Просто на компе DHCP-колиент поднят по-умолчанию. Поднимите на компе DHCP-сервер, а на железке реализуйте DHCP-клиент и будет у вас железка получать адрес от компа. Но доступа в интернет у нее все равно не будет пока вы не настроите вручную на компе мост или шлюз между виртуальной сетевой картой железки и имеющей доступ в интернет сетевой картой. Как только настроите - "сразу польется вода". Это не так  сложно - в XP, насколько помню, надо было в сетевых подключениях выделить две карты, вызвать контекстное меню и выбрать в нем что-то вроде "создать мост", а в gnome зайти в свойства сетевого подключения железки и вместо "DHCP" выбрать там "раздавать интернет".

Share this post


Link to post
Share on other sites
 
8 minutes ago, Сергей Борщ said:

Эти две вещи абсолютно не связаны.

Ты собрался получить доступ в интернет без IP? Фига себе.

 

12 minutes ago, Сергей Борщ said:

виртуальной сетевой картой железки

Которой я пока так и не было показано в природе.

Share this post


Link to post
Share on other sites
5 часов назад, rkit сказал:

Ты собрался

Что-то не припомню, что пил с вами, не говоря уже про "на брудершафт".

5 часов назад, rkit сказал:

Которой пока так и не было показано в природе.

Я писал для своей железки что-то подобное показанному по ссылке. Виртуальная сетевая карта в компе появляется. Маршрутизатор в компе тоже настраивал и воткнутая в эзернетовский разъем моего лаптопа железка получала от него локальный IP и ходила в интернет через его WiFi. Объединить эти два варианта - как два пальца. А вы можете и дальше рассуждать о том, что это невозможно. Тоже мне "крымский мост" нашли.

Share this post


Link to post
Share on other sites

А я желания ТС понял несколько по другому:
железка не создает локальную сеть с получением IP, а прикидывается запущенным приложением на ПК, к которому подключена, и использует его IP. Железке только нужно как-то запустить приложение и получить порт для работы.

Share this post


Link to post
Share on other sites
2 часа назад, Baser сказал:

А я желания ТС понял несколько по другому:
железка не создает локальную сеть с получением IP, а прикидывается запущенным приложением на ПК, к которому подключена, и использует его IP. Железке только нужно как-то запустить приложение и получить порт для работы.

Если так, то:

Создаём MSD. На нём диск. На диске - файл автозапуска. Файл автозапуска запускает приложение (с этого же диска), которое уже соединяется с прошивкой тем или иным способом (через control-ep0 например или иначе). По этому установленному каналу уже можно пробросить канал доступа к сети, к которой имеет доступ приложение на компе.

В принципе то запущенное приложение может выполнять роль прокси-сервера для запросов через канал связи от устройства.

Это под виндой конечно, про линух - не знаю можно ли так.

Share this post


Link to post
Share on other sites
3 hours ago, Baser said:

А я желания ТС понял несколько по другому:
железка не создает локальную сеть с получением IP, а прикидывается запущенным приложением на ПК, к которому подключена, и использует его IP. Железке только нужно как-то запустить приложение и получить порт для работы.

TC очевидно же хотел чтобы дивайc выходил в интернет через путь:  дивайс -> USB -> комп -> интернет. 
RNDIS в Win10 Home с правильным дескриптором подхватывается автоматом и начинает работать сразу. 
Маршрутизацию настраивать не надо и DHCP сервер в дивайсе не нужен.
Просто у интернет соединения компа  включаем шаринг на сетевой интерфейс RNDIS.
Дивайсу даем адрес 192.168.137.2 и маску 255.255.255.000 и все, выход в интернет для дивайса открыт. 

Ну да, тут нужно ручками выбрать идентификатор  RNDIS интерфейса, который в принципе не предсказуем и может меняться со временем. 
Но я б не полагался на autorun, его стандартно банят антивирусы.
Естественней было бы из того же интернета кликнуть ссылку с конфигуратором.   

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this