Руководство по использованию OTG на Repka Pi

Содержание

Что такое USB OTG?Разница между режимамиАналогия: От классической схемы к новым возможностямЗачем это нужно на Repka Pi? (Сценарии использования)Режим Хоста: Repka Pi как центр управленияРежим Устройства (Gadget): Repka Pi как специализированный инструментРеализация на платах Repka PiRepka Pi 4Repka Pi 3Режим "Устройство" через modules-loadМеханизм активации: /boot/repkaEnv.txt и переменная extraЧто такое модуль ядра?Почему эти модули уже есть на Repka Pi?Как управлять модулями и передавать им команды?Параметры модуляЗагрузка при старте: параметр ядра modules-loadКаталог доступных "Legacy" гаджет-модулей на Repka PiКлючевые особенности и ограниченияОграничение производительности (PIO-режим)Ограничение по одновременной работе (монопольный режим)Практическое руководство — Repka Pi как Сетевая Карта (g_ether)Шаг 1: Конфигурация Repka PiШаг 2: Подключение и настройка сетиШаг 3: Проверка соединения и использованиеПрактическое руководство — Repka Pi как USB-накопитель (g_mass_storage)Вариант А: Использование файла-образа (Виртуальная флешка)Шаг 3: Подключение и проверкаВариант Б: Использование eMMC-модуля (Режим кардридера, только для Repka Pi 4)Краткое напоминание об ограничениях

Что такое USB OTG?

USB On-The-Go (OTG) — это стандарт, который расширяет возможности традиционного USB, позволяя таким устройствам, как одноплатные компьютеры Repka Pi, выступать не только в роли периферийного устройства, но и в роли хоста — управляющего устройства.

Разница между режимами

Чтобы понять суть OTG, необходимо разобраться в трех ключевых ролях, которые может выполнять USB-порт.

  • Хост (Host)

    • Роль: Управляющий. Это "мозг" операции, который инициирует обмен данными и управляет подключенной периферией.
    • Пример: USB-порты на вашем персональном компьютере или ноутбуке. Когда вы подключаете к ним флешку, именно компьютер (хост) решает, что с ней делать.
  • Устройство (Device), или Гаджет (Gadget)

    • Роль: Управляемый. Это периферийное устройство, которое выполняет команды хоста.
    • Пример: USB-флешка, мышь, клавиатура, веб-камера. Сами по себе они не могут инициировать передачу данных; они ждут команд от хоста.
  • OTG (On-The-Go)

    • Роль: Универсал. Устройство с поддержкой OTG обладает "двойной ролью" и способно динамически переключаться между режимами Хоста и Устройства.
    • Пример: Порт USB-C на Repka Pi 4. Он может как управлять подключенной к нему флешкой, так и сам "притвориться" флешкой для вашего ПК.

Аналогия: От классической схемы к новым возможностям

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

  • Сценарий 1: Классический (Компьютер и флешка)

    В этой паре роли жестко закреплены.

    • Компьютер — это всегда Хост. Он активен, он управляет.
    • Флешка — это всегда Устройство. Она пассивна, она ждет команд.
  • Сценарий 2: OTG (Repka Pi и флешка)

    Благодаря OTG, Repka Pi может играть обе роли.

    • Как Хост: Вы можете подключить флешку к Repka Pi. В этом случае Repka Pi выступает в роли "главного", как компьютер, и читает данные с флешки.
    • Как Устройство: Вы можете подключить саму Repka Pi к компьютеру. В этом случае Repka Pi "притворяется" флешкой, и уже ваш компьютер становится для нее хостом.

Именно эта способность работать в режиме Устройства (Gadget) и открывает все те уникальные возможности, которые мы рассмотрим в этом руководстве.

Зачем это нужно на Repka Pi? (Сценарии использования)

Функциональность USB OTG кардинально расширяет сферу применения Repka Pi, позволяя ей адаптироваться под разные задачи. В зависимости от выбранной роли — Хоста или Устройства — открываются совершенно разные возможности.

Режим Хоста: Repka Pi как центр управления

