ps2吧 关注:179,069贴子:1,992,531

回复:OpenWRT上运行UDPBD-SERVER

只看楼主收藏回复

有小米路由器使用成功的吗


IP属地:四川来自Android客户端33楼2024-08-21 20:45
回复
    小米路由器刷最新的X-WRT搞定


    IP属地:四川34楼2024-09-13 15:36
    回复
      大佬,我也是极路由2,不带A
      能否把您的固件分享一下,我可以直接刷机,非常感谢!


      IP属地:四川35楼2024-10-11 15:34
      收起回复
        原来的分享链接过期了,重新分享全部用到的文件,并且设置为永久共享。
        hXXps://XXX.baidu.com/s/1X_N_lsJpYu_UytB7_tY_Iw,提取码2zja
        根据psx-place网友RetroDude的步骤,MTK芯片路由器使用openwrt系统上成功运行udpbd-server.elf。
        后来经过测试,像品胜音乐路由,dlinkN505,GL.inet等使用AR开头的芯片都不能运行。
        以下是openwet系统的操作步骤,引用网友RetroDude的原文(chrome翻译的),最好是有linux命令的基础。
        -------------------------原文翻译--------------------------------------------
        7. 在命令提示符下使用 ssh 登录 openWRT:
        ssh root@192.168.1.1
        并输入您的密码。
        8. 我用 winSCP 传输了 lib 和 .elf 文件,但在命令提示符下看起来像:
        scp udpbd-server.elf root@192.168.1.1:/bin/
        scp libstdc++.so.6.0.25 root@192.168.1.1:/lib/
        9.接下来,创建一个名称较短的 lib 文件的符号链接,并将其放在 /usr/lib/ 目录中:
        ln -s /lib/libstdc++.so.6.0.25 /usr/lib/libstdc++.so.6
        我通过搜索提及库 .so 文件的随机 linux 信息来解决这个问题,它奏效了,哈哈!
        10. 现在,你可以通过将服务器的路径粘贴到 openWRT Web 界面的本地启动部分来使服务器在路由器启动时运行。
        在浏览器中,转到 192.168.1.1
        登录 openWRT 使用菜单,转到 System > Startup > Local(选项卡)
        在“结束”文本之前,按 Enter 键创建新行。
        在那行新行中,输入: /bin/udpbd-server.elf /dev/sda
        或者你可以使用你的 USB 驱动器显示的任何内容,我的是 /dev/sdb
        11.保存并重启路由器,就是这样。
        --------------------------------结束-----------------------------------------------------
        注意一点:在第10步的”在那行新行中,输入: /bin/udpbd-server.elf /dev/sda“,和他的不同之处是,我的路由器是sda1,最开始也是像他一样输入的sda,但是udpbd没有成功开启,加个1就可以了。这个是openwrt系统里挂载的u盘在系统里的名字,在系统里的挂载点里能看到是sda1还是sdb1。
        ---------分割线-------
        最后更高阶的自动运行方式,可以写一个脚本,放到openwrt的启动项里,自动运行udpbd-server.elf,代替第10步,不用每次路由器开机后手动输入运行。
        欢迎大家讨论
        ps:opl-1733-udp版本还是有一些bug,今天下载了最新编译的opl-udpbd,等放假测试一下。


        IP属地:内蒙古37楼2025-01-26 14:56
        回复
          你好,极硬货这个路由怎样刷UDP啊?可以内置硬盘的


          IP属地:广东来自iPhone客户端38楼2025-02-09 22:27
          收起回复
            筱海兄,我到现在还没搞定,只有再次救助您了,麻烦您帮我分析一下:
            我输入/bin/udpbd-server.elf /dev/mtdblock5后,窗口显示如下:
            Opened '/dev/mtdblock5' as Block Device
            - read/write
            - size = 14MB / 13MiB
            Block size changed to 128
            Server running on port 48573 (0xbdbd)
            看上去像是加载完成了
            然后我打开PS2,运行OPL,但还是刷不出UDPBD来,窗口显示如下:
            UDPBD_CMD_INFO from 192.168.1.10
            sendto
            上面192.168.1.10是我PS2的IP地址


            IP属地:四川39楼2025-03-01 22:05
            收起回复
              游戏名怎么还是英文


              IP属地:广西40楼2025-03-01 22:43
              回复
                太失败了吧


                IP属地:广西41楼2025-03-01 22:43
                回复
                  下午出门了,抽空试了一下,拔了u盘也刷不出游戏列表,时间紧,只拍了两张ps2端的配置界面。



                  IP属地:四川来自Android客户端42楼2025-03-02 13:38
                  收起回复
                    改了还是不行,目前估计是挂载点的问题


                    IP属地:四川来自Android客户端43楼2025-03-02 20:34
                    收起回复
                      另外求大佬分享一下新版的opl udpbd,谢谢!


                      IP属地:四川来自Android客户端44楼2025-03-02 20:38
                      收起回复
                        感谢大佬的分析,果然是挂载点的问题,换了一个固件,这个能够在挂载点看到设备,然后就成功刷出游戏了。之前两个固件都看不到设备,不知道是缺了啥


                        IP属地:四川来自Android客户端45楼2025-03-03 19:49
                        回复
                          楼主,我用deepseek检查了你昨天新加进去的脚本文件,反馈如下,晚点回家试试,感谢你的分享!
                          在您的代码中,以下行存在错误:
                          if [ -d ${mounted}/DVD -a "'ls -A ${mounted}/DVD'" ]; then
                          错误分析:
                          语法错误:
                          -a 是 test 命令中的一个逻辑运算符,用于连接两个条件。但在这里,'ls -A ${mounted}/DVD' 被错误地放在了引号中,导致条件判断失效。
                          正确的写法应该是:
                          if [ -d ${mounted}/DVD ] && [ "$(ls -A ${mounted}/DVD)" ]; then
                          或者:
                          if [ -d ${mounted}/DVD -a "$(ls -A ${mounted}/DVD)" ]; then
                          逻辑错误:
                          ls -A ${mounted}/DVD 用于检查目录是否为空,但直接将其放在引号中会导致条件判断失效。
                          应该使用 $(...) 来获取命令的输出,并用 [ ... ] 进行判断。
                          修正后的代码:
                          if [ -d ${mounted}/DVD ] && [ "$(ls -A ${mounted}/DVD)" ]; then
                          ${udppath} ${Filesystem} &
                          logger -t udpbd "udpbd execute shell: ${udppath} ${Filesystem}"
                          return
                          else
                          logger -t udpbd "${mounted}/DVD: doesn't have files."
                          fi
                          其他潜在问题:
                          logger - t 错误:
                          在以下行中:
                          logger - t udpbd "udpbd execute shell: ${udppath} ${Filesystem} &"
                          - t 应该是 -t,中间不能有空格。
                          重复代码:
                          stop_service()、shutdown() 和 stop() 的功能完全相同,可以合并为一个函数。
                          boot() 函数冗余:
                          boot() 函数的内容与 start_service() 几乎完全相同,可以直接调用 start_service(),避免代码重复。
                          优化后的代码示例:
                          #!/etc/rc.common
                          START=98
                          STOP=05
                          USE_PROCD=1
                          udpname="udpbd-server.elf"
                          udppath="/bin/udpbd-server.elf"
                          stop_service() {
                          if pgrep ${udpname} > /dev/null; then
                          logger -t udpbd "kill udpbd"
                          kill -9 $(pgrep ${udpname}) &
                          else
                          logger -t udpbd "udpbd is not running."
                          fi
                          }
                          shutdown() {
                          stop_service
                          }
                          start_service() {
                          if pgrep ${udpname} > /dev/null; then
                          logger -t udpbd "udpbd is running."
                          else
                          logger -t udpbd "start udpbd."
                          for Filesystem in $(df -h -T | grep "^/dev/sd.*vfat\|^/dev/sd.*exfat\|^/dev/sd.*ntfs" | awk '{print $1}')
                          do
                          logger -t udpbd "for loop"
                          mounted=$(df -h -T | grep "^"${Filesystem}".*" | awk '{print $7}')
                          logger -t udpbd "mounted: ${mounted}"
                          if [ -d ${mounted}/DVD ] && [ "$(ls -A ${mounted}/DVD)" ]; then
                          ${udppath} ${Filesystem} &
                          logger -t udpbd "udpbd execute shell: ${udppath} ${Filesystem}"
                          return
                          else
                          logger -t udpbd "${mounted}/DVD: doesn't have files."
                          fi
                          done
                          fi
                          }
                          boot() {
                          start_service
                          }
                          总结:
                          主要错误在第 7 行的条件判断部分。
                          修正后代码更简洁、易读,且避免了重复逻辑。


                          IP属地:江苏47楼2025-03-05 14:13
                          收起回复
                            AR的CPU真的没办法了吗?


                            IP属地:上海来自Android客户端48楼2025-03-05 14:38
                            收起回复
                              补充一下,亲测,eth不用关,设成手动就行了,这样想用UDPBD就运行opl-udpbd版,想用Smb就用老版,不用改来改去,方便切换


                              IP属地:四川来自Android客户端49楼2025-03-05 21:34
                              收起回复