Giter VIP home page Giter VIP logo

ot-esp32'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:

ot-esp32's People

Contributors

beriberikix avatar erjiaqing avatar lanyuwen avatar wgtdkp 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

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

ot-esp32's Issues

High latency when sending packets to openthread

In

ot-esp32/src/alarm.c

Lines 94 to 99 in 4ab4c43

else if (sAlarmDt + sAlarmT0 > now)
{
uint64_t remaining = sAlarmDt + sAlarmT0 - now;
timeout->tv_sec = remaining / OT_MS_PER_S;
timeout->tv_usec = (remaining % OT_MS_PER_S) * OT_US_PER_MS;
}
, alarm in openthread sets the timeout of select to 1s no matter what the original timeout is.

When sending packets using otIp6Send, there is no method to wakeup the select thus the latency becomes about 1s.

One possible solution is introduce an eventfd-like componenet so we can wake it up during select, or we can use smaller select timeout (say min(50ms, alarm timeout)) so the latency can be lower.

List of ESP32 devices that are 802.15.4-capable

I can find no indication on the Espressif web site that ESP32 is 802.15.4 capable. Is there a resource somewhere that shows what chips will work and which will not?

I would love to use this library but I don't know if/where it will function.

can not add on-mesh prefix

I'm using the same board as in the tutorial, esp32-WROOM-32+ nrf52840DK

I followed tutorial and got the borad running.

Then i connected to the ESP32 use "make monitor" command, and tried to set up a border router based on this example and added a prefix, i expected to see the new IP address based on the prefix, but with no luck, here is the log:

> dataset init new
Done
> dataset panid 0xdead
Done
> dataset extpanid dead1111dead2222
Done
> dataset networkname OpenThreadGuide
Done
> dataset masterkey 11112233445566778899DEAD1111DEAD
Done
> dataset pskc 198886f519a8fd7c981fee95d72f4ba7
Done
> dataset commit active
I (109910) OT_ESP32_PLAT: [INFO]-MESH-CP-: Active dataset set
Done
> I (109910) OT_ESP32_PLAT: [INFO]-CORE----: Notifier: StateChanged (0x00004000) [Channel] 
prefix add fd11:22::/64 pasor
Done
>   ifconfig up
Done
> I (131240) OT_ESP32_PLAT: [INFO]-CORE----: Notifier: StateChanged (0x01001009) [Ip6+ LLAddr Ip6Mult+ NetifState] 
thread start
I (142060) OT_ESP32_PLAT: [NOTE]-MLE-----: Role Disabled -> Detached
I (142060) OT_ESP32_PLAT: [INFO]-MLE-----: Attempt to become router
I (142080) OT_ESP32_PLAT: [INFO]-CORE----: Non-volatile: Read NetworkInfo {rloc:0xe400, extaddr:16acb86936cbbde8, role:Leader, mode:0x0f, version:2, keyseq:0x0, ...
I (142090) OT_ESP32_PLAT: [INFO]-CORE----: Non-volatile: ... pid:0x7579b8e1, mlecntr:0xbc3, maccntr:0xbb8, mliid:7a58456ff467c9ef}
I (142100) OT_ESP32_PLAT: [INFO]-CORE----: Non-volatile: Saved NetworkInfo {rloc:0xe400, extaddr:16acb86936cbbde8, role:Leader, mode:0x0f, version:2, keyseq:0x0, ...
I (142120) OT_ESP32_PLAT: [INFO]-CORE----: Non-volatile: ... pid:0x7579b8e1, mlecntr:0xfac, maccntr:0xfa0, mliid:7a58456ff467c9ef}
I (142130) OT_ESP32_PLAT: [INFO]-MLE-----: Send Link Request (ff02:0:0:0:0:0:0:2)
Done
> I (142130) OT_ESP32_PLAT: [INFO]-CORE----: Notifier: StateChanged (0x00001035) [Ip6+ Role MLAddr Rloc+ Ip6Mult+] 
I (142160) OT_ESP32_PLAT: [INFO]-MAC-----: Sent IPv6 UDP msg, len:82, chksum:6208, to:0xffff, sec:no, prio:net
I (142170) OT_ESP32_PLAT: [INFO]-MAC-----:     src:[fe80:0:0:0:14ac:b869:36cb:bde8]:19788
I (142180) OT_ESP32_PLAT: [INFO]-MAC-----:     dst:[ff02:0:0:0:0:0:0:2]:19788
I (154463) OT_ESP32_PLAT: [NOTE]-MLE-----: RLOC16 e400 -> fffe
I (154473) OT_ESP32_PLAT: [INFO]-MLE-----: AttachState Idle -> Start
I (154473) OT_ESP32_PLAT: [INFO]-CORE----: Notifier: StateChanged (0x00000040) [Rloc-] 
I (154973) OT_ESP32_PLAT: [NOTE]-MLE-----: Attempt to attach - attempt 1, any-partition reattaching with Active Dataset
I (154973) OT_ESP32_PLAT: [INFO]-MLE-----: AttachState Start -> ParentReqRouters
I (154993) OT_ESP32_PLAT: [INFO]-MLE-----: Send Parent Request to routers (ff02:0:0:0:0:0:0:2)
I (155023) OT_ESP32_PLAT: [INFO]-MAC-----: Sent IPv6 UDP msg, len:84, chksum:c0a7, to:0xffff, sec:no, prio:net
I (155023) OT_ESP32_PLAT: [INFO]-MAC-----:     src:[fe80:0:0:0:14ac:b869:36cb:bde8]:19788
I (155033) OT_ESP32_PLAT: [INFO]-MAC-----:     dst:[ff02:0:0:0:0:0:0:2]:19788
I (155753) OT_ESP32_PLAT: [INFO]-MLE-----: AttachState ParentReqRouters -> ParentReqReeds
I (155753) OT_ESP32_PLAT: [INFO]-MLE-----: Send Parent Request to routers and REEDs (ff02:0:0:0:0:0:0:2)
I (155783) OT_ESP32_PLAT: [INFO]-MAC-----: Sent IPv6 UDP msg, len:84, chksum:7aa9, to:0xffff, sec:no, prio:net
I (155793) OT_ESP32_PLAT: [INFO]-MAC-----:     src:[fe80:0:0:0:14ac:b869:36cb:bde8]:19788
I (155803) OT_ESP32_PLAT: [INFO]-MAC-----:     dst:[ff02:0:0:0:0:0:0:2]:19788
I (157023) OT_ESP32_PLAT: [INFO]-MLE-----: AttachState ParentReqReeds -> Idle
I (157023) OT_ESP32_PLAT: [NOTE]-MLE-----: Allocate router id 57
I (157043) OT_ESP32_PLAT: [NOTE]-MLE-----: RLOC16 fffe -> e400
I (157043) OT_ESP32_PLAT: [NOTE]-MLE-----: Role Detached -> Leader
I (157043) OT_ESP32_PLAT: [NOTE]-MLE-----: Leader partition id 0x29f12921
I (157063) OT_ESP32_PLAT: [INFO]-CORE----: Notifier: StateChanged (0x000012a5) [Ip6+ Role Rloc+ PartitionId NetData Ip6Mult+] 
I (157073) OT_ESP32_PLAT: [INFO]-N-DATA--: Sent server data notification
I (157073) OT_ESP32_PLAT: [INFO]-MLE-----: Send Data Response (ff02:0:0:0:0:0:0:1)
I (157093) OT_ESP32_PLAT: [INFO]-CORE----: Non-volatile: Saved NetworkInfo {rloc:0xe400, extaddr:16acb86936cbbde8, role:Leader, mode:0x0f, version:2, keyseq:0x0, ...
I (157103) OT_ESP32_PLAT: [INFO]-CORE----: Non-volatile: ... pid:0x29f12921, mlecntr:0xfaf, maccntr:0xfa0, mliid:7a58456ff467c9ef}
I (157113) OT_ESP32_PLAT: [INFO]-N-DATA--: Received network data registration
I (157113) OT_ESP32_PLAT: [INFO]-N-DATA--: Allocated Context ID = 1
I (157133) OT_ESP32_PLAT: [INFO]-N-DATA--: Sent network data registration acknowledgment
I (157133) OT_ESP32_PLAT: [INFO]-CORE----: Notifier: StateChanged (0x00000200) [NetData] 
I (157143) OT_ESP32_PLAT: [INFO]-MLE-----: Send Data Response (ff02:0:0:0:0:0:0:1)
I (157173) OT_ESP32_PLAT: [INFO]-MAC-----: Sent IPv6 UDP msg, len:96, chksum:1ca4, to:0xffff, sec:no, prio:net
I (157173) OT_ESP32_PLAT: [INFO]-MAC-----:     src:[fe80:0:0:0:14ac:b869:36cb:bde8]:19788
I (157183) OT_ESP32_PLAT: [INFO]-MAC-----:     dst:[ff02:0:0:0:0:0:0:1]:19788
I (157213) OT_ESP32_PLAT: [INFO]-MAC-----: Sent IPv6 UDP msg, len:118, chksum:036f, to:0xffff, sec:no, prio:net
I (157223) OT_ESP32_PLAT: [INFO]-MAC-----:     src:[fe80:0:0:0:14ac:b869:36cb:bde8]:19788
I (157233) OT_ESP32_PLAT: [INFO]-MAC-----:     dst:[ff02:0:0:0:0:0:0:1]:19788
I (157633) OT_ESP32_PLAT: [INFO]-MLE-----: Send Advertisement (ff02:0:0:0:0:0:0:1)
I (157653) OT_ESP32_PLAT: [INFO]-MAC-----: Sent IPv6 UDP msg, len:90, chksum:0972, to:0xffff, sec:no, prio:net
I (157663) OT_ESP32_PLAT: [INFO]-MAC-----:     src:[fe80:0:0:0:14ac:b869:36cb:bde8]:19788
I (157673) OT_ESP32_PLAT: [INFO]-MAC-----:     dst:[ff02:0:0:0:0:0:0:1]:19788
I (159813) OT_ESP32_PLAT: [INFO]-MLE-----: Send Advertisement (ff02:0:0:0:0:0:0:1)
I (159833) OT_ESP32_PLAT: [INFO]-MAC-----: Sent IPv6 UDP msg, len:90, chksum:62b5, to:0xffff, sec:no, prio:net
I (159843) OT_ESP32_PLAT: [INFO]-MAC-----:     src:[fe80:0:0:0:14ac:b869:36cb:bde8]:19788
I (159853) OT_ESP32_PLAT: [INFO]-MAC-----:     dst:[ff02:0:0:0:0:0:0:1]:19788
I (162553) OT_ESP32_PLAT: [INFO]-MLE-----: Send Advertisement (ff02:0:0:0:0:0:0:1)
I (162583) OT_ESP32_PLAT: [INFO]-MAC-----: Sent IPv6 UDP msg, len:90, chksum:0773, to:0xffff, sec:no, prio:net
I (162583) OT_ESP32_PLAT: [INFO]-MAC-----:     src:[fe80:0:0:0:14ac:b869:36cb:bde8]:19788
I (162593) OT_ESP32_PLAT: [INFO]-MAC-----:     dst:[ff02:0:0:0:0:0:0:1]:19788
netdataregister
Done
> I (168203) OT_ESP32_PLAT: [INFO]-MLE-----: Send Advertisement (ff02:0:0:0:0:0:0:1)
I (168223) OT_ESP32_PLAT: [INFO]-MAC-----: Sent IPv6 UDP msg, len:90, chksum:d2ec, to:0xffff, sec:no, prio:net
I (168223) OT_ESP32_PLAT: [INFO]-MAC-----:     src:[fe80:0:0:0:14ac:b869:36cb:bde8]:19788
I (168233) OT_ESP32_PLAT: [INFO]-MAC-----:     dst:[ff02:0:0:0:0:0:0:1]:19788
ipaddr
fd10:bd85:fa1a:a351:0:ff:fe00:fc00
fd10:bd85:fa1a:a351:0:ff:fe00:e400
fd10:bd85:fa1a:a351:7a58:456f:f467:c9ef
fe80:0:0:0:14ac:b869:36cb:bde8
Done
> I (180323) OT_ESP32_PLAT: [INFO]-MLE-----: Send Advertisement (ff02:0:0:0:0:0:0:1)
I (180343) OT_ESP32_PLAT: [INFO]-MAC-----: Sent IPv6 UDP msg, len:90, chksum:1814, to:0xffff, sec:no, prio:net
I (180353) OT_ESP32_PLAT: [INFO]-MAC-----:     src:[fe80:0:0:0:14ac:b869:36cb:bde8]:19788
I (180363) OT_ESP32_PLAT: [INFO]-MAC-----:     dst:[ff02:0:0:0:0:0:0:1]:19788
> prefix
fd11:22:0:0::/64 paros med
Done