Это наиболее привычный режим, в котором Repka Pi функционирует как самостоятельный компьютер, управляющий подключенными к нему устройствами. OTG-порт, сконфигурированный как хост, обеспечивает питание и инициирует обмен данными с периферией. Операционная система Repka Pi загружает соответствующие драйверы для каждого подключенного устройства, интегрируя его в систему.

  • Подключение устройств ввода: Клавиатуры, мыши, графические планшеты. Это позволяет использовать Repka Pi в качестве полноценного настольного компьютера.
  • Подключение накопителей: USB-флешки, внешние жесткие диски, SSD. Это основной способ расширения дискового пространства и быстрого обмена файлами.
  • Расширение коммуникаций: Wi-Fi и Bluetooth адаптеры ("донглы"). Позволяет добавить беспроводные интерфейсы на платы, где они отсутствуют или их производительность недостаточна.
  • Специализированная периферия: Веб-камеры, принтеры, сканеры, GPS-модули, программаторы и отладочные платы. Repka Pi может выступать в роли управляющего центра для систем автоматизации, сбора данных или разработки.

Режим Устройства (Gadget): Repka Pi как специализированный инструмент

Это уникальная и наиболее мощная возможность, которую предоставляет OTG. В этом режиме Repka Pi перестает быть управляющим центром и сама становится периферийным устройством для другого хоста (обычно, вашего основного ПК). Ядро Linux, благодаря фреймворку USB Gadget API, позволяет программно эмулировать практически любой тип стандартного USB-устройства.

  • Прямое сетевое подключение к ПК (виртуальная сетевая карта)

    • Что это делает: Позволяет установить прямое сетевое соединение между ПК и Repka Pi по одному USB-кабелю, без необходимости в роутере, коммутаторе или отдельном Ethernet-кабеле.
    • Как это работает: Repka Pi эмулирует стандартный USB Ethernet адаптер, используя протоколы RNDIS (для совместимости с Windows) или ECM (для Linux/macOS). Ваш компьютер определяет Repka Pi как новую сетевую карту, что позволяет настроить IP-адреса и работать по сети (например, через SSH) так же, как в обычной локальной сети.
    • Ценность: Незаменимо для первоначальной "безголовой" настройки (headless setup), для работы в полевых условиях без доступа к сети или для создания изолированного и безопасного канала управления.
  • Использование Repka Pi как внешнего накопителя (флешка, eMMC-кардридер)

    • Что это делает: Repka Pi определяется вашим компьютером как стандартный USB-накопитель (флешка или внешний диск).
    • Как это работает: Эмулируется класс USB Mass Storage. В качестве хранилища может выступать либо файл-образ, созданный на SD-карте, либо целый блочный раздел, например, eMMC-модуль. Это позволяет хост-компьютеру получить прямой низкоуровневый доступ к накопителю для форматирования и записи данных.
    • Ценность: Удобно для быстрой передачи больших объемов данных или для использования Repka Pi в качестве "умного кардридера" для первоначальной прошивки eMMC-модулей.
  • Консольный доступ через виртуальный COM-порт

    • Что это делает: Создает последовательный (serial) порт поверх USB.
    • Как это работает: Эмулируется класс CDC-ACM (Communications Device Class - Abstract Control Model). На хост-компьютере появляется новый COM-порт (например, COM3 в Windows или /dev/ttyACM0 в Linux), к которому можно подключиться любой терминальной программой (PuTTY, screen, minicom).
    • Ценность: Критически важный инструмент для отладки. Он позволяет видеть самые ранние сообщения загрузки ядра и получать доступ к консоли, даже если сетевые интерфейсы еще не работают или система находится в аварийном состоянии.
  • Эмуляция устройств ввода (клавиатура, мышь) для автоматизации

    • Что это делает: Repka Pi может отправлять на ПК сигналы нажатия клавиш, движения мыши или нажатия кнопок геймпада.
    • Как это работает: Эмулируется класс HID (Human Interface Device). Специальный скрипт или программа на Repka Pi формирует и отправляет через USB стандартные HID-отчеты, которые операционная система хоста интерпретирует как действия пользователя.
    • Ценность: Позволяет создавать кастомные устройства ввода, средства для автоматизации рутинных задач на ПК, инструменты для тестирования безопасности (по аналогии с USB Rubber Ducky) или специализированные ассистивные технологии.
  • Продвинутые сценарии: веб-камера, звуковая карта, MIDI-устройство

    • Что это делает: Repka Pi может притвориться сложным мультимедийным устройством.
    • Как это работает: Путем эмуляции соответствующих стандартных классов: UVC (USB Video Class) для видео, UAC (USB Audio Class) для звука или MIDI class для музыкальных инструментов. Это позволяет передавать видеопоток с камеры, подключенной к Repka Pi, или обрабатывать звук и отправлять его на ПК.
    • Ценность: Открывает возможности для создания кастомных USB-веб-камер, портативных аудиоинтерфейсов, уникальных цифровых музыкальных инструментов и других сложных устройств.

