batocera吧 关注:20,244贴子:42,282

分享P106-100的折腾经历 v40-v41,新年干货!

只看楼主收藏回复

前言
为什么要折腾Batocera + P106-100 6G?
- 因为有挑战,看到有人说Batocera v36-v40都不能驱动这个矿渣,还有人说可以看到显卡,但画面卡成狗。
- 因为真便宜,PDD美女自用全新也才100出头,哪天炸了再来一块也不心痛。
- 因为性能够,至少模拟思维持可以2K,王泪能稳60帧,这跟真机的体验是完全不一样的。
- 正好手上有一些淘汰硬件,就尝试着折腾了,测试周期长达近半年,才有了这篇帖子,让有同样需求的朋友少走点弯路。
硬件配置
主板:ASRock H110M-ITX
CPU:i7 6700 3.4-4.0G, 4C8T, TDP 65W
内存:8G*2 DDR4 2133
硬盘:希捷 2TB HDD
显卡:P106-100 6G (PDD美女自用全新质保1年)
电源:航嘉 400W
简短概要
大概从2024年8月开始,也就是v40 release之后。首先,跟大多数人一样,都是想着去下载一个别人的整合包,自己也就懒得折腾了。在网上搜了一圈,发现整合包大多是针对复古游戏的,如果只是针对复古游戏,何不用EMUELEC更加方便还节能。针对思维持的整合包下了两个,也是问题很多(可能正常显卡没问题)。索性就自己弄吧。于是,安装了Batocera v40 release,然后使用 github 上 batocera-switch 项目安装模拟器(需要魔法)。再然后的测试,总结,发现问题并解决问题。以下就按照问题形式来描述折腾过程中所遇到的问题。


