LINUX.ORG.RU

Linux пк как виртуальная usb флешка

 


2

5

Доброго All!

Ситуация для упрощения жизни в сервисном центре - сейчас прошивка обычных китайских телевизоров происходит с использованием USB накопителя, так же иногда требуется слить с телевизора прошивку на флешку. Возможно ли какими то простыми средствами сделать так что бы:

  1. Вариант для прошивки- на пк создается отдельный раздел на диске, в который помещается файл прошивки, далее компьютер по USB кабелю подключается к телевизору, при этом телевизор уверен что в него воткнули USB накопитель. Далее собственно телек с этой виртуальной флешки всасывает в себя прошивку.

  2. Вариант для снятия дампа телевизора - на пк создается отдельный раздел на диске, в который помещается файл для снятия прошивки, далее компьютер по USB кабелю подключается к телевизору, при этом телевизор уверен что в него воткнули USB накопитель. Далее собственно телек с этой виртуальной флешки всасывает в себя скрипт для проведения процедуры, после этого телевизор форматирует виртуальную флешку в свой, хрен знает какой формат и сливает на нее данные.

Вроде бы кажется все просто, но для винды не удалось найти ничего подобного по софту.

Думаю, что обычный пк не подойдёт, а вот одноплатники, которые умеют в usb gadget, могут сработать. Я особо не вдавался в подробности, так что могу ошибаться.

u5er ★★★
()
Ответ на: комментарий от Zhelezniy_Felix

Из стартового поста этого не видно. ПК или вернее какое-то «хитрое» устройство-накопитель всё также надо будет подключать/отключать.

Если правильно помню, какой-то такой софт есть для андроида – смартфон прикидывается «всамделишной» флешкой.

master_0K
()
Последнее исправление: master_0K (всего исправлений: 2)
Ответ на: комментарий от master_0K

в старых андроидах это была встроенная функция. всю карточку памяти «отображало» на усб-кабель.