Реализация на платах Repka Pi

Физическая реализация и расположение OTG-порта, способного работать в режиме Устройства (Gadget), кардинально отличаются между Repka Pi 3 и Repka Pi 4. Понимание этих различий является ключом к правильному подключению.

Repka Pi 4

На плате Repka Pi 4 функционал OTG реализован на порту USB-C.

  • Порт: Используется тот же порт USB-C, который предназначен для основного питания платы.

  • Особенность: Важно отметить, что при подключении к компьютеру в режиме Устройства (Gadget), Repka Pi 4 может получать питание непосредственно от хоста через этот же кабель USB-C, что значительно упрощает подключение. Отдельное питание через пины GPIO в этом сценарии не требуется.

  • Скорость: Контроллер, подключенный к этому порту, соответствует стандарту USB 2.0 High Speed (до 480 Мбит/с).

Repka Pi 3

На плате Repka Pi 3 для OTG используется один из стандартных портов USB-A, а не отдельный разъем Micro-USB.

  • Порт: Это нижний порт в правом сдвоенном блоке USB-A.

  • Особенность: В отличие от остальных портов USB-A, которые подключены к процессору через внутренний USB-хаб и могут работать исключительно в режиме Хоста, данный порт имеет прямое соединение с SoC (Системой-на-кристалле). Именно эта прямая связь позволяет ему гибко переключать свою роль и работать в режиме Устройства (Gadget).

  • Питание: При работе в режиме Устройства плата получает питание от хоста через этот же USB-порт.

Режим "Устройство" через modules-load

Этот раздел описывает классический, или "legacy", метод активации режимов USB-гаджета. Он заключается в принудительной загрузке одного из монолитных модулей ядра (g_...) с помощью параметров, передаваемых при старте системы.

Этот метод прост и эффективен для создания однофункциональных устройств, таких как виртуальная сетевая карта или USB-накопитель.

Механизм активации: /boot/repkaEnv.txt и переменная extra

В Repka OS управление параметрами загрузки ядра осуществляется через конфигурационные файлы загрузчика U-Boot. Понимание их ролей крайне важно для корректной настройки.

  • /boot/boot.cmd: Это основной скрипт, который выполняет загрузчик U-Boot. В нем содержится команда setenv bootargs, которая формирует финальную строку параметров для ядра. Редактировать этот файл напрямую не рекомендуется, так как любые изменения требуют его пересборки с помощью утилиты mkimage.

  • /boot/repkaEnv.txt: Это файл с переменными окружения для U-Boot. Это безопасное и правильное место для добавления пользовательских параметров. U-Boot читает этот файл перед выполнением boot.cmd и использует его значения.

Для добавления пользовательских параметров в boot.cmd предусмотрена специальная переменная-заполнитель — ${extra}. Все, что будет записано в переменную extra в файле repkaEnv.txt, загрузчик U-Boot автоматически подставит в конец строки аргументов ядра. Это позволяет гибко управлять конфигурацией, не затрагивая основной логики загрузочного скрипта.

Принцип работы: Мы будем добавлять в repkaEnv.txt строку вида extra=modules-load=имя_модуля [параметры_модуля] для активации нужного нам режима.

Что такое модуль ядра?

Модуль ядра Linux — это фрагмент кода, который может быть динамически загружен в работающее ядро или выгружен из него, без необходимости перезагрузки всей системы. По своей сути, это "плагины" для операционной системы.

  • Назначение: Основное применение модулей — это реализация драйверов для различных устройств (видеокарт, сетевых адаптеров, USB-контроллеров) и поддержка файловых систем или сетевых протоколов.
  • Файлы: Скомпилированные модули хранятся в виде файлов с расширением .ko (Kernel Object).
  • Преимущество: Такой подход делает ядро Linux чрезвычайно гибким. Вместо того чтобы собирать одно гигантское, монолитное ядро, которое включает в себя драйверы для всех возможных устройств в мире, система может оставаться легковесной и подгружать только тот код, который необходим для работы с конкретным, подключенным в данный момент оборудованием.

Почему эти модули уже есть на Repka Pi?

Файлы модулей (.ko), которые вы можете использовать, уже находятся в вашей системе, потому что разработчики дистрибутива Repka OS уже позаботились об этом.

В процессе создания операционной системы они:

  1. Сконфигурировали ядро Linux, выбрав, какие функции и драйверы могут понадобиться пользователям Repka Pi.
  2. Скомпилировали ядро и все выбранные драйверы в виде модулей.
  3. Разместили эти готовые .ko файлы в стандартной директории /lib/modules/ВАША_ВЕРСИЯ_ЯДРА/.

Таким образом, у вас "из коробки" уже есть полный набор драйверов, предусмотренный для вашей платы. Вам остается только научиться ими управлять.

Как управлять модулями и передавать им команды?

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

Параметры модуля

Самое важное — понимать, что многие модули являются настраиваемыми. Они принимают параметры при загрузке, которые влияют на их поведение. Это как запустить программу с флагами в командной строке.

Чтобы узнать, какие параметры принимает конкретный модуль, используется команда modinfo.

Пример: Давайте посмотрим на модуль, эмулирующий флешку:

modinfo g_mass_storage

Вывод будет содержать очень важную информацию:

filename:       /.../g_mass_storage.ko
description:    Mass Storage Gadget
...
parm:           file:Paths to the backing file or block device (array of charp)
parm:           ro:true to force read-only (array of bool)
parm:           removable:true to simulate removable media (array of bool)
...
  • description: Краткое описание того, что делает модуль.
  • parm:: Это и есть те самые "настройки". modinfo показывает имя параметра (file), его тип (array of charp) и краткое описание. Из этого вывода мы точно знаем, что модулю g_mass_storage нужно передать параметр file, чтобы он знал, какой файл или диск использовать как хранилище.
Загрузка при старте: параметр ядра modules-load

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

Это делается с помощью параметра командной строки ядра modules-load. В Repka OS мы передаем его через переменную extra в файле /boot/repkaEnv.txt.

Синтаксис:

  1. Загрузка одного модуля: extra=modules-load=имя_модуля

  2. Загрузка одного модуля с параметрами: Параметры передаются после имени модуля, через пробел. Имя параметра указывается после имени модуля с точкой. extra=modules-load=имя_модуля имя_модуля.параметр=значение Пример для флешки: extra=modules-load=g_mass_storage g_mass_storage.file=/pi_storage.img

  3. Загрузка нескольких модулей: Имена модулей перечисляются через запятую, без пробелов. extra=modules-load=модуль1,модуль2,модуль3

Каталог доступных "Legacy" гаджет-модулей на Repka Pi

Вот список основных монолитных гаджет-модулей, которые вы можете использовать с modules-load:

Имя модуля Описание Пример строки для extra
g_ether Эмулирует USB-Ethernet адаптер (сетевую карту). extra=modules-load=g_ether
g_mass_storage Эмулирует USB-накопитель (флешку). extra=modules-load=g_mass_storage g_mass_storage.file=/pi_storage.img
g_serial Эмулирует виртуальный COM-порт (CDC-ACM). extra=modules-load=g_serial
g_hid Эмулирует устройство ввода (клавиатуру, мышь). extra=modules-load=g_hid (требует сложной доп. настройки)
g_multi Композитное устройство: Сеть + Флешка + COM-порт. extra=modules-load=g_multi g_multi.file=/pi_storage.img
g_ncm Более современный вариант сетевой карты. extra=modules-load=g_ncm
g_audio Эмулирует USB-аудиоустройство. extra=modules-load=g_audio
g_webcam Эмулирует USB-веб-камеру. extra=modules-load=g_webcam
g_midi Эмулирует MIDI-устройство. extra=modules-load=g_midi
g_printer Эмулирует USB-принтер. extra=modules-load=g_printer
g_zero Тестовый модуль "заглушка" для проверки связи. extra=modules-load=g_zero

