Giter VIP home page Giter VIP logo

wpantund's Introduction

OpenThread Build Simulation Docker Coverage Status


What is OpenThread?

OpenThread released by Google is... Thread Certified Component

...an open-source implementation of the Thread networking protocol. Google Nest has released OpenThread to make the technology used in Nest products more broadly available to developers to accelerate the development of products for the connected home.

...OS and platform agnostic, with a narrow platform abstraction layer and a small memory footprint, making it highly portable. It supports both system-on-chip (SoC) and network co-processor (NCP) designs.

...a Thread Certified Component, implementing all features defined in the Thread 1.3.0 specification, including all Thread networking layers (IPv6, 6LoWPAN, IEEE 802.15.4 with MAC security, Mesh Link Establishment, Mesh Routing) and device roles, as well as Border Router support.

More information about Thread can be found at threadgroup.org. Thread is a registered trademark of the Thread Group, Inc.

Who supports OpenThread?

AmazonAqaraARMCascodaEeroEspressifGoogleInfineonMMB NetworksNabu CasaNanoleafNordicNXPQorvoQualcommSamsungSilicon LabsSTMicroelectronicsSynopsysTelink SemiconductorTexas InstrumentsZephyr Project

Getting started

All end-user documentation and guides are located at openthread.io. If you're looking to do things like...

  • Learn more about OpenThread features and enhancements
  • Use OpenThread in your products
  • Learn how to build and configure a Thread network
  • Port OpenThread to a new platform
  • Build an application on top of OpenThread
  • Certify a product using OpenThread

...then openthread.io is the place for you.

Note: For users in China, end-user documentation is available at openthread.google.cn.

If you're interested in contributing to OpenThread, read on.

Contributing

We would love for you to contribute to OpenThread and help make it even better than it is today! See our Contributing Guidelines for more information.

Contributors are required to abide by our Code of Conduct and Coding Conventions and Style Guide.

License

OpenThread is released under the BSD 3-Clause license. See the LICENSE file for more information.

Please only use the OpenThread name and marks when accurately referencing this software distribution. Do not use the marks in a way that suggests you are endorsed by or otherwise affiliated with Nest, Google, or The Thread Group.

Need help?

OpenThread support is available on GitHub:

wpantund's People

Contributors

abtink avatar ackermanc avatar aeliot avatar bukepo avatar chshu avatar darconeous avatar eugenegonzalez avatar fivedimensions avatar gjc13 avatar henryrlee avatar irving-cl avatar j-noel-longhand avatar josephn123 avatar jwhui avatar kbogucki avatar konradderda avatar librasungirl avatar lmaciejonczyk avatar mszczodrak avatar nandedkarhrishi avatar piotrkoziar avatar robszewczyk avatar sjlongland avatar smides-nest avatar stefan-schmidt avatar superwhd avatar vyrastas avatar xpawan avatar zhangle2016 avatar zhanglongxia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wpantund's Issues

DBUSIPCServer.cpp

when i am configuring wpantund-master i was getting error at DBUSIPCServer.cpp:93:Requiremet Failed(Connection ":1.74" is not allowed to own the service "com.nestlabs.WPANTunnelDriver" due to security policies in the configuration file).

Steps following to configure:
./bootstrap.sh
./configure --sysconfdir=/etc
make

