Показать сообщение отдельно
Старый 15.10.2023, 15:52   #1425
gkneck
Новый Пользователь
 
Регистрация: 15.10.2023
Регион: 77, 97, 99, 177
Сообщений: 5
gkneck is on a distinguished road
По умолчанию

Цитата:
Сообщение от softlander Посмотреть сообщение
Вот инструкция для добавления поддержки 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.
Все вернется к изначальному варианту.
http://www.pccar.ru/showpost.php?p=4...postcount=1417

Доброго времени!
Будучи "чайником", сделал всё по этой инструкции на таком же x96 stick (2/16) с таким же модулем M8N. Прошивка slimBox AOSP. Но приложения спутники не находят.

Файлы build.prop, ueventd.rc, manifest.xml изменял на ПК в блокноте копированием указанных строк в конце содержимого. Разрешения им выставил, соответственно: 755, 644, 644.
Единственно, что файл gps.amlogic_ver2.so никуда не скопировал, т.к. про него не сказано в инструкции.
Приложение GPS Test показывает Статус GNSS: "No Fix".

Подскажите пожалуйста, в чём может быть причина?
Как проверить на исправность сам модуль M8N?
gkneck вне форума   Ответить с цитированием