Показать сообщение отдельно
Старый 07.08.2023, 23:04   #1417
softlander
Новый Пользователь
 
Регистрация: 18.01.2023
Возраст: 40
Город: Брусничный
Регион: 11
Машина: Daewoo Damas
Сообщений: 17
softlander is a name known to allsoftlander is a name known to allsoftlander is a name known to allsoftlander is a name known to allsoftlander is a name known to allsoftlander is a name known to all
По умолчанию

Вот инструкция для добавления поддержки GPS и Глонасс в прошивки для медиабоксов на Amlogic-процессоре с Андроид 9. Проверял на x96 stick и Beelink gt mini. Проверял только 32-бит версию.

Используем USB GPS M8N модуль от Ublox со встроенным micro-usb разъемом, разпознается как ttyACM. Если у вас другой модуль и он распознается как ttyUSB, то с приложенным сюда драйвером он работать не будет.

Вот почему:
gps-драйвер ищет модуль самостоятельно по vendor.id и product.id, сканируя все доступные tty в выбранном диапазоне (ro.kernel.android.gps) в файлах
/sys/class/tty/{ro.kernel.android.gps}n/device/uevent
cdc-acm заполняет все данные полностью, а драйвера ядра pl2303 и ftdi_sio - нет.
Для полной поддержки требуется внести правки в gps-драйвер и его перекомпилировать, но пока нет возможности это сделать. Вот здесь эта проблема описана, там же есть исправленная версия драйвера, но только для 64-битной версии.

-------------------------------

Прежде чем мы внесем изменения, чтобы иметь возможность откатиться назад, если не получится, необходимо убедиться, что:
  • у вас есть полноценный работающий Recovery (TWRP), в который вы можете попасть при загрузке, зажав определенную кнопку.
  • вы можете в нем смонтировать раздел Vendor и проводником добраться до файла /system/vendor/etc/vintf/manifest.xml.
  1. файл android.hardware.location.gps.xml
    поместить в /system/vendor/etc/permissions/
    выставить права 644
  2. файлы android.hardware.gnss@1.0-impl.so и gps.amlogic.so
    поместить в /system/vendor/lib/hw/
    выставить права 644
    для 64-битной версии: еще потребуется из папки vendor-lib64-hw файлы поместить в /system/vendor/lib64/hw/
    выставить права 644
  3. файл android.hardware.gnss@1.0-service
    поместить в /system/vendor/bin/hw/
    выставить права 755
  4. файл android.hardware.gnss@1.0-service.rc
    поместить в /system/vendor/etc/init
    выставить права 644
  5. Важно правильно указать productid и vendorid нашего USB GPS, драйвер находит tty именно по ним.
    (ro.kernel.android.gps указываем без цифры, драйвер сам просканирует все указанные нами tty и найдет нужный)
    (опять же в драйвере есть недоработка - не находит устройство, если productid или vendorid начинается на "0" - 01a8, нужно указывать без первого "0" - 1a8)
    добавить в файл /system/vendor/build.prop
    Код:
    # USB GPS Ublox [M6:1546-1a6, M7:1546-1a7, M8:1546-1a8]
    ro.gps.id.vendor=1546
    ro.gps.id.product=1a8
    ro.kernel.android.gps=ttyACM
    ro.kernel.android.gps.speed=9600
    ro.kernel.android.gps.max_rate=1
  6. (чтобы драйвер смог получить доступ к потоку данных, tty нужны правильные права - по умолчанию ставятся 600, которых недостаточно)
    добавить в файл /system/vendor/ueventd.rc
    Код:
    #GNSS USB GPS Ublox
    /dev/ttyACM*       0666 gps gps
  7. (самый важный пункт, чтобы все это подгрузилось системой)
    здесь содержится список компонентов, которые Андроид подгружает в текущей сборке.
    добавить в файл /system/vendor/etc/vintf/manifest.xml
    после любого </hal>
    Код:
        <hal format="hidl">
          <name>android.hardware.gnss</name>
          <transport>hwbinder</transport>
          <version>1.0</version>
          <interface>
            <name>IGnss</name>
            <instance>default</instance>
          </interface>
          <fqname>@1.0::IGnss/default</fqname>
        </hal>
Файл сохранить под именем manifest_with_gps.xml.
В оригинальный файл изменения не вносить, чтобы можно было откатиться назад.
Выставить этому файлу права, такие же как у оригинального файла - 644.
Теперь у нас manifest.xml (оригинальный) и manifest_with_gps.xml (измененный) лежат рядом в директории /system/vendor/etc/vintf/.
Чтобы запустить поддержку GPS, нужно переименовать manifest.xml в manifest_origin.xml, а manifest_with_gps.xml в manifest.xml и перезагрузить.

Если все сделали правильно, то Андроид подгрузит службу GNSS, а она в свою очередь - драйвер. Программы GPS будут показывать вместо No GPS - No Fix, в настройках пункт Местоположение будет нормально работать.
Если что-то пойдет не так, система просто не загрузится и повиснет на бутанимации,
мы перезагрузимся, удерживая кнопку, зайдем в Recovery, попадем в TWRP, смонтируем раздел Vendor, проводником доберемся до директории /system/vendor/etc/vintf/ и переименуем обратно файл manifest.xml в manifest_with_gps.xml, а manifest_origin.xml в manifest.xml.
Все вернется к изначальному варианту.
Вложения
Тип файла: zip USBGPSDriversForAmlogicAndroid9.zip (128.5 Кб, 118 просмотров)
softlander вне форума   Ответить с цитированием