when i am going to compile wpantund it is throwing error like DBUSIPCServer.cpp.
can you please look into the issue and give some information to overcome this issue.
(NOTE: DBUSIPCServer.cpp error is getting only in laptop's )

Thanks,
Sudharshan.
screenshot from 2016-09-23 19-00-49

Form command should scan in order to pick optimal channel and PANID.

Currently, the form command is picking the PANID randomly. If a channel or channel mask is not specified, then channel 11 is assumed. If a channel mask with more than one channel is specified, then a channel is chosen randomly.

We should be doing a scan before doing a form to examine the characteristics of the RF environment to make sure that we pick appropriate values for the PANID and channel.

SPINEL_PROP_NET_STACK_UP Definition Comment Incorrect

I am working on adding Spinel/NCP support to Windows and I noticed the comment here:

SPINEL_PROP_NET_STACK_UP = SPINEL_PROP_NET__BEGIN + 2, ///< [C]

I am pretty sure the [C] is supposed to be [b] just like SPINEL_PROP_NET_IF_UP.

Mesh Local Address does not get assigned to wpan-Interface

Mesh Local IPv6 Adresses not added to wpan0 interface.
Steps to reproduce:

One Board running openthread-cli.
panid 0x1234
ifconfig up
thread start

Second board connected via UART to Raspberry:
In the wpanctl-console:
scan

| Joinable | NetworkName | PAN ID | Ch | XPanID | HWAddr | RSSI
---+----------+--------------------+--------+----+------------------+------------------+------
1 | NO | "OpenThread" | 0x0123 | 11 | DEAD00BEEF00CAFE | 22C27CA5BBA8ECF7 | 0

join 1

Joining "OpenThread" DEAD00BEEF00CAFE as node type "end-device"
Successfully Joined!

To get the IP of this system:
exit wpanctl, then:
ip addr
[...]
3: wpan0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet6 fe80::88ce:5314:41c0:f51d/64 scope link
valid_lft forever preferred_lft forever

After adding the address via "ip addr add fdde:ad00:beef:0:0:ff:fe00:9400/64 dev wpan0" (as displayed in wpanctl status under "IPv6:MeshLocalAddress" => "fdde:ad00:beef:0:6610:983c:bd88:c3a0" "IPv6:MeshLocalPrefix" => "fdde:ad00:beef::/64")

Pings to this mesh local address. works from the OT-CLI board, Pings to the mesh local address of the ot-cli-board now work too.

Shouldn't this address be added to the Interface by wpantun automatically? This behavior is identical on simulator-devices instead of real hardware.

Creating Thread network in simulator

Hi all,
I want to simulate Thread network on my PC, i have followed wpantund tutorial mentioned in repo.
I have used 4 clients (1 Leader and 3 routers assigned), one Wpantund, one utun6.
clients haveing parameters as shown:
cl1: name----wpantund-test; ExPANID-----deba7ab1e5eaf00a; PAN-----FFFF; Chaneel---11;
cl2: name----wpantund-test; ExPANID-----deba7ab1e5eaf00b; PAN-----FFFF; Chaneel---11; -leader
cl3: name----wpantund-test; ExPANID-----deba7ab1e5eaf00c; PAN-----FFFF; Chaneel---11;
cl4: name----wpantund-test; ExPANID-----deba7ab1e5eaf00d; PAN-----FFFF; Chaneel---11;
For Wpantund terminal i have done command.

sudo /usr/local/sbin/wpantund -o Config:NCP:SocketPath "system:examples/apps/ncp/ot-ncp 2" -o SyslogMask " -info" -o Config:TUN:InterfaceName utun6
[sudo] password for pkamma:
wpantund[320]: Starting wpantund 0.07.00 (Jul 13 2016 17:54:13) . . .
wpantund[320]: Reading configuration from "/etc/wpantund.conf" . . .
wpantund[320]: Configuration file "/etc/wpantund.conf" read.
wpantund[320]: CONFIGURATION PROPERTY "SyslogMask" IS DEPRECATED. Please use "Daemon:SyslogMask" instead.
wpantund[320]: set-config-param: "Config:NCP:SocketPath" = "system:examples/apps/ncp/ot-ncp 2"
wpantund[320]: set-config-param: "Config:TUN:InterfaceName" = "utun6"
wpantund[320]: set-config-param: "Daemon:SyslogMask" = " -info"
wpantund[320]: Ready. Using DBUS bus ":1.21"
wpantund[322]: About to exec "examples/apps/ncp/ot-ncp 2"
wpantund[320]: Running as root without dropping privileges!
wpantund[320]: State change: "uninitialized" -> "offline"
wpantund[320]: NCP is running "OPENTHREAD/0.01.00; Jul 14 2016 10:59:06"
wpantund[320]: Driver is running "0.07.00 (; Jul 13 2016 17:54:13)"
wpantund[320]: "fe80::e0b3:5405:90b0:fd87" was added to "utun6"
wpantund[320]: Network Name: OpenThread
wpantund[320]: Error fetching property 96 from NCP: 2
wpantund[320]: Finished initializing NCP

in Utun6 terminal: When applying scan i am not able to see clients.

To proceed further, to form a network what should i do, can any one help me in this regard.

Thanks,
Pravee Kumar K

Fuzz: Spurious failure in fd_set_merge

While running the new fuzzer, I noticed that occasionally we will get a spurious failure that doesn't reproduce when run again with the same input. It always seems to have the same backtrace:

==12==ERROR: AddressSanitizer: global-buffer-overflow on address 0x000001908b00 at pc 0x00000068aa2c bp 0x7ffe3fbe7020 sp 0x7ffe3fbe7018
READ of size 4 at 0x000001908b00 thread T0
    #0 0x68aa2b in fd_set_merge /src/src/wpantund/../util/nlpt-select.c:44:16
    #1 0x68aa2b in nlpt_select_update_fd_set /src/src/wpantund/../util/nlpt-select.c:61
    #2 0x64ceb8 in nl::wpantund::NCPInstanceBase::update_fd_set(fd_set*, fd_set*, fd_set*, int*, int*) /src/src/wpantund/NCPInstanceBase-AsyncIO.cpp:182:3
    #3 0x503d6c in MainLoop::block_until_ready() /src/src/wpantund/./wpantund.cpp:560:3
    #4 0x4fceb0 in NCPInputFuzzTarget(unsigned char const*, unsigned long) /src/src/wpantund/wpantund-fuzz.cpp:109:26
    #5 0x4ffac0 in LLVMFuzzerTestOneInput /src/src/wpantund/wpantund-fuzz.cpp:224:11
...

It's not immediately obvious what might be causing this, but it is worth looking into. This failure can be easily reproduced using the fuzzing instructions after applying the changes from #224.

Build problems with debian

this is a documentation problem/bug not a SW bug.

Debian in my case means: "jessie" Beagle Bone Black Image.

  1. apt-get install dbus libreadline-dev

NOT: libreadline (plain) does not work.

  1. apt-get install autoconf-archive

Is also required.

Update copyright to use AUTHORS

We're updating our copyright attribution to better recognize corporations and individuals who contribute to wpantund. This is inline with other Alphabet open source projects. There are 2 changes - updating the copyright to say, "Copyright (c) 2016, The OpenThread Authors" and a top-level file named AUTHORS which will identifies the copyright holders of the project.

Here's an example.

wpantund fails to form a network

Run sudo /usr/local/sbin/wpantund -o Config:NCP:SocketPath "system:examples/posix/app/ncp/ncp 2" -o SyslogMask "all" -o Config:TUN:InterfaceName vpan0 to start wpantund service.

Run sudo wpanctl -I vpan0 and try to form a new network:

wpanctl:vpan0> form ABCD 
Forming WPAN "ABCD" as node type 2
form: error: Did not receive a reply. Possible causes include: the remote applicati
on did not send a reply, the message bus security policy blocked the reply, the rep
ly timeout expired, or the network connection was broken.
Error 11 (0x0B)
wpanctl:vpan0>

The error pops up after timeout period. Executing this again finishes immediately with a success status:

wpanctl:vpan0> form ABCD
Forming WPAN "ABCD" as node type 2
Successfully formed!
wpanctl:vpan0>

Windows support?

Someone asked if wpantund supports Windows. As windows is a popular dev env for embedded tools, it would be useful to document the current windows support and any available future plans.

Mesh local prefix change signal will not be triggered.

The mNCPV6Prefix shares memory with mNCPMeshLocalAddress, and Mesh Local Address changed event handler will update the whole memory. If Mesh Local Address changed event is sent earlier than Mesh Local Prefix, the prefix changed event will not be triggered at all.

WPanTunD doesnt support multicast on OSX

When running wpantund on OSX, the following error shows:

Oct 13 09:29:46  wpantund[68138] <Warning>: ../util/netif-mgmt.c:479: Requirement Failed (Undefined error: 0)
Oct 13 09:29:46  wpantund[68138] <Warning>: Failed to join multicast group "ff03::1"

and as a result the wpantund doesn't support multicasts.

Maybe it is related to the lack of SIOGIFINDEX support?

Travis macOS builds are failing.

First noticed on #239, it appears that all macOS Travis builds are failing:

checking pkg-config is at least version 0.9.0... yes
checking for DBUS... no
configure: error: Package requirements (dbus-1 >= 1.4) were not met:
No package 'dbus-1' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables DBUS_CFLAGS
and DBUS_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
+die
+echo ' *** ERROR: '
 *** ERROR: 
+exit 1

Update tag "full/latest-release"

I follow the installation guide in wpantund/INSTALL.md to install wpantund. Then I run the script ./start.sh in /openthread/tests/toranj, the output shows that the wpantund doesn't support property "MAC:Whitelist:Enabled". After I reinstall the wpantund using the latest code, this issue disappear. I think we may need to update the tag "full/latest-release" or change the section 2.1 of wpantund/INSTALL.md.

Here is the log:
log.txt

Here is the git log of the wpantund:

zhanglongxia-macbookpro:wpantund zhanglongxia$ git log
commit 6993264fd613fbc67378bdf686ab608657cb77a9 (HEAD -> latest_0_7_1, tag: full/latest-release, tag: full/0.07.01)
Merge: 0097803 fd66805
Author: Robert Quattlebaum <[email protected]>
Date:   Fri Mar 31 13:50:16 2017 -0700

    build-system: Merge of changes for 0.07.01
    
            Based-on: 85d5e61b0138b362d02e244e122c8f5aaddafe09

commit fd6680530ac77813067d1d7c4c3090ffc1736568 (origin/autoconf/release/0.07/master)
Author: Robert Quattlebaum <[email protected]>
Date:   Fri Mar 31 13:50:15 2017 -0700

    build-system: Autotools rebuild from 0.07.01
    
    Based-on: 85d5e61b0138b362d02e244e122c8f5aaddafe09

Here is the git log of the openthread.

zhanglongxia-macbookpro:openthread zhanglongxia$ git log
commit 64fed1ed4deb2a5bbcac4624dcc9222f53583a7a (HEAD -> master, origin/master, origin/HEAD)
Author: Jonathan Hui <[email protected]>
Date:   Tue May 29 16:30:43 2018 -0700

    [cli] fix router table command (#2747)

commit 45d360fcd3531b19c256b48bf1b318d9712c278e
Author: Yakun Xu <[email protected]>
Date:   Wed May 30 06:56:42 2018 +0800

    [ncp] enable missing properties in radio only mode (#2751)

stdin should not be assumed to be an lvalue

Hi Team,

wpanctl.c fails to compile with the following message when HAVE_LIBREADLINE is defined.

wpanctl.c: In function 'main':
wpanctl.c:485:10: error: assignment of read-only variable 'stdin'
    stdin = fopen(optarg, "r");
          ^
make[7]: *** [wpanctl-wpanctl.o] Error 1 

Not able to ping the cli interface on debian when following OpenThread Simulator Tutorial

Hey Team,

I'm running a fresh amd64 debian on a vm.

pisz@debian:~$ uname -a
Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2+deb8u3 (2016-07-02) x86_64 GNU/Linux

Latest versions of openthread and wpantund are being used, please find commit SHAs below.
openthread used: 8ef67d223be3bac7bfb15948fa254b4fe11c3abf
wpantund used: c0ffa2a

wpantund configure step:

pisz@debian:~/wpantund$ ./configure --sysconfdir=/etc
 ...

= Summary =====================================================================

ConnMan Plugin ................. no
Using libreadline .............. yes
NCP plugins to build ........... spinel dummy
Default NCP Plugin ............. spinel
Static link NCP plugin ......... no

As I am not able to find any reference regarding this part I don't know if I should care about missing plugins.

I just want to use only the simulator (there are no NCP connected) so I skipped the following:
sudo /usr/local/sbin/wpantund -o NCPSocketName /dev/ttyUSB0

In case it could be somehow related - after I tried to start the wpantund for the first time the following was observed (reboot solved the issue):

root@debian:/home/pisz/openthread# /usr/local/sbin/wpantund -o Config:NCP:SocketPath "system:examples/apps/ncp/ot-ncp 2" -o Daemon:SyslogMask "all" -o Config:TUN:InterfaceName utun6
wpantund[12750]: Starting wpantund 0.07.00 (Jul  6 2016 09:41:12) . . .
wpantund[12750]:    SOURCE_VERSION = 0.07.00-3-gc0ffa2a-dirty
wpantund[12750]:    BUILD_VERSION = 0.07.00-3-gc0ffa2a-dirty
wpantund[12750]: Reading configuration from "/etc/wpantund.conf" . . .
wpantund[12750]: Configuration file "/etc/wpantund.conf" read.
wpantund[12750]: set-config-param: "Config:NCP:SocketPath" = "system:examples/apps/ncp/ot-ncp 2"
wpantund[12750]: set-config-param: "Config:TUN:InterfaceName" = "utun6"
wpantund[12750]: set-config-param: "Daemon:SyslogMask" = "all"
wpantund[12750]: set-config-param: "Daemon:SyslogMask" set succeded
wpantund[12750]: Getting DBus connection
wpantund[12750]: Registering DBus connection
wpantund[12750]: Requesting DBus connection name com.nestlabs.WPANTunnelDriver
wpantund[12750]: DBUSIPCServer.cpp:94: Requirement Failed (Connection ":1.42" is not allowed to own the service "com.nestlabs.WPANTunnelDriver" due to security policies in the configuration file)
wpantund[12750]: Runtime error thrown while starting up, "Connection ":1.42" is not allowed to own the service "com.nestlabs.WPANTunnelDriver" due to security policies in the configuration file"
wpantund[12750]: Cleaning up. (gRet = 4)
wpantund[12750]: Stopped.
root@debian:/home/pisz/openthread#

Let's proceed to the exact steps that you have to follow to observe the issue:

Terminal A:

pisz@debian:~/openthread$ examples/apps/cli/ot-cli 1

> 
> networkname wpantund-test
Done
> extpanid DEBA7AB1E5EAF00D
Done
> channel 14
Done
> masterkey 00112233445566778899AABBCCDDEEFF
Done
> start
Done
> state
detached
Done
> state
leader
Done
> ipaddr
fdde:ba7a:b1e5:0:0:ff:fe00:3000
fe80:0:0:0:0:ff:fe00:3000
fdde:ba7a:b1e5:0:9248:3362:41f3:d23
fe80:0:0:0:f3d9:2a82:c8d8:fe43
Done
> 

We see that IP adresses differ from the tutorial, where we had

> ipaddr
fdde:ba7a:b1e5:0:0:ff:fe00:0
fe80:0:0:0:0:ff:fe00:0
fdde:ba7a:b1e5:0:558:f56b:d688:799
fe80:0:0:0:f3d9:2a82:c8d8:fe43
Done
> 

Terminal B:

root@debian:/home/pisz/openthread# /usr/local/sbin/wpantund -o Config:NCP:SocketPath "system:examples/apps/ncp/ot-ncp 2" -o Daemon:SyslogMask " -info" -o Config:TUN:InterfaceName utun6
wpantund[1794]: Starting wpantund 0.07.00 (Jul  6 2016 09:41:12) . . .
wpantund[1794]:     SOURCE_VERSION = 0.07.00-3-gc0ffa2a-dirty
wpantund[1794]:     BUILD_VERSION = 0.07.00-3-gc0ffa2a-dirty
wpantund[1794]: Reading configuration from "/etc/wpantund.conf" . . .
wpantund[1794]: Configuration file "/etc/wpantund.conf" read.
wpantund[1794]: set-config-param: "Config:NCP:SocketPath" = "system:examples/apps/ncp/ot-ncp 2"
wpantund[1794]: set-config-param: "Config:TUN:InterfaceName" = "utun6"
wpantund[1794]: set-config-param: "Daemon:SyslogMask" = " -info"
wpantund[1794]: Ready. Using DBUS bus ":1.37"
wpantund[1795]: About to exec "examples/apps/ncp/ot-ncp 2"
wpantund[1794]: Running as root without dropping privileges!
wpantund[1794]: State change: "uninitialized" -> "offline"
wpantund[1794]: NCP is running "OPENTHREAD/g8ef67d2; Jul  6 2016 10:00:09"
wpantund[1794]: Driver is running "0.07.00 (0.07.00-3-gc0ffa2a-dirty; Jul  6 2016 09:41:12)"
wpantund[1794]: "fe80::e0b3:5405:90b0:fd87" was added to "utun6"
wpantund[1794]: Network Name: OpenThread
wpantund[1794]: Error fetching property 96 from NCP: 2
wpantund[1794]: Finished initializing NCP
wpantund[1794]: "fe80::e0b3:5405:90b0:fd87" was added to "utun6"

Is wpantund[1794]: Error fetching property 96 from NCP: 2 expected?
There were no errors in the tutorial observed.

Terminal C:

wpanctl:utun6> status
utun6 => [
    "NCP:State" => "offline"
    "Daemon:Enabled" => true
    "NCP:Version" => "OPENTHREAD/g8ef67d2; Jul  6 2016 10:00:09"
    "Daemon:Version" => "0.07.00 (0.07.00-3-gc0ffa2a-dirty; Jul  6 2016 09:41:12)"
    "Config:NCP:DriverName" => "spinel"
    "NCP:HardwareAddress" => [E2B3540590B0FD87]
]
wpanctl:utun6> scan
   | Joinable | NetworkName        | PAN ID | Ch | XPanID           | HWAddr           | RSSI
---+----------+--------------------+--------+----+------------------+------------------+------
 1 |       NO | "wpantund-test"    | 0xFFFF | 14 | DEBA7AB1E5EAF00D | F1D92A82C8D8FE43 |  -20
wpanctl:utun6> set Network:Key --data 00112233445566778899AABBCCDDEEFF
wpanctl:utun6> join 1
Joining "wpantund-test" DEBA7AB1E5EAF00D
Successfully Joined!
wpanctl:utun6> status
utun6 => [
    "NCP:State" => "associated"
    "Daemon:Enabled" => true
    "NCP:Version" => "OPENTHREAD/g8ef67d2; Jul  6 2016 10:00:09"
    "Daemon:Version" => "0.07.00 (0.07.00-3-gc0ffa2a-dirty; Jul  6 2016 09:41:12)"
    "Config:NCP:DriverName" => "spinel"
    "NCP:HardwareAddress" => [E2B3540590B0FD87]
    "NCP:Channel" => 11
    "Network:NodeType" => "leader"
    "Network:Name" => "wpantund-test"
    "Network:XPANID" => 0xDEBA7AB1E5EAF00D
    "Network:PANID" => 0xFFFF
    "IPv6:LinkLocalAddress" => "fe80::e0b3:5405:90b0:fd87"
    "IPv6:MeshLocalAddress" => "fdde:ba7a:b1e5:0:9704:6a73:208:7028"
    "IPv6:MeshLocalPrefix" => "fdde:ba7a:b1e5::/64"
    "com.nestlabs.internal:Network:AllowingJoin" => false
]
wpanctl:utun6>

Logs observed on Terminal B:

wpantund[1794]: State change: "offline" -> "associating"
wpantund[1794]: "fdde:ba7a:b1e5:0:9704:6a73:208:7028" was added to "utun6"
wpantund[1794]: Network Name: wpantund-test
wpantund[1794]: State change: "associating" -> "associated"
wpantund[1794]: "fdde:ba7a:b1e5:0:9704:6a73:208:7028" was added to "utun6"
wpantund[1794]: "fe80::e0b3:5405:90b0:fd87" was added to "utun6"
wpantund[1794]: "fe80::e0b3:5405:90b0:fd87" was removed from "utun6"
wpantund[1794]: "fdde:ba7a:b1e5:0:9704:6a73:208:7028" was removed from "utun6"
wpantund[1794]: "fdde:ba7a:b1e5:0:9704:6a73:208:7028" was removed from "utun6"
wpantund[1794]: "fdde:ba7a:b1e5:0:9704:6a73:208:7028" was removed from "utun6"
wpantund[1794]: "fe80::e0b3:5405:90b0:fd87" was removed from "utun6"
wpantund[1794]: "fdde:ba7a:b1e5:0:9704:6a73:208:7028" was added to "utun6"
wpantund[1794]: "fe80::e0b3:5405:90b0:fd87" was added to "utun6"

Term D, ifconfig output:

root@debian:/home/pisz# ifconfig utun6
utun6     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet6 addr: fdde:ba7a:b1e5:0:9704:6a73:208:7028/64 Scope:Global
          inet6 addr: fe80::e0b3:5405:90b0:fd87/64 Scope:Link
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1280  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:0 (0.0 B)  TX bytes:772 (772.0 B)

Term D, ping attempts:

root@debian:/home/pisz# ping6 fdde:ba7a:b1e5:0:9248:3362:41f3:d23
PING fdde:ba7a:b1e5:0:9248:3362:41f3:d23(fdde:ba7a:b1e5:0:9248:3362:41f3:d23) 56 data bytes
^C
--- fdde:ba7a:b1e5:0:9248:3362:41f3:d23 ping statistics ---
24 packets transmitted, 0 received, 100% packet loss, time 23182ms

root@debian:/home/pisz# ping6 fdde:ba7a:b1e5:0:9248:3362:41f3:d23 -I utun6
PING fdde:ba7a:b1e5:0:9248:3362:41f3:d23(fdde:ba7a:b1e5:0:9248:3362:41f3:d23) from fdde:ba7a:b1e5:0:9704:6a73:208:7028 utun6: 56 data bytes
^C
--- fdde:ba7a:b1e5:0:9248:3362:41f3:d23 ping statistics ---
17 packets transmitted, 0 received, 100% packet loss, time 16003ms

root@debian:/home/pisz# ping6 ff02::1 -I utun6
PING ff02::1(ff02::1) from fe80::e0b3:5405:90b0:fd87 utun6: 56 data bytes
64 bytes from fe80::e0b3:5405:90b0:fd87: icmp_seq=1 ttl=64 time=0.139 ms
64 bytes from fe80::e0b3:5405:90b0:fd87: icmp_seq=2 ttl=64 time=0.091 ms
64 bytes from fe80::e0b3:5405:90b0:fd87: icmp_seq=3 ttl=64 time=0.092 ms
64 bytes from fe80::e0b3:5405:90b0:fd87: icmp_seq=4 ttl=64 time=0.087 ms
64 bytes from fe80::e0b3:5405:90b0:fd87: icmp_seq=5 ttl=64 time=0.087 ms
^C
--- ff02::1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.087/0.099/0.139/0.020 ms
root@debian:/home/pisz# ping6 ff03::1 -I utun6
ping6: Warning: source address might be selected on device other than utun6.
PING ff03::1(ff03::1) from fe80::a00:27ff:fed5:702 utun6: 56 data bytes
64 bytes from fdde:ba7a:b1e5:0:9704:6a73:208:7028: icmp_seq=1 ttl=64 time=0.874 ms
64 bytes from fdde:ba7a:b1e5:0:9704:6a73:208:7028: icmp_seq=2 ttl=64 time=0.085 ms
64 bytes from fdde:ba7a:b1e5:0:9704:6a73:208:7028: icmp_seq=3 ttl=64 time=0.095 ms
64 bytes from fdde:ba7a:b1e5:0:9704:6a73:208:7028: icmp_seq=4 ttl=64 time=0.087 ms
64 bytes from fdde:ba7a:b1e5:0:9704:6a73:208:7028: icmp_seq=5 ttl=64 time=0.088 ms
^C
--- ff03::1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4001ms
rtt min/avg/max/mdev = 0.085/0.245/0.874/0.314 ms

In two last tries only Local and Global addresses assigned to utun6 replied.
There is no reply from the simulated mesh device.
It happens every time, same symptoms observed.

Please advise, how I can proceed further with this issue?
In case you would like to reproduce the issue and some info are missing, please let me know.

Using wpantund as Border Router

I am trying to connect my devices running openthread to my Network to be able to access them using IPv6.

I have one board running OpenThread CLI (UART connected to PC) and one board running OpenThread NCP (UART connected to Raspberry Pi, joins Network as End-Device)

I am able to form a Network and can ping using Link-Local IPv6-Adresses from the OT-CLI and from the Linux Shell. (After Adding Mesh Local Address to wpan0, Mesh Local Addresses now work too #83 )

I would like to reach the OpenThread-Network via LAN. Since I don't have external IPv6 I configured site-local IPs on the raspberry and a connected computer and added a route to the mesh-local prefix via the raspberry and enabled ipv6 forwarding there In the wpantund-console I can see the Pings being transmitted (with site-local-address of pc as sender and mesh-local-address of device as receiver). But I do not get a answer.

Do I have to use "config-gateway" or "add-route" to announce this route to the thread-network?
What is the correct syntax to do this?

Add multicast routing support

It would be nice to have multicast routing support in wpantund, wpanctl and NCP. I assume this would require support in both spinel and dbus APIs.

Native USB CDC communication issues after NCP reset

Hello! I've been testing OpenThread Border Router on RPi and NCP with native USB CDC for communication (nRF52840), and have experienced the following issue.

When issuing a "leave" command, the NCP is being reset, which is completely fine. But as I am using native USB CDC for communication, reseting the device makes it reenumarate in the system and in result the communication with the device is broken, which causes wpantund crash.

root@raspberrypi:/home/pi# wpanctl -I wpan0 leave                         
Leaving current WPAN. . .                                                 
leave failed with error 11. Canceled                                      
                                                                          
DIAGNOSIS: This action was aborted due to a change in the NCP's state.    
This can occur if the interface is disabled while you were trying to join,
or if AutoDeepSleep kicked in for some reason.                            

Syslog entries:

Mar 14 20:59:24 raspberrypi wpantund[22416]: wpantund[22416]: State change: "associated" -> "offline"
Mar 14 20:59:24 raspberrypi wpantund[22416]: wpantund[22416]: Resetting interface(s). . .
Mar 14 20:59:24 raspberrypi wpantund[22416]: State change: "associated" -> "offline"
Mar 14 20:59:24 raspberrypi wpantund[22416]: wpantund[22416]: Node type change: "leader" -> "unknown"
Mar 14 20:59:24 raspberrypi wpantund[22416]: Resetting interface(s). . .
Mar 14 20:59:24 raspberrypi wpantund[22416]: Node type change: "leader" -> "unknown"
Mar 14 20:59:25 raspberrypi wpantund[22416]: [-NCP-]: Socket error on read: Broken pipe 32
Mar 14 20:59:25 raspberrypi wpantund[22416]: wpantund[22416]: [-NCP-]: Socket error on read: Broken pipe 32
Mar 14 20:59:25 raspberrypi wpantund[22416]: wpantund[22416]: NCPInstance: errno 11 "Resource temporarily unavailable"
Mar 14 20:59:25 raspberrypi wpantund[22416]: wpantund[22416]: Cleaning up. (gRet = 9)
Mar 14 20:59:25 raspberrypi wpantund[22416]: NCPInstance: errno 11 "Resource temporarily unavailable"
Mar 14 20:59:25 raspberrypi wpantund[22416]: Cleaning up. (gRet = 9)
Mar 14 20:59:25 raspberrypi wpantund[22416]: wpantund[22416]: Stopped.
Mar 14 20:59:25 raspberrypi wpantund[22416]: Stopped.
Mar 14 20:59:25 raspberrypi systemd[1]: wpantund.service: Main process exited, code=exited, status=9/n/a
Mar 14 20:59:25 raspberrypi systemd[1]: wpantund.service: Unit entered failed state.
Mar 14 20:59:25 raspberrypi systemd[1]: wpantund.service: Failed with result 'exit-code'.
Mar 14 20:59:30 raspberrypi systemd[1]: wpantund.service: Service hold-off time over, scheduling restart.
Mar 14 20:59:30 raspberrypi systemd[1]: Stopped wpantund.

After wpantund is up again, everything works fine and I can configure Thread network correctly. It is an issue though when I try to use Border Router's web app to form a network, because a failure during "leave" causes entire form operation to fail.

I'm not very familiar with wpantund itself so I have a question to the experts - would it be possible to reopen the socket after device is reset and how difficult would it be to implement it? Or should I rather seek for solution at higher layer (simply ignore the error code)?

Make form/join parameter passing story consistent

After executing the following:

setprop Network:Key 00112233445566778899aabbccddeeff
setprop Network:PANID 0x8888
setprop Network:XPANID cafe00d00d00cafe
form -c 11 TEST

PANID and XPANID are not as specified, but rather randomly generated. SpinelNCPTaskForm checks the passed options for these values and if they are not passed - it generates new random ones. Tracing back to DBusIPCAPI_v0::interface_form_handler I can see that these values are not set there, which means that PANID and XPANID will always be overwritten.
However with network key it's slightly different - they are randomly generated only if they were not set before. IMO it should be like this with PANID and XPANID too.

Is this a bug or is there a reason for inconsistent behavior?

simple crash in wpanctl

Steps to reproduce: (this is a nit, not that high priority)

a) Start wpantund
b) Start wpanctl
c) At the wpanctl:wpan0> prompt, type "control-D" {Traditionally this is EOT, or end of text] in Linux

Wpantund exits with a segmentation fault.

can't use openthread Border router: Which NCP do i have to use ?

Hi there ,
here is the message when a run wpantund .

Aug 30 14:22:10 raspberrypi wpantund[1499]: SpinelNCPTask.cpp:85: Requirement Failed (IS_EVENT_FROM_NCP(event) && GetInstance(this)->mInboundHeader == mLastHeader)
Aug 30 14:22:10 raspberrypi wpantund[1499]: SpinelNCPTaskSendCommand.cpp:322: Requirement Failed ((mRetVal) == 0)
Aug 30 14:22:10 raspberrypi wpantund[1499]: SendCommand task encountered an error: 7 (0x00000007)
Aug 30 14:22:10 raspberrypi wpantund[1499]: wpantund[1499]: SpinelNCPTask.cpp:85: Requirement Failed (IS_EVENT_FROM_NCP(event) && GetInstance(this)->mInboundHeader == mLastHeader)
Aug 30 14:22:10 raspberrypi wpantund[1499]: wpantund[1499]: SpinelNCPTaskSendCommand.cpp:322: Requirement Failed ((mRetVal) == 0)
Aug 30 14:22:10 raspberrypi wpantund[1499]: wpantund[1499]: SendCommand task encountered an error: 7 (0x00000007)
Aug 30 14:22:10 raspberrypi wpantund[1499]: SpinelNCPInstance-Protothreads.cpp:412: Requirement Failed (IS_EVENT_FROM_NCP(event) && GetInstance(this)->mInboundHeader == mLastHeader)
Aug 30 14:22:10 raspberrypi wpantund[1499]: wpantund[1499]: SpinelNCPInstance-Protothreads.cpp:412: Requirement Failed (IS_EVENT_FROM_NCP(event) && GetInstance(this)->mInboun...mLastHeader)
Aug 30 14:22:11 raspberrypi wpantund[1499]: Resetting and trying again... (retry 1)
Aug 30 14:22:11 raspberrypi wpantund[1499]: wpantund[1499]: Resetting and trying again... (retry 1)

My ncp is an KW41Z . which firmware do i have to use to do the Job?
Which NCP is advised for this usage ?

Regards

"Form" network: Error 7 with NCP UART - Ubuntu 16.04

Hi,
Here is my setup:

  • NCP connected by UART
  • wpantund on Ubuntu 16.04

Communication and initialisation between NCP and wpantund is ok:

openthread$ sudo /usr/local/sbin/wpantund -s /dev/pts/11 -I wpan0
wpantund[2453]: Starting wpantund 0.08.00d (May 11 2017 13:39:58) . . .
wpantund[2453]: 	SOURCE_VERSION = 0.07.01-39-gf23affa
wpantund[2453]: 	BUILD_VERSION = 0.07.01-39-gf23affa
wpantund[2453]: Reading configuration from "/usr/local/etc/wpantund.conf" . . .
wpantund[2453]: Configuration file "/usr/local/etc/wpantund.conf" read.
wpantund[2453]: set-config-param: "Config:NCP:SocketPath" = "/dev/pts/11"
wpantund[2453]: set-config-param: "Config:TUN:InterfaceName" = "wpan0"
wpantund[2453]: Ready. Using DBUS bus ":1.78"
wpantund[2453]: Stat (autolog): Tx: 0 packets (0 udp, 0 tcp, 0 icmp6) -- 0 bytes
wpantund[2453]: Stat (autolog): Tx history is empty
wpantund[2453]: Stat (autolog): 
wpantund[2453]: Stat (autolog): Rx: 0 packets (0 udp, 0 tcp, 0 icmp6) -- 0 bytes
wpantund[2453]: Stat (autolog): Rx history is empty
wpantund[2453]: Stat (autolog): 
wpantund[2453]: Stat (autolog): NCP state history is empty.
wpantund[2453]: Stat (autolog): 
wpantund[2453]: Stat (autolog): 
wpantund[2453]: Opening tun interface socket with name "wpan0"
wpantund[2453]: Running as root without dropping privileges!
wpantund[2453]: Initializing NCP
wpantund[2453]: NCP is now BUSY.
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_PROTOCOL_VERSION) tid:1
wpantund[2453]: 	↳ 810201
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_PROTOCOL_VERSION) tid:1
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_NET_STACK_UP) tid:2
wpantund[2453]: 	↳ 820242
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NET_STACK_UP) tid:2
wpantund[2453]: State change: "uninitialized" -> "offline"
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_NCP_VERSION) tid:3
wpantund[2453]: 	↳ 830202
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NCP_VERSION) tid:3
wpantund[2453]: NCP is running "OPENTHREAD/gfbfd76a-dirty; none; Jun  9 2017 11:17:49"
wpantund[2453]: Driver is running "0.08.00d (0.07.01-39-gf23affa; May 11 2017 13:39:58)"
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_INTERFACE_TYPE) tid:4
wpantund[2453]: 	↳ 840203
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_INTERFACE_TYPE) tid:4
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_VENDOR_ID) tid:5
wpantund[2453]: 	↳ 850204
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_VENDOR_ID) tid:5
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_CAPS) tid:6
wpantund[2453]: 	↳ 860205
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_CAPS) tid:6
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_HWADDR) tid:7
wpantund[2453]: 	↳ 870208
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_HWADDR) tid:7
wpantund[2453]: NCP Status: MACHardwareAddr:   00:00:00:FF:FE:00:FF:FE
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_PHY_CHAN) tid:8
wpantund[2453]: 	↳ 880221
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_PHY_CHAN) tid:8
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_PHY_CHAN_SUPPORTED) tid:9
wpantund[2453]: 	↳ 890222
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_PHY_CHAN_SUPPORTED) tid:9
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_MAC_15_4_PANID) tid:10
wpantund[2453]: 	↳ 8A0236
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_MAC_15_4_PANID) tid:10
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_MAC_15_4_LADDR) tid:11
wpantund[2453]: 	↳ 8B0234
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_MAC_15_4_LADDR) tid:11
wpantund[2453]: NCP Status: MACAddr:           BA:AD:4C:41:2A:C5:92:90
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_NET_MASTER_KEY) tid:12
wpantund[2453]: 	↳ 8C0246
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NET_MASTER_KEY) tid:12
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_NET_KEY_SEQUENCE_COUNTER) tid:13
wpantund[2453]: 	↳ 8D0247
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NET_KEY_SEQUENCE_COUNTER) tid:13
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_NET_NETWORK_NAME) tid:14
wpantund[2453]: 	↳ 8E0244
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NET_NETWORK_NAME) tid:14
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_NET_XPANID) tid:15
wpantund[2453]: 	↳ 8F0245
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NET_XPANID) tid:15
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_IPV6_LL_ADDR) tid:1
wpantund[2453]: 	↳ 810260
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_LAST_STATUS) tid:1
wpantund[2453]: [-NCP-]: Last status (STATUS_UNIMPLEMENTED, 2)
wpantund[2453]: Unsuccessful fetching property "PROP_IPV6_LL_ADDR" from NCP: "STATUS_UNIMPLEMENTED" (2)
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_IPV6_ML_ADDR) tid:2
wpantund[2453]: 	↳ 820261
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_IPV6_ML_ADDR) tid:2
wpantund[2453]: Adding IPv6 Address...
wpantund[2453]: TunnelIPv6Interface: Adding address "fdde:ad00:beef:0:3c:e737:feaa:6628" to interface "wpan0".
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_THREAD_ASSISTING_PORTS) tid:3
wpantund[2453]: 	↳ 83025C
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_THREAD_ASSISTING_PORTS) tid:3
wpantund[2453]: Network is not joinable
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_NET_IF_UP) tid:4
wpantund[2453]: 	↳ 840241
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NET_IF_UP) tid:4
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_NET_STACK_UP) tid:5
wpantund[2453]: 	↳ 850242
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NET_STACK_UP) tid:5
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_NET_ROLE) tid:6
wpantund[2453]: 	↳ 860243
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NET_ROLE) tid:6
wpantund[2453]: [-NCP-]: Net Role "NET_ROLE_DETACHED" (0)
wpantund[2453]: Resetting interface(s). . .
wpantund[2453]: Resetting interface wpan0. . .
wpantund[2453]: TunnelIPv6Interface: Removing address "fdde:ad00:beef:0:3c:e737:feaa:6628" from interface "wpan0".
wpantund[2453]: Finished initializing NCP
wpantund[2453]: AutoResume is enabled. Trying to resume.
wpantund[2453]: [->NCP] CMD_PROP_VALUE_GET(PROP_NET_SAVED) tid:7
wpantund[2453]: 	↳ 870240
wpantund[2453]: get_property: key: "NCP:State"
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NET_SAVED) tid:7
wpantund[2453]: NCP is NOT commissioned. Cannot resume.
wpantund[2453]: NCP is no longer busy, host sleep is permitted. (Was busy for 354ms)