IP属地:重庆1楼2025-01-14 14:05回复
    Q:Batocera v40, v41下P106-100能正常被驱动吗?
    A:首先给结论,都能被正常驱动,且相对AMD显卡工作更稳定(不用抬杠,用nvtop查一下显卡使用率便知区别)。
    - 需要在主板BIOS中配置主显卡为板载显卡,同时共享显存我设置的最大值1GB。
    - 需要SSH设置 /boot/batocera-boot.conf,nvidia-driver=legacy。在设置此文件之前,需要重新挂载boot分区:mount -o remount,rw /boot。再修改文件:nano batocera-boot.conf,Ctrl+X,y。
    - nvidia-driver=true,会使用 production 驱动,虽然系统能正常识别显卡,但是驱动无法正常工作,怀疑 nvidia prime 是被皮衣黄故意刀了这类专业矿卡,正常消费级显卡是没有问题的。
    - 在v40下,经过上述修改之后,显卡就能被正常驱动了,v40下的legacy驱动版本号为 470.239.06。
    - 在v41下,经过上述修改之后,显卡不能被驱动,下面再详解。


    IP属地:重庆9楼2025-01-14 14:13
    收起回复
      Q:Batocera v40能驱动P106-100,为什么还要升级到v41?
      A:是能用,但是v40有个我无法容忍的Bug-“蓝牙”。当手柄断开连接时,ES前端并不会收到手柄断开的消息,导致ES一直以为手柄还是可用的。这带来两个问题:
      - 当手柄长时间不使用时会自动关机,你再次启动手柄时,手柄会触发已连接的震动,但按任何按键都没有反应。
      - 使用Pro Controller模式连接的手机,会导致退出游戏的热键(SELECT + START)失效。
      翻遍了github上的issues,有说是蓝牙适配器兼容性问题的,也有说手柄厂商ID不能识别导致的。但这个问题在v41下已经被解决了,说明还是系统BUG。


      IP属地:重庆10楼2025-01-14 14:13
      收起回复
        Q:Batocera v41下怎么才能驱动P106-100?
        A:除了按上面第1个问题设置完之后,还需要进行如下操作。v41是解决了好多问题,但作者又整出了另一些幺蛾子。最主要的问题是由于错误的软链接导致legacy驱动无法被正常加载。查看 /var/log/messages 可知一个驱动文件未找到,然后逐一排查,最后发现是软链接路径错误,受影响文件是 /bar/bin/batocera-nvidia,这是一个SH脚本文件。你可以用nano修改,我是在SSH中下载了文件,然后用EditPlus修改的,绝对禁止使用Notepad修改。以下为修改步骤,截至发此贴前没向github提交issue,也没提交pr,本人懒。
        - cd /usr/bin
        - nano batocera-nvidia
        - 找到 # 470 version,大概是 557 行附近
        - 插入以下脚本
        # link Xorg driver
        ln -sf /usr/lib/xorg/modules/drivers/nvidia_legacy_drv.so /var/run/nvidia/lib/nvidia_drv.so
        ln -sf /var/run/nvidia/lib/nvidia_drv.so /usr/lib/xorg/modules/drivers/nvidia_drv.so
        # libnvidia-glvkspirv.so
        ln -sf /lib32/libnvidia-glvkspirv.so.$NVIDIA470_LEGACY_DRIVER_VERSION /var/run/nvidia/lib32/libnvidia-glvkspirv.so
        ln -sf /var/run/nvidia/lib32/libnvidia-glvkspirv.so /lib32/libnvidia-glvkspirv.so
        ln -sf /usr/lib/libnvidia-glvkspirv.so.$NVIDIA470_LEGACY_DRIVER_VERSION /var/run/nvidia/lib/libnvidia-glvkspirv.so
        ln -sf /var/run/nvidia/lib/libnvidia-glvkspirv.so /usr/lib/libnvidia-glvkspirv.so
        # libnvidia-glvkspirv.so
        ln -sf /usr/lib/libnvidia-glvkspirv.so.$NVIDIA470_LEGACY_DRIVER_VERSION /var/run/nvidia/lib/libnvidia-glvkspirv.so
        ln -sf /var/run/nvidia/lib/libnvidia-glvkspirv.so /usr/lib/libnvidia-glvkspirv.so
        # sym link Xorg libraries too
        ln -sf /usr/lib/xorg/modules/extensions/libglxserver_nvidia.so.$NVIDIA470_LEGACY_DRIVER_VERSION \
        /var/run/nvidia/lib/libglxserver_nvidia.so
        ln -sf /var/run/nvidia/lib/libglxserver_nvidia.so /usr/lib/xorg/modules/extensions/libglxserver_nvidia.so
        ln -sf /usr/lib/xorg/modules/extensions/libglxserver_nvidia.so.$NVIDIA470_LEGACY_DRIVER_VERSION \
        /var/run/nvidia/lib/libglxserver_nvidia.so.1
        ln -sf /var/run/nvidia/lib/libglxserver_nvidia.so.1 /usr/lib/xorg/modules/extensions/libglxserver_nvidia.so.1
        - 找到 # finally link the kernel modules & run them,大概 594 行附近
        - 修改为以下的脚本,特别重要,主要就是加了470,一共4处。作者在v41中改了文件,但是脚本忘了改,服了。
        mkdir -p /var/run/nvidia/modules
        ln -sf /usr/share/nvidia/modules/nvidia470-legacy.ko /var/run/nvidia/modules/nvidia.ko
        ln -sf /var/run/nvidia/modules/nvidia.ko /lib/modules/$LINUX_VER/updates/nvidia.ko
        ln -sf /usr/share/nvidia/modules/nvidia470-modeset-legacy.ko /var/run/nvidia/modules/nvidia-modeset.ko
        ln -sf /var/run/nvidia/modules/nvidia-modeset.ko /lib/modules/$LINUX_VER/updates/nvidia-modeset.ko
        ln -sf /usr/share/nvidia/modules/nvidia470-drm-legacy.ko /var/run/nvidia/modules/nvidia-drm.ko
        ln -sf /var/run/nvidia/modules/nvidia-drm.ko /lib/modules/$LINUX_VER/updates/nvidia-drm.ko
        ln -sf /usr/share/nvidia/modules/nvidia470-uvm-legacy.ko /var/run/nvidia/modules/nvidia-uvm.ko
        ln -sf /var/run/nvidia/modules/nvidia-uvm.ko /lib/modules/$LINUX_VER/updates/nvidia-uvm.ko
        for m in ipmi_devintf nvidia nvidia_modeset nvidia_uvm nvidia_drm ; do modprobe $m ; done
        - Ctrl+X,y
        - 如果是修改后再上传的,记得给 batocera-nvidia 这个文件加上可执行权限:chmod +x batocera-nvidia。
        - reboot,重启之后,显卡就能正常被驱动了。


        IP属地:重庆11楼2025-01-14 14:14
        收起回复
          Q:除了使用P106-100,还使用过哪些显卡测试过?
          A:手上显卡有限,核显Vega8,680M,780M,独显1060,1650,RX550,RX5500XT,RX6650XT。从测试结果上看,就算是最弱的RX550 4G也比核显强。消费级显卡几乎不需要折腾,直接使用 nvidia-driver=true 或 amdgpu=true 就能正常驱动。从画质稳定性上看,个人感觉Nvidia的卡更稳定,为什么AMD在linux下vulkan驱动的稳定性不如Nvidia,我也不是很清楚,我只说我的主观感受。以乐高地平线大冒险为例,使用yuzuEA最终版,AMD显卡,会有许多画面闪烁和贴图错误。而P106-100,非常稳。同样的模拟器,同样的参数,仅仅只是显卡不同。还有一些更好的显卡,我没有进行测试,因为像P106-100这样的卡,绝大多数游戏都跑不满,王泪60FPS,GPU占用也才60-80%之间,所以真没必要上更好的显卡,性能优化还需要模拟器,上再好的显卡也是30FPS给你锁死。这就能回答有人说4060还是会卡顿的原因。


          IP属地:重庆12楼2025-01-14 14:14
          回复
            Q:折腾过程中,遇到了问题应该怎么办?
            A:先查日志定位问题,分别有以下几个路径:
            - /userdata/system/logs/,显卡、显示器、ES等日志
            - /userdata/system/configs/yuzu/log/,柚子独立日志
            - /userdata/system/configs/Ryujinx/Logs/,龙神独立日志
            - /var/log/,系统、显卡、Xorg等日志


            IP属地:重庆13楼2025-01-14 14:14
            回复
              Q:遇到启动思维持模拟器老是闪退,怎么办?
              A:这个问题我遇到很多种情况,一一来说明。第1步,肯定是查日志 /userdata/system/logs/es_launch_stderr.log,通常会有python的异常堆栈日志,分别说明我遇到的情况:
              - v40中的蓝牙问题导致,比如只有1个手柄在线,但左上角显示的2个(其中1个已经睡了),这时候启动游戏可能会闪退。闪退后,左上角会变成1个手柄,再启动游戏就不闪退了。这个问题只在v40上出现过。
              - 安装或更新思维持模拟器导致某个文件写入失败,在目录/userdata/system/switch/configgen/sdl2下,检查这个目录下的.py文件,如果是0KB,手动从sdl2.zip文件解密出来就可以,这个问题我遇到过几次。是因为安装脚本在逐个输出这个目录的文件,出现异常后也忽略掉导致的。
              - 目录的权限问题,没有写入权限 或是 没有可执行权限。
              - 游戏兼容性问题,比如一些较新的游戏还有某某运动,就是没有办法运行,也可能导致闪退。


              IP属地:重庆14楼2025-01-14 14:15
              收起回复
                Q:为什么运行游戏时偶尔会出现一些奇怪的提示对话框,说 Mii 什么东西,然后到柚子里的验证固件功能也会报固件文件被损坏?
                A:假如你同时在使用柚子和龙神的话,就必然会出现这个问题。通过查找固件发现龙神G的固件释放文件和柚子是不一样的(原来可能一样,我没详细探究),然后呢 batocera-switch 的作者在启动模拟器时,很贴心地每次都同步了固件,这就导致把龙神G释放后的固件文件同步到了柚子里面。使柚子模拟器的固件被损坏。我的方法简单粗暴,就是不再每次启动模拟器都同步固件(我个人觉得这种每次启动游戏都同步固件的方式更粗暴,你哪怕是判断一下文件有没有变更也好啊)。弊端就是你得要自己为每个模拟器手动设置固件(yuzu, suyu, sudachi, RyujinxG),但只是1次。
                - 找到 /userdata/system/switch/extra/batocera-switch-sync-firmware.sh
                - 备份一下该文件,然后只保留 exit 0


                IP属地:重庆15楼2025-01-14 14:15
                回复
                  Q:我也想要玩复古游戏,推荐一下硬件配置?
                  A:不同的需求,配置相差挺大的,这个问题比较主观,权当看看,不用太较真。
                  - 只玩PS1以下复古游戏,S905系列盒子首选,系统EMUELEC整合包。
                  - PS2/PSP/Wii,N100小盒子,NS能勉强玩一些2D游戏。
                  - 3DS/WiiU/NS,入门 RX550,CPU 4核足够,畅玩 1060以上。
                  - PS3,折腾过,感觉好多游戏都只能进没法玩,感觉没有折腾的必要。
                  - PS4,模拟器还是玩具。
                  - 玩Windows游戏居多,SteamOS,AtlasOS,奇美拉,看个人喜好。Batocera并不太适合跑Windows游戏。我个人更倾向于AtlasOS+Playnite自己折腾。因为Batocera还有个致命缺陷,就是roms不能多盘/多分区。虽然理论上可以用NAS无限扩展,但是就算2.5G的内网速度,加载游戏还是慢。


                  IP属地:重庆16楼2025-01-14 14:46
                  回复
                    Q:为什么最新版的龙神G模拟器,按什么键都没反应?
                    A:龙神模拟器目前还在更的项目只有Greem Dev,无论是正常发行版本 (1.2.78),还是每日主线版本 (Ryujinx-Canary 1.2.239),使用 Xbox Wireless Controller 连接模式的手柄都无法正常工作,需要将连接模式改为 Pro Controller才能正常工作。柚子模拟器没有问题。猜测是作者一直在解决Dual JoyCon手柄模式搞出来的问题,静待更新吧。这也是龙神一直被人诟病的问题,JoyCon只能适用于L/R拆分模式。


                    IP属地:重庆17楼2025-01-14 15:49
                    回复
                      把 Leave this setting commented to have Batocera automatically select the correct driver.这个删除,保存就能正常识别p106了。


                      IP属地:山东来自Android客户端18楼2025-01-14 16:27
                      收起回复
                        请问楼主,我下的整合包,装到电脑上就能识别p106,不用设置,ps2也能流畅,是不是就可以算驱动好了吧,但我感觉性能似乎没完全发挥,ps2跑3倍分辨率就有些卡了,v40版本


                        IP属地:天津来自Android客户端19楼2025-01-14 17:42
                        收起回复
                          高手!i3 4170 效果咋样?显卡用1060,手里正好有这两个,帮我分析一下,对了还有一个g4560,内存也 有,现在就是纠结给这两个cpu选一个配主板


                          IP属地:黑龙江来自iPhone客户端20楼2025-01-14 19:15
                          收起回复
                            美女自用来干啥?


                            IP属地:贵州来自Android客户端21楼2025-01-14 20:07
                            收起回复
                              话说锁驱1080在这系统下怎么样,就是es1070m的芯片


                              IP属地:江苏来自Android客户端22楼2025-01-14 20:49
                              收起回复