复制品6上的GPS

我使用复制品在我的主要三星S3手机上。Replicant是一个完全免费的Android发行版。一个后果是“完全自由”意味着某些功能无法正常工作,因为硬件需要非自由软件。我正在将我的主手机升级到Replicant 6的最新测试版。让GPS在Replicant/S3上工作并不难。我已经决定,我愿意在自由问题上为我的寻宝游戏爱好。我之前写过如何获得GPS将用于复制品4.0复制品4.2上的GPS。当我升级到Wolfgang的Replicant 6版本早在2016年9月,我就花了一些时间研究如何让GPS工作。我做好了准备副本6上非免费固件的说明其中包括一节关于如何让GPS工作。不幸的是,这种方法要求您创建自己的图像,并可以访问构建树。这并不适合所有人。这篇文章解释了如何让GPS在复制6上工作,而无需构建自己的图像。沃尔夫冈已经解释过了如何将所有其他非免费固件添加到复制副本6但它不包括GPS。原因是GPS需要在主CPU上运行非自由软件。在继续之前,您应该了解这一点的后果!

第一步是下载Replicant 6.0映像,目前可以从replicant6.0论坛线程。下载replicant-6.0-i9300.zip文件文件并像往常一样将其闪存到手机中。在加载其他非免费固件(Wifi、蓝牙等)后,使用“./firmwares.sh i9300 all”你可能想要的。您可以安装Geocaching客户端c: 地理通过添加fdroidfdroid.cgeo.org作为单独的存储库。启动应用程序并验证GPS是否不工作。保留replicant-6.0-i9300.zip文件,稍后您将需要它。

GPS的棘手之处在于,守护进程是通过Android的init系统启动的,该系统由文件指定/初始化目标.rc。复制品附带注释掉的GPS部件。要修改这个文件,我们需要拿出我们的小工具箱。修改设备本身上的文件将不起作用,每次启动时都会从ramdisk文件中提取根文件系统。对文件所做的任何更改都不会持久。文件/初始化目标.rc存储在引导.imgramdisk,这是我们需要修改以进行持久修改的文件。

首先,我们需要解压缩引导mkbootimg(mkbootimg)工具。如果你幸运的话,你可能会发现它们是为你的操作系统预先构建的。我正在使用Debian公司我很难找到他们。然而,从头开始构建它们并没有那么困难。假设您有一个正常的构建环境(即。,apt-get-install-build必备组件)尝试以下方法来构建工具。我受到了关于解压缩和编辑boot.img的帖子了解以下一些说明。

git克隆https://github.com/CyanogenMod/android_system_core.git光盘安卓系统核心/git校验cm-13.0光盘mkbootimg/gcc-o/mkbootimg-我/包括/libmincrypt/*.c/mkbootimg.c文件gcc-o/unpackbootimg-我/包括/libmincrypt/*.c/解压缩引导.csudo cp mkbootimg解压缩bootimg/usr/local/bin/

您现在可以打开引导.img文件。您将需要主目录中的复制ZIP文件。还下载我为初始化目标.rc文件:https://gitlab.com/snippets/1639447。将修补程序另存为复制-6-gps-fix.diff在您的主目录中。

mkdir目录cd t(光盘)解压缩~/replicant-6.0-i9300.zip解压缩引导-i/引导.imgmkdir公司/光盘cd/光盘/gzip-dc/boot.img-ramdisk.gz|cpio-imd补丁<~/replicant-6-gps-fix.diff

假设补丁应用正确(您应该看到如下输出“修补文件init.target.rc”最后),您现在需要将ramdisk重新组装起来。

找到-名称。|LC_ALL=C排序|cpio-o-H newc-R根:根|gzip>/新boot.img-ramdisk.gz光盘。。mkbootimg—内核/引导.img-zImage\--光盘/新boot.img-ramdisk.gz\--第二/boot.img-秒\--cmdline“$(cat./boot.img-cmdline)”\--base“$(cat./boot.img-base)”\--页面大小“$(cat./boot.img-pagesize)”\--日期/引导.img-dt\--ramdisk_offset“$(cat./boot.img-ramdisk _offset)”\--second_offset“$(cat./boot.img-second_offset)”\--tags_offset“$(cat./boot.img-tags_offset)”\--输出/新boot.img

将手机重新启动到引导加载程序:

adb重新启动引导加载程序

然后将新的引导映像闪回到手机中:

heimdall flash--启动新BOOT.img

手机将重新启动。要最终完成任务,您需要非免费的GPS软件组件全球定位系统,gps.exynos4.so公司gps.cer公司在我使用复杂的方法之前sdat2img.py从CyanogenMod 13.x存档中提取这些文件。幸运的是,世袭OS现在也提供包含相关文件的下载。您需要下载一些文件,提取它们,然后将它们加载到您的手机上。