Scan command works most of the time but channel is always 0, why?:

wpanctl:wpan0> scan
   | Joinable | NetworkName        | PAN ID | Ch | XPanID           | HWAddr           | RSSI
---+----------+--------------------+--------+----+------------------+------------------+------
 1 |       NO | "OpenThread"       | 0x79F2 |  0 | DEAD00BEEF00CAFE | 6ACA37DE0FBA5754 |    0
wpantund[2453]: Inbound DBus message for INTERFACE "NetScanStart" from ":1.81"
wpantund[2453]: [->NCP] CMD_PROP_VALUE_SET(PROP_MAC_SCAN_MASK) tid:7
wpantund[2453]: 	↳ 8703310B0C0D0E0F101112131415161718191A
wpantund[2453]: NCP is now BUSY.
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_MAC_SCAN_MASK) tid:7
wpantund[2453]: [->NCP] CMD_PROP_VALUE_SET(PROP_MAC_SCAN_PERIOD) tid:8
wpantund[2453]: 	↳ 880332C800
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_MAC_SCAN_PERIOD) tid:8
wpantund[2453]: [->NCP] CMD_PROP_VALUE_SET(PROP_MAC_SCAN_STATE) tid:9
wpantund[2453]: 	↳ 89033001
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_MAC_SCAN_STATE) tid:9
wpantund[2453]: [NCP->] CMD_PROP_VALUE_INSERTED(PROP_MAC_SCAN_BEACON) tid:0
wpantund[2453]: Scan -> Name:OpenThread       , PanId:0x79F2, Ch: 0, Joinable:NO , XPanId:0xDEAD00BEEF00CAFE, HwAddr:0x6ACA37DE0FBA57FE, RSSI:0   , LQI:0  , ProtoId:3  , Version: 0, ShortAddr:0xFFFF 
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_MAC_SCAN_STATE) tid:0
wpantund[2453]: NCP is no longer busy, host sleep is permitted. (Was busy for 3564ms)

