[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Paparazzi-devel] paparazzi can't get the datalink while the interne
From: |
Yannick Jestin |
Subject: |
Re: [Paparazzi-devel] paparazzi can't get the datalink while the internet connection is unavailable in OS X Sierra?? |
Date: |
Sun, 09 Apr 2017 18:54:57 +0200 |
> On 9 Apr 2017, at 18:38, Tom H <address@hidden> wrote:
>
> Hi,all!
> I found that my paparazzi can't get the datalink via my xbees while the
> connection of my laptop to the internet is unavailable.The GCS just keeps
> waiting for the telemetry and do nothing althongh the xbee do receive the
> data from the plane . But everything is OK when the internet connection
> restores.It is odd since the datalink should not be affected by the internet
> connection. It encounters the problem after that I upgraded my OS X from
> Yosemite to Sierra(10.12.3).How can I fix it ?Thank you!
>
>
> And here is the message comes from the paparazzi center:
>
>
> RUN '/Users/tom/paparazzi/sw/ground_segment/tmtc/link -d /dev/ttyUSB0 -s
> 57600'
> RUN '/Users/tom/paparazzi/sw/ground_segment/tmtc/server '
> RUN '/Users/tom/paparazzi/sw/ground_segment/cockpit/gcs '
> setsockopt() Cannot join group: Can't assign requested address
> Does your kernel support IP multicast extensions ?
> *** send ***: Network is unreachable
TL;DR: either use a wifi hotspot, or reconfigure lo0 to broadcast this stuff
with $ sudo route -nv add -net 224.0.0.0 -interface lo0
Bear in mind that this workaround won’t resist a reboot, and you’ll loose multi
hosts connectivity (tracker, …) until you $ sudo route -v delete -inet
224.0.0.0
Longer version: on OSX, the Ivy bus defaults to 224.255.255.255:2010 (cf
./sw/lib/ocaml/defivybus.ml)
With a network connexion, if I run two ivy python clients, when the second
arrives, the first says :
$ ivyprobe.py -b 224.255.255.255:2010
Broadcasting on 224.255.255.255:2010
Go ahead! (type .help for help on commands)
Ivy application 192.168.0.11:57197 (pyivyprobe) has connected
Ivy applications currently on the bus: pyivyprobe
If I remove the network connexion (not necessarily internet, but, wifi,
e.g.), then, launching an ivyprobe:
rhovanion:paparazzi yj$ ivyprobe.py -b 224.255.255.255:2010
Broadcasting on 224.255.255.255:2010
Exception in thread Thread-2:
Traceback (most recent call last):
File
"/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py",
line 801, in __bootstrap_inner
self.run()
File
"/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py",
line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.7/site-packages/ivy/ivy.py", line 693, in
<lambda>
l=lambda server=self: UDP_init_and_listen(broadcast, port, server)
File "/usr/local/lib/python2.7/site-packages/ivy/ivy.py", line 151, in
UDP_init_and_listen
s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
File
"/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py",
line 228, in meth
return getattr(self._sock,name)(*args)
error: [Errno 49] Can't assign requested address
Go ahead! (type .help for help on commands)
Meaning the en0 interface being inactive, well, all interface except lo0
being inactive … the rendez-vous packet is not sent.
If I force this interface to broadcast multicast for 224, then …
rhovanion:paparazzi yj$ sudo route -nv add -net 224.0.0.0 -interface lo0
Password:
u: inet 224.0.0.0; u: link lo0; u: inet 255.0.0.0; RTM_ADD: Add Route: len 136,
pid: 0, seq 1, errno 0, flags:<UP,STATIC>
locks: inits:
sockaddrs: <DST,GATEWAY,NETMASK>
224.0.0.0 lo0 255.0.0.0
add net 224.0.0.0: gateway lo0
rhovanion:paparazzi yj$ ivyprobe.py -b 224.255.255.255:2010
Broadcasting on 224.255.255.255:2010
Go ahead! (type .help for help on commands)
Ivy application 127.0.0.1:57201 (pyivyprobe) has connected
Ivy applications currently on the bus: pyivyprobe
—
Y.