Border Router OTA using WiFi

I experimented with a lot of ping commands and I understood a couple things.

Firstly, ignore the RTNETLINK answers: File exists output, I was experimenting with another setup and did not realise that there is already a route to 2001:db8::/64 in that setup.

I am able to ping the RIOT node and the ESP32 back and forth, and I am able to ping the ESP32 from Linux using fe80::a6cf:12ff:fe9a:2dc8%wlp0s20f3 successfully. The only problem is that I am not able to reach the RIOT node from Linux, even after adding the route using the command ip route add 2001:db8::/64 via fe80::a6cf:12ff:fe9a:2dc8 dev wlp0s20f3

I also noticed that the ESP32 does not have a global ipv6 on the upstream interface. Could this be the cause of this problem?

This has already become a very long discussion. I hope this is the last step in my network setup. I also asked one of my colleagues and he told me that this might be a bug in RIOT.

Hi. I’ve been racking my brain on this for so long and finally gave up after a while. But I recently came across a Fritzbox router at a friend’s house and decided to try it out once.

To my surprise it worked! I can see the ping reply now.

$ ping 2001:db8::ac97:d831:a613:bd6e
PING 2001:db8::ac97:d831:a613:bd6e(2001:db8::ac97:d831:a613:bd6e) 56 data bytes
64 bytes from 2001:db8::ac97:d831:a613:bd6e: icmp_seq=1 ttl=63 time=225 ms
64 bytes from 2001:db8::ac97:d831:a613:bd6e: icmp_seq=2 ttl=63 time=224 ms
64 bytes from 2001:db8::ac97:d831:a613:bd6e: icmp_seq=3 ttl=63 time=44.2 ms
64 bytes from 2001:db8::ac97:d831:a613:bd6e: icmp_seq=4 ttl=63 time=75.8 ms
64 bytes from 2001:db8::ac97:d831:a613:bd6e: icmp_seq=5 ttl=63 time=103 ms
64 bytes from 2001:db8::ac97:d831:a613:bd6e: icmp_seq=6 ttl=63 time=135 ms
64 bytes from 2001:db8::ac97:d831:a613:bd6e: icmp_seq=7 ttl=63 time=158 ms
64 bytes from 2001:db8::ac97:d831:a613:bd6e: icmp_seq=8 ttl=63 time=180 ms
64 bytes from 2001:db8::ac97:d831:a613:bd6e: icmp_seq=9 ttl=63 time=203 ms
^C
--- 2001:db8::ac97:d831:a613:bd6e ping statistics ---
9 packets transmitted, 9 received, 0% packet loss, time 8009ms
rtt min/avg/max/mdev = 44.221/149.870/225.095/61.405 ms

I can also see a global address on my PC’s WiFi interface

$ ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
3: wlp0s20f3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2a0c:d242:4380:0:d395:2bd7:b130:bfa2/64 scope global temporary dynamic 
       valid_lft 6358sec preferred_lft 2758sec
    inet6 2a0c:d242:4380:0:ba71:dade:552a:b04/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 6358sec preferred_lft 2758sec
    inet6 fe80::4ece:3ca2:d0e6:ea33/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

I’m assuming this is because I’ve never actually connected to a network which provides ipv6, and never realised it until now. Or it could be that this Fritzbox router has ipv6 turned on by default, and I was unable to configure it on my home network.

I have one last problem to be solved. I am unable to trigger a SUIT update, this is the output when I try to trigger an update.

> suit: received URL: "coap://[2001:db8::1]/fw/suit_update/nucleo-f767zi/riot.suit.latest.bin"
suit_worker: started.
suit_worker: downloading "coap://[2001:db8::1]/fw/suit_update/nucleo-f767zi/riot.suit.latest.bin"
suit_worker: error getting manifest
suit_worker: update failed, hdr invalid