Drivedroid. файл на носителе представляет как устройство. к примеру iso образ как usb-cd.
проект остановлен. закручивание гаек в андроиде тормознуло все возможности. где-то как-то у кого-то работает :( у меня перестал. абидно балин.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от pfg

Я только задумался «не попробовать ли эти ваши андроиды/смартфоны» – а там уже гайки закрутили (((

Drivedroid. файл на носителе представляет как устройство.

Вот-вот. Что-то такое и я слышал.

master_0K
()
Ответ на: комментарий от master_0K

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

firkax ★★★★★
()

Предлагаю сделать что-то типа KVM-switch. Тумблером переключаешь, к какому USB будет подключена твоя флешка - к компу или к подопытному.

Правда надо быть осторожным с питанием. Гальванические развязки, все дела. Но если ты ремонтами телеков занимаешься, ты лучше меня знаешь, как это правильно собрать.

И будет тебе счастье.

P.S. От необходимости втыкания USB-кабеля в телек ты не избавишься, как ты понимаешь.

kma21 ★★★★★
()

нет, ну можно конечно как-то сделать распберри пи «флешку», которую не придётся подключать к компьютеру(только к телевизору) и по ssh подключаться к ней, но не проще ли уж затерпеть перетыкание флешки?

daniyal
()
Последнее исправление: daniyal (всего исправлений: 1)

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

alegz ★★★★★
()
Ответ на: комментарий от alegz

Это фишки отдельных type C контроллеров, на обычных матерях их нет, там USB в проце или PCH (хабе), туда никто OTG не засовывал. И, даже с подходящим контроллером необходимость общей земли остаётся, что для ТС может стать геморроем.

Разумнее всего ТС'у под это дело заточить одноплатник, как уже советовали. Его к стационарному компу подключать по сети или wifi. По g_mass_storage можно нагуглить примеры, почитать форумы, что работает, а что нет.

mky ★★★★★
()
Ответ на: комментарий от mky

или PCH (хабе), туда никто OTG не засовывал

Как минимум с хабов 300 поколения (на более ранние доки не смотрел) в самом хабе такой функционал есть. То есть разработчики хаба туда такую функцию засунули. Дальше - вопрос поддержки всего этого со стороны ПО, которое вероятно в той или иной степени хромает, на практике я не пробовал. Ключевые слова «indel usb xDCI» https://xairy.io/articles/thinkpad-xdci

GPFault ★★★
()
Ответ на: комментарий от mky

И, даже с подходящим контроллером необходимость общей земли остаётся, что для ТС может стать геморроем.

А если через USB хаб с внешним питанием это дело подключать ?

alx777 ★★★
()
Ответ на: комментарий от alx777

Ещё один источник питания ничего не улучшит. В хабах нет гальванической развязки, земля останется общей. На алике продаётся гальваническая развязка для USB, но там 12 Мбит/с. Существует чип для usb 2.0 (high speed), но там был конский ценник за сам чип, а коробочки на нём я вобще в продаже в нашей реальности не видел.

mky ★★★★★
()
Ответ на: комментарий от GPFault

Интерестно. И по ссылке написно, что с сотой серии, т.е. LGA-1151.

Получается, что ТС'у нужно искать материнку, где в BIOS есть опция «Enable/Disable xDCI»?

mky ★★★★★
()
Ответ на: комментарий от mky

а смысл ?? внутрянка телевизора гальваноизолирована от питающей сети.
тем более сначала все равно земля соединяется.

pfg ★★★★★
()
Ответ на: комментарий от pfg

Некоторые ТВ не любят, когда флешка исчезает в момент прошивки.

Когда по сети проходит помеха, она через ёмкость попадёт на шасии и пойдёт на корпус компа и будет отвал с руганью:

disabled by hub (EMI?), re-enabling...

Это ловится массой DIYшиков, которые ардуину или другой МК подключают к копму и запитывают его от отдельного большого БП с заметной проходной ёмкостью. Весь вопрос, как часто, где-нибудь в цехе это можно пару раз за день ловить, а в квартире может нужно будет грозы подождать или «правильного» холодильника.

все равно земля соединяется.

То, что в USB — это не земля, а фигня, если нужно объединять земли БП, то там сечение должно быть побольше, чем у жил кабелей, питающих от сети.

mky ★★★★★
()
Ответ на: комментарий от mky

на обычных матерях их нет, там USB в проце или PCH (хабе), туда никто OTG не засовывал.

то есть проблема в том, что контроллер не поддерживает и никакими драйверами это не решить?

Psilocybe ★★★★★
()
Ответ на: комментарий от Psilocybe

Если у контроллера нет соотв. режима, именно аппаратно, то никакими дровами не решить.

Но, так я ошибся, там мне ссылку кидали, что давно засунули в PCH, но спрятали на уровне BIOS. В принципе, может повезёт. Подходящий ICH, и поддержка в BIOS xDCI, и этот порт физичски выведен, то можно завести. А иначе получается, что если BIOS отключил, то из Линукс включить не получится.

Я погуглил, и получил, что эта опция гуглится в мануалах по серверным материнкам, видимо там надо, а на десктопных не надо :)

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)
Ответ на: комментарий от mky

это всё если у тебя гальваноразвязка говно :) диф.сигнал усб весьма устойчив к помехам.
тут тебе не это не цех с длинными соединениями и кучей помех от коллекторных движков и частотных преобразователей, а практически лабораторные условия :)
в усб обычная земля, такая же как и везде. в 3.0 разделили питающую и сигнальную землю, плюс отдельно shield для управления, но один фиг они помехи заберут.
нуи сечение побольше нужно для больших токов, таже защита пром.установок. а тут то какие токи ??

pfg ★★★★★
()
Ответ на: комментарий от mky

Получается, что ТС’у нужно искать материнку, где в BIOS есть опция «Enable/Disable xDCI»?

Может какие-то из USB PCIe карт поддерживают xDCI ?

alx777 ★★★
()
Ответ на: комментарий от firkax

какое-нить затрояненное устройство незаметно подменит на них содержимое

что значит «незаметно» – запись на флешку (чем бы она не являлась в действительности) из кейсов в этом треде