Not able to compile for thunderboard sense2

Problem : Not able to compile for thunderboard sense2(silicon lab) BOARD="BRD4166A".

Enviroment :
1)Prepared setup based on documentation https://github.com/openthread/ot-esp32/blob/master/example/README.md.
2)compilation for esp32 is successfull
3)compilation for thunderboard sense 2 is failed.
4)used "make -f examples/Makefile-efr32mg12 CFLAGS="-DUART_HWFC_ENABLED=0" command to compile binary for thunderboard sense2

Error log:
(reverse-i-search)`': ^C
[root@mx():/home/vineet/openthread/ot-esp32/third_party/openthread#] make -f examples/Makefile-efr32mg12 CFLAGS="-DUART_HWFC_ENABLED=0"
BUILD efr32mg12
make -j10 -C build/efr32mg12 --no-print-directory all
CHECK .local-version
make --no-print-directory all-recursive
Making all in include
make all-recursive
Making all in openthread
Making all in platform
make[6]: Nothing to be done for 'all'.
make[6]: Nothing to be done for 'all-am'.
Making all in third_party
Making all in silabs
make[4]: *** No rule to make target 'gecko_sdk_suite/v2.7/hardware/kit/common/bsp/bsp_bcc.c', needed by 'gecko_sdk_suite/v2.7/hardware/kit/common/bsp/libsilabs_efr32mg12_sdk_a-bsp_bcc.o'. Stop.
make[4]: *** Waiting for unfinished jobs....
CC rail_config/libsilabs_efr32mg12_sdk_a-rail_config.o
/home/vineet/openthread/ot-esp32/third_party/openthread/examples/../third_party/silabs/rail_config/rail_config.c:16:10: fatal error: em_common.h: No such file or directory
#include "em_common.h"
^~~~~~~~~~~~~
compilation terminated.
make[4]: *** [Makefile:1576: rail_config/libsilabs_efr32mg12_sdk_a-rail_config.o] Error 1
make[3]: *** [Makefile:483: all-recursive] Error 1
make[2]: *** [Makefile:591: all-recursive] Error 1
make[1]: *** [Makefile:517: all] Error 2
make: *** [examples/Makefile-efr32mg12:293: do-build-cortex-m4] Error 2
[root@mx():/home/vineet/openthread/ot-esp32/third_party/openthread#]

Infinite reboot on ESP32

I've got everything flashed and wired but the ESP32 build keeps on rebooting. I have some differences in my setup than the instructions:

  • I'm on macOS Catalina
  • Using an older devkit v2
  • using the latest esp-idf, which is 4.x

When I run make monitor I can see this output before a reboot:

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:4
load:0x3fff0034,len:7004
load:0x40078000,len:14332
ho 0 tail 12 room 4
load:0x40080400,len:3980
entry 0x40080680
I (31) boot: ESP-IDF v4.2-dev-1660-g7d7521367 2nd stage bootloader
I (31) boot: compile time 12:31:38
I (31) boot: chip revision: 0
I (35) boot.esp32: SPI Speed      : 40MHz
I (40) boot.esp32: SPI Mode       : DIO
I (44) boot.esp32: SPI Flash Size : 4MB
I (49) boot: Enabling RNG early entropy source...
I (54) boot: Partition Table:
I (58) boot: ## Label            Usage          Type ST Offset   Length
I (65) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (73) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (80) boot:  2 factory          factory app      00 00 00010000 00100000
I (88) boot:  3 ot_storage       Unknown data     01 81 00110000 00080000
I (95) boot: End of partition table
I (99) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x104ec ( 66796) map
I (134) esp_image: segment 1: paddr=0x00020514 vaddr=0x3ffb0000 size=0x02354 (  9044) load
I (137) esp_image: segment 2: paddr=0x00022870 vaddr=0x40080000 size=0x00400 (  1024) load
0x40080000: _WindowOverflow4 at /Users/jonathanberi/esp/esp-idf/components/freertos/xtensa/xtensa_vectors.S:1730

I (141) esp_image: segment 3: paddr=0x00022c78 vaddr=0x40080400 size=0x0b194 ( 45460) load
I (169) esp_image: segment 4: paddr=0x0002de14 vaddr=0x00000000 size=0x02204 (  8708) 
I (172) esp_image: segment 5: paddr=0x00030020 vaddr=0x400d0020 size=0x4d1dc (315868) map
0x400d0020: _stext at ??:?

I (301) boot: Loaded app from partition at offset 0x10000
I (301) boot: Disabling RNG early entropy source...
I (301) cpu_start: Pro cpu up.
I (305) cpu_start: Application information:
I (310) cpu_start: Project name:     ot-cli
I (314) cpu_start: App version:      5b26882
I (319) cpu_start: Compile time:     May 23 2020 12:31:33
I (326) cpu_start: ELF file SHA256:  f3887eb3958ce710...
I (331) cpu_start: ESP-IDF:          v4.2-dev-1660-g7d7521367
I (338) cpu_start: Starting app cpu, entry point is 0x40081228
0x40081228: call_start_cpu1 at /Users/jonathanberi/esp/esp-idf/components/esp32/cpu_start.c:286

I (329) cpu_start: App cpu up.
I (349) heap_init: Initializing. RAM available for dynamic allocation:
I (355) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (361) heap_init: At 3FFB40F8 len 0002BF08 (175 KiB): DRAM
I (368) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (374) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (380) heap_init: At 4008B594 len 00014A6C (82 KiB): IRAM
I (387) cpu_start: Pro cpu start user code
I (405) spi_flash: detected chip: gd
I (406) spi_flash: flash io: dio
bort() was called at PC 0x400d36c7 on core 0
0x400d36c7: syscall_not_implemented_aborts at /Users/jonathanberi/esp/esp-idf/components/newlib/syscalls.c:39


Backtrace:0x400852df:0x3ffba4e0 0x4008597d:0x3ffba500 0x400891ce:0x3ffba520 0x400d36c7:0x3ffba590 0x40119da7:0x3ffba5b0 0x400e1549:0x3ffba5d0 0x400e1edc:0x3ffba5f0 0x400e1fac:0x3ffba610 0x400e0def:0x3ffba630 0x400d35a5:0x3ffba650 0x400872d1:0x3ffba6a0
0x400852df: panic_abort at /Users/jonathanberi/esp/esp-idf/components/esp_system/panic.c:330

0x4008597d: esp_system_abort at /Users/jonathanberi/esp/esp-idf/components/esp_system/system_api.c:100

0x400891ce: abort at /Users/jonathanberi/esp/esp-idf/components/newlib/abort.c:46

0x400d36c7: syscall_not_implemented_aborts at /Users/jonathanberi/esp/esp-idf/components/newlib/syscalls.c:39

0x40119da7: exit at /builds/idf/crosstool-NG/.build/HOST-x86_64-apple-darwin12/xtensa-esp32-elf/src/newlib/newlib/libc/stdlib/exit.c:64

0x400e1549: ot::Spinel::RadioSpinel<ot::Esp32::HdlcInterface, otSysMainloopContext>::WaitResponse() at /Users/jonathanberi/esp/ot-esp32/third_party/openthread/src/lib/spinel/radio_spinel_impl.hpp:1305 (discriminator 1)

0x400e1edc: ot::Spinel::RadioSpinel<ot::Esp32::HdlcInterface, otSysMainloopContext>::Init(bool, bool) at /Users/jonathanberi/esp/ot-esp32/third_party/openthread/src/lib/spinel/radio_spinel_impl.hpp:210

0x400e1fac: platformRadioInit at /Users/jonathanberi/esp/ot-esp32/src/radio.cpp:365

0x400e0def: otSysInit at /Users/jonathanberi/esp/ot-esp32/src/system.c:59

0x400d35a5: run_cli at /Users/jonathanberi/esp/ot-esp32/example/main/cli.c:59

0x400872d1: vPortTaskWrapper at /Users/jonathanberi/esp/esp-idf/components/freertos/xtensa/port.c:143



ELF file SHA256: f3887eb3958ce710

Rebooting...
ets Jun  8 2016 00:22:57

I think the panic may either be a bug due to using 4.x or possible differences in the ESP32 module used.

Any suggestions?

[log] no return in log output

Log output looks messy due to lack of "returns" in log output. By default configuration, ESP32 will convert "\n" as "\r\n", however, the configuration seems having been reset during the ot-esp32's own UART configuration.

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.