This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LP-CC1352P7:Wi-SUN wfantund 的生存时间绝不会超过24小时。

Guru**** 1729330 points
Other Parts Discussed in Thread: LPSTK-CC1352R, WI-SUN, CC1352R, CC1352P7
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1355310/lp-cc1352p7-wi-sun-wfantund-never-survives-more-than-24-hours

器件型号:LP-CC1352P7
主题中讨论的其他器件:Wi-SUNCC1352R、LPSTK-CC1352R CC1352P7

尊敬的 TI 工程师:

我设置了一组 Wi-SUN 网络、它们正在运行:

  1. 带通用 IC 的 AM64x 入门套件;刷写了 Debian 映像。
    https://www.ti.com/tool/SK-AM64B

  2. CC1352P7-1 Launchpad 连接到 AM64x 入门套件;已刷写 Wi-SUN 边界路由器固件(无 wi-sun 自动启动)

  3. CC1352R Launchpad;用 Wi-SUN 路由器节点固件和 Wi-SUN 自动启动进行了刷写

  4. LPSTK-CC1352R;用 Wi-SUN 路由器节点固件和 Wi-SUN 自动启动进行了刷写。

  5. 收音机设置为日本、其内置默认设置。

每天、我都从 AM64x 入门套件的终端中一步一步地启动 Wi-SUN:

sudo wfantund

sudo wdvottl
设置接口:up true
设置 stack:up true
退出

然后、我也启动了 webapp 服务器。  几分钟后、wi-sun Web 仪表板显示一切都运行良好、并且配置完毕。

然后,他们被留在了过夜。  当我第二天检查他们, wfantund 被拆除。  我的意思是-它正在运行、但没有按照 wdextl CLI 所示启动。 Web 仪表板也显示了这种情况:

然后、我重新启动 AM64x 并重复上述过程。  他们再次工作。  然而,第二天,当我检查它们时,wfantund 再次失败,如附件所示,wfaddtl 显示为"未初始化"。  我重复了整个过程3天3夜。  Wi-SUN wfantund 从未存活超过24小时。

如何纠正?   

我已经投入了这么多的时间和精力,他们的结果是错误的!   

这是 TI 质量吗?!

请帮助我修复这些。  我计划将此作为一个新项目提交给我国政府。   

此致、
Timmy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已根据员工的建议配置了一个新的 wfottl systemd 脚本。

    随后,wfantund 已经顺利运行了48小时。

    我会再继续运行一周、看看它是否有效。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Tim、您好!

    请告知我们该测试的结果。

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Arthur、

    我已经测试了大约2周的 TI wfantund 接口和堆栈软件。  结果如下。  另请参阅我的第一篇文章及其附件:

    1. 对于带通用 IC 的 AM64x 入门套件;通过刷写 Debian 映像、wfantund 接口和堆栈最多只能持续4至5天。  有时,它只能生存不到24小时!

    2. 我确实在常规 Dell Intel Core i3 Ubuntu 22.04服务器上重复了整个设置。  wfantund 接口和堆栈只能生存大约2天!
    3. 在每种情况下,我都无法使用 wfanttl CLI 重置或重新启动 wfantund 接口和堆栈,以便使其启动并再次运行。  必须进行系统软重新引导!
    4. 为 wfantund 和 wfenttl 配置和调优 systemd 脚本没有帮助。  我`s 您的同事的帮助为 wdextl 创建了 systemd 脚本:
      e2e.ti.com/.../5157072
    5. 我的结论是-当前的 TI wfantund 堆栈并不足以满足工业应用的要求!

    请帮我修理它们!

    几年来、我一直在关注 TI Wi-SUN 开发。  我也一直在为物联网服务开发一个非常漂亮的前端。  我无法想象 TI 的 Wi-SUN wfantund 结果竟然是不稳定的!  我当时正计划在今年年底以各种可能的方式推广 km 物联网服务、现在 TI wfantund 成为了一个障碍和瓶颈!

    我非常失望和沮丧!!!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Tim、您好!

    我对结果感到非常惊讶。 您是否有可以与我们共享的日志? 我们想和研发人员分享这个话题

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Tim、我们的客户已经投入生产并使用 TI Wi-SUN 协议栈运行了很长时间、但 wfantund 元件尚未通过相同的长期测试。 我们将在本季度开展相关工作、并将 wfantund 纳入了长期稳定性测试。 我将确保我们在正确的时间使用更新来更新此线程、以便您可以从该组件中获得预期的性能。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Arthur、

    当然。

    我的 AM64x 入门套件中包含通用 IC 的相关 wfantund 日志文件在哪里;用 Debian 映像进行了刷写?
    www.ti.com/.../SK-AM64B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的!

    我的目标市场是低延迟的 KM 无线连接、这仍然是一个空白领域。  这是电网、电力塔、水管、医院、机场设施、 等等

    我期待您的好消息!   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!
    以下是从我的自定义 systemd 脚本启动的一些相关进程日志。  它可能有助于也可能不能帮助您进行调试。  

    1. ExecStart=/usr/local/sbin/wfantund --config /etc/wpantund.conf

      May 19 16:17:41 BeaglePlay wfantund[1085]: [-NCP-]: Stack is up
      May 19 16:17:41 BeaglePlay wfantund[1085]: State change: "offline" -> "associated"
      May 19 16:17:41 BeaglePlay wfantund[1085]: wfantund[1085]: Adding multicast address "ff02::1:3" to NCP
      May 19 16:17:41 BeaglePlay wfantund[1085]: Adding multicast address "ff02::1:3" to NCP
      May 19 16:17:46 BeaglePlay wfantund[1085]: wfantund[1085]: SpinelNCPTask.cpp:86: Requirement Failed (IS_EVENT_FROM_NCP(>May 19 16:17:46 BeaglePlay wfantund[1085]: wfantund[1085]: SpinelNCPTaskSendCommand.cpp:351: Requirement Failed ((mRetV>May 19 16:17:46 BeaglePlay wfantund[1085]: wfantund[1085]: SendCommand task encountered an error: 7 (0x00000007)
      May 19 16:17:46 BeaglePlay wfantund[1085]: SpinelNCPTask.cpp:86: Requirement Failed (IS_EVENT_FROM_NCP(event) && GetIns>May 19 16:17:46 BeaglePlay wfantund[1085]: SpinelNCPTaskSendCommand.cpp:351: Requirement Failed ((mRetVal) == 0)
      May 19 16:17:46 BeaglePlay wfantund[1085]: SendCommand task encountered an error: 7 (0x00000007)



    2. WorkingDirectory=/usr/local/ti-wisunfantund/ti-wisun-webapp/server
      ExecStart=/usr/local/bin/npm 运行 wfan --host 0.0.0.0

      May 19 16:18:18 BeaglePlay wfantund[1127]: Configuration file "/etc/wpantund.conf" read.
      May 19 16:18:18 BeaglePlay wfantund[1127]: ../util/tunnel.c:157: Requirement Failed (0 == ioctl(fd, TUNSETIFF, (void*)&>May 19 16:18:18 BeaglePlay wfantund[1127]: ../util/tunnel.c:215: Requirement Failed (0 == ioctl(fd, TUNGETIFF, (void*)&>May 19 16:18:18 BeaglePlay wfantund[1127]: TunnelIPv6Interface: Couldn't get tunnel name! errno=77, File descriptor in >May 19 16:18:18 BeaglePlay wfantund[1127]: Ready. Using DBUS bus ":1.36"
      May 19 16:18:18 BeaglePlay wfantund[1127]: Running as root without dropping privileges!
      May 19 16:18:18 BeaglePlay wfantund[1127]: driver_to_ncp_pump: Socket error on read: File descriptor in bad state
      May 19 16:18:18 BeaglePlay wfantund[1127]: NCPInstance: errno 77 "File descriptor in bad state"
      May 19 16:18:18 BeaglePlay wfantund[1127]: Cleaning up. (gRet = 9)
      May 19 16:18:18 BeaglePlay wfantund[1127]: Stopped.



  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    遗憾的是、我在 wfantund 或边界路由器固件经常崩溃方面也取得了一些类似的经验、并向本论坛报告了多次。 在等待 TI 找出根本原因的同时、以下是一些可使其相对稳定的权变措施:

    • 请勿启动 Webapp! 当只使用命令行中的 wfantund 和 wfenttl 时、它的运行更加稳定
    • 编译 wfantund 时、使用"--disable-debug --enable-static-link-ncp-plugin=spinel"配置
    • 将 wfantund 输出重定向至空设备:"wfantund 2>/dev/null

    我还编写了一个脚本、用于在启动时启动 wfantund、并在 CC1352P7退出相关状态时自动复位它。 它是为 BeaglePlay GPIO 编写的、但应该可以轻松适用于 AM64。 我将其发布在此处:

    #!/bin/bash
    
    # Border router IPv6 address and netmask
    # This address will be assigned to the interface on startup
    BORDER_ROUTER_IP=fd12:3456:789::1
    BORDER_ROUTER_NETMASK=48
    
    # ti-wisunfantund paths
    WFANTUND_DIRECTORY=/usr/local/sbin
    WFANTUND_BINARY=wfantund
    WFANCTL_DIRECTROY=/usr/local/bin
    WFANCTL_BINARY=wfanctl
    WFANCTL_CMD=$WFANCTL_DIRECTROY/$WFANCTL_BINARY
    
    ############################################################
    
    # Function to reset NCP
    reset_ncp() {
        gpioset -m time -u 200000 gpiochip2 14=0    # Pull reset pin of CC1352P7
        gpioget gpiochip2 14 > /dev/null            # Set GPIO back to input
    }
    
    # Function to bring up Wi-SUN stack
    start_wisun_stack() {
        echo -n "set Interface:Up true" | $WFANCTL_CMD 2> /dev/null
        echo -n "set Stack:Up true" | $WFANCTL_CMD 2> /dev/null
    }
    
    reset_ncp
    sleep 2
    
    # Start wfantund if it is not already running
    pgrep -x $WFANTUND_BINARY > /dev/null || $WFANTUND_DIRECTORY/$WFANTUND_BINARY 2> /dev/null &
    sleep 2
    
    # Bring up interface and Wi-SUN stack
    start_wisun_stack
    
    # Add ip address to the network interface
    ip addr add $BORDER_ROUTER_IP/$BORDER_ROUTER_NETMASK dev wfan0
    
    # Notify systemd that startup is complete
    systemd-notify --ready
    
    # Loop to restart NCP in case it goes offline
    # Unfortunately, the NCP firmware still goes offline at random intervals,
    # in which case it needs to be restarted.
    while true
    do
        sleep 300
        if [[ $(echo -n "get NCP:State" | $WFANCTL_CMD 2> /dev/null | head -n 1) != 'NCP:State = "associated"' ]]; then
            reset_ncp
            sleep 2
            start_wisun_stack
        fi
    done
    
    # Wait for wfantund to quit
    wait
    

    和 systemd 服务文件来运行该文件:

    # Wi-SUN border router service unit file
    
    [Unit]
    Description=Wi-SUN border router
    
    [Service]
    Type=notify
    ExecStart=/usr/local/bin/wisun-border-router
    
    [Install]
    WantedBy=network.target
    

    希望这对您有所帮助!

    Georg

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Georg:
    您是 TI 社区中的英雄!  让我尝试一下、看看会发生什么情况。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Tim、您好!

    事实上,当我 Erling 和我说我们已经运行 wfantund 很长一段时间,我没有提到这是没有 Webapp,这不是用于生产用途。

    请告诉我您的结果。

    感谢 Georg 的指示。

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我从 rc.local`s 了 Georg 的 bash 脚本、结果表明除了频道间隔参数之外、它几乎运行正确。  事实证明这是一个误差。

    wfanctl:wfan0> get chspacing
    chspacing = "0 kHz"

    总之,这是一个很好的起点和 Georg`s 工作是高度赞赏!  

    另外、Georg`s bash 脚本已经有了重新生成机制、因此可以将其 systemd 脚本设置为

    Type=onshot
    RemainAfterExit=true
    

    或者仅使用 RC.local 执行一次。

    对于调试、我自己更喜欢 re.local 方法。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    channel spacing 是 ns_br 固件的编译时参数、我认为 wfantund 不会更改该参数。

    要启动脚本、我建议从 systemd 而不是 rc.local 运行它。 如果将类型设置为"notify"、systemd 将等待 网络设备可用的通知。 如果其他启动脚本依赖于该启动脚本、则此功能很有用。

    这是我上周制作的一个较新版本的脚本。 它不仅会复位  CC1352P7、还会重新启动 wfantund。 我目前正在进行一些长期测试、以查看哪个版本最能存活。

    #!/bin/bash
    
    # Border router IPv6 address and netmask
    # This address will be assigned to the interface on startup
    BORDER_ROUTER_IP=fd12:3456:789::1
    BORDER_ROUTER_NETMASK=48
    
    # ti-wisunfantund paths
    WFANTUND_DIRECTORY=/usr/local/sbin
    WFANTUND_BINARY=wfantund
    WFANCTL_DIRECTROY=/usr/local/bin
    WFANCTL_BINARY=wfanctl
    WFANCTL_CMD=$WFANCTL_DIRECTROY/$WFANCTL_BINARY
    
    ############################################################
    
    # Function to bring up border router
    start_wisun() {
        gpioset -m time -u 200000 gpiochip2 14=0    # Pull reset pin of CC1352P7
        gpioget gpiochip2 14 > /dev/null            # Set GPIO back to input
        sleep 2
    
        # Start wfantund if it is not already running
        pgrep -x $WFANTUND_BINARY > /dev/null || $WFANTUND_DIRECTORY/$WFANTUND_BINARY 2> /dev/null &
        sleep 2
    
        # Bring up Wi-SUN stack
        echo -n "set Interface:Up true" | $WFANCTL_CMD 2> /dev/null
        echo -n "set Stack:Up true" | $WFANCTL_CMD 2> /dev/null
    
        # Add ip address to the network interface
        ip addr add $BORDER_ROUTER_IP/$BORDER_ROUTER_NETMASK dev wfan0
    }
    
    # Bring up Wi-SUN
    start_wisun
    
    # Notify systemd that startup is complete
    systemd-notify --ready
    
    # Loop to restart NCP in case it goes offline
    # Unfortunately, the NCP firmware still goes offline at random intervals,
    # in which case it needs to be restarted.
    while true
    do
        sleep 300
        if [[ $(echo -n "get NCP:State" | $WFANCTL_CMD 2> /dev/null | head -n 1) != 'NCP:State = "associated"' ]]; then
            pkill -x $WFANTUND_BINARY
            start_wisun
        fi
    done
    
    # Wait for wfantund to quit
    wait
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢你的评分

    我正在测试这个较新版本。

    好消息是-它从正确的 chspacing ="200kHz"开始。  每个参数看起来也不错。

    我会让它在没有 wi-sun 演示 Web 门户的情况下运行、看看它是否能存活超过一周。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我运行这个新脚本大约4天、它运行正常。

    但是,在我手动重新启动它的 systemd 由你提供,信道间隔变成了一个错误。

    wfanctl:wfan0> get chspacing
    chspacing = "0 kHz"
    

    尊敬的 Georg:
    我将于秋季与松下研发中心(Panasonic R&D Center)合作、参加在新加坡举办的一场投资讲座。  我将向您发送一封私人消息、邀请您加入我的团队。  请确保检查私人消息并回复我。  他们是日本松下,而不是那些假壳公司。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    今天,我再次回顾了 waddtl 的状态。  它正确显示:

    wfanctl:wfan0> get chspacing
    chspacing = "200 kHz"

    我的印象是-

    1. 系统操作系统重新启动后、脚本以正确的信道间隔正确启动。
    2. 重新启动脚本 systemd 服务(手动或意外)后、wfantund 会正确运行、但通道间隔报告为0kHz。
    3. 如果我让 wfantund 服务例如在测试2天中稳定下来、则正确地再次将通道间隔报告为200kHz。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Tim、

    很抱歉,我只是偶尔查看这个论坛。

    很高兴听到路由器在使用新脚本的情况下存活的时间更长!

    关于频道间隔、我不认为设置实际上是错误的、但只有 wfantund 显示了错误。 我们还在运行长期测试、并且从未出现过错误配置的任何问题。

    此致!

    Georg