китайцы теперь «троянят» телевизоры? ) хотя чему тут удивляться (

master_0K
()
Ответ на: комментарий от master_0K

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

firkax ★★★★★
()
Ответ на: комментарий от mky

Существует чип для usb 2.0 (high speed), но там был конский ценник за сам чип, а коробочки на нём я вобще в продаже в нашей реальности не видел.

Если такое надо, думаю стоит что-то вроде USB extender которые по оптике работают смотреть. Они хоть и не дешевые, но есть, в том числе и для 3.0

alx777 ★★★
()
Ответ на: комментарий от alx777

Вот гуглится USB 2.0 OTG, достаточно дешёвая. https://www.ozon.ru/product/plata-perehodnik-pci-e-na-4-porta-usb-2-0-plata-a... на Озоне фотки размазаные, и чип не указан, но 24 GPIO приводит к чипу MCS990. И здесь https://www.amazon.se/-/en/Evzvwruak-Adapter-MCS990-Chipset-Hot-Swapping/dp/B... это чип указан в описании. Правда, почему-то визуально маркировка чипа выгляит иначе, чем на демо-плате на сайте ASIX, возможно какой-то клон.

Но драйверов под линукс вобще нет. А под винду есть, может ТС даже удобнее будет. Правда непонятно, что эти драйвера могут, обзоров на это чудо не нашёл.

Другого, похоже, и нет. Все эти чипы, поддерживающие OTG/Dual Mode имеют со второй стороный не PCIe, а ULPI/PIPE интерфейс. На одном таком чипе плату расширения не сделаешь, а городить несколько микросхем на плату USB PCIe производителям, видимо, не хочется.

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)
Ответ на: комментарий от kma21

Вот интересно, втыкаю я так сказать в средний USB флешку, и она будет доступно то одному то другому устройству? или эта штука работает только для каких-нибудь клавиатур.

Zhelezniy_Felix
() автор топика
Ответ на: комментарий от mky

Вот воткну я эту хрень в комп в винде, этож какой то еще софт к ней должен быть что бы комп превратить в «виртуальную флешку»? идет ли он в комплекте… Плату заказал, через месяц посмотрим что оно может.

Zhelezniy_Felix
() автор топика
Последнее исправление: Zhelezniy_Felix (всего исправлений: 1)
Ответ на: комментарий от Zhelezniy_Felix

Я себе тоже из интереса заказал плату. Но, что дальше делать не знаю. Этот https://www.asix.com.tw/en/product/Interface/PCIe_Bridge/MCS9990 не даёт драйвера скачать. По u2x4-pcie1x01 находятся только сами платы, без обзора, чтобы понять, что с ними делать и называются они так как-то Industrial Camera Image Acquisition Card...

mky ★★★★★
()
Ответ на: комментарий от firkax

ТС такими вопросами не задаётся. У него и флешка-компьютер аналогично себя поведёт.

P.S. Спасибо! Я кажется понял, в чём «проблема» ТС:

  • сейчас он флешку суёт в ТВ
  • после в комп
  • затем в другой/тот же ТВ

теперь понятно, что он имеет виду под упрощением.

master_0K
()
Последнее исправление: master_0K (всего исправлений: 1)
Ответ на: комментарий от Zhelezniy_Felix

У меня такой штуки нет, но я предполагаю и считаю разумным, что там стоит… ну не реле, а парочка транзисторов, которые буквально переключают питание и шину данных. В одном положении флешка соединена с одним компом, в другом положении с другим компом.

KVM-свитчи именно так и работают - клава, мышка, USB-порты по кнопке переключаются от одного компа к другому.

kma21 ★★★★★
()
Ответ на: комментарий от kma21

В общем, приехал свич, шить еще не пробовал, но воткнув флешку в центр, и подключив к компу проводом - комп нормально видит флешку, отформатил, залил быстро данные.

Zhelezniy_Felix
() автор топика

Учитывая что некоторые телевизоры особо щепетильны к восприятию флешек, я бы не стал заморачиваться. У меня вообще для этих дел есть старая флешка на 4Гб, отформатированная в FAT32. Есть ещё флешка 128Гб USB3, так вот её не все телевизоры видят когда дело доходит до прошивки, хотя как устройство видят, и работает с неё мультимедиа.

unixnik ★★★★★
()
Ответ на: комментарий от mky

Получил плату, прозвонил. Разводка соответствут даташиту, возможно оригинальный чип. Есть места для перемычек (резисторов), чтобы переключить плату в режим 2-USB + 1-OTG.

