Налаштування 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>.