Налаштування usb-moded

Примітка

Інформація на цій сторінці стосується портів, які підтримують Ubuntu Touch 20.04. Якщо потрібно, щоб Ваш порт підтримував Ubuntu Touch 20.04, див. Оновлення портів Ubuntu Touch 20.04.

usb-moded — це нова служба в Ubuntu Touch 20.04, яка опікується перемиканням режимів USB таких як, напр. MTP або режим розробника. Вона замінює ряд спеціальних завдань Upstart на 16.04, крім того, більш сучасними портами використовується скрипт setupusb.

Більшість важливих налаштувань система може визначити самостійно. Але для кращої роботи usb-moded ми хочемо підбадьорити портувальників та надати для отримання гарного досвіду деякі окремі налаштування.

Історія роботи з режимами USB

В Ubuntu Touch 16.04 для збереження та налаштування властивостей USB ми використовували особливості Android. Раніше це гарно працювало, але зараз це більше не працює:

  • Починаючи з Halium 7.1, компонент Android, який передає керівний сигнал стану до Upstart, тепер відсутній. Крім того, концепції сигналів, здається у Systemd не існує.

  • Починаючи з Android 8, код налаштування режиму USB переїхав до контрольованих виробниками процесів HAL, які спілкуються через HIDL.

Це призвело до того, що портувальники, щоб налаштувати режим USB один раз, використовують спеціальний скрипт, наприклад setupusb, який запускається під час завантаження. І коли базові речі, подібні до цієї, потрапляють до портувальників, це неминуче призводить до фрагментації.

В Ubuntu Touch 20.04, ми перейшли до usb-moded, яка є частиною системи SailfishOS. Ця служба не залежить від властивостей Android, але її потрібно налаштувати. Тож ми створили так званий конфігуратор, який автоматично визначає різні потрібні налаштування, але не всі. Тому портувальникам потрібно все одно дещо налаштовувати самостійно.

Основні (базові) налаштування

Головна конфігурація, яку портувальники можуть змінювати через підміну системного файлу, збережена у /etc/default/usb-moded.d/device-specific-config.conf. Цей файл має простий формат <key>=<value>. Нижче його приклад:

IDVENDOR=0E8D
IDPRODUCT_MTP=2008
IDPRODUCT_MTP_ADB=201D
IDPRODUCT_RNDIS=2004
IDPRODUCT_RNDIS_ADB=2005
USB_MODED_ARGS=

Що можна налаштувати:

ID виробників та товару/моделі

Надані нижче налаштування дуже бажано встановити. Без них система може повернутися до тестового коду з проєкту pid.codes.

  • IDVENDOR

  • IDPRODUCT_MTP

  • IDPRODUCT_MTP_ADB

  • IDPRODUCT_RNDIS

  • IDPRODUCT_RNDIS_ADB

Значення ID повинні бути у шістнадцятковому форматі без префіксу 0x. Значення ID можна знайти у:

  • файлах Вашого пристрою: init.<device>.rc чи init.<chipset>.rc.

  • початковому коді USB-драйвера (HAL) Вашого пристрою, якщо він раптом доступний.

  • скрипті setupusb з Вашого пристрою, за наявності.

Якщо з цим не виходить, можливо, Вам доведеться перевірити, як визначається Ваш пристрій під час завантаження Android.

Примітка

Ми знаємо, що деякі пристрої для різних режимів використовують різні ідентифікатори виробників. Якщо у Вас один з таких пристроїв, будь ласка, проголосуйте за цю проблему на GitLab.

Гарна назва пристрою

Це назва, яка з’являється, коли під’єднуєте пристрій до комп’ютера. У більшості випадків це можна визначити у властивостях Android, але якщо визначення неправильне, або якщо Ви хочете замінити його на щось інше, це можна налаштувати тут.

  • MANUFACTURER

  • PRODUCT

аргументи usb-moded

Це налаштування керує прапором запуску usb-moded. У більшості випадків служба usb-moded має працювати без будь-яких прапорців. Однак rootfs ставить прапор -r, який вмикає після завантаження режим відновлення (див. нижче). Поведінка режиму відновлення може заплутати кінцевих користувачів, тому рекомендується для вимкнення режиму відновлення, щоб портувальники налаштували це значення на порожнє.

  • USB_MODED_ARGS

Щодо режиму відновлення usb-moded

Режим відновлення usb-moded схожий на гібридний режим USB для використання телефону як модему (usb-tethering). Він активує для USB функцію мережевого інтерфейсу та запускає сервер DHCP. Телефон буде доступним за адресою 10.15.19.82, а сервер SSH — через порт 8022. Це реалізовано для допомоги портувальникам виправляти помилки під час розробки й цей режим залишається увімкненим до від’єднання кабелю.

Така поведінка допомагає портувальникам. Але це може заплутати звичайних користувачів. Тому перед розповсюдженням порту бажано вимкнути цей режим. Це можна зробити замінивши USB_MODED_ARGS як описано вище.

Крім того, є ще одна спеціальна функція для usb-moded — примусове увімкнення «рятувального режиму» чи активація ADB кожного завантаження. Це можна зробити, якщо покласти порожній файл у /userdata/.force-ssh чи /userdata/.force-adb (який у режимі відновлення стане /data/.force-ssh чи /data/.force-adb) та система перевірить, що увімкнено правильний режим.

Примітка

Якщо потрібен ADB, можливо Ви захочете вимкнути авторизаційний запит ADB. Див. Authorize access to the device.

Безпосереднє налаштування usb-moded

Окрім налаштування параметрів конфігураційного скрипту, портувальники також можуть установлювати параметри для usb-moded безпосередньо у /etc/usb-moded/90-device-specific-config.ini. Однак це скоріше, як аварійний вихід на випадок, якщо автоматичне визначення не спрацює та якщо Вам знадобиться використати цей файл, розгляньте можливість надсилання проблеми з описом через репозиторій usb-moded. Щодо синтаксису див. usb-moded’s docs <https://github.com/sailfishos/usb-moded/blob/master/docs/usb_moded-doc.txt>.