Finally, our problem concerns "form" command:

wpanctl:wpan0> form OT
Forming WPAN "OT" as node type "router"
form failed with error 7. Timeout
wpanctl:wpan0>
wpantund[2453]: Inbound DBus message for INTERFACE "Form" from ":1.81"
wpantund[2453]: get_property: key: "IPv6:MeshLocalPrefix"
wpantund[2453]: State change: "offline" -> "associating"
wpantund[2453]: get_property: key: "NCP:State"
wpantund[2453]: get_property: key: "Daemon:Enabled"
wpantund[2453]: [->NCP] CMD_NET_CLEAR tid:10
wpantund[2453]: 	↳ 8A0A
wpantund[2453]: NCP is now BUSY.
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_LAST_STATUS) tid:10
wpantund[2453]: [-NCP-]: Last status (STATUS_OK, 0)
wpantund[2453]: [->NCP] CMD_PROP_VALUE_SET(PROP_PHY_CHAN) tid:11
wpantund[2453]: 	↳ 8B03210E
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_PHY_CHAN) tid:11
wpantund[2453]: [->NCP] CMD_PROP_VALUE_SET(PROP_MAC_PROMISCUOUS_MODE) tid:12
wpantund[2453]: 	↳ 8C033800
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_MAC_PROMISCUOUS_MODE) tid:12
wpantund[2453]: [->NCP] CMD_PROP_VALUE_SET(PROP_MAC_15_4_PANID) tid:13
wpantund[2453]: 	↳ 8D0336D03B
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_MAC_15_4_PANID) tid:13
wpantund[2453]: [->NCP] CMD_PROP_VALUE_SET(PROP_NET_XPANID) tid:14
wpantund[2453]: 	↳ 8E0345DEAD00BEEF00CAFE
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NET_XPANID) tid:14
wpantund[2453]: [->NCP] CMD_PROP_VALUE_SET(PROP_NET_NETWORK_NAME) tid:15
wpantund[2453]: 	↳ 8F03444F5400
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NET_NETWORK_NAME) tid:15
wpantund[2453]: [->NCP] CMD_PROP_VALUE_SET(PROP_NET_MASTER_KEY) tid:1
wpantund[2453]: 	↳ 81034602D74D3BBBCB9A8C2FB9EA6F09E60FCF
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NET_MASTER_KEY) tid:1
wpantund[2453]: [->NCP] CMD_PROP_VALUE_SET(PROP_NET_KEY_SEQUENCE_COUNTER) tid:2
wpantund[2453]: 	↳ 82034701000000
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_NET_KEY_SEQUENCE_COUNTER) tid:0
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_STREAM_DEBUG) tid:0
wpantund[2453]: [NCP->] CMD_PROP_VALUE_IS(PROP_STREAM_DEBUG) tid:0
wpantund[2453]: NCP => Framing error 6: [03 03 03 47 01 00 00 00 EE DC]
wpantund[2453]: SpinelNCPTask.cpp:85: Requirement Failed (IS_EVENT_FROM_NCP(event) && GetInstance(this)->mInboundHeader == mLastHeader)
wpantund[2453]: SpinelNCPTaskForm.cpp:315: Requirement Failed ((ret) == 0)
wpantund[2453]: Form failed: 7
wpantund[2453]: State change: "associating" -> "offline"
wpantund[2453]: get_property: key: "NCP:State"
wpantund[2453]: get_property: key: "Daemon:Enabled"
wpantund[2453]: NCP is no longer busy, host sleep is permitted. (Was busy for 5026ms)