Ключевые особенности и ограничения

При использовании монолитных гаджет-модулей (g_...) важно понимать два фундаментальных ограничения, связанных с их архитектурой и текущей реализацией драйверов в официальном (mainline) ядре Linux.

Ограничение производительности (PIO-режим)

Как было установлено в ходе детального анализа, производительность OTG-порта в режиме Устройства (Gadget) на Repka Pi с официальным (mainline) ядром Linux является низкой.

  • Причина: Это известное архитектурное ограничение драйвера sunxi-musb. В текущей версии ядра в нем не реализована поддержка DMA (Прямого доступа к памяти) для режима "гаджет". В результате, вся передача данных осуществляется в медленном режиме PIO (Programmed I/O), который сильно загружает центральный процессор.

  • Ожидаемая скорость: Реальная пропускная способность будет ограничена ~10 МБ/с (~80 Мбит/с).

  • Практическое значение: Этой скорости более чем достаточно для комфортной работы в командной строке (SSH), эмуляции устройств ввода и передачи небольших файлов. Однако она не подходит для задач, требующих высокой пропускной способности, таких как копирование больших файлов (например, при использовании Repka Pi в качестве флешки) или видеостриминг.

Ограничение по одновременной работе (монопольный режим)

Legacy-модули, такие как g_ether и g_mass_storage, являются монолитными и взаимоисключающими. Это означает, что в любой момент времени может быть активен только один из них.

  • Причина: Эта особенность кроется в архитектуре драйверов. Каждый из этих модулей спроектирован для монопольного захвата единственного доступного USB-контроллера, способного работать в режиме Устройства (UDC). На платах Repka Pi такой контроллер всего один — тот, что выведен на OTG-порт.

  • Как это работает: Какой именно модуль запустится, зависит от порядка их перечисления в параметре modules-load. Первый модуль в списке успешно "захватит" контроллер и начнет работать. Все последующие модули в списке не смогут инициализироваться, так как необходимый им аппаратный ресурс уже будет занят.

  • Исключение: модуль g_multi Модуль g_multi не является комбинацией нескольких модулей. Это один модуль, который изначально был скомпилирован для эмуляции нескольких интерфейсов (сеть, накопитель, COM-порт) одновременно. Он, как и остальные, монопольно занимает контроллер, но предоставляет хост-компьютеру сразу несколько функций.

Практическое руководство — Repka Pi как Сетевая Карта (g_ether)

Этот раздел представляет собой пошаговое руководство по настройке Repka Pi для работы в режиме "виртуальной" сетевой карты. В результате вы сможете подключить Repka Pi к вашему компьютеру одним USB-кабелем и получить полноценный сетевой доступ (например, через SSH), не используя Wi-Fi или Ethernet-роутер.

Шаг 1: Конфигурация Repka Pi

Наша первая задача — дать ядру Linux команду принудительно загрузить необходимый модуль при старте системы.

  1. Подключитесь к Repka Pi по существующей сети (Wi-Fi или Ethernet) и откройте терминал.

  2. Откройте конфигурационный файл /boot/repkaEnv.txt с помощью текстового редактора nano. Для этого требуются права суперпользователя:

    sudo nano /boot/repkaEnv.txt
    

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

  3. Перейдите в конец файла и добавьте новую строку для переменной extra:

    extra=modules-load=g_ether
    

  1. Сохраните внесенные изменения, нажав Ctrl+O. Редактор запросит подтверждение имени файла — просто нажмите Enter.

  2. Закройте редактор nano, нажав Ctrl+X.

  3. Важно: Перезагрузите Repka Pi, чтобы она загрузилась с новыми параметрами:

    sudo reboot
    

    Ваше SSH-соединение прервется. Это нормально.

Шаг 2: Подключение и настройка сети

