Skip to content

arm64: wb8.config: enable USB_GADGET_DEBUG_FILES for the RNDIS state file - #371

Draft
evgeny-boger wants to merge 1 commit into
feature/gadget-msos20-descriptorsfrom
feature/gadget-rndis-debug-files
Draft

arm64: wb8.config: enable USB_GADGET_DEBUG_FILES for the RNDIS state file#371
evgeny-boger wants to merge 1 commit into
feature/gadget-msos20-descriptorsfrom
feature/gadget-rndis-debug-files

Conversation

@evgeny-boger

Copy link
Copy Markdown
Member

Что происходит; кому и зачем нужно:

Включает CONFIG_USB_GADGET_DEBUG_FILES=y в оверлее wb8.config. С этой опцией функция RNDIS гаджета показывает своё состояние в /proc/driver/rndis-NNN (RNDIS_UNINITIALIZEDRNDIS_INITIALIZED после RNDIS_MSG_INIT от хоста → RNDIS_DATA_INITIALIZED после установки packet filter).

Это нужно wb-utils (ветка feature/debug-network-host-adaptive), чтобы Debug Network работал на macOS: у macOS нет драйвера RNDIS, у Windows нет драйвера CDC ECM, а обе функции разом в одну конфигурацию не влезают (4+4 endpoint у musb H616) и вторая USB-конфигурация ломает usbccgp в Windows. Поэтому гаджет перечисляется как RNDIS, а демон смотрит, дошёл ли хост до RNDIS-рукопожатия; если за 4 с не дошёл, переперечисляется как CDC ECM. Файл в /proc даёт признак рукопожатия без ожидания пакетов, что важно для хостов с выключенными DHCP и IPv6. Carrier сетевого интерфейса для этого не годится: gether_connect() поднимает его при выборе интерфейса, до RNDIS_MSG_INIT.

Кроме rndis-NNN опция добавляет /proc/driver/udc с диагностикой контроллера; всё только на чтение. Исходники ядра не меняются. Стек: поверх #369 (версия wb164).


Что поменялось для пользователей:

Ничего заметного: появляется пара read-only файлов в /proc/driver. Без новой версии wb-utils они никем не читаются; wb-utils без этого файла продолжает работать по старому признаку (пакеты от хоста).


Как проверял/а:

  • На WB 8.5 (wirenboard-ALFLOJF3, 6.8.0-wb161) пересобран только usb_f_rndis.ko с этой опцией из тега v6.8.0-wb161, без правок исходников, и установлен как override в /lib/modules/.../updates/. После реальной перезагрузки модуль загрузился сам, /proc/driver/rndis-000 появился, демон wb-utils увидел RNDIS_DATA_INITIALIZED через 0.3 с после подключения Linux-хоста; сеть и диск работают.
  • Замер на Win11 VM с новыми instance ID и удалённым кэшем usbflags: RNDIS_INITIALIZED через 1.1–1.3 с после SET_CONFIGURATION, при повторном подключении через 0.4 с.
  • Не проверял: сборку полного ядра с этим оверлеем в CI (только модуль вручную), другие платы кроме WB8.

ИИ: текст подготовил ИИ-агент.
Модель: claude-fable-5-1 · Harness: Claude Code CLI 2.1.261 · Настройки: permission mode auto
Запустил и отвечает за содержимое: @evgeny-boger

The RNDIS gadget function then exposes its state (RNDIS_UNINITIALIZED /
RNDIS_INITIALIZED / RNDIS_DATA_INITIALIZED) in /proc/driver/rndis-NNN.
wb-utils reads it to tell a host that completed the RNDIS handshake
(Windows, Linux) from one without an RNDIS driver (macOS), which then gets
CDC ECM instead; the netdev carrier is useless for that because
gether_connect() raises it before RNDIS_MSG_INIT, and waiting for packets
fails on hosts with DHCP and IPv6 disabled. The other files the option adds
(/proc/driver/udc for the controller) are read-only diagnostics.

Assisted-by: Claude Fable 5.1
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HLFmiMmz3W25ZKY2FTjL1x
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant