openthread / ot-br-posix

OpenThread Border Router, a Thread border router for POSIX-based platforms.
https://openthread.io/
BSD 3-Clause "New" or "Revised" License
420 stars 235 forks source link

Running RCP Image on custom yocto linux device having i.MX6ull processor and Unable to establish communication Between RCP and otbr-agent (Openthread communication) #1932

Closed gokul-2000 closed 1 week ago

gokul-2000 commented 1 year ago

otbr-agent host: yocto linux(version: warrior) having i.MX6ull processor RCP module: K32W module

I have purchased new K32W module. I am trying to run openthread sample example on yocto linux(version: warrior) having i.MX6ull processor with a K32W module.

I have flashed RCP module binary to K32W module as per the guide given on https://github.com/openthread/ot-nxp/blob/main/src/k32w0/k32w061/README.md which is located at (SDK_2_6_10_K32W061DK6/tools/wireless/ot-rcp/ot-rcp-uart-no-fc-usb.bin) in (K32W061 SDK 2.6.10) downloaded from nxp.com

I have compiled the ot-br-posix GitHub https://openthread.io/guides/border-router (commit id: 495612f696947fc38dc71e8ee3378477378cf144) for yocto warrior using otbr_git.bb located at https://github.com/openthread/ot-br-posix/blob/main/etc/yocto/otbr_git.bb and with some yocto warrior related compilation changes in .bbappend file and flashed that package to custom yocto linux device having i.MX6ull processor.

I am running otbr-agent on the yocto linux(version: warrior) having i.MX6ull processor using the following command from ot-br-posix GitHub https://openthread.io/guides/border-router (commit id: 495612f696947fc38dc71e8ee3378477378cf144)

I have connected the K32W module at /dev/ttymxc2.

But the otbr-agent is failing to communicate with the K32W module and giving the following error

# otbr-agent -I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttymxc2?uart-baudrate=1000000 -v trel://eth0 otbr-agent[2177]: [NOTE]-AGENT---: Running 0.3.0-thread-reference-20230119-167-g495612f696 otbr-agent[2177]: [NOTE]-AGENT---: Thread version: 1.3.0 otbr-agent[2177]: [NOTE]-AGENT---: Thread interface: wpan0 otbr-agent[2177]: [NOTE]-AGENT---: Radio URL: spinel+hdlc+uart:///dev/ttymxc2?uart-baudrate=1000000 otbr-agent[2177]: [NOTE]-AGENT---: Radio URL: trel://eth0 otbr-agent[2177]: [NOTE]-ILS-----: Infra link selected: eth0 otbr-agent[2177]: [INFO]-NCP-----: OpenThread log level changed to 4 otbr-agent[2177]: 49d.17:11:25.747 [I] Platform------: RCP reset: RESET_POWER_ON otbr-agent[2177]: 49d.17:11:25.750 [I] Platform------: Software reset RCP successfully otbr-agent[2177]: 49d.17:11:25.823 [I] Platform------: [netif] Sent request#1 to set addr_gen_mode to 1 otbr-agent[2177]: 00:00:00.091 [I] ChildSupervsn-: Timeout: 0 -> 190 otbr-agent[2177]: 00:00:00.107 [I] InfraIf-------: Init infra netif 4 otbr-agent[2177]: 00:00:00.115 [N] BorderRouter--: No valid /48 BR ULA prefix found in settings, generating new one otbr-agent[2177]: 00:00:00.119 [I] Settings------: Saved BrUlaPrefix fdd7:5371:95da::/48 otbr-agent[2177]: 00:00:00.126 [N] BorderRouter--: BR ULA prefix: fdd7:5371:95da::/48 (generated) otbr-agent[2177]: 00:00:00.129 [I] BorderRouter--: Generated OMR prefix: fdd7:5371:95da:1::/64 otbr-agent[2177]: 00:00:00.131 [N] BorderRouter--: Local on-link prefix: fdde:ad00:beef:cafe::/64 otbr-agent[2177]: [INFO]-UTILS---: Set state callback: OK otbr-agent[2177]: [INFO]-MDNS----: Avahi client state changed to 2 otbr-agent[2177]: [INFO]-MDNS----: Avahi client is ready otbr-agent[2177]: [INFO]-BA------: Publish meshcop service OpenThread Border Router #81E7._meshcop._udp.local. otbr-agent[2177]: [INFO]-MDNS----: Commit avahi service OpenThread Border Router #81E7._meshcop._udp otbr-agent[2177]: [INFO]-ADPROXY-: Publish all hosts and services otbr-agent[2177]: [INFO]-ADPROXY-: Started otbr-agent[2177]: [INFO]-BA------: Start Thread Border Agent: OK otbr-agent[2177]: [INFO]-APP-----: Thread Border Router started on AIL eth0. otbr-agent[2177]: 00:00:00.252 [I] Notifier------: StateChanged (0x00038200) [NetData PanId NetName ExtPanId] sh: ipset: command not found otbr-agent[2177]: 00:00:00.290 [I] Platform------: Execute command ipset flush otbr-ingress-allow-dst-swap = 32512 otbr-agent[2177]: 00:00:00.290 [I] Platform------: Got an error when executing command ipset flush otbr-ingress-allow-dst-swap: Resource temporarily unavailable otbr-agent[2177]: 00:00:00.290 [W] Platform------: Failed to update ipsets: Failed otbr-agent[2177]: [INFO]-BA------: Publish meshcop service OpenThread Border Router #81E7._meshcop._udp.local. otbr-agent[2177]: 00:00:00.291 [I] RouterTable---: Route table otbr-agent[2177]: 00:00:02.299 [W] Platform------: Wait for response timeout otbr-agent[2177]: 00:00:02.299 [C] Platform------: HandleRcpTimeout() at radio_spinel_impl.hpp:2301: RadioSpinelNoResponse

Further guidance would be appreciated!

wgtdkp commented 1 year ago
sh: ipset: command not found

It complains that the ipset command is not found on your device. try to install it before starting otbr-agent

gokul-2000 commented 1 year ago

Thanks for the response.

I have compiled and installed ipset package for custom yocto warrior linux device having i.MX6ull processor, after that i executed the same command and resulted in "ipset v7.11: Kernel error received: Invalid argument" error insted of "sh: ipset: command not found"

Further guidance would be appreciated!

superwhd commented 1 year ago

First of all, the missing of ipset is not a blocker to run otbr-agent and it won't cause otbr-agent to crash. Probably you need to check the compatibility between host and RCP. cc @zhanglongxia may have some more idea.

On the other hand, regarding the ipset issue:

It seems that your kernel doesn't support the ipset operations which are needed by the firewall feature. You should disable the firewall feature.

You can disable firewall at compile time by defining OPENTHREAD_POSIX_CONFIG_FIREWALL_ENABLE as 0. You'd better also ensure there's no OTBR_FORWARD_INGRESS chain in the output of ip6tables -L -v. If there is, it means the firewall service has been installed via https://github.com/openthread/ot-br-posix/blob/main/script/_firewall. You can disable the service accordingly.

gokul-2000 commented 1 year ago

Thanks for the response.

I have verified it's working after defining OPENTHREAD_POSIX_CONFIG_FIREWALL_ENABLE as 0 and including the ipset package.

jwhui commented 1 week ago

Closing stale issue.