wget公司https://mirrorbits.liangeos.org/full/i9300/20170125-liange-14.1-20170125-terial-i9300-signed.zipmkdir血统cd谱系解压缩/沿袭-14.1-20170125-terial-i9300-signed.zipadb根adb等待设备重新挂载文件系统adb推送系统/bin/glgps/system/bin/adb推送系统/lib/hw/gps.exynos4.vendor.so/system/lib/hw/gps.exynos4.soadb推送系统/bin/gps.cer/system/bin/

现在重启手机并启动c: 地理它应该会找到一些卫星。祝贺 你!

22对“复制品6上的GPS”的回复

  1. 嗨,西蒙,我正在继续复制维基论坛上的专有GPS blob。昨天,多亏了您,我能够获得带有未注释最后一行的永久init.target.rc文件。然而,GPS仍然不工作。GPS图标等存在,但无论我尝试了什么应用程序,都没有信号。我记得当我在复制品4.2上时,它起了作用。现在我读到你在说复制品的恢复图像?我很困惑…GPS真的在你的设备上工作吗?提前感谢您的反馈。

    • 你好,托马斯。是的,GPS适用于我最新的replicant-6版本。你安装了/system/bin/glgps等吗?试试“adb shell”和“ps|grep gps”。您应该会看到“glgps”正在运行。

      你说不能闪存boot.img,为什么?您提到您使用了TWRP,所以您可能想尝试复制恢复映像。

      干杯,
      西蒙

      • 谢谢你的快速回复。
        是的,glgps确实在运行,但我没有用3个不同的应用程序拾取任何gps信号,即使我在街上。
        我无法使用fastboot来刷新boot.img,所以我的想法是将其复制到replicant6-i9300中,然后重新压缩整个分发版并使用TWRP进行安装(因为它不要求签名)。然而,我意识到我可以使用heimdal内置闪存boot.img文件。

        • “adb logcat | grep-i gps”显示了什么?您应该看到与获取GPS信息相关的内容。

          事实上,fastboot在S3上不起作用!我在帖子中描述了如何使用heimdall。

          /西蒙

          • 是的,谢谢你,你的博客现在已经被永久收藏了:-)。
            现在GPS工作了,我做了一次全面的工厂重置……我想我已经玩了很多目录和文件权限。
            永远感谢!

  2. 万岁!感谢您的确认,很高兴听到说明书是可复制的。

    干杯,
    /西蒙

  3. 显然你的选择是最好的,但我使用的是TRACCAR免费版。在那里GPS工作非常容易。

  4. 非常感谢您的努力和解释!

    我可以遵循所有步骤,直到我不得不下载适用于i9300的LineageOS 13。我去了https://mirrorbits.liangeos.org/full/i9300,这让我https://lineageos.mirrorhub.io/full/i9300/,包含与相同的https://download.lineageos.org/i9300

    问题是,没有“实验性”的构建(自LineageOS启动以来,它们仅在2个月内可用),而是“夜间”构建,在系统目录中只有文件“build.prop”。

    我在上述网站和http://www.lineageosrom.com/2017/01/official-liance-os-nighty.html。也在https://forum.xda-developers.com/galaxy-s3,但运气不好。

    你知道我在哪里可以下载一个“合适的”官方存档的LineageOS 13吗?

    PS:我不信任自定义/非官方ROMS,但我想XDA-Developers可能是一个检查的好地方(https://forum.xda-developers.com/showpost.php?p=39873449&postcount=5)

  5. 非常感谢您的指导!他们工作起来很有魅力。

    我的问题是,我没有意识到LineageOS实验版本只能使用两个月(https://www.lineageos.org/Update-and-Build-Prep/)由于我没有下载,现在我找不到了。我已经下载Android 6和CM 12 ROM两天了,没有人有这些文件(它们是为了从恢复中的“update-zip”选项直接刷新它们),所以我无法获得所需的文件。

    有人知道哪里可以下载i9300的官方(或至少是有效的)ROM文件吗?

  6. 我想我刚找到一个:i9300的苗条6(https://forum.xda-developers.com/galaxy-s3/development/rom-slimrom-i9300-t3386849). 它几乎包含了所有文件(没有gps.exynos4.vendor.so):

    ./Slim-i9300/system/etc/gps.conf
    ./Slim-i9300/system/etc/gps.xml
    ./Slim-i9300/system/etc/permissions/android.hardware.location.gps.xml
    ./Slim-i9300/system/lib/hw/gps.exynos4.so
    ./Slim-i9300/system/bin/glgps
    ./Slim-i9300/system/bin/gps.cer

    已复制/system/lib/hw/gps.exynos4.so到/system/lib/hw/gps.exynos4.vendor.so,但我没有合适的USB电缆,无法通过adb将文件复制到设备。我会报告我的进展。

  7. 尝试复制的技巧/system/lib/hw/gps.exynos4.so到/system/lib/hw/gps.exynos4.vendor.so没有解决我的问题。

    在网上搜索了3天之后,我既找不到包含该文件(gps.exynos4.vendor.so)的ROM,也找不到该文件本身。🙁

  8. 我终于找到了获取所需文件的方法。实际上,只是碰巧遇到了:https://wiki.liancedos.org/extracting_blobs_from_zips.html#提取-专有的block-based-otas

    下载了i9300的最后一个(14.1)NIGHTLY LineageOS文件。目前,他们发布的是7.*(努加特),而不是6.*(棉花糖)版本,但按照之前的指示,按照西蒙的指示,获得了所有需要的文件,以便将其上传到手机。

    不幸的是,我已经打开了SatSat和OsMand~应用程序一段时间了,S3找不到任何卫星(我在室内,但手机靠近窗户,面对一片开阔的空间)。

    最近,我的手机掉了下来,打破了屏幕玻璃。不知道GPS传感器是否受到影响。

  9. 终于可以工作了(我想:GPS应用程序可以工作)。我不得不在室外尝试它的准确性,但它在室内发现卫星的速度相当快。

    我必须警告你:安装专有固件总是很危险的,因为你不知道固件的功能。我认为安装未知ROM的专有固件特别危险。如果你这样做,那就要自担风险!

    我下载了CRDroid棉花糖ROM(https://forum.xda-developers.com/galaxy-s3/development/rom-t3320924)随后https://wiki.lianceos.org/extracting_blobs_from_zips.html#提取-专有的block-based-otas指令(我无法使用extract-files.sh,但我不需要它)并推送我找到的所有与GPS相关的文件:

    (来自安装的“系统”)
    adb推送/bin/glgps/system/bin/
    4366 KB/s(0.431s中1930424字节)
    adb推送/bin/gps.cer/system/bin/
    291 KB/s(0.050s中15014字节)
    adb推送/bin/gps_daemon.sh/system/bin/
    2 KB/s(0.046s中113字节)
    adb推送/etc/gps.conf/system/etc/
    5 KB/s(0.046s中263字节)
    adb推送/etc/gps.xml/system/etc/
    33 KB/s(0.046s中1591字节)
    adb推送/etc/permissions/android.hardware.location.gps.xml/system/etc/permissions/
    20 KB/s(0.044秒内942字节)
    adb推送/lib/hw/gps.exynos4.so/system/lib/hw/
    2494 KB/s(0.023秒中59032字节)

    \哦/

  10. 警告:安装专有blob是危险的,因为您不知道这些blob会做什么,如果安装不正确,您可能会阻塞您的手机。如果你不知道或不信任那些提供这些信息的人,情况会更糟。使用以下说明的风险自负!

    由于我找不到任何LineageOS 13 EXPERIMENTAL zip可供下载(这些文件都有所需的所有文件,我信任LineageOS项目),我终于下载了一个我能找到的i9300的棉花糖ROM(Android 6.0)(我不知道它们是否值得我信任,但冒了这个险):crdroid(https://forum.xda-developers.com/galaxy-s3/development/rom-t3320924).

    遵循中解释的说明https://wiki.lianceos.org/extracting_blobs_from_zips.html#提取-基于区块的ota的专有blob,执行“adb remount rw/system”(不带“”),并且adb“push”我在挂载系统中找到的每个“*gps*”文件到/system's phone中同名的同一目录。

    重启后,GPS程序可以快速找到卫星(例如,SatSat)。我在室内测试了它,结果并不像我想要的那样准确。我得在室外测试一下。

  11. Replicant发布了一个新的6.0版本(0003),以修复在安装使用谷歌SDK(API Level 27)开发/升级/编译的应用程序时导致崩溃和/或引导循环的内存问题,因此我升级了Replicant,没有任何问题(我甚至可以安装其他非免费固件),但是,当我尝试安装GPS文件并尝试获取修补文件init.target.rc时,我收到了以下错误消息(我将以前的目录“t”移动到了“t.old”,并在新创建的“t”目录中解压缩了replicant-i9300.zip 0003版本):

    ***@****:~/Downloads/Replicant/Firmwares/GPS-6.0/t/ramdisk>gzip-dc/boot.img-ramdisk.gz | cpio-imd |补丁<~/Downloadss/Replicant/Firmwares/GPS-6-GPS-fix.diff

    在输入行3找不到要修补的文件
    也许您应该使用-p或–strip选项?
    这之前的文本是:
    ————————–
    |-初始目标rc.orig 2017-03-04 16:04:18.488488467+0100
    |+++初始目标rc 2017-03-04 16:04:22.204527828+0100
    ————————–
    要修补的文件:3001块

    跳过此修补程序?[年]
    正在跳过修补程序。
    忽略1个大块中的1个

    我没有足够的技能修改(甚至理解)补丁以符合新的复制版本。

    当我安装了Replicant 6.0 0002映像(在t.old中)时,在此过程中生成的文件是否仍然适用于安装了Replicant 6.0 0003的手机,或者是否需要新的修补程序?

    提前谢谢。

    • 它在Replicant 6.0 0003中的工作方式相同。我有一个打字错误。我的错。对不起的🙁

      谢谢!

  12. 不幸的是,我没有按照您的指示在步骤中完成Galaxy S2:

    解包启动-i/引导.img

    对于S2(0001到最新的0003),每次构建Replicant 6.0时,我都会收到错误消息“Android boot magic not found.”。

    你或有人有主意吗?