{"id":27601564,"url":"https://github.com/jaredwolff/thread-basic-border-router","last_synced_at":"2025-08-23T14:06:21.196Z","repository":{"id":73496334,"uuid":"95321507","full_name":"jaredwolff/thread-basic-border-router","owner":"jaredwolff","description":"A basic Thread border router running on a Virtualbox VM. Provision with Vagrant. No fuss.","archived":false,"fork":false,"pushed_at":"2017-06-30T20:43:21.000Z","size":82,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-23T07:10:03.326Z","etag":null,"topics":["openthread","thread","vagrantfile","virtualbox","wpantund"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jaredwolff.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-06-24T20:39:06.000Z","updated_at":"2019-05-14T03:33:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"36e7e8cb-1428-4163-ae07-bc5fd7bf5d4a","html_url":"https://github.com/jaredwolff/thread-basic-border-router","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jaredwolff/thread-basic-border-router","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaredwolff%2Fthread-basic-border-router","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaredwolff%2Fthread-basic-border-router/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaredwolff%2Fthread-basic-border-router/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaredwolff%2Fthread-basic-border-router/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jaredwolff","download_url":"https://codeload.github.com/jaredwolff/thread-basic-border-router/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaredwolff%2Fthread-basic-border-router/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271751896,"owners_count":24814702,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["openthread","thread","vagrantfile","virtualbox","wpantund"],"created_at":"2025-04-22T17:40:38.930Z","updated_at":"2025-08-23T14:06:21.188Z","avatar_url":"https://github.com/jaredwolff.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# thread-basic-border-router-example\n\nThis repository re-tools what Nordic Semiconductor had created for their [Raspberry\nPi image](https://github.com/NordicSemiconductor/thread_border_router) and enables anyone with a Nordic nRF52840 development board and a computer to connect as an NCP to Wpantund. Thanks to the included Vagrant file very little is needed on the\nend user side to get going.\n\n## Install\n\n**Note:** This plugin is useful for automatically installing VirtualBox Guest Additions.\nI highly recommend you install it.\n\n    vagrant plugin install vagrant-vbguest\n\nLet's get started:\n\n1. First, change the serial number for your DK in the `Vagrantfile`. It's located\non line 51.\n\n        v.customize [\"usbfilter\", \"add\", \"0\",\n          \"--target\", :id,\n          \"--name\", \"J-Link\",\n          \"--manufacturer\", \"SEGGER\",\n          \"--product\", \"J-Link\",\n          \"--serialnumber\", \"000683767824\"]\n\n2. Plug your kit into USB.\n\n3. Program using the NCP firmware as provided in the [Nordic Thread SDK](http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.threadsdk.v0.8.0%2Findex.html)\n\n        cd nRF5_SDK_for_Thread_v0/examples/thread/experimental/ncp/pca10056/blank/armgcc\n        make flash ../../../hex/nrf52840_xxaa.hex\n\n4. Run the `vagrant up` command\n\n        vagrant up\n\n5. Log in to the vagrant box\n\n        vagrant ssh\n\n6. Run the border router\n\n        cd /vagrant/\n        chmod 755 ./script/thread_border_router\n        sudo ./script/thread_border_router\n\n7. In a separate shell window, you should see a few network interfaces show up\n  once wpantund has initialized. Most important to note that both nat64 and wpan0\n  has been initialized.\n\n        vagrant@jessie:~$ /sbin/ifconfig\n        eth0      Link encap:Ethernet  HWaddr 08:00:27:8d:c0:4d  \n                  inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0\n                  inet6 addr: fe80::a00:27ff:fe8d:c04d/64 Scope:Link\n                  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1\n                  RX packets:5843 errors:0 dropped:0 overruns:0 frame:0\n                  TX packets:5678 errors:0 dropped:0 overruns:0 carrier:0\n                  collisions:0 txqueuelen:1000\n                  RX bytes:392092 (382.9 KiB)  TX bytes:544621 (531.8 KiB)\n\n        lo        Link encap:Local Loopback  \n                  inet addr:127.0.0.1  Mask:255.0.0.0\n                  inet6 addr: ::1/128 Scope:Host\n                  UP LOOPBACK RUNNING  MTU:65536  Metric:1\n                  RX packets:18 errors:0 dropped:0 overruns:0 frame:0\n                  TX packets:18 errors:0 dropped:0 overruns:0 carrier:0\n                  collisions:0 txqueuelen:0\n                  RX bytes:1647 (1.6 KiB)  TX bytes:1647 (1.6 KiB)\n\n        nat64     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  \n                  inet addr:192.168.255.1  P-t-P:192.168.255.1  Mask:255.255.255.255\n                  inet6 addr: 2001:db8:1:ffff::1/128 Scope:Global\n                  inet6 addr: 2001:db8:1::1/128 Scope:Global\n                  UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1\n                  RX packets:126 errors:0 dropped:0 overruns:0 frame:0\n                  TX packets:126 errors:0 dropped:0 overruns:0 carrier:0\n                  collisions:0 txqueuelen:500\n                  RX bytes:5922 (5.7 KiB)  TX bytes:8442 (8.2 KiB)\n\n        wpan0     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  \n                  inet6 addr: fdde:ad00:beef:0:c6e4:f108:a9a6:737a/64 Scope:Global\n                  inet6 addr: fdff:cafe:cafe:cafe:f43d:3e29:fcab:e233/64 Scope:Global\n                  inet6 addr: fe80::f43d:3e29:fcab:e233/64 Scope:Link\n                  UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1280  Metric:1\n                  RX packets:126 errors:0 dropped:0 overruns:0 frame:0\n                  TX packets:7 errors:0 dropped:0 overruns:0 carrier:0\n                  collisions:0 txqueuelen:500\n                  RX bytes:8442 (8.2 KiB)  TX bytes:672 (672.0 B)\n\n8. On a separate development kit, install the CLI example:\n\n        cd nRF5_SDK_for_Thread_v0/examples/thread/experimental/cli/pca10056/blank/armgcc\n        make flash ../../../hex/nrf52840_xxaa.hex\n\n9. Connect to the CLI example using a terminal program. In my case i'm using\n  CoolTerm. (11500 Baudrate)\n\n  ![Cool Term](images/coolterm.png)\n\n10. Ping the border router\n\n        ping 2001:db8:1:ffff::1\n        \u003e 8 bytes from 2001:db8:1:ffff:0:0:0:1: icmp_seq=1 hlim=64 time=34ms\n\n11. Ping Google's DNS server\n\n        ping 2001:db8:1:ffff:0:0:808:808\n        \u003e 8 bytes from 2001:db8:1:ffff:0:0:808:808: icmp_seq=2 hlim=57 time=43ms\n\n## Going further\n\n  I also modified one of Nordic's Cloud CoAP examples to send data to my CoAP\n  server example. Both links are below:\n\n  [nRF52840 Cloud CoAP Example]()\n\n  [Node + Websockets + Express CoAP Server Example]()\n\n## Debugging:\n\n  Sometimes the NCP and the wpantund script get into a bad state. The best way to\n  handle is to temporarily un-plug USB and re-connect. Normally this would be\n  handled by a GPIO but because we're not using an embedded platform we have to\n  manually restart things. I typically watch the wpantund output reinitialize\n  to confirm everything is going smoothly.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaredwolff%2Fthread-basic-border-router","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaredwolff%2Fthread-basic-border-router","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaredwolff%2Fthread-basic-border-router/lists"}