Найти в Дзене
mamaich

Включаем режим USB Host на Яндекс Модуле 2

Дано: За режим работы USB на Яндекс Модуле 2 и, возможно, на Станции Макс (не проверял), отвечает драйвер dwc_otg. У него есть параметр otg_device, принимающий по умолчанию значение "1" (оно же "Y"). При значении "1" - Модуль 2 работает в режиме USB устройства (ADB, MTP, ...) и как переключить его в режим хоста без перезагрузки я не нашел (команда "echo 1 >/sys/module/dwc_otg/parameters/otg_device" ни к чему полезному не приводит). Но если в строке параметра ядра указать параметр "otg_device=0", то USB переключается в режим хоста, и при этом Модуль 2 может брать питание от активного USB3 хаба. В таком случае можно подключить, например, внешнюю клавиатуру, мышь, USB гарнитуру и флешку одновременно. Самый простой способ поменять значение данного параметра - загрузиться в интерактивный U-Boot (как я писал в конце статьи тут), после чего выполнить команды: setenv otg_device 0
saveenv И перезагрузиться. После загрузки у вас заработают подключенные USB устройства. Только флешки потребуется м

Дано:

За режим работы USB на Яндекс Модуле 2 и, возможно, на Станции Макс (не проверял), отвечает драйвер dwc_otg. У него есть параметр otg_device, принимающий по умолчанию значение "1" (оно же "Y").

При значении "1" - Модуль 2 работает в режиме USB устройства (ADB, MTP, ...) и как переключить его в режим хоста без перезагрузки я не нашел (команда "echo 1 >/sys/module/dwc_otg/parameters/otg_device" ни к чему полезному не приводит). Но если в строке параметра ядра указать параметр "otg_device=0", то USB переключается в режим хоста, и при этом Модуль 2 может брать питание от активного USB3 хаба. В таком случае можно подключить, например, внешнюю клавиатуру, мышь, USB гарнитуру и флешку одновременно.

Самый простой способ поменять значение данного параметра - загрузиться в интерактивный U-Boot (как я писал в конце статьи тут), после чего выполнить команды:

setenv otg_device 0
saveenv

И перезагрузиться. После загрузки у вас заработают подключенные USB устройства. Только флешки потребуется монтировать вручную - но для этого нужно отключить SELinux.

(виден курсор мыши)
(виден курсор мыши)

SELinux отключается также очень просто, добавлением параметра "androidboot.selinux=permissive" в конец строки параметров ядра.

Например, я у себя в раздел misc прописал вот такую строку:

setenv fs_type ro rootwait skip_initramfs;setenv silent 0;setenv otg_device 0;saveenv;setenv bootargs ${bootargs} "androidboot.qc_mode=0 root=/dev/mmcblk0p18 androidboot.dtbo_idx=0 buildvariant=user androidboot.selinux=permissive -- ";imgread kernel ${boot_part} ${loadaddr};bootm ${loadaddr};
-2

и у меня теперь каждая загрузка - с silent=0, без SELinux, и к тому же можно перемонтировать раздел "/" (он же "system") в read-write и никакая vbmeta тут не мешает. А так как программисты Яндекс нам любезно предоставили права рута на консоли UART - то с Модулем теперь можно делать вообще всё что угодно. Причем без необходимости припаиваться к тестпоинтам. Главное - отключить автообновления прошивки (но не APK файлов), благо, это тоже делается элементарно.