Вобще, чип интерестный, не так сложно её можно переключить в режмим 24 GPIO или ISA. Да, там будет сложно припаять разъём под пины GPIO, но не невозможно. И при всех её возможностях, я вобще не нашёл обсуждения как её использовать в этих режимах. В инете ведь полно всяких примеров доработки различных плат, типа сюда резистор, там обрезать дорожку и т.д. По этому чипу ноль, ни кода, ни пайки.

Попробую на неделе передвинуть резисторы, переключить режим. Но, боюсь, что так просто OTG не заработает, нужно будет ковырять ядро, а я подсистему usb gadget нифига не знаю...

mky ★★★★★
()
Ответ на: комментарий от Zhelezniy_Felix

Пока фейл.

Согласно даташиту, для работы в режиме 4 USB порта (конфигурация как продаётся) нога 27 (OTG_EN_N) должна быть на «1», а нога 24 (MODE_SEL_0) должна быть на «0». И так резисторами и сделано. А когда наоборот, должен быть режим OTG. Перепаял резисторы на перемычках RJ2 и RJ5 и получил, что материнка не стартует, пикалка не пикает. Причём вентилятор скидывает обороты, как будто материка (гигабайт) пытается стартовать, ей что-то не нравится и новый старт.

Мне пока не понятно, может ли PCIe устройство препятствовать старту аппаратно, какой-то линией в PCIe, или это всё BIOS «придуриватся», что не то получает в конфигурации PCIe устройства и начинает с начала. Попробуют ID-плату найти, посмотреть что там по POST-кодам. И другу материнку, асус, а не гигабайт посмотрю.

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

Ещё, если эти ноги (OTG_EN_N, MODE_SEL_0) оставить в воздухе, то плата определяется в режиме 4 USB порта. Всегда считал, что если цифровой вход оставить в воздухе, то в зависимости от схемотехники чипа, его притянет к земле или к питанию. А тут, получается, что одна нога к земле, другая к питанию.

mky ★★★★★
()
Ответ на: комментарий от mky

Попробовал в старую Asus с AMI-Bios. Там материнка стартует, грузится ядро и зависает на загрузке usb-модулей. Похоже, плата для func 6 (OTG) и func 7 (N/A) сообщает данные из EEPROM, берёт оттуда Class и Subclass. Берёт от конфигурации 4 USB (ohci и ehci контроллеры) и ядро зависает на инициализации драйвером usb несуществующего контроллера.

mky ★★★★★
()
Ответ на: комментарий от mky

На всякий случай оставлю здесь, вдруг кому интерестно будет. В продаже, вроде, есть плата PP2380-AB по не гуманной цене и не понятно как с Тайваня покупать. Но, на чипе USB2380-AB, который NetChip=PLX=Broadcom, поддержка которого есть в ядре. Насколько рабочая не проверял. Ну и там рядом ещё продаётся для USB 3.0 и ф/ф mPCI.

mky ★★★★★
()
Ответ на: комментарий от Zhelezniy_Felix

Докладываю :)

Разобрался, что сначала надо через регистр этой карточки изменять значения в EEPROM и только потом двигать резисторы. OTG контроллер активировал, во всяком случае, через busybox devmem читаются его регистры, дефолтные значения, указаные в даташите.

Но, дальше засада, даташит не полный. В нём описаны не все регистры OTG-контроллера, и что хуже, не описан формат Transfer Descriptor для End Point. У других USB device контроллеров, которые я смотрел, в один регистр пишется адрес, а в другой размер передаваемых данных. А у этого только один регистр с адресом.

Ну, буду ещё ковырять, но неспешно, посмотрю код других UDC контроллеров в ядре.

mky ★★★★★
()
Ответ на: комментарий от mky

OTG-контроллер, вроде, живой. Переключает биты в регистре на изменние состояния ID-пина и VBUS. Но непонятно, как включается pull-up резистор на D+, чтобы usb-host начал setup.

Пока, для интереса, включил режим 4USB+OTG+GPIO. GPIO контакты работаю, но очень чувствительные к статике, чуть заденешь рукой и весь чип зависает, все регистры читаются 0xFFFFFFFF.

mky ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.