Теперь, когда Repka Pi готова, подключим ее к компьютеру и посмотрим, как система на это отреагирует.

  1. На вашем основном ПК откройте терминал и запустите команду для отслеживания системных событий в реальном времени:

    sudo dmesg -w
    

    Терминал перейдет в режим ожидания и будет показывать новые сообщения от ядра по мере их появления.

  2. Подключите Repka Pi к вашему основному компьютеру с помощью USB-кабеля. Используйте соответствующий OTG-порт:

    • На Repka Pi 4: порт USB-C.
    • На Repka Pi 3: определенный порт USB-A.
  3. Подождите 10-15 секунд, чтобы операционная система вашего ПК обнаружила новое "устройство".

  4. Откройте терминал на вашем ПК и найдите имя нового сетевого интерфейса. Для этого используется команда ip a:

    ip a
    

    В списке, помимо ваших обычных wlan0 или eth0, появится новый интерфейс. Чаще всего он будет называться usb0, но в некоторых системах может получить имя вида enx....

  5. Назначьте IP-адрес вашему ПК на этом новом интерфейсе. Это создаст нашу мини-сеть. (В команде ниже замените usb0, если ваше имя отличается).

    sudo ip addr add 192.168.10.1/24 dev usb0
    
  6. Активируйте ("поднимите") интерфейс:

    sudo ip link set up dev usb0
    
  7. Теперь назначьте IP-адрес самой Repka Pi. Для этого вам снова понадобится доступ к ее консоли (например, через старое Wi-Fi соединение, если оно еще активно, или подключив монитор/клавиатуру). Выполните на Repka Pi:

    sudo ip addr add 192.168.10.2/24 dev usb0
    sudo ip link set up dev usb0
    

    Теперь у нас есть сеть: ваш ПК — 192.168.10.1, а Repka Pi — 192.168.10.2.

Шаг 3: Проверка соединения и использование

  1. Вернитесь в терминал вашего основного ПК и проверьте связь с помощью команды ping:

    ping 192.168.10.2
    

    Вы должны увидеть успешные ответы от Repka Pi, подтверждающие, что сетевое соединение установлено и работает.

  2. Готово! Теперь вы можете подключиться к вашей Repka Pi по SSH, используя ее новый IP-адрес:

    ssh root@192.168.10.2
    

Вы успешно настроили прямое сетевое соединение и можете работать с консолью Repka Pi без дополнительного сетевого оборудования.

Практическое руководство — Repka Pi как USB-накопитель (g_mass_storage)

Этот раздел описывает, как настроить Repka Pi для работы в режиме USB-накопителя. Этот режим позволяет компьютеру видеть Repka Pi как обычную флешку или внешний диск, что удобно для обмена файлами или первоначальной прошивки eMMC-модулей.

Вариант А: Использование файла-образа (Виртуальная флешка)

Этот метод превращает часть SD-карты вашей Repka Pi в "виртуальную" флешку.

Шаг 1: Создание файла-хранилища на Repka Pi Перед настройкой необходимо создать на SD-карте файл, который будет выступать в роли "диска" для нашей флешки.

  1. Подключитесь к Repka Pi по SSH.

  2. Создайте пустой файл нужного размера. В этом примере мы создадим файл на 4 ГБ.

    sudo dd if=/dev/zero of=/pi_storage.img bs=1M count=4096 status=progress
    
  3. Отформатируйте этот файл в файловой системе FAT32, чтобы он был совместим с большинством ОС.

    sudo mkfs.vfat /pi_storage.img
    

Шаг 2: Конфигурация Repka Pi

  1. Откройте файл /boot/repkaEnv.txt в текстовом редакторе:

    sudo nano /boot/repkaEnv.txt
    

  2. Добавьте/измените переменную extra, указав модулю g_mass_storage путь к вашему файлу-образу:

    extra=modules-load=g_mass_storage g_mass_storage.file=/pi_storage.img
    

  3. Сохраните изменения (Ctrl+O, Enter) и закройте редактор (Ctrl+X).

  4. Перезагрузите Repka Pi:

    sudo reboot
    

Шаг 3: Подключение и проверка

Теперь, когда Repka Pi сконфигурирована, можно подключать ее к компьютеру и наблюдать за процессом инициализации.

  1. На вашем основном ПК откройте терминал и запустите команду для отслеживания системных событий в реальном времени:

    sudo dmesg -w
    

    Терминал перейдет в режим ожидания, готовый показывать новые сообщения от ядра.

  2. Подключите Repka Pi к компьютеру с помощью USB-кабеля. Используйте соответствующий OTG-порт:

    • На Repka Pi 4: порт USB-C.
    • На Repka Pi 3: определенный порт USB-A.
  3. Наблюдайте за выводом в терминале. В момент подключения вы должны увидеть серию сообщений, подтверждающих, что ядро обнаружило и настроило Repka Pi как USB-накопитель.

  4. Через некоторое время в операционной системе вашего ПК должен появиться новый съемный диск. В связи с ограничениями драйвера это время может составлять более минуты.

Вариант Б: Использование eMMC-модуля (Режим кардридера, только для Repka Pi 4)

Этот метод позволяет предоставить вашему ПК прямой, низкоуровневый доступ ко всему eMMC-модулю.

Шаг 1: Идентификация eMMC-модуля Нам нужно узнать системное имя eMMC-накопителя.

  1. Убедитесь, что Repka Pi загружена с SD-карты.

  2. Подключитесь по SSH и выполните команду lsblk.

  3. Найдите в списке устройство, которое не является вашей SD-картой (mmcblk0). Обычно это mmcblk1. Запомните это имя (/dev/mmcblk1).

Шаг 2: Конфигурация Repka Pi

  1. Откройте файл /boot/repkaEnv.txt в текстовом редакторе:

    sudo nano /boot/repkaEnv.txt
    
  2. Добавьте/измените переменную extra, указав путь к вашему eMMC-устройству:

    extra=modules-load=g_mass_storage g_mass_storage.file=/dev/mmcblk1
    
  3. Сохраните и перезагрузите Repka Pi.

Шаг 3: Подключение и форматирование

  1. Подключите Repka Pi к компьютеру через OTG-порт USB-C.
  2. Ваш компьютер обнаружит новый неформатированный диск. Это нормально, так как он получил прямой доступ к "пустому" устройству.
  3. Операционная система (Windows, macOS или Linux) предложит вам отформатировать этот новый диск.
  4. Отформатируйте его в любой универсальной файловой системе (например, exFAT для файлов >4ГБ или NTFS).

После форматирования eMMC-модуль будет работать как высокоскоростной внешний накопитель.

Краткое напоминание об ограничениях

Как указано в предыдущей главе, помните, что из-за особенностей официального драйвера sunxi-musb скорость передачи данных в этом режиме будет ограничена ~10 МБ/с. Этого может быть недостаточно для комфортной работы с очень большими файлами.


147 просмотров0 комментариев

Комментарии (0)

Для участия в обсуждении Вы должны быть авторизованным пользователем
Что такое USB OTG?Разница между режимамиАналогия: От классической схемы к новым возможностямЗачем это нужно на Repka Pi? (Сценарии использования)Режим Хоста: Repka Pi как центр управленияРежим Устройства (Gadget): Repka Pi как специализированный инструментРеализация на платах Repka PiRepka Pi 4Repka Pi 3Режим "Устройство" через modules-loadМеханизм активации: /boot/repkaEnv.txt и переменная extraЧто такое модуль ядра?Почему эти модули уже есть на Repka Pi?Как управлять модулями и передавать им команды?Параметры модуляЗагрузка при старте: параметр ядра modules-loadКаталог доступных "Legacy" гаджет-модулей на Repka PiКлючевые особенности и ограниченияОграничение производительности (PIO-режим)Ограничение по одновременной работе (монопольный режим)Практическое руководство — Repka Pi как Сетевая Карта (g_ether)Шаг 1: Конфигурация Repka PiШаг 2: Подключение и настройка сетиШаг 3: Проверка соединения и использованиеПрактическое руководство — Repka Pi как USB-накопитель (g_mass_storage)Вариант А: Использование файла-образа (Виртуальная флешка)Шаг 3: Подключение и проверкаВариант Б: Использование eMMC-модуля (Режим кардридера, только для Repka Pi 4)Краткое напоминание об ограничениях
Разделы

Навигация

ВойтиРегистрация