Can you explain us why it fails to form the network?

Cheers,

wpantund.cpp fails to compile due to free() out of scope

wpantund.cpp: In function 'void signal_critical(int, siginfo_t*, void*)':
wpantund.cpp:296:7: error: 'stack_symbols' was not declared in this scope
  free(stack_symbols);
       ^
Makefile:752: recipe for target 'wpantund-wpantund.o' failed

I will submit a PR addressing this issue.

Building wpantund may fail due to wpan-tunnel-plugin.la naming convention

Automake complains about the library name:
'wpan-tunnel-plugin.la' is not a standard library name; did you mean 'libwpan-tunnel-plugin.la'

Two solutions can be proposed:

  1. Changing the name 'wpan-tunnel-plugin.la' to libwpan-tunnel-plugin.la.
    I'm using own patch to do it at this moment, but this solution is not clean enough.
  2. Adding '-module' parameter to the wpan_tunnel_plugin_la_LDFLAGS in Makefile.am.
    It seems that nl.m4 assigns this value in line 272:
    then CONNMAN_LIBS="-module -avoid-version -export-symbols-regex connman_plugin_desc"
    however it was not executed in my scenario when trying to cross compile wpantund. Which conditions have to be met to have '-module' assigned?

Network:NodeType cannot be set, wpanretain.sh attempts to do it

Reading wpanretain.sh I can see that it attempts to set Network:NodeType.

When attempting to set that property wpantund prints:

wpantund[897]: set_property: key: "Network:NodeType"
wpantund[897]: set_property: key: "Network:NodeType"
wpantund[897]: set_property: Unsupported property "Network:NodeType"

Which is wrong, wpanretain.sh for attempting to set it or wpantund for not being able to do it?

NCP's serial port

Hello,
I tried to build a Border Router with raspberry pi 3. But it had an error with wpantund.
image

Anyone know this probleme?
Thx,

Why TUNSETLINK to ARPHRD_6LOWPAN

Hi,

do you have a good reason why setting the interface type to ARPHRD_6LOWPAN if defined?
In case of Linux, do you use any feature which is provided by the in-kernel 6LoWPAN feature?
@mcr and I currently try to solve some issues inside the kernel do deal with this tun feature and probably like to disallow to change to this type which ends in a -ENOTSUPP or something else.

wpantund/src/util/tunnel.c

Lines 180 to 186 in 86d29d6

#if defined(TUNSETLINK) && defined(ARPHRD_6LOWPAN)
int val = ARPHRD_6LOWPAN;
if (ioctl(fd, TUNSETLINK, (unsigned long) val) < 0) {
perror("TUNSETLINK");
}
#endif

Alex

Update paths in install.md and OpenThread Simulator Tutorial

Found a few things to fix in the docs but wanted to raise them before I tried to fix:

install.md

  • d-bus renamed to dbus
  • Homebrew on Sierra (at least on my machine; I could have mucked with paths) places Cellars elsewhere and cp fails. For me it was cat /usr/local/Cellar/dbus/*/org.freedesktop.dbus-session.plist
    • therefore should update cp command to start the daemon and update to brew install dbus

OpenThread Simulator Tutorial

  • Preparation section could move to the convenience makefile for Posix
  • ot-cli is now at output/x86_64-apple-darwin/bin/ot-cli-ftd as referenced in Starting the cli app
  • ot-ncp is now at output/x86_64-apple-darwin/bin/ot-ncp-ftd as referenced in Starting wpantund

I still haven't been able to join using wpanctl so there might be something I did incorrectly above.

Code style guide

I noticed that the code style is not consistent in this repo. Shall we provide a code style guide?

Unable to ping Cli 1 IP address by following tuorial

Hi all,

I am following tutorial from link "https://github.com/openthread/wpantund/wiki/OpenThread-Simulator-Tutorial", where in terminal-1 i am running ot-cli 1 it is working fine able to see ipaddress in this terminal, in Terminal-2, by issuing command "usr/local/sbin/wpantund -o Config:NCP:SocketPath "system:examples/apps/ncp/ot-ncp 2" -o SyslogMask " -info" -o Config:TUN:InterfaceName utun6" i am able to get log as shown below

wpantund[7390]: Starting wpantund 0.07.00 (Jul 13 2016 17:54:13) . . .
wpantund[7390]: Reading configuration from "/etc/wpantund.conf" . . .
wpantund[7390]: Configuration file "/etc/wpantund.conf" read.
wpantund[7390]: CONFIGURATION PROPERTY "SyslogMask" IS DEPRECATED. Please use "Daemon:SyslogMask" instead.
wpantund[7390]: set-config-param: "Config:NCP:SocketPath" = "system:examples/apps/ncp/ot-ncp 2"
wpantund[7390]: set-config-param: "Config:TUN:InterfaceName" = "utun6"
wpantund[7390]: set-config-param: "Daemon:SyslogMask" = " -info"
wpantund[7390]: Ready. Using DBUS bus ":1.0"
wpantund[7396]: About to exec "examples/apps/ncp/ot-ncp 2"
wpantund[7390]: Running as root without dropping privileges!
wpantund[7390]: State change: "uninitialized" -> "offline"
wpantund[7390]: NCP is running "OPENTHREAD/0.01.00; Jul 14 2016 10:59:06"
wpantund[7390]: Driver is running "0.07.00 (; Jul 13 2016 17:54:13)"
wpantund[7390]: "fe80::e0b3:5405:90b0:fd87" was added to "utun6"
wpantund[7390]: Network Name: OpenThread
wpantund[7390]: Error fetching property 96 from NCP: 2
wpantund[7390]: Finished initializing NCP
wpantund[7390]: State change: "offline" -> "associating"
wpantund[7390]: Network Name: wpantund-test
wpantund[7390]: State change: "associating" -> "associated"
wpantund[7390]: "fe80::e0b3:5405:90b0:fd87" was added to "utun6"
wpantund[7390]: "fe80::e0b3:5405:90b0:fd87" was removed from "utun6"
wpantund[7390]: "fe80::e0b3:5405:90b0:fd87" was added to "utun6"
wpantund[7390]: "fdde:ba7a:b1e5:0:9704:6a73:208:7028" was added to "utun6"
wpantund[7390]: "fe80::e0b3:5405:90b0:fd87" was removed from "utun6"
wpantund[7390]: "fe80::e0b3:5405:90b0:fd87" was added to "utun6"
wpantund[7390]: State change: "associated" -> "offline"
wpantund[7390]: Resetting interface(s). . .
wpantund[7390]: "fdde:ba7a:b1e5:0:9704:6a73:208:7028" was removed from "utun6"
wpantund[7390]: "fe80::e0b3:5405:90b0:fd87" was removed from "utun6"
wpantund[7390]: State change: "offline" -> "associating"
wpantund[7390]: State change: "associating" -> "associated"
wpantund[7390]: "fdde:ba7a:b1e5:0:9704:6a73:208:7028" was added to "utun6"
wpantund[7390]: "fe80::e0b3:5405:90b0:fd87" was added to "utun6"
wpantund[7390]: "fe80::e0b3:5405:90b0:fd87" was added to "utun6"
wpantund[7390]: "fdde:ba7a:b1e5:0:eac4:8c0d:3888:5d6c" was added to "utun6"
wpantund[7390]: "fdde:ba7a:b1e5:0:9704:6a73:208:7028" was added to "utun6"
wpantund[7390]: "fe80::e0b3:5405:90b0:fd87" was removed from "utun6"

wpantund[7390]: "fe80::e0b3:5405:90b0:fd87" was added to "utun6"

in Terminal-3, i proceed with "sudo /usr/local/bin/wpanctl -I utun6" and get bash of "wpanctl:utun6>"
then i have scaned and joined id as stated in tutorial, after quit, iam unable to ping address of cli1 from this window or Other Terminal (Terminal 4).

can any one help me to resolve this and how to achieve this.

Thanks,
Praveen Kumar K

Problems with SPI support

Hi,

I have been working on SPI support for nRF52840 platform in OpenThread to establish SPI connection between NCP run on a nRF52840 and OpenThread Border Router run on a Raspberry Pi 3. You can find my work here if necessary: https://github.com/jciupis/openthread/tree/pr/add-spi-slave-support-for-nrf52840

I have built latest OpenThread libraries as follows:

root@debian:/home/jeci/repo/openthread# make -f examples/Makefile-nrf52840 COMMISSIONER=1 JOINER=1 COAP=1 DNS_CLIENT=1 MTD_NETDIAG=1 BORDER_ROUTER=1 MAC_FILTER=1 TMF_PROXY=1 SPI=1

making sure that --with-ncp-bus=spi is chosen in Makefile-nrf52840. The version of wpantund on the border router:

pi@raspberrypi:~$ wpantund -v
wpantund 0.08.00d (/7fea6d7; Mar  2 2018 02:23:36)

With the SPI interface on the RPi3 up and running, the communication seems to be working - when I run the following command:

pi@raspberrypi:~$ echo -ne "\x01\x02\x03" > /dev/spidev0.0

I can see the 1, 2, 3 in the SPI callback on NCP. I have also tested transfers between two nRF52840 DKs using the SPI code I developed and it also worked fine, so as far as I know the NCP behaves correctly. However, when I try to run wpantund on SPI, I get the following logs:

pi@raspberrypi:~$ sudo wpantund
wpantund[882]: Starting wpantund 0.08.00d (Mar  2 2018 02:23:36) . . .
wpantund[882]:  BUILD_VERSION = 7fea6d7
wpantund[882]: Configuration file "/etc/wpantund.conf" read.
wpantund[882]: set-config-param: "Daemon:SyslogMask" set succeded
wpantund[882]: Stat (autolog): Tx: 0 packets (0 udp, 0 tcp, 0 icmp6) -- 0 bytes
wpantund[882]: Stat (autolog): Tx history is empty
wpantund[882]: Stat (autolog):
wpantund[882]: Stat (autolog): Rx: 0 packets (0 udp, 0 tcp, 0 icmp6) -- 0 bytes
wpantund[882]: Stat (autolog): Rx history is empty
wpantund[882]: Stat (autolog):
wpantund[882]: Stat (autolog): NCP state history is empty.
wpantund[882]: Stat (autolog):
wpantund[882]: Stat (autolog):
wpantund[882]: tcgetattr() failed. "Inappropriate ioctl for device" (25)
wpantund[882]: tcsetattr() failed. "Inappropriate ioctl for device" (25)
wpantund[882]: Opening tun interface socket with name "wpan0"
wpantund[882]: Getting DBus connection
wpantund[882]: Registering DBus connection
wpantund[882]: Requesting DBus connection name com.nestlabs.WPANTunnelDriver
wpantund[882]: Ready. Using DBUS bus ":1.45"
wpantund[882]: Running as root without dropping privileges!
wpantund[882]: Initializing NCP
wpantund[882]: Removing all NCP originated addresses
wpantund[882]: NCP is now BUSY.
wpantund[882]: SpinelNCPInstance-DataPump.cpp:239: Requirement Failed (mInboundFrameSize < sizeof(mInboundFrame))
wpantund[882]: [->NCP] CMD_PROP_VALUE_GET(PROP_PROTOCOL_VERSION) tid:1
wpantund[882]: SpinelNCPInstance-DataPump.cpp:239: Requirement Failed (mInboundFrameSize < sizeof(mInboundFrame))
wpantund[882]: SpinelNCPInstance-DataPump.cpp:239: Requirement Failed (mInboundFrameSize < sizeof(mInboundFrame))
wpantund[882]: SpinelNCPInstance-DataPump.cpp:239: Requirement Failed (mInboundFrameSize < sizeof(mInboundFrame))
wpantund[882]: SpinelNCPInstance-Protothreads.cpp:412: Requirement Failed (IS_EVENT_FROM_NCP(event) && GetInstance(this)->mInboundHeader == mLastHeader)
wpantund[882]: SpinelNCPInstance-DataPump.cpp:239: Requirement Failed (mInboundFrameSize < sizeof(mInboundFrame))
wpantund[882]: SpinelNCPInstance-DataPump.cpp:239: Requirement Failed (mInboundFrameSize < sizeof(mInboundFrame))
wpantund[882]: Resetting and trying again... (retry 1)
wpantund[882]: [->NCP] CMD_RESET tid:2
wpantund[882]: SpinelNCPInstance-DataPump.cpp:239: Requirement Failed (mInboundFrameSize < sizeof(mInboundFrame))
wpantund[882]: SpinelNCPInstance-DataPump.cpp:239: Requirement Failed (mInboundFrameSize < sizeof(mInboundFrame))
wpantund[882]: SpinelNCPInstance-DataPump.cpp:239: Requirement Failed (mInboundFrameSize < sizeof(mInboundFrame))

Current content of /etc/wpantund.conf is left to default apart from the socket part:

# Example wpantund configuration file
#

# The desired name of the network interface (not supported on all platforms)
# Default value is `wpan0`.
#
#Config:TUN:InterfaceName wpan0

# Path to serial port used to communicate with the NCP.
# Has special meaning when prefixed with `system:` or `serial:`.
# If the path is an IPv4 address/port, it will use a TCP socket.
#
#Config:NCP:SocketPath "/dev/ttyACM0"
#Config:NCP:SocketPath "/dev/tty.usbmodem1234"
#Config:NCP:SocketPath "127.0.0.1:4901"
Config:NCP:SocketPath "/dev/spidev0.0"
#Config:NCP:SocketPath "serial:/dev/ttyO1,raw,b115200,crtscts=1"

I had to change the path to the SPI socket from the original:

#Config:NCP:SocketPath "system:/usr/local/sbin/spi-server -p - -s /dev/spidev2.0"

because spi-server doesn't exist, as shown in the logs below.

root@raspberrypi:/home/pi# wpantund
wpantund[942]: Starting wpantund 0.08.00d (Mar  2 2018 02:23:36) . . .
wpantund[942]:  BUILD_VERSION = 7fea6d7
wpantund[942]: Configuration file "/etc/wpantund.conf" read.
wpantund[942]: set-config-param: "Daemon:SyslogMask" set succeded
wpantund[942]: Stat (autolog): Tx: 0 packets (0 udp, 0 tcp, 0 icmp6) -- 0 bytes
wpantund[942]: Stat (autolog): Tx history is empty
wpantund[942]: Stat (autolog):
wpantund[942]: Stat (autolog): Rx: 0 packets (0 udp, 0 tcp, 0 icmp6) -- 0 bytes
wpantund[942]: Stat (autolog): Rx history is empty
wpantund[942]: Stat (autolog):
wpantund[942]: Stat (autolog): NCP state history is empty.
wpantund[942]: Stat (autolog):
wpantund[942]: Stat (autolog):
wpantund[942]: Opening tun interface socket with name "wpan0"
wpantund[944]: Forked!
wpantund[944]: About to exec "/usr/local/sbin/spi-server -p - -s /dev/spidev0.0"
wpantund[942]: Getting DBus connection
/bin/bash: /usr/local/sbin/spi-server: No such file or directory
wpantund[942]: Registering DBus connection
wpantund[942]: Requesting DBus connection name com.nestlabs.WPANTunnelDriver
wpantund[942]: Ready. Using DBUS bus ":1.56"
wpantund[942]: Running as root without dropping privileges!
wpantund[942]: Initializing NCP
wpantund[942]: Removing all NCP originated addresses
wpantund[942]: NCP is now BUSY.
wpantund[942]: [-NCP-]: Socket error on read: Input/output error 5
wpantund[942]: NCPInstance: errno 5 "Input/output error"
wpantund[942]: Cleaning up. (gRet = 9)
wpantund[942]: Stopped.

Where do you think the problem is? How can I proceed further to make it work?

DBus Introspectable

Does wpantund's DBus interface not implement introspectable?
I'm using a library that relies on it.

I'm new to DBus and could just be using my tools incorrectly, but I don't know.

Illegal Network Name causes wpantund to crash

From: openthread/openthread#1902

Per discussion with @jwhui in Openthread#1902, this should probably be handled within wpantund.
Hence I'm moving/opening the issue here.

[This is an edited version of that entry]

This actually crashes wpantund, but has roots in the mis-behaving remote device.

From the 'wpanctl' application, use the "scan" command to scan for networks. The code in wpantund (dbus, specifically) assumes, rightly or wrongly, that the network name is a UTF8 string.

the NCP transmits a beacon request.

In this scenario, the remote device answering the beacon request has a bug and is sending a bad or invalid string as the network name. That device should transmit: "OpenThread" - instead it transmits: "O\377\377\377\377hread" (Where: \377 = Octal for an 0xFF byte). It looks like something wrote a 32bit "-1" value over the top of something it should not have.

This goes over the air with the "0xff" bytes in place of a portion of the network name, up through the NCP and finally into Wpantund - where an assertion triggers this error:

process 592: arguments to dbus_message_iter_append_basic() were incorrect, assertion "_dbus_check_is_valid_utf8 (*string_p)" failed in file ../../dbus/dbus-message.c line 2676.

of course this should be fixed in the transmitting device, but the robustness principle states either the NCP, or WPANTUND ... something, somewhere shall not die a horrible death as it is right now.

===

-Duane.

How to add nodes to NCP network ?

Hi all,
I followed the Open thread simulator tutorial.
I am able to join the NCP as end-device to a CLI-network.
I tried forming a network with NCP-wpantund (untun6>form "abc") , the network is formed . But when i tried to join a CLI node to the NCP (assigned the PAN-id of NCP network to cli node ), the new cli node is becoming a leader. and i see no interaction between CLI and NCP. I am confused .
Is it right procedure to do so.? How it is possiible ? Can you clarify how they will communicate.

Thanks and Regards.
Madhu Raj

CLI join network created by WPAN?

If I use wpanctl to "form" a network...
I can't seem to join the network from an CLI.... device.

In the reverse case, I form a network using a CLI device...
Wpantund/wpanctl can join that network.

Something seems wrong, or perhaps there is a setting that is not documented?

Invalid Neighbor during Join caused by unicast address in ncp

This is the WPANTUND side of these two issues:

openthread/openthread#2579

openthread/openthread#2571

In the end, the NCP is now rejecting addresses being sent to the NCP from wpantund
causing the WPANTUND to send a RESET command to the NCP...

From openthread pull request 2579 -

Feb 22 18:57:06 beaglebone wpantund[1344]: Adding on-mesh prefix "fd11:22::/64" to NCP
Feb 22 18:57:06 beaglebone wpantund[1344]: wpantund[1344]: SpinelNCPTaskSendCommand.cpp:322: Requirement Failed ((mRetVal) == 0)
Feb 22 18:57:06 beaglebone wpantund[1344]: wpantund[1344]: SendCommand task encountered an error: 24 (0x00000018)
Feb 22 18:57:06 beaglebone wpantund[1344]: wpantund[1344]: Error NCPInvalidArgument (24) while performing "adding unicast address" on NCP - Resetting NCP.
Feb 22 18:57:06 beaglebone wpantund[1344]: Node type change: "unknown" -> "leader"
Feb 22 18:57:06 beaglebone wpantund[1344]: SpinelNCPTaskSendCommand.cpp:322: Requirement Failed ((mRetVal) == 0)
Feb 22 18:57:06 beaglebone wpantund[1344]: SendCommand task encountered an error: 24 (0x00000018)
Feb 22 18:57:06 beaglebone wpantund[1344]: Error NCPInvalidArgument (24) while performing "adding unicast address" on NCP - Resetting NCP.
Feb 22 18:57:06 beaglebone wpantund[1344]: wpantund[1344]: Error Canceled (11) while performing "restoring on-mesh prefix" on NCP - Resetting NCP.
Feb 22 18:57:06 beaglebone wpantund[1344]: wpantund[1344]: State change: "associated" -> "uninitialized"
Feb 22 18:57:06 beaglebone wpantund[1344]: wpantund[1344]: Taking interface(s) down. . .
Feb 22 18:57:06 beaglebone wpantund[1344]: wpantund[1344]: NCPInstance: error 0

THIS is the reset

Feb 22 18:57:06 beaglebone wpantund[1344]: Error Canceled (11) while performing "restoring on-mesh prefix" on NCP - Resetting NCP.

Feb 22 18:57:06 beaglebone wpantund[1344]: State change: "associated" -> "uninitialized"

spi-hdlc-adapter out of date

The copy of spi-hdlc-adapter in third_party/openthread is out of date with the openthread version of spi-hdlc-adapter.

Get wpantund up and running on OSS-Fuzz

With the fuzzing-related work on #224, #222, and #191 now coming together nicely, we should get a continuous fuzzing system in place. It just so happens that Google has OSS-Fuzz, which at first glance looks like it would be easier to get set up and running compared to